From fdc7a48ef4725975204cce3a5006edf18c52c551 Mon Sep 17 00:00:00 2001 From: openhands Date: Fri, 11 Sep 2026 23:49:58 +0200 Subject: [PATCH] feat(studio): add 'only unplaced items' filter toggle to organize imports dialog --- .../admin/studio/organize-imports-dialog.tsx | 15 +++++++++++++-- src/messages/en.json | 3 ++- src/messages/nl.json | 3 ++- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/components/admin/studio/organize-imports-dialog.tsx b/src/components/admin/studio/organize-imports-dialog.tsx index b068a5ad..5bd8e136 100644 --- a/src/components/admin/studio/organize-imports-dialog.tsx +++ b/src/components/admin/studio/organize-imports-dialog.tsx @@ -124,6 +124,7 @@ export function OrganizeImportsDialog({ const [points, setPoints] = useState(0); const [pointsType, setPointsType] = useState(0); const [groupSearchQuery, setGroupSearchQuery] = useState(""); + const [onlyUnplaced, setOnlyUnplaced] = useState(false); const [batchLayout, setBatchLayout] = useState("default_3x3"); const [batchPrefix, setBatchPrefix] = useState(""); @@ -284,14 +285,15 @@ export function OrganizeImportsDialog({ const filteredGroups = useMemo(() => { const q = groupSearchQuery.trim().toLowerCase(); - if (!q) return groups; return groups.filter((g) => { + if (onlyUnplaced && g.added === 0 && g.moved === 0) return false; + if (!q) return true; if (g.name.toLowerCase().includes(q)) return true; const caption = overrides[g.name]?.caption?.toLowerCase(); if (caption?.includes(q)) return true; return g.thumbs.some((t) => t.itemName.toLowerCase().includes(q)); }); - }, [groups, groupSearchQuery, overrides]); + }, [groups, groupSearchQuery, onlyUnplaced, overrides]); const handleCreate = async () => { if (isCreating) return; @@ -624,6 +626,15 @@ export function OrganizeImportsDialog({ onChange={(e) => setGroupSearchQuery(e.target.value)} /> +