Skip to content

Dropdown Menu ​

Composable dropdown menu with keyboard navigation, groups, labels, separators, shortcuts, and destructive items.

vue
<template>
  <VxDropdownMenu width="14rem">
    <template #trigger>
      <VxButton variant="outline">Open Menu</VxButton>
    </template>
    <VxDropdownMenuLabel>My Account</VxDropdownMenuLabel>
    <VxDropdownMenuSeparator />
    <VxDropdownMenuGroup>
      <VxDropdownMenuItem>
        <UserIcon /> Profile
        <VxDropdownMenuShortcut>⇧⌘P</VxDropdownMenuShortcut>
      </VxDropdownMenuItem>
      <VxDropdownMenuItem>
        <CreditCardIcon /> Billing
        <VxDropdownMenuShortcut>⌘B</VxDropdownMenuShortcut>
      </VxDropdownMenuItem>
      <VxDropdownMenuItem>
        <SettingsIcon /> Settings
        <VxDropdownMenuShortcut>⌘S</VxDropdownMenuShortcut>
      </VxDropdownMenuItem>
    </VxDropdownMenuGroup>
    <VxDropdownMenuSeparator />
    <VxDropdownMenuItem disabled>API</VxDropdownMenuItem>
    <VxDropdownMenuSeparator />
    <VxDropdownMenuItem destructive>
      <LogOutIcon /> Log out
      <VxDropdownMenuShortcut>⇧⌘Q</VxDropdownMenuShortcut>
    </VxDropdownMenuItem>
  </VxDropdownMenu>
</template>

Alignment ​

vue
<template>
  <VxDropdownMenu align="start">...</VxDropdownMenu>
  <VxDropdownMenu align="center">...</VxDropdownMenu>
  <VxDropdownMenu align="end">...</VxDropdownMenu>
</template>

With Icons ​

vue
<template>
  <VxDropdownMenu>
    <template #trigger><VxButton variant="outline">Actions</VxButton></template>
    <VxDropdownMenuItem><PlusIcon /> New File</VxDropdownMenuItem>
    <VxDropdownMenuItem><DownloadIcon /> Download</VxDropdownMenuItem>
    <VxDropdownMenuSeparator />
    <VxDropdownMenuItem destructive><TrashIcon /> Delete</VxDropdownMenuItem>
  </VxDropdownMenu>
</template>

Disabled Items ​

vue
<template>
  <VxDropdownMenu>
    <template #trigger><VxButton>Options</VxButton></template>
    <VxDropdownMenuItem>Edit</VxDropdownMenuItem>
    <VxDropdownMenuItem disabled>Archive</VxDropdownMenuItem>
    <VxDropdownMenuItem destructive>Delete</VxDropdownMenuItem>
  </VxDropdownMenu>
</template>

Props ​

VxDropdownMenu ​

PropTypeDefaultDescription
align'start' | 'center' | 'end''start'Horizontal alignment
side'top' | 'right' | 'bottom' | 'left''bottom'Side to open on
widthstring''Content width

VxDropdownMenuItem ​

PropTypeDefaultDescription
disabledbooleanfalseDisable item
destructivebooleanfalseRed destructive style
insetbooleanfalseExtra left padding

Sub-components ​

ComponentDescription
VxDropdownMenuLabelSection label (accepts inset prop)
VxDropdownMenuSeparatorHorizontal divider
VxDropdownMenuShortcutRight-aligned shortcut text
VxDropdownMenuGroupGroups items semantically

Events ​

ComponentEventDescription
VxDropdownMenuItemselectFires when item is clicked