diff --git a/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputConfigPanel.tsx b/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputConfigPanel.tsx index 40ddc2c3..a55dc863 100644 --- a/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputConfigPanel.tsx +++ b/frontend/lib/registry/components/selected-items-detail-input/SelectedItemsDetailInputConfigPanel.tsx @@ -7,7 +7,8 @@ import { Button } from "@/components/ui/button"; import { Checkbox } from "@/components/ui/checkbox"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Card, CardContent } from "@/components/ui/card"; -import { Plus, X } from "lucide-react"; +import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@/components/ui/collapsible"; +import { Plus, X, ChevronDown, ChevronRight } from "lucide-react"; import { SelectedItemsDetailInputConfig, AdditionalFieldDefinition, FieldGroup, DisplayItem, DisplayItemType, EmptyBehavior, DisplayFieldFormat } from "./types"; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem } from "@/components/ui/command"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover"; @@ -46,6 +47,12 @@ export const SelectedItemsDetailInputConfigPanel: React.FC(config.fieldGroups || []); + // ๐Ÿ†• ๊ทธ๋ฃน๋ณ„ ํŽผ์นจ/์ ‘ํž˜ ์ƒํƒœ + const [expandedGroups, setExpandedGroups] = useState>({}); + + // ๐Ÿ†• ๊ทธ๋ฃน๋ณ„ ํ‘œ์‹œ ํ•ญ๋ชฉ ์„ค์ • ํŽผ์นจ/์ ‘ํž˜ ์ƒํƒœ + const [expandedDisplayItems, setExpandedDisplayItems] = useState>({}); + // ๐Ÿ†• ์›๋ณธ ํ…Œ์ด๋ธ” ์„ ํƒ ์ƒํƒœ const [sourceTableSelectOpen, setSourceTableSelectOpen] = useState(false); const [sourceTableSearchValue, setSourceTableSearchValue] = useState(""); @@ -621,20 +628,40 @@ export const SelectedItemsDetailInputConfigPanel: React.FC {localFieldGroups.map((group, index) => ( - - -
- ๊ทธ๋ฃน {index + 1} - -
+ setExpandedGroups(prev => ({ ...prev, [group.id]: open }))} + > + + +
+ + + + +
+ + {/* ๊ธฐ์กด ๊ทธ๋ฃน ์„ค์ • ๋‚ด์šฉ */} {/* ๊ทธ๋ฃน ID */}
@@ -682,10 +709,27 @@ export const SelectedItemsDetailInputConfigPanel: React.FC {/* ๐Ÿ†• ์ด ๊ทธ๋ฃน์˜ ํ•ญ๋ชฉ ํ‘œ์‹œ ์„ค์ • */} -
-
- -
+ setExpandedDisplayItems(prev => ({ ...prev, [group.id]: open }))} + > +
+
+ + + +
-

- ์ด ๊ทธ๋ฃน์˜ ์ž…๋ ฅ ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋˜๋ฉด ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋ ์ง€ ์„ค์ • -

+ +

+ ์ด ๊ทธ๋ฃน์˜ ์ž…๋ ฅ ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋˜๋ฉด ์–ด๋–ป๊ฒŒ ํ‘œ์‹œ๋ ์ง€ ์„ค์ • +

- {(!group.displayItems || group.displayItems.length === 0) ? ( + {(!group.displayItems || group.displayItems.length === 0) ? (
๋ฏธ์„ค์ • (๋ชจ๋“  ํ•„๋“œ๋ฅผ " / "๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ํ‘œ์‹œ)
@@ -846,10 +891,15 @@ export const SelectedItemsDetailInputConfigPanel: React.FC ))}
- )} -
- - + )} + +
+ + + + + + ))}