diff --git a/packages/web/src/appobj/AppObjectList.svelte b/packages/web/src/appobj/AppObjectList.svelte index c47af2563..af4f7e6b2 100644 --- a/packages/web/src/appobj/AppObjectList.svelte +++ b/packages/web/src/appobj/AppObjectList.svelte @@ -2,13 +2,20 @@ import AppObjectListItem from './AppObjectListItem.svelte'; export let list; - export let component; + export let module; export let subItemsComponent = undefined; export let expandOnClick = false; + export let filter; export let groupFunc = undefined; + + $: filtered = list.filter(data => { + const matcher = module.createMatcher && module.createMatcher(data); + if (matcher && !matcher(filter)) return false; + return true; + }); -{#each list as data} - +{#each filtered as data} + {/each} diff --git a/packages/web/src/appobj/AppObjectListItem.svelte b/packages/web/src/appobj/AppObjectListItem.svelte index adc02ba99..938719291 100644 --- a/packages/web/src/appobj/AppObjectListItem.svelte +++ b/packages/web/src/appobj/AppObjectListItem.svelte @@ -1,5 +1,5 @@ - + {#if isExpanded && subItemsComponent} diff --git a/packages/web/src/appobj/ConnectionAppObject.svelte b/packages/web/src/appobj/ConnectionAppObject.svelte index 6b55aebef..7dd1c4c13 100644 --- a/packages/web/src/appobj/ConnectionAppObject.svelte +++ b/packages/web/src/appobj/ConnectionAppObject.svelte @@ -26,6 +26,9 @@ }, ]; }; + + export const extractKey = data => data._id; + export const createMatcher = ({ displayName, server }) => filter => filterName(filter, displayName, server); - ({ ...db, connection: data }))} component={DatabaseAppObject} /> + ({ ...db, connection: data }))} module={databaseAppObject} /> diff --git a/packages/web/src/widgets/ConnectionList.svelte b/packages/web/src/widgets/ConnectionList.svelte index 194ad92ca..298301dbb 100644 --- a/packages/web/src/widgets/ConnectionList.svelte +++ b/packages/web/src/widgets/ConnectionList.svelte @@ -6,12 +6,14 @@ import { useConnectionList, useServerStatus } from '../utility/metadataLoaders'; import SearchBoxWrapper from './SearchBoxWrapper.svelte'; import AppObjectList from '../appobj/AppObjectList.svelte'; - import ConnectionAppObject from '../appobj/ConnectionAppObject.svelte'; + import * as connectionAppObject from '../appobj/ConnectionAppObject.svelte'; import SubDatabaseList from '../appobj/SubDatabaseList.svelte'; const connections = useConnectionList(); const serverStatus = useServerStatus(); + let filter = ''; + $: connectionsWithStatus = $connections && $serverStatus ? $connections.map(conn => ({ ...conn, status: $serverStatus[conn._id] })) @@ -19,14 +21,15 @@ - + Refresh (displayName || server || '').toUpperCase())} - component={ConnectionAppObject} + module={connectionAppObject} subItemsComponent={SubDatabaseList} expandOnClick + {filter} /> diff --git a/packages/web/src/widgets/SearchInput.svelte b/packages/web/src/widgets/SearchInput.svelte index e73c034ed..19b931210 100644 --- a/packages/web/src/widgets/SearchInput.svelte +++ b/packages/web/src/widgets/SearchInput.svelte @@ -1,8 +1,26 @@ - + domInput.select()} +/>