Files
nocodb/packages/nc-gui/store/projectsShortcuts.ts
Ramesh Mane 288cfa8b75 fix(nc-gui): Prevent keyboard shortcuts if user is in cell edit mode or any other active input element (#9600)
* fix(nc-gui): stop event propogation is active element is input

* fix(nc-gui): disable expanded form keyboard shortcuts navigation if it is first row or last row

* fix(nc-gui): oss test fail issue
2024-10-08 11:06:55 +05:30

62 lines
1.7 KiB
TypeScript

import { acceptHMRUpdate, defineStore } from 'pinia'
export const useProjectsShortcuts = defineStore('projectsShortcutsStore', () => {
const { $e } = useNuxtApp()
const { isUIAllowed } = useRoles()
const isMounted = ref(false)
const isFullScreen = ref(false)
const workspaceStore = useWorkspace()
workspaceStore.$subscribe(() => {
if (!isMounted.value) {
isMounted.value = true
}
})
watch(isMounted, () => {
useEventListener(document, 'keydown', async (e: KeyboardEvent) => {
const cmdOrCtrl = isMac() ? e.metaKey : e.ctrlKey
if (e.altKey && !e.shiftKey && !cmdOrCtrl) {
switch (e.keyCode) {
case 70: {
// ALT + F
if (!isDrawerOrModalExist() && !isActiveInputElementExist()) {
$e('c:shortcut', { key: 'ALT + F' })
const sidebarStore = useSidebarStore()
isFullScreen.value = !isFullScreen.value
sidebarStore.isLeftSidebarOpen = !isFullScreen.value
sidebarStore.isRightSidebarOpen = !isFullScreen.value
}
break
}
// 'ALT + ,'
case 188: {
if (isUIAllowed('settingsPage') && !isDrawerOrModalExist() && !isActiveInputElementExist()) {
$e('c:shortcut', { key: 'ALT + ,' })
const basesStore = useBases()
if (!basesStore.activeProjectId) return
basesStore.navigateToProject({
baseId: basesStore.activeProjectId,
page: 'collaborators',
})
}
break
}
}
}
})
})
})
if (import.meta.hot) {
import.meta.hot.accept(acceptHMRUpdate(useProjectsShortcuts as any, import.meta.hot))
}