Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Error: <MenuItems /> is missing a parent <Menu /> component. with headlessui/vue #3340

Unanswered
andrea-mucci asked this question in Help
Discussion options

Hi All

I have the following code:

<script setup lang="ts">
import {RouterView} from "vue-router";
import {Disclosure, DisclosureButton, DisclosurePanel, MenuButton, MenuItem, MenuItems} from "@headlessui/vue";
import { Bars3Icon, BellIcon, XMarkIcon } from '@heroicons/vue/24/outline'
const user = {
 name: 'Tom Cook',
 email: 'tom@example.com',
 imageUrl:
 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80',
}
const navigation = [
 { name: 'Dashboard', href: '#', current: true },
 { name: 'Team', href: '#', current: false },
 { name: 'Projects', href: '#', current: false },
 { name: 'Calendar', href: '#', current: false },
 { name: 'Reports', href: '#', current: false },
]
const userNavigation = [
 { name: 'Your Profile', href: '#' },
 { name: 'Settings', href: '#' },
 { name: 'Sign out', href: '#' },
]
</script>
<template>
 <div class="min-h-full">
 <Disclosure as="nav" class="bg-gray-800" v-slot="{ open }">
 <div class="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8">
 <div class="flex h-16 items-center justify-between">
 <div class="flex items-center">
 <div class="flex-shrink-0">
 <img class="h-8 w-8" src="https://tailwindui.com/img/logos/mark.svg?color=indigo&shade=500" alt="Your Company" />
 </div>
 <div class="hidden md:block">
 <div class="ml-10 flex items-baseline space-x-4">
 <a v-for="item in navigation" :key="item.name" :href="item.href" :class="[item.current ? 'bg-gray-900 text-white' : 'text-gray-300 hover:bg-gray-700 hover:text-white', 'rounded-md px-3 py-2 text-sm font-medium']" :aria-current="item.current ? 'page' : undefined">{{ item.name }}</a>
 </div>
 </div>
 </div>
 <div class="hidden md:block">
 <div class="ml-4 flex items-center md:ml-6">
 <button type="button" class="relative rounded-full bg-gray-800 p-1 text-gray-400 hover:text-white focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-gray-800">
 <span class="absolute -inset-1.5" />
 <span class="sr-only">View notifications</span>
 <BellIcon class="h-6 w-6" aria-hidden="true" />
 </button>
 <!-- Profile dropdown -->
 <Menu as="div" class="relative ml-3">
 <MenuItems class="absolute right-0 z-10 mt-2 w-48 origin-top-right rounded-md bg-white py-1 shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none">
 <MenuItem v-for="item in userNavigation" :key="item.name" v-slot="{ active }">
 <a :href="item.href" :class="[active ? 'bg-gray-100' : '', 'block px-4 py-2 text-sm text-gray-700']">{{ item.name }}</a>
 </MenuItem>
 </MenuItems>
 </Menu>
 </div>
 </div>
 <div class="-mr-2 flex md:hidden">
 <!-- Mobile menu button -->
 <DisclosureButton class="relative inline-flex items-center justify-center rounded-md bg-gray-800 p-2 text-gray-400 hover:bg-gray-700 hover:text-white focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-gray-800">
 <span class="absolute -inset-0.5" />
 <span class="sr-only">Open main menu</span>
 <Bars3Icon v-if="!open" class="block h-6 w-6" aria-hidden="true" />
 <XMarkIcon v-else class="block h-6 w-6" aria-hidden="true" />
 </DisclosureButton>
 </div>
 </div>
 </div>
 <DisclosurePanel class="md:hidden">
 <div class="space-y-1 px-2 pb-3 pt-2 sm:px-3">
 <DisclosureButton v-for="item in navigation" :key="item.name" as="a" :href="item.href" :class="[item.current ? 'bg-gray-900 text-white' : 'text-gray-300 hover:bg-gray-700 hover:text-white', 'block rounded-md px-3 py-2 text-base font-medium']" :aria-current="item.current ? 'page' : undefined">{{ item.name }}</DisclosureButton>
 </div>
 <div class="border-t border-gray-700 pb-3 pt-4">
 <div class="flex items-center px-5">
 <div class="flex-shrink-0">
 <img class="h-10 w-10 rounded-full" :src="user.imageUrl" alt="" />
 </div>
 <div class="ml-3">
 <div class="text-base font-medium text-white">{{ user.name }}</div>
 <div class="text-sm font-medium text-gray-400">{{ user.email }}</div>
 </div>
 <button type="button" class="relative ml-auto flex-shrink-0 rounded-full bg-gray-800 p-1 text-gray-400 hover:text-white focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-gray-800">
 <span class="absolute -inset-1.5" />
 <span class="sr-only">View notifications</span>
 <BellIcon class="h-6 w-6" aria-hidden="true" />
 </button>
 </div>
 <div class="mt-3 space-y-1 px-2">
 <DisclosureButton v-for="item in userNavigation" :key="item.name" as="a" :href="item.href" class="block rounded-md px-3 py-2 text-base font-medium text-gray-400 hover:bg-gray-700 hover:text-white">{{ item.name }}</DisclosureButton>
 </div>
 </div>
 </DisclosurePanel>
 </Disclosure>
 <header class="bg-white shadow-sm">
 <div class="mx-auto max-w-7xl px-4 py-4 sm:px-6 lg:px-8">
 <h1 class="text-lg font-semibold leading-6 text-gray-900">Dashboard</h1>
 </div>
 </header>
 <main>
 <div class="mx-auto max-w-7xl px-4 py-6 sm:px-6 lg:px-8">
 <RouterView></RouterView>
 </div>
 </main>
 </div>
</template>

this is the code of a tailwind component :-)

i use Vue 3, and i use a nested route, nothing special but if i start the code i get the following error:

Error: <MenuItems /> is missing a parent <Menu /> component.
 at setup (@headlessui_vue.js?v=1f197ab5:2748:77)
 at callWithErrorHandling (chunk-ITPIWJHN.js?v=1f197ab5:1678:19)
 at setupStatefulComponent (chunk-ITPIWJHN.js?v=1f197ab5:9095:25)
 at setupComponent (chunk-ITPIWJHN.js?v=1f197ab5:9056:36)
 at mountComponent (chunk-ITPIWJHN.js?v=1f197ab5:6499:7)
 at processComponent (chunk-ITPIWJHN.js?v=1f197ab5:6465:9)
 at patch (chunk-ITPIWJHN.js?v=1f197ab5:5935:11)
 at mountChildren (chunk-ITPIWJHN.js?v=1f197ab5:6177:7)
 at mountElement (chunk-ITPIWJHN.js?v=1f197ab5:6090:7)
 at processElement (chunk-ITPIWJHN.js?v=1f197ab5:6055:7)

I have googled and seems that is a problem of headlessui/vue, but seems strange that tailwind/components provide a code that doesn't work.

do you have any idea about that and how is possible to solve it?

You must be logged in to vote

Replies: 3 comments

Comment options

i got the same error with headlessui/react

Error: <Radio /> is missing a parent <RadioGroup /> component.
 at Object.We [as render] (radio-group.js:1:5667)
 at Z (element.min.js?ver=a4eeeadd23c0d7ab1d2d:9:6604)
 at J (element.min.js?ver=a4eeeadd23c0d7ab1d2d:9:7430)
 at G (element.min.js?ver=a4eeeadd23c0d7ab1d2d:9:6890)
 at Z (element.min.js?ver=a4eeeadd23c0d7ab1d2d:9:6189)
 at J (element.min.js?ver=a4eeeadd23c0d7ab1d2d:9:7430)
 at Z (element.min.js?ver=a4eeeadd23c0d7ab1d2d:9:6492)
 at J (element.min.js?ver=a4eeeadd23c0d7ab1d2d:9:7430)
 at Z (element.min.js?ver=a4eeeadd23c0d7ab1d2d:9:6492)
 at J (element.min.js?ver=a4eeeadd23c0d7ab1d2d:9:7430)
You must be logged in to vote
0 replies
Comment options

+1 in react

You must be logged in to vote
0 replies
Comment options

Hi !
maybe with role="menu" in top part
and role="menuitem" in hidden part
that solved my dropdown ;-

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

AltStyle によって変換されたページ (->オリジナル) /