From bbc3094e932e3d193d3223448c789461f4afc058 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Wed, 29 Oct 2025 07:46:57 +0000 Subject: (대표님) 데이터룸 관련 변경사항 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/file-manager/CreateSubfolderForm.tsx | 127 ++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 components/file-manager/CreateSubfolderForm.tsx (limited to 'components/file-manager/CreateSubfolderForm.tsx') diff --git a/components/file-manager/CreateSubfolderForm.tsx b/components/file-manager/CreateSubfolderForm.tsx new file mode 100644 index 00000000..0afdf755 --- /dev/null +++ b/components/file-manager/CreateSubfolderForm.tsx @@ -0,0 +1,127 @@ +// CreateSubfolderForm component - English version + +import { useState } from "react"; +import { Button } from "@/components/ui/button"; +import { Input } from "@/components/ui/input"; +import { Label } from "@/components/ui/label"; +import { + Select, + SelectContent, + SelectItem, + SelectTrigger, + SelectValue, +} from "@/components/ui/select"; +import { Loader2 } from "lucide-react"; + +interface CreateSubfolderFormProps { + parentFolder: any; + onSubmit: (name: string, category: string) => Promise; + onCancel: () => void; +} + +export function CreateSubfolderForm({ + parentFolder, + onSubmit, + onCancel +}: CreateSubfolderFormProps) { + const [folderName, setFolderName] = useState(""); + const [category, setCategory] = useState(parentFolder?.category || "general"); + const [isCreating, setIsCreating] = useState(false); + const [error, setError] = useState(""); + + const handleSubmit = async (e: React.FormEvent) => { + e.preventDefault(); + + if (!folderName.trim()) { + setError("Please enter a folder name"); + return; + } + + // Special character validation + const invalidChars = /[<>:"|?*\/\\]/; + if (invalidChars.test(folderName)) { + setError("Folder name contains invalid characters"); + return; + } + + setIsCreating(true); + setError(""); + + try { + await onSubmit(folderName, category); + setFolderName(""); + setCategory(parentFolder?.category || "general"); + } catch (error: any) { + setError(error.message || "Failed to create folder"); + } finally { + setIsCreating(false); + } + }; + + return ( +
+
+ + { + setFolderName(e.target.value); + setError(""); + }} + placeholder="Enter folder name" + disabled={isCreating} + autoFocus + /> + {error && ( +

{error}

+ )} +
+ +
+ + +

+ Sub-folders inherit the security category from their parent folder by default +

+
+ +
+ + +
+
+ ); +} \ No newline at end of file -- cgit v1.2.3