diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index 550112a18..730580d45 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -161,7 +161,7 @@ export const lastUsedDefaultActions = writableWithStorage({}, 'lastUsedDefaultAc export const selectedDatabaseObjectAppObject = writable(null); export const focusedConnectionOrDatabase = writable<{ conid: string; database?: string; connection: any }>(null); -export const focusedTreeDbKey = writable<{ key: string; root: string; type: string }>(null); +export const focusedTreeDbKey = writable<{ key: string; root: string; type: string; text: string }>(null); export const DEFAULT_OBJECT_SEARCH_SETTINGS = { pureName: true, @@ -415,4 +415,4 @@ let focusedTreeDbKeyValue = null; focusedTreeDbKey.subscribe(value => { focusedTreeDbKeyValue = value; }); -export const getFocusedTreeDbKey = () => focusedTreeDbKeyValue; \ No newline at end of file +export const getFocusedTreeDbKey = () => focusedTreeDbKeyValue; diff --git a/packages/web/src/tabs/DbKeyDetailTab.svelte b/packages/web/src/tabs/DbKeyDetailTab.svelte index 1e1319e1b..92ebc7a0f 100644 --- a/packages/web/src/tabs/DbKeyDetailTab.svelte +++ b/packages/web/src/tabs/DbKeyDetailTab.svelte @@ -7,6 +7,7 @@ export const allowAddToFavorites = props => false; function getKeyText(key) { + if (!key) return '(no name)'; const keySplit = key.split(':'); if (keySplit.length > 1) return keySplit[keySplit.length - 1]; return key || '(no name)'; diff --git a/packages/web/src/widgets/DbKeysTree.svelte b/packages/web/src/widgets/DbKeysTree.svelte index 1d2370fd5..97c798b28 100644 --- a/packages/web/src/widgets/DbKeysTree.svelte +++ b/packages/web/src/widgets/DbKeysTree.svelte @@ -1,5 +1,11 @@ - + { + domListHandler?.focusFirst(); + }} + /> @@ -107,7 +127,7 @@ {#if differentFocusedDb} {/if} - + o1?.key == o2?.key && o1?.type == o2?.type && o1?.root == o2?.root} handleObjectClick={(data, clickAction) => { focusedTreeDbKey.set(data); + + const openDetailOnArrows = getOpenDetailOnArrowsSettings(); + + if (data.key && ((openDetailOnArrows && clickAction == 'keyArrow') || clickAction == 'keyEnter')) { + openNewTab({ + tabComponent: 'DbKeyDetailTab', + title: data.text || '(no name)', + icon: 'img keydb', + props: { + isDefaultBrowser: true, + conid, + database, + }, + }); + $activeDbKeysStore = { + ...$activeDbKeysStore, + [`${conid}:${database}`]: data.key, + }; + } + if (data.root && clickAction == 'keyEnter') { + changeModel(model => dbKeys_markNodeExpanded(model, data.root, !model.dirsByKey[data.root]?.isExpanded)); + } + }} + handleExpansion={(data, value) => { + changeModel(model => dbKeys_markNodeExpanded(model, data.root, value)); + }} + onScrollTop={() => { + domContainer?.scrollTop(); + }} + onFocusFilterBox={text => { + domFilter?.focus(text); }} > diff --git a/packages/web/src/widgets/DbKeysTreeNode.svelte b/packages/web/src/widgets/DbKeysTreeNode.svelte index 56a968efb..afb968be6 100644 --- a/packages/web/src/widgets/DbKeysTreeNode.svelte +++ b/packages/web/src/widgets/DbKeysTreeNode.svelte @@ -164,7 +164,7 @@ } }} on:mousedown={() => { - $focusedTreeDbKey = _.pick(item, ['type', 'key', 'root']); + $focusedTreeDbKey = _.pick(item, ['type', 'key', 'root', 'text']); }} extInfo={item.count ? `(${item.count})` : null} {indentLevel}