diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte index bc83bbd9b..72d980d97 100644 --- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte +++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte @@ -697,6 +697,16 @@ initialData, { forceNewTab } ); + + if (tabPreviewMode && defaultActionId && getBoolSettingsValue('defaultAction.useLastUsedAction', true)) { + lastUsedDefaultActions.update(actions => ({ + ...actions, + [objectTypeField]: defaultActionId, + })); + // apiCall('config/update-settings', { + // [`defaultAction.dbObjectClick.${objectTypeField}`]: defaultActionId, + // }); + } } export function handleDatabaseObjectClick( @@ -708,7 +718,7 @@ const activeTab = getActiveTab(); const activeTabProps = activeTab?.props || {}; - const activeDefaultActionId = activeTab?.props?.defaultActionId; + // const activeDefaultActionId = activeTab?.props?.defaultActionId; if (matchDatabaseObjectAppObject(data, activeTabProps)) { if (!tabPreviewMode) { @@ -725,11 +735,10 @@ const availableDefaultActions = defaultDatabaseObjectAppObjectActions[objectTypeField]; - const configuredActionId = getCurrentSettings()[`defaultAction.dbObjectClick.${objectTypeField}`]; + const configuredActionId = getLastUsedDefaultActions()[objectTypeField]; const prefferedAction = - availableDefaultActions.find(x => x.defaultActionId == activeDefaultActionId) ?? - availableDefaultActions.find(x => x.defaultActionId == configuredActionId) ?? - availableDefaultActions[0]; + // availableDefaultActions.find(x => x.defaultActionId == activeDefaultActionId) ?? + availableDefaultActions.find(x => x.defaultActionId == configuredActionId) ?? availableDefaultActions[0]; // console.log('activeTab', activeTab); @@ -832,6 +841,10 @@ databaseObjectMenuClickHandler(data, { ...menu, forceNewTab: true, defaultActionId: null }); } : null, + isBold: + data.objectTypeField && + menu.defaultActionId && + getLastUsedDefaultActions()[data.objectTypeField] == menu.defaultActionId, }; } @@ -868,6 +881,8 @@ getActiveTab, getCurrentSettings, getExtensions, + getLastUsedDefaultActions, + lastUsedDefaultActions, openedConnections, openedTabs, pinnedTables, @@ -901,6 +916,7 @@ import { openImportExportTab } from '../utility/importExportTools'; import { defaultDatabaseObjectAppObjectActions, matchDatabaseObjectAppObject } from './appObjectTools'; import { getSupportedScriptTemplates } from '../utility/applyScriptTemplate'; + import { getBoolSettingsValue } from '../settings/settingsTools'; export let data; export let passProps; diff --git a/packages/web/src/modals/DropDownMenu.svelte b/packages/web/src/modals/DropDownMenu.svelte index d4a525001..e1969c725 100644 --- a/packages/web/src/modals/DropDownMenu.svelte +++ b/packages/web/src/modals/DropDownMenu.svelte @@ -130,7 +130,7 @@ changeActiveSubmenu(); }} > - handleClick(e, item)} class:disabled={item.disabled}> + handleClick(e, item)} class:disabled={item.disabled} class:bold={item.isBold}> {item.text || item.label} {#if item.keyText} {formatKeyText(item.keyText)} @@ -201,6 +201,10 @@ color: var(--theme-font-3); } + a.bold { + font-weight: bold; + } + a:hover:not(.disabled) { background-color: var(--theme-bg-1); text-decoration: none; diff --git a/packages/web/src/settings/FormDefaultActionField.svelte b/packages/web/src/settings/FormDefaultActionField.svelte index 8ddac3166..bd6c920c0 100644 --- a/packages/web/src/settings/FormDefaultActionField.svelte +++ b/packages/web/src/settings/FormDefaultActionField.svelte @@ -1,18 +1,31 @@ - - ({ - value: x.defaultActionId, - label: x.label, - }))} -/> + + ({ + value: x.defaultActionId, + label: x.label, + }))} + value={$lastUsedDefaultActions[objectTypeField]} + on:change={e => { + $lastUsedDefaultActions = { + ...$lastUsedDefaultActions, + [objectTypeField]: e.detail.value, + }; + }} + /> + diff --git a/packages/web/src/settings/SettingsModal.svelte b/packages/web/src/settings/SettingsModal.svelte index 362047098..089b2ed61 100644 --- a/packages/web/src/settings/SettingsModal.svelte +++ b/packages/web/src/settings/SettingsModal.svelte @@ -278,22 +278,33 @@ ORDER BY
Default actions
- + - - - - - + + + + +
Confirmations
diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index b532a42e6..a48d2018b 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -156,6 +156,7 @@ export const loadingPluginStore = writable({ export const activeDbKeysStore = writableWithStorage({}, 'activeDbKeysStore'); export const appliedCurrentSchema = writable(null); export const loadingSchemaLists = writable({}); // dict [`${conid}::${database}`]: true +export const lastUsedDefaultActions = writableWithStorage({}, 'lastUsedDefaultActions'); export const selectedDatabaseObjectAppObject = writable(null); export const focusedConnectionOrDatabase = writable<{ conid: string; database?: string; connection: any }>(null); @@ -352,3 +353,9 @@ openedSingleDatabaseConnections.subscribe(value => { openedSingleDatabaseConnectionsValue = value; }); export const getOpenedSingleDatabaseConnections = () => openedSingleDatabaseConnectionsValue; + +let lastUsedDefaultActionsValue = {}; +lastUsedDefaultActions.subscribe(value => { + lastUsedDefaultActionsValue = value; +}); +export const getLastUsedDefaultActions = () => lastUsedDefaultActionsValue; \ No newline at end of file