You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Scoped slots (#item-content and #item-trailing) on UNavigationMenu did not behave as expected: dropdown shell with viewport could appear with empty panels (nothing rendered), and custom trailing markup could still show default chevron icons.
item-content
Defining #item-content once (e.g. to customize the mega-menu body per item) caused every top-level item to be treated as having a dropdown.
Items without children still received NavigationMenuTrigger + NavigationMenuContent. If the slot rendered nothing for those rows (v-if="item.children"), the viewport still showed an empty data-slot="content" and empty childList.
item-trailing
Defining #item-trailing should give full control over the trailing area.
Instead, default chevrons (linkTrailingIcon) could still appear on rows where the slot intentionally rendered nothing, because defaults lived inside the same <slot> as fallback content, which interacted badly with createReusableTemplate / ReuseLinkTemplate for nested scoped slots.
Expected behavior
Dropdown trigger + content should only exist when an item actually has nested entries (children), unless the API explicitly adds another mechanism later.
When #item-trailing is provided, only that slot should render in the trailing region—no default badge/chevron mix-in for the same row.
Additional context
CleanShot.2026-03-27.at.16.22.05.mp4
In the screen-recording, given the source-code of the repro, only the "V" dropdown + chevron should be visible, as this one has children content, while the others don't.
Environment
macOS 25.3.0Apple M4 Pro (12 cores)v24.13.03.34.0[email protected]4.4.22.13.2[email protected]compatibilityDate,css,devtools,eslint,modules,routeRules@nuxt/[email protected],@nuxt/[email protected]Is this bug related to Nuxt or Vue?
Nuxt
Package
v4.x
Version
4.6.0
Reproduction
https://github.com/TotomInc/nuxt-ui-repro/tree/repro/navigation-menu-slots (
repro/navigation-menu-slotsbranch, notmaster)Description
Scoped slots (
#item-contentand#item-trailing) onUNavigationMenudid not behave as expected: dropdown shell with viewport could appear with empty panels (nothing rendered), and custom trailing markup could still show default chevron icons.item-contentDefining
#item-contentonce (e.g. to customize the mega-menu body per item) caused every top-level item to be treated as having a dropdown.Items without
childrenstill receivedNavigationMenuTrigger+NavigationMenuContent. If the slot rendered nothing for those rows (v-if="item.children"), the viewport still showed an emptydata-slot="content"and emptychildList.item-trailingDefining
#item-trailingshould give full control over the trailing area.Instead, default chevrons (
linkTrailingIcon) could still appear on rows where the slot intentionally rendered nothing, because defaults lived inside the same<slot>as fallback content, which interacted badly withcreateReusableTemplate/ReuseLinkTemplatefor nested scoped slots.Expected behavior
children), unless the API explicitly adds another mechanism later.#item-trailingis provided, only that slot should render in the trailing region—no default badge/chevron mix-in for the same row.Additional context
CleanShot.2026-03-27.at.16.22.05.mp4
In the screen-recording, given the source-code of the repro, only the "V" dropdown + chevron should be visible, as this one has children content, while the others don't.
Logs