diff --git a/bo/.gitignore b/bo/.gitignore index cd68f14..e80697a 100644 --- a/bo/.gitignore +++ b/bo/.gitignore @@ -13,6 +13,7 @@ dist dist-ssr coverage *.local +/bo/components.d.ts # Editor directories and files .vscode/* diff --git a/bo/components.d.ts b/bo/components.d.ts deleted file mode 100644 index 91a4f16..0000000 --- a/bo/components.d.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* eslint-disable */ -// @ts-nocheck -// biome-ignore lint: disable -// oxlint-disable -// ------ -// Generated by unplugin-vue-components -// Read more: https://github.com/vuejs/core/pull/3399 - -export {} - -/* prettier-ignore */ -declare module 'vue' { - export interface GlobalComponents { - CartDetails: typeof import('./src/components/customer/CartDetails.vue')['default'] - CategoryMenu: typeof import('./src/components/inner/categoryMenu.vue')['default'] - CategoryMenuListing: typeof import('./src/components/inner/categoryMenuListing.vue')['default'] - Cs_PrivacyPolicyView: typeof import('./src/components/terms/cs_PrivacyPolicyView.vue')['default'] - Cs_TermsAndConditionsView: typeof import('./src/components/terms/cs_TermsAndConditionsView.vue')['default'] - En_PrivacyPolicyView: typeof import('./src/components/terms/en_PrivacyPolicyView.vue')['default'] - En_TermsAndConditionsView: typeof import('./src/components/terms/en_TermsAndConditionsView.vue')['default'] - LangSwitch: typeof import('./src/components/inner/langSwitch.vue')['default'] - PageAddresses: typeof import('./src/components/customer/PageAddresses.vue')['default'] - PageCarts: typeof import('./src/components/customer/PageCarts.vue')['default'] - PageProduct: typeof import('./src/components/customer/PageProduct.vue')['default'] - PageProducts: typeof import('./src/components/admin/PageProducts.vue')['default'] - PageProfileDetails: typeof import('./src/components/customer/PageProfileDetails.vue')['default'] - PageProfileDetailsAddInfo: typeof import('./src/components/customer/PageProfileDetailsAddInfo.vue')['default'] - Pl_PrivacyPolicyView: typeof import('./src/components/terms/pl_PrivacyPolicyView.vue')['default'] - Pl_TermsAndConditionsView: typeof import('./src/components/terms/pl_TermsAndConditionsView.vue')['default'] - ProductCustomization: typeof import('./src/components/customer/components/ProductCustomization.vue')['default'] - ProductDetailView: typeof import('./src/components/admin/ProductDetailView.vue')['default'] - ProductVariants: typeof import('./src/components/customer/components/ProductVariants.vue')['default'] - RouterLink: typeof import('vue-router')['RouterLink'] - RouterView: typeof import('vue-router')['RouterView'] - ThemeSwitch: typeof import('./src/components/inner/themeSwitch.vue')['default'] - TopBar: typeof import('./src/components/TopBar.vue')['default'] - TopBarLogin: typeof import('./src/components/TopBarLogin.vue')['default'] - UAlert: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Alert.vue')['default'] - UButton: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Button.vue')['default'] - UDrawer: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Drawer.vue')['default'] - UForm: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Form.vue')['default'] - UFormField: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/FormField.vue')['default'] - UIcon: typeof import('./node_modules/@nuxt/ui/dist/runtime/vue/components/Icon.vue')['default'] - UInput: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/Input.vue')['default'] - UNavigationMenu: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/NavigationMenu.vue')['default'] - USelectMenu: typeof import('./node_modules/@nuxt/ui/dist/runtime/components/SelectMenu.vue')['default'] - } -} diff --git a/bo/src/components/TopBar.vue b/bo/src/components/TopBar.vue index 2c9d8ca..38571bd 100644 --- a/bo/src/components/TopBar.vue +++ b/bo/src/components/TopBar.vue @@ -3,10 +3,11 @@ import { useFetchJson } from '@/composable/useFetchJson' import LangSwitch from './inner/langSwitch.vue' import ThemeSwitch from './inner/themeSwitch.vue' import { useAuthStore } from '@/stores/auth' -import { computed, ref } from 'vue' +import { computed, onMounted, ref } from 'vue' import { currentLang } from '@/router/langs' import type { LabelTrans, TopMenuItem } from '@/types' import type { NavigationMenuItem } from '@nuxt/ui' +import { useRoute, useRouter } from 'vue-router' const authStore = useAuthStore() let menu = ref() @@ -19,30 +20,43 @@ async function getTopMenu() { } } +const router = useRouter() +const route = useRoute() const menuItems = computed(() => transformMenu(menu.value[0].children, currentLang.value?.iso_code)) function transformMenu(items: TopMenuItem[], locale: string | undefined): NavigationMenuItem[] { + return items.map((item) => { - let route = { - icon: 'i-lucide-house', + const route: NavigationMenuItem = { + icon: item.label.icon ? item.label.icon : 'i-lucide-house', label: item.label.trans[locale as keyof LabelTrans].label, - children: item.children ? transformMenu(item.children, locale) : undefined, + children: item.children + ? transformMenu(item.children, locale) + : undefined, + } + + route.onSelect = () => { + const query = { + name: item.params.route.name, + params: { + ...(item.params.route.params || {}), + locale: currentLang.value?.iso_code + } + } + + router.push(query) } - if (item.params?.route) { - route = { ...route, ...{ to: { name: item.params.route.name, params: { locale: locale } } } } - } return route }) } - await getTopMenu()