Skip to content

Commit

Permalink
✨ auto activate current route in menu (#80)
Browse files Browse the repository at this point in the history
  • Loading branch information
doroudi authored Oct 29, 2024
1 parent e6f6acd commit d34bcc9
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions src/components/Sidebar.vue
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
<script setup lang="ts">
import { type MenuOption, NBadge } from 'naive-ui'
import { NBadge } from 'naive-ui'
import type { MenuInst, type MenuOption } from 'naive-ui'
import {
PersonSettings20Regular as AccountSettingsIcon,
CheckmarkStarburst16Regular as BrandsIcon,
Expand Down Expand Up @@ -157,13 +159,12 @@ const menuOptions: MenuOption[] = [
},
]
const route = useRoute()
const selectedMenuKey = ref('dashboard')
const menuRef = ref<MenuInst | null>(null)
onMounted(() => {
.value = menuOptions.flatMap(m => m.children || m)
.find(m => m.key.toLowerCase() === route.name.toLowerCase()).key
const keys = menuOptions.flatMap((m: MenuOption) => m.children.key || m.key)
selectedMenuKey.value = keys.find(m => m.key.toLowerCase() === route.name.toLowerCase()).key
menuRef.value?.showOption(selectedMenuKey.value)
})
Expand All @@ -188,7 +189,10 @@ function renderIcon(icon: any, showBadge = false) {
</h1>
</div>
</div>
<n-menu ref="menuRef" v-model:value="selectedMenuKey" :collapsed-width="64" :collapsed-icon-size="22" :options="menuOptions" />
<n-menu
ref="menuRef" v-model:value="selectedMenuKey" :collapsed-width="64" :collapsed-icon-size="22"
:options="menuOptions"
/>
</n-layout-sider>
</template>

Expand Down

0 comments on commit d34bcc9

Please sign in to comment.