diff --git a/client/src/components/header/SubNavItem.vue b/client/src/components/header/SubNavItem.vue index 69c4f074..736e93ab 100644 --- a/client/src/components/header/SubNavItem.vue +++ b/client/src/components/header/SubNavItem.vue @@ -28,7 +28,14 @@ const isExternalLink = computed(() => { - + + +import SubNavItem from "@/components/header/SubNavItem.vue"; +import { Listbox, ListboxOption, ListboxOptions } from "@headlessui/vue"; +import { computed, ref } from "vue"; +import { useRouter } from "vue-router"; +const router = useRouter(); + +export interface EntryRoute { + name: string; +} + +export type EntryOrExternalRoute = EntryRoute | string; + +export interface SubNavEntry { + id: number; + name: string; + route: EntryOrExternalRoute; +} + +export interface Props { + items: SubNavEntry[]; +} +const props = defineProps(); + +const isCurrentRoute = (route: { name: string } | string) => { + return typeof route !== "string" && route?.name === router.currentRoute.value.name; +}; +const currentRouteName = computed(() => { + return props.items.find((item) => isCurrentRoute(item.route))?.name || ""; +}); +const open = ref(false); +const currentRoute = ref(props.items.find((item) => isCurrentRoute(item.route))); +const selectRoute = (current: SubNavEntry) => { + // we use this to mimic VueRouter's active flag + open.value = false; + currentRoute.value = current; +}; + + diff --git a/client/src/pages/competence/CompetenceParentPage.vue b/client/src/pages/competence/CompetenceParentPage.vue index 665507ba..170f2a85 100644 --- a/client/src/pages/competence/CompetenceParentPage.vue +++ b/client/src/pages/competence/CompetenceParentPage.vue @@ -1,5 +1,5 @@