69 lines
1.9 KiB
Vue
69 lines
1.9 KiB
Vue
<script setup>
|
|
import Menu from "~/navigation/index.js";
|
|
import RSItem from "~/components/layouts/sidemenu/Item.vue";
|
|
|
|
// Use site settings composable
|
|
const { siteSettings } = useSiteSettings();
|
|
|
|
// Add computed to ensure logo reactivity
|
|
const currentLogo = computed(() => {
|
|
return siteSettings.value.siteLogo && siteSettings.value.siteLogo.trim() !== ''
|
|
? siteSettings.value.siteLogo
|
|
: '/assets/img/logo/logo-imigresen.svg';
|
|
});
|
|
|
|
// const menuItem = Menu;
|
|
|
|
const props = defineProps({
|
|
menuItem: {
|
|
type: Array,
|
|
default: () => Menu,
|
|
required: false,
|
|
},
|
|
});
|
|
|
|
onMounted(() => {
|
|
try {
|
|
const el = document.querySelector(".active-menu").closest(".menu-content");
|
|
const elParent = el.parentElement.parentElement;
|
|
|
|
if (elParent) {
|
|
elParent.classList.remove("hide");
|
|
elParent.querySelector("a").classList.add("nav-open");
|
|
}
|
|
if (el) el.classList.remove("hide");
|
|
} catch (e) {
|
|
// console.log(e);
|
|
return;
|
|
}
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<div class="vertical-menu">
|
|
<div class="py-2 px-4 bg-[rgb(var(--header))]">
|
|
<nuxt-link to="/">
|
|
<div class="flex flex-auto gap-3 justify-center items-center h-[48px]">
|
|
<img
|
|
:src="currentLogo"
|
|
:alt="siteSettings.siteName || 'Site Logo'"
|
|
class="h-8 block"
|
|
@error="$event.target.src = '/assets/img/logo/logo-imigresen.svg'"
|
|
/>
|
|
<span v-if="siteSettings.showSiteNameInHeader"
|
|
class="text-xs"
|
|
:style="{ fontSize: Math.max(10, (siteSettings.siteNameFontSize || 18) * 0.65) + 'px' }">
|
|
{{ siteSettings.siteName || 'Jabatan Imigresen Malaysia' }}
|
|
</span>
|
|
</div>
|
|
</nuxt-link>
|
|
</div>
|
|
<NuxtScrollbar
|
|
class="flex flex-col justify-between my-6"
|
|
style="max-height: 82dvh"
|
|
>
|
|
<RSItem :items="menuItem"></RSItem>
|
|
</NuxtScrollbar>
|
|
</div>
|
|
</template>
|