Skip to content

Commit c1c9da4

Browse files
committedJan 29, 2025·
fix(NavigationMenu): wrong level compute on vertical orientation
1 parent 0e46c3e commit c1c9da4

File tree

3 files changed

+64
-57
lines changed

3 files changed

+64
-57
lines changed
 

‎src/runtime/components/NavigationMenu.vue

+12-5
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ const contentProps = toRef(() => props.content)
185185
186186
const appConfig = useAppConfig()
187187
const [DefineLinkTemplate, ReuseLinkTemplate] = createReusableTemplate<{ item: NavigationMenuItem, index: number, active?: boolean }>()
188-
const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate<{ item: NavigationMenuItem, index: number }>()
188+
const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate<{ item: NavigationMenuItem, index: number, level?: number }>()
189189
190190
const ui = computed(() => navigationMenu({
191191
orientation: props.orientation,
@@ -237,7 +237,7 @@ const lists = computed(() => props.items?.length ? (Array.isArray(props.items[0]
237237
</slot>
238238
</DefineLinkTemplate>
239239

240-
<DefineItemTemplate v-slot="{ item, index }">
240+
<DefineItemTemplate v-slot="{ item, index, level = 0 }">
241241
<component
242242
:is="(orientation === 'vertical' && item.children?.length) ? UCollapsible : NavigationMenuItem"
243243
as="li"
@@ -253,11 +253,11 @@ const lists = computed(() => props.items?.length ? (Array.isArray(props.items[0]
253253
<component
254254
:is="(orientation === 'horizontal' && (item.children?.length || !!slots[item.slot ? `${item.slot}-content` : 'item-content'])) ? NavigationMenuTrigger : NavigationMenuLink"
255255
as-child
256-
:active="active"
256+
:active="active || item.active"
257257
:disabled="item.disabled"
258258
@select="item.onSelect"
259259
>
260-
<ULinkBase v-bind="slotProps" :class="ui.link({ class: [props.ui?.link, item.class], active: active || item.active, disabled: !!item.disabled, level: !(orientation === 'vertical' && item.children?.length) })">
260+
<ULinkBase v-bind="slotProps" :class="ui.link({ class: [props.ui?.link, item.class], active: active || item.active, disabled: !!item.disabled, level: orientation === 'horizontal' || level > 0 })">
261261
<ReuseLinkTemplate :item="(item as T)" :active="active || item.active" :index="index" />
262262
</ULinkBase>
263263
</component>
@@ -292,7 +292,14 @@ const lists = computed(() => props.items?.length ? (Array.isArray(props.items[0]
292292

293293
<template v-if="orientation === 'vertical' && item.children?.length" #content>
294294
<ul :class="ui.childList({ class: props.ui?.childList })">
295-
<ReuseItemTemplate v-for="(childItem, childIndex) in item.children" :key="childIndex" :item="childItem" :index="childIndex" :class="ui.childItem({ class: props.ui?.childItem })" />
295+
<ReuseItemTemplate
296+
v-for="(childItem, childIndex) in item.children"
297+
:key="childIndex"
298+
:item="childItem"
299+
:index="childIndex"
300+
:level="level + 1"
301+
:class="ui.childItem({ class: props.ui?.childItem })"
302+
/>
296303
</ul>
297304
</template>
298305
</component>

0 commit comments

Comments
 (0)
Please sign in to comment.