@@ -1009,16 +1004,42 @@ export function PopCategoryTree({
return acc;
}, {});
const companyKeys = Object.keys(grouped).sort();
- const hasMultipleCompanies = companyKeys.length > 1;
- return companyKeys.map((companyCode) => (
+ const toggleCompanyCode = (code: string) => {
+ setExpandedCompanyCodes((prev) => {
+ const next = new Set(prev);
+ if (next.has(code)) {
+ next.delete(code);
+ } else {
+ next.add(code);
+ }
+ return next;
+ });
+ };
+
+ return companyKeys.map((companyCode) => {
+ const isExpanded = expandedCompanyCodes.has(companyCode);
+ const label = companyCode === "*" ? "최고관리자" : companyCode;
+
+ return (
- {hasMultipleCompanies && (
-
- {companyCode === "*" ? "최고관리자" : companyCode}
-
- )}
- {grouped[companyCode].map((screen) => (
+
toggleCompanyCode(companyCode)}
+ >
+ {isExpanded ? (
+
+ ) : (
+
+ )}
+
+ {label}
+
+
+ {grouped[companyCode].length}
+
+
+ {isExpanded && grouped[companyCode].map((screen) => (
onScreenSelect(screen)}
onDoubleClick={() => onScreenDesign(screen)}
@@ -1078,7 +1099,8 @@ export function PopCategoryTree({
))}
- ));
+ );
+ });
})()}