From 21465278630e9ee2f964de09d196d021dcb0edf0 Mon Sep 17 00:00:00 2001 From: silentoplayz Date: Thu, 4 Jun 2026 05:41:18 -0400 Subject: [PATCH] feat(ui): add search to tools, filters, and actions selectors in model editor --- .../workspace/Models/ActionsSelector.svelte | 22 ++++++++++++++++++- .../Models/DefaultFiltersSelector.svelte | 21 +++++++++++++++++- .../workspace/Models/FiltersSelector.svelte | 21 +++++++++++++++++- .../workspace/Models/ToolsSelector.svelte | 20 ++++++++++++++++- 4 files changed, 80 insertions(+), 4 deletions(-) diff --git a/src/lib/components/workspace/Models/ActionsSelector.svelte b/src/lib/components/workspace/Models/ActionsSelector.svelte index 444b5476fe..72b5baf95c 100644 --- a/src/lib/components/workspace/Models/ActionsSelector.svelte +++ b/src/lib/components/workspace/Models/ActionsSelector.svelte @@ -9,6 +9,7 @@ export let selectedActionIds = []; let _actions = {}; + let searchQuery = ''; onMount(() => { _actions = actions.reduce((acc, action) => { @@ -20,6 +21,14 @@ return acc; }, {}); }); + + $: filteredActionKeys = Object.keys(_actions).filter((id) => { + if (!searchQuery.trim()) return true; + const q = searchQuery.toLowerCase(); + return ( + _actions[id].name?.toLowerCase().includes(q) || _actions[id].id?.toLowerCase().includes(q) + ); + }); {#if actions.length > 0} @@ -28,9 +37,20 @@
{$i18n.t('Actions')}
+ {#if Object.keys(_actions).length > 10} +
+ +
+ {/if} +
- {#each Object.keys(_actions) as action, actionIdx} + {#each filteredActionKeys as action, actionIdx}
{ + if (!searchQuery.trim()) return true; + const q = searchQuery.toLowerCase(); + return filter.name?.toLowerCase().includes(q) || filter.id?.toLowerCase().includes(q); + });
@@ -14,10 +22,21 @@
{$i18n.t('Default Filters')}
+ {#if filters.length > 10} +
+ +
+ {/if} +
{#if filters.length > 0}
- {#each filters as filter} + {#each filteredFilters as filter} {@const isSelected = selectedFilterIds.includes(filter.id)}
diff --git a/src/lib/components/workspace/Models/FiltersSelector.svelte b/src/lib/components/workspace/Models/FiltersSelector.svelte index 7432107daf..b2fea187fe 100644 --- a/src/lib/components/workspace/Models/FiltersSelector.svelte +++ b/src/lib/components/workspace/Models/FiltersSelector.svelte @@ -7,6 +7,14 @@ export let filters = []; export let selectedFilterIds = []; + + let searchQuery = ''; + + $: filteredFilters = filters.filter((filter) => { + if (!searchQuery.trim()) return true; + const q = searchQuery.toLowerCase(); + return filter.name?.toLowerCase().includes(q) || filter.id?.toLowerCase().includes(q); + }); {#if filters.length > 0} @@ -15,10 +23,21 @@
{$i18n.t('Filters')}
+ {#if filters.length > 10} +
+ +
+ {/if} +
- {#each filters as filter} + {#each filteredFilters as filter} {@const isSelected = filter.is_global || selectedFilterIds.includes(filter.id)}
diff --git a/src/lib/components/workspace/Models/ToolsSelector.svelte b/src/lib/components/workspace/Models/ToolsSelector.svelte index bbc484f907..6cc6d73555 100644 --- a/src/lib/components/workspace/Models/ToolsSelector.svelte +++ b/src/lib/components/workspace/Models/ToolsSelector.svelte @@ -6,6 +6,7 @@ export let tools = []; let _tools = {}; + let searchQuery = ''; export let selectedToolIds = []; @@ -21,6 +22,12 @@ return acc; }, {}); }); + + $: filteredToolKeys = Object.keys(_tools).filter((id) => { + if (!searchQuery.trim()) return true; + const q = searchQuery.toLowerCase(); + return _tools[id].name?.toLowerCase().includes(q) || _tools[id].id?.toLowerCase().includes(q); + });
@@ -28,10 +35,21 @@
{$i18n.t('Tools')}
+ {#if Object.keys(_tools).length > 10} +
+ +
+ {/if} +
{#if tools.length > 0}
- {#each Object.keys(_tools) as tool, toolIdx} + {#each filteredToolKeys as tool, toolIdx}