mirror of
https://github.com/pgadmin-org/pgadmin4.git
synced 2025-02-03 12:10:55 -06:00
Fix tab focus issue while deleting multiple tabs using shortcut key. #6572
This commit is contained in:
parent
d9ccef94a2
commit
b173fda116
@ -1616,7 +1616,11 @@ class ServerNode(PGChildNodeView):
|
|||||||
KEY_RING_SERVICE_NAME,
|
KEY_RING_SERVICE_NAME,
|
||||||
KEY_RING_USERNAME_FORMAT.format(server.name,
|
KEY_RING_USERNAME_FORMAT.format(server.name,
|
||||||
server.id))
|
server.id))
|
||||||
prompt_password = True if password is None else False
|
prompt_password = (
|
||||||
|
True
|
||||||
|
if password is None and server.passexec_cmd is None
|
||||||
|
else False
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
password = data['password'] if 'password' in data else None
|
password = data['password'] if 'password' in data else None
|
||||||
save_password = data['save_password']\
|
save_password = data['save_password']\
|
||||||
|
@ -148,44 +148,43 @@ _.extend(pgBrowser.keyboardNavigation, {
|
|||||||
},
|
},
|
||||||
bindRightPanel: function(event, combo) {
|
bindRightPanel: function(event, combo) {
|
||||||
const self = this;
|
const self = this;
|
||||||
let dockLayoutTabs = document.activeElement?.closest('.dock-layout')?.querySelectorAll('.dock-tab-btn');
|
const shortcutObj = this.keyboardShortcut;
|
||||||
let shortcut_obj = this.keyboardShortcut;
|
const activeElement = document.activeElement;
|
||||||
//if the focus is on the tab button
|
|
||||||
if (document.activeElement.closest('.dock-tab-btn')) {
|
if (activeElement.closest('.dock-tab-btn')) {
|
||||||
let currDockTab = document.activeElement?.closest('.dock-tab-btn');
|
const currDockTab = activeElement.closest('.dock-tab-btn');
|
||||||
if(dockLayoutTabs?.length > 1 && currDockTab) {
|
const dockLayout = currDockTab.closest('.dock-layout');
|
||||||
for(let i=0; i<dockLayoutTabs.length; i++) {
|
const dockLayoutTabs = dockLayout ? Array.from(dockLayout.querySelectorAll('.dock-tab-btn')) : null;
|
||||||
if(dockLayoutTabs[i] == currDockTab) {
|
|
||||||
let activeTabIdx = i;
|
if (dockLayoutTabs && dockLayoutTabs.length > 1) {
|
||||||
self._focusTab(dockLayoutTabs, activeTabIdx, shortcut_obj, combo);
|
const activeTabIndex = dockLayoutTabs.indexOf(currDockTab);
|
||||||
break;
|
self._focusTab(dockLayoutTabs, activeTabIndex, shortcutObj, combo);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
//if the tab is a iframe or the focus is within the content of tab
|
}
|
||||||
} else if (document.activeElement.nodeName === 'IFRAME' || document.activeElement.closest('.dock-tabpane.dock-tabpane-active')?.id) {
|
else if (activeElement.nodeName === 'IFRAME' || activeElement.closest('.dock-tabpane.dock-tabpane-active')) {
|
||||||
let activeTabId = '';
|
let activeTabId = '';
|
||||||
//if the tab is a iframe
|
activeTabId = (activeElement.nodeName === 'IFRAME') ? activeElement.id : activeElement.closest('.dock-tabpane.dock-tabpane-active').id;
|
||||||
if (document.activeElement.nodeName === 'IFRAME'){
|
const dockLayout = document.getElementById('root');
|
||||||
dockLayoutTabs = document.activeElement?.closest('#root')?.querySelectorAll('.dock-tab-btn');
|
const dockLayoutTabs = dockLayout ? Array.from(dockLayout.querySelectorAll('.dock-tab-btn')) : null;
|
||||||
activeTabId = document.activeElement?.id;
|
|
||||||
//if the focus is within the content of tab
|
if (dockLayoutTabs && dockLayoutTabs.length > 1 && activeTabId) {
|
||||||
} else if (document.activeElement.closest('.dock-tabpane.dock-tabpane-active')?.id){
|
const activeTabIndex = dockLayoutTabs.findIndex(tab => tab.id.slice(14) === activeTabId);
|
||||||
activeTabId = document.activeElement.closest('.dock-tabpane.dock-tabpane-active')?.id;
|
self._focusTab(dockLayoutTabs, activeTabIndex, shortcutObj, combo);
|
||||||
}
|
}
|
||||||
if(dockLayoutTabs?.length > 1 && activeTabId) {
|
}
|
||||||
for(let i=0; i<dockLayoutTabs.length; i++) {
|
else if (activeElement === document.body || document.querySelector('div[data-test="app-menu-bar"]')) {
|
||||||
let tabIdx = i;
|
const activeTabs = document.getElementsByClassName('dock-tabpane dock-tabpane-active');
|
||||||
let tabId = dockLayoutTabs[tabIdx].id?.slice(14);
|
|
||||||
if (tabId == activeTabId) {
|
if (activeTabs.length > 1) {
|
||||||
self._focusTab(dockLayoutTabs, tabIdx, shortcut_obj, combo);
|
const activeTabId = activeTabs[1].id;
|
||||||
break;
|
const dockLayout = document.getElementById('root');
|
||||||
}
|
const dockLayoutTabs = dockLayout ? Array.from(dockLayout.querySelectorAll('.dock-tab-btn')) : null;
|
||||||
|
|
||||||
|
if (dockLayoutTabs && dockLayoutTabs.length > 1 && activeTabId) {
|
||||||
|
const activeTabIndex = dockLayoutTabs.findIndex(tab => tab.id.slice(14) === activeTabId);
|
||||||
|
self._focusTab(dockLayoutTabs, activeTabIndex, shortcutObj, combo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//if the focus is on the body or on the menu bar
|
|
||||||
} else if (document.activeElement === document.body || document.querySelector('div[data-test="app-menu-bar"]')) {
|
|
||||||
pgAdmin.Browser.docker.navigatePanel();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
_focusTab: function(dockLayoutTabs, activeTabIdx, shortcut_obj, combo){
|
_focusTab: function(dockLayoutTabs, activeTabIdx, shortcut_obj, combo){
|
||||||
@ -195,7 +194,7 @@ _.extend(pgBrowser.keyboardNavigation, {
|
|||||||
const panelId = dockLayoutTabs[activeTabIdx].id?.slice(14);
|
const panelId = dockLayoutTabs[activeTabIdx].id?.slice(14);
|
||||||
if (panelId) {
|
if (panelId) {
|
||||||
pgAdmin.Browser.docker.close(panelId);
|
pgAdmin.Browser.docker.close(panelId);
|
||||||
activeTabIdx = activeTabIdx % dockLayoutTabs.length;
|
activeTabIdx = activeTabIdx === dockLayoutTabs.length - 1 || activeTabIdx === 0 ? 1 : activeTabIdx + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dockLayoutTabs[activeTabIdx]?.click();
|
dockLayoutTabs[activeTabIdx]?.click();
|
||||||
|
Loading…
Reference in New Issue
Block a user