diff --git a/packages/web/src/appobj/AppObjectList.svelte b/packages/web/src/appobj/AppObjectList.svelte index b17349a3d..d2d100101 100644 --- a/packages/web/src/appobj/AppObjectList.svelte +++ b/packages/web/src/appobj/AppObjectList.svelte @@ -25,6 +25,15 @@ }) : null; + $: childrenMatched = !groupFunc + ? list.filter(data => { + const matcher = module.createChildMatcher && module.createChildMatcher(data); + if (matcher && !matcher(filter)) return false; + return true; + }) + : null; + + // let filtered = []; // $: { @@ -82,6 +91,7 @@ {checkedObjectsStore} {disableContextMenu} {filter} + isExpandedBySearch={childrenMatched.includes(data)} /> {/each} {/if} diff --git a/packages/web/src/appobj/AppObjectListItem.svelte b/packages/web/src/appobj/AppObjectListItem.svelte index b4ff22bee..3f1623138 100644 --- a/packages/web/src/appobj/AppObjectListItem.svelte +++ b/packages/web/src/appobj/AppObjectListItem.svelte @@ -20,6 +20,7 @@ export let expandIconFunc = plusExpandIcon; export let checkedObjectsStore = null; export let disableContextMenu = false; + export let isExpandedBySearch = false; let isExpanded = false; @@ -45,13 +46,13 @@ {data} on:click={handleExpand} on:expand={handleExpandButton} - expandIcon={getExpandIcon(expandable, subItemsComponent, isExpanded, expandIconFunc)} + expandIcon={getExpandIcon(!isExpandedBySearch && expandable, subItemsComponent, isExpanded, expandIconFunc)} {checkedObjectsStore} {module} {disableContextMenu} /> - {#if isExpanded && subItemsComponent} + {#if (isExpanded || isExpandedBySearch) && subItemsComponent}
diff --git a/packages/web/src/appobj/ConnectionAppObject.svelte b/packages/web/src/appobj/ConnectionAppObject.svelte index 5d9faeefe..1c5daac5e 100644 --- a/packages/web/src/appobj/ConnectionAppObject.svelte +++ b/packages/web/src/appobj/ConnectionAppObject.svelte @@ -5,6 +5,12 @@ const databases = getLocalStorage(`database_list_${_id}`) || []; return filterName(filter, displayName, server, ...databases.map(x => x.name)); }; + export const createChildMatcher = props => filter => { + if (!filter) return false; + const { _id } = props; + const databases = getLocalStorage(`database_list_${_id}`) || []; + return filterName(filter, ...databases.map(x => x.name)); + };