# DropdownMenuSub

> `DropdownMenuSub` is part of the Overlays set, imported from `@jcsoftdev/ui/overlays`.

Source: https://ui.jcsoftdev.com/docs/components/dropdown-menu-sub

`DropdownMenuSub` is part of the Overlays set, imported from `@jcsoftdev/ui/overlays`.

## Import

```ts
import { DropdownMenuSub } from "@jcsoftdev/ui/overlays";
```

Single-component entry points tree-shake to just this component: `@jcsoftdev/ui/overlays/dropdown-menu`.

## Usage

```tsx
export const Default: Story = {
  render: (args) => (
    <DropdownMenu>
      <DropdownMenuTrigger asChild>
        <Button variant="secondary">Acciones de la cita</Button>
      </DropdownMenuTrigger>
      <DropdownMenuContent {...args}>
        <DropdownMenuLabel>Luis Ramírez · 11:30</DropdownMenuLabel>
        <DropdownMenuItem>Reprogramar</DropdownMenuItem>
        <DropdownMenuItem>Cobrar S/ 45</DropdownMenuItem>
        <DropdownMenuItem disabled>Enviar recordatorio</DropdownMenuItem>
        <DropdownMenuSeparator />
        <DropdownMenuItem className="text-danger">Anular cita</DropdownMenuItem>
      </DropdownMenuContent>
    </DropdownMenu>
  ),
};
```

_Source of the Storybook story._

## Props

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `open` | `boolean` |  |  |
| `defaultOpen` | `boolean` |  |  |
| `onOpenChange` | `((open: boolean) => void)` |  |  |
| `children` | `ReactNode` |  |  |

`*` marks a required prop.

## Storybook stories

- [Default](/storybook/?path=/story/overlays-dropdownmenu--default)
- [Open By Default](/storybook/?path=/story/overlays-dropdownmenu--open-by-default)
- [Radio Filter](/storybook/?path=/story/overlays-dropdownmenu--radio-filter)
- [Custom User Menu](/storybook/?path=/story/overlays-dropdownmenu--custom-user-menu)

## Source

`packages/ui/src/overlays/dropdown-menu/dropdown-menu.tsx`
