diff --git a/app/src/lang/translations/en-US.yaml b/app/src/lang/translations/en-US.yaml index 6704b56de2..cb3616fc62 100644 --- a/app/src/lang/translations/en-US.yaml +++ b/app/src/lang/translations/en-US.yaml @@ -1406,4 +1406,4 @@ layouts: field: Geometry invalid_geometry: Invalid geometry auto_location_filter: Always filter data to view bounds - search_this_area: Search this area \ No newline at end of file + search_this_area: Search this area diff --git a/app/src/views/private/components/module-bar/module-bar.vue b/app/src/views/private/components/module-bar/module-bar.vue index 078b53151f..efaef6de93 100644 --- a/app/src/views/private/components/module-bar/module-bar.vue +++ b/app/src/views/private/components/module-bar/module-bar.vue @@ -35,6 +35,8 @@ import ModuleBarAvatar from '../module-bar-avatar/'; import { useUserStore } from '@/stores/'; import { orderBy } from 'lodash'; import { ModuleConfig } from '@directus/shared/types'; +import useShortcut from '@/composables/use-shortcut'; +import { useRouter } from 'vue-router'; export default defineComponent({ components: { @@ -42,6 +44,7 @@ export default defineComponent({ ModuleBarAvatar, }, setup() { + const router = useRouter(); const userStore = useUserStore(); const { modules } = getModules(); @@ -85,6 +88,14 @@ export default defineComponent({ } return registeredModules; }); + + for (let i = 0; i < internalModules.value.length && i < 10; i++) { + useShortcut(`shift+${i + 1}`, () => { + const module = internalModules.value[i]; + if ('to' in module) router.push(module.to); + }); + } + return { internalModules, modules }; }, });