handle tab focus

This commit is contained in:
SPRINX0\prochazka
2024-11-21 16:49:56 +01:00
parent 4b1c021871
commit b9f9501e67
9 changed files with 58 additions and 17 deletions

View File

@@ -38,7 +38,7 @@ import { switchCurrentDatabase } from './common';
// }
// });
export async function changeDatabaseByCurrentTab() {
export async function handleAfterTabClick() {
const currentTab = getActiveTab();
const { conid, database, objectTypeField, pureName, schemaName, defaultActionId } = currentTab?.props || {};
const db = getCurrentDatabase();
@@ -67,6 +67,14 @@ export async function changeDatabaseByCurrentTab() {
schemaName,
});
}
// focus current tab
openedTabs.update(tabs => {
return tabs.map(tab => ({
...tab,
focused: !!tab.selected && !tab.closedTime,
}));
});
}
currentDatabase.subscribe(currentDb => {

View File

@@ -30,12 +30,23 @@ export function markTabSaved(tabid) {
openedTabs.update(files => files.map(tab => (tab.tabid == tabid ? { ...tab, unsaved: false } : tab)));
}
export function setSelectedTabFunc(files, tabid, previewModeValue = undefined) {
export function setSelectedTabFunc(files, tabid, additionalProps = {}) {
return [
...(files || []).filter(x => x.tabid != tabid).map(x => ({ ...x, selected: false })),
...(files || [])
.filter(x => x.tabid != tabid)
.map(x => ({
...x,
selected: false,
focused: false,
})),
...(files || [])
.filter(x => x.tabid == tabid)
.map(x => ({ ...x, selected: true, tabPreviewMode: previewModeValue ?? x.tabPreviewMode })),
.map(x => ({
...x,
selected: true,
focused: false,
...additionalProps,
})),
];
}

View File

@@ -50,7 +50,9 @@ export default async function openNewTab(newTab, initialData: any = undefined, o
}
if (existing) {
openedTabs.update(tabs => setSelectedTabFunc(tabs, existing.tabid, !tabPreviewMode ? false : undefined));
openedTabs.update(tabs =>
setSelectedTabFunc(tabs, existing.tabid, !tabPreviewMode ? { tabPreviewMode: false } : {})
);
return;
}