diff --git a/packages/web/public/global.css b/packages/web/public/global.css index d3679ddf8..a5228d520 100644 --- a/packages/web/public/global.css +++ b/packages/web/public/global.css @@ -28,6 +28,10 @@ body { background-color: var(--theme-bg-2); } +.icon-invisible { + visibility: hidden; +} + /* html, body { position: relative; width: 100%; diff --git a/packages/web/src/appobj/AppObjectCore.svelte b/packages/web/src/appobj/AppObjectCore.svelte index 2d29ded0c..5f07d3cc0 100644 --- a/packages/web/src/appobj/AppObjectCore.svelte +++ b/packages/web/src/appobj/AppObjectCore.svelte @@ -6,7 +6,6 @@ export let title; export let isBold = false; - export let prefix = ''; export let isBusy = false; export let statusIcon = undefined; export let statusTitle = undefined; @@ -15,7 +14,7 @@
- {prefix} + {#if isBusy} {:else} diff --git a/packages/web/src/appobj/AppObjectGroup.svelte b/packages/web/src/appobj/AppObjectGroup.svelte new file mode 100644 index 000000000..9f71da4d9 --- /dev/null +++ b/packages/web/src/appobj/AppObjectGroup.svelte @@ -0,0 +1,37 @@ + + +
(isExpanded = !isExpanded)}> + {group} + {items && `(${countText})`} +
+ +{#if isExpanded} + {#each filtered as item (module.extractKey(item.data))} + + {/each} +{/if} + + diff --git a/packages/web/src/appobj/AppObjectList.svelte b/packages/web/src/appobj/AppObjectList.svelte index af4f7e6b2..273307506 100644 --- a/packages/web/src/appobj/AppObjectList.svelte +++ b/packages/web/src/appobj/AppObjectList.svelte @@ -1,10 +1,14 @@ - -{#each filtered as data} - -{/each} +{#if groupFunc} + {#each _.keys(groups) as group (group)} + + {/each} +{:else} + {#each filtered as data (module.extractKey(data))} + + {/each} +{/if} diff --git a/packages/web/src/appobj/AppObjectListItem.svelte b/packages/web/src/appobj/AppObjectListItem.svelte index 938719291..1521cb1c6 100644 --- a/packages/web/src/appobj/AppObjectListItem.svelte +++ b/packages/web/src/appobj/AppObjectListItem.svelte @@ -1,20 +1,52 @@ - +{#if subItemsComponent} + + + {#if expandable} + + {:else} + + {/if} + + +{:else} + +{/if} {#if isExpanded && subItemsComponent} - +
+ +
{/if} + + diff --git a/packages/web/src/appobj/ConnectionAppObject.svelte b/packages/web/src/appobj/ConnectionAppObject.svelte index 7dd1c4c13..c8773cc9e 100644 --- a/packages/web/src/appobj/ConnectionAppObject.svelte +++ b/packages/web/src/appobj/ConnectionAppObject.svelte @@ -102,6 +102,8 @@ statusTitle={statusTitle || engineStatusTitle} {extInfo} menu={getContextMenu(data, $openedConnections)} - on:click on:click={() => ($openedConnections = _.uniq([...$openedConnections, data._id]))} -/> + on:click +> + + diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte index 1e04fcefc..3a1460f39 100644 --- a/packages/web/src/appobj/DatabaseAppObject.svelte +++ b/packages/web/src/appobj/DatabaseAppObject.svelte @@ -1,3 +1,7 @@ + + + + +{#if isBlank} + +{:else} + +{/if} diff --git a/packages/web/src/icons/FontIcon.svelte b/packages/web/src/icons/FontIcon.svelte index a815eb34f..2ed5a29a1 100644 --- a/packages/web/src/icons/FontIcon.svelte +++ b/packages/web/src/icons/FontIcon.svelte @@ -102,4 +102,4 @@ }; - + diff --git a/packages/web/src/widgets/ConnectionList.svelte b/packages/web/src/widgets/ConnectionList.svelte index 298301dbb..e0b94df68 100644 --- a/packages/web/src/widgets/ConnectionList.svelte +++ b/packages/web/src/widgets/ConnectionList.svelte @@ -8,6 +8,7 @@ import AppObjectList from '../appobj/AppObjectList.svelte'; import * as connectionAppObject from '../appobj/ConnectionAppObject.svelte'; import SubDatabaseList from '../appobj/SubDatabaseList.svelte'; + import { openedConnections } from '../stores'; const connections = useConnectionList(); const serverStatus = useServerStatus(); @@ -30,6 +31,7 @@ module={connectionAppObject} subItemsComponent={SubDatabaseList} expandOnClick + isExpandable={data => $openedConnections.includes(data._id)} {filter} /> diff --git a/packages/web/src/widgets/SqlObjectList.svelte b/packages/web/src/widgets/SqlObjectList.svelte index 328fcb897..82303651c 100644 --- a/packages/web/src/widgets/SqlObjectList.svelte +++ b/packages/web/src/widgets/SqlObjectList.svelte @@ -12,6 +12,8 @@ export let conid; export let database; + let filter = ''; + $: objects = useDatabaseInfo({ conid, database }); $: status = useDatabaseStatus({ conid, database }); @@ -26,9 +28,14 @@ - + Refresh - ({ ...x, conid, database }))} module={databaseObjectAppObject} /> + ({ ...x, conid, database }))} + module={databaseObjectAppObject} + groupFunc={data => _.startCase(data.objectTypeField)} + {filter} + />