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}