diff --git a/src/pages/CampaignRuleWizard/CriteriaBuilder/Sidebar.tsx b/src/pages/CampaignRuleWizard/CriteriaBuilder/Sidebar.tsx index e524810..e968e95 100644 --- a/src/pages/CampaignRuleWizard/CriteriaBuilder/Sidebar.tsx +++ b/src/pages/CampaignRuleWizard/CriteriaBuilder/Sidebar.tsx @@ -178,7 +178,7 @@ function DraggableAttribute({ id, label }: { id: string; label: string }) { export function Sidebar() { const [search, setSearch] = useState(""); - const [selectedGroupId, setSelectedGroupId] = useState(ATTRIBUTE_GROUPS[0].id); + const [selectedGroupIds, setSelectedGroupIds] = useState([ATTRIBUTE_GROUPS[0].id]); const filteredGroups = useMemo(() => { if (search.trim()) { @@ -191,37 +191,14 @@ export function Sidebar() { } // Khi không search, chỉ hiển thị nhóm được chọn - return ATTRIBUTE_GROUPS.filter(g => g.id === selectedGroupId); - }, [search, selectedGroupId]); + return ATTRIBUTE_GROUPS.filter(g => selectedGroupIds.includes(g.id)); + }, [search, selectedGroupIds]); return (
-

Trường dữ liệu

- - {/* Dropdown chọn nhóm */} -
- - -
- {/* Ô tìm kiếm */} -
+
setSearch(e.target.value)} />
+ + {/* Chips chọn nhóm */} +
+ {selectedGroupIds.length > 0 && ( +
+ +
+ )} +
+ {Array.from(new Set(ATTRIBUTE_GROUPS.map(g => g.category))).map(category => ( +
+
{category}
+
+ {ATTRIBUTE_GROUPS.filter(g => g.category === category).map(g => { + const isSelected = selectedGroupIds.includes(g.id); + return ( + + ) + })} +
+
+ ))} +
+