summaryrefslogtreecommitdiff
path: root/components/file-manager
diff options
context:
space:
mode:
authordujinkim <dujin.kim@dtsolution.co.kr>2025-11-03 10:15:45 +0000
committerdujinkim <dujin.kim@dtsolution.co.kr>2025-11-03 10:15:45 +0000
commitf2fafe555b65f9207c2c6e216b7d7b2ff83af866 (patch)
tree4a230e4bde10a612150a299922bc04cb15b0930f /components/file-manager
parent1e857a0b1443ad2124caf3d180b7195651fe33e4 (diff)
(최겸) 구매 PQ/실사 수정
Diffstat (limited to 'components/file-manager')
-rw-r--r--components/file-manager/FileManager.tsx25
1 files changed, 19 insertions, 6 deletions
diff --git a/components/file-manager/FileManager.tsx b/components/file-manager/FileManager.tsx
index c56bb16a..8463f03e 100644
--- a/components/file-manager/FileManager.tsx
+++ b/components/file-manager/FileManager.tsx
@@ -414,7 +414,7 @@ export function FileManager({ projectId }: FileManagerProps) {
const { data: session } = useSession();
const [items, setItems] = useState<FileItem[]>([]);
const [treeItems, setTreeItems] = useState<FileItem[]>([]);
- const [currentPath, setCurrentPath] = useState<string[]>([]);
+ const [currentPath, setCurrentPath] = useState<{ id: string; name: string }[]>([]);
const [currentParentId, setCurrentParentId] = useState<string | null>(null);
const [selectedItems, setSelectedItems] = useState<Set<string>>(new Set());
const [expandedFolders, setExpandedFolders] = useState<Set<string>>(new Set());
@@ -543,6 +543,16 @@ export function FileManager({ projectId }: FileManagerProps) {
}
});
+ const byName = (a: FileItem, b: FileItem) =>
+ a.name.localeCompare(b.name, undefined, { numeric: true, sensitivity: 'base' });
+ // sort every children array
+ for (const node of itemMap.values()) {
+ if (node.children && node.children.length > 0) {
+ node.children.sort(byName);
+ }
+ }
+ // sort root nodes
+ rootItems.sort(byName);
return rootItems;
};
@@ -566,7 +576,9 @@ export function FileManager({ projectId }: FileManagerProps) {
if (!response.ok) throw new Error('Failed to fetch files');
const data = await response.json();
- setItems(data);
+ const byName = (a: FileItem, b: FileItem) =>
+ a.name.localeCompare(b.name, undefined, { numeric: true, sensitivity: 'base' });
+ setItems([...data].sort(byName));
// Build tree structure
if (viewMode === 'list') {
@@ -1072,7 +1084,7 @@ export function FileManager({ projectId }: FileManagerProps) {
// Handle folder double click
const handleFolderOpen = (folder: FileItem) => {
if (viewMode === 'grid') {
- setCurrentPath([...currentPath, folder.name]);
+ setCurrentPath([...currentPath, { id: folder.id, name: folder.name }]);
setCurrentParentId(folder.id);
} else {
// In tree view, expand/collapse
@@ -1117,6 +1129,7 @@ export function FileManager({ projectId }: FileManagerProps) {
} else {
setCurrentPath(currentPath.slice(0, index + 1));
// Need to update parentId logic
+ setCurrentParentId(currentPath[index].id);
}
};
@@ -1269,11 +1282,11 @@ export function FileManager({ projectId }: FileManagerProps) {
Home
</BreadcrumbLink>
</BreadcrumbItem>
- {currentPath.map((path, index) => (
+ {currentPath.map((seg, index) => (
<BreadcrumbItem key={index}>
<ChevronRight className="h-4 w-4" />
- <BreadcrumbLink onClick={() => navigateToPath(index)}>
- {path}
+ <BreadcrumbLink onClick={() => navigateToPath(index)}>
+ {seg.name}
</BreadcrumbLink>
</BreadcrumbItem>
))}