Dropdown 
Base dropdown button, suit for action menus
Usage 
Simple Usage 
preview
vue
<template>
  <p-dropdown text="Click Here">
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
</template>With Subtext 
preview
vue
<template>
  <p-dropdown text="Click Here">
    <p-dropdown-item>
      Item Text
      <p-caption>Item Subtext</p-caption>
    </p-dropdown-item>
    <p-dropdown-item>
      Item Text
      <p-caption>Item Subtext</p-caption>
    </p-dropdown-item>
    <p-dropdown-item>
      Item Text
      <p-caption>Item Subtext</p-caption>
    </p-dropdown-item>
  </p-dropdown>
</template>Placement 
You can change popup placement via placement prop. Valid options is:
- top
- bottom
- right
- left
preview
vue
<template>
  <p-dropdown text="Top" placement="top">
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
  <p-dropdown text="Bottom" placement="bottom">
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
  <p-dropdown text="Right" placement="right">
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
  <p-dropdown text="Left" placement="left">
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
</template>Placement Align 
You can combine placement with suffix *-start and *-end to set popup position align
preview
vue
<template>
  <p-dropdown text="Bottom" placement="bottom">
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
  <p-dropdown text="Bottom Start" placement="bottom-start">
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
  <p-dropdown text="Bottom End" placement="bottom-end">
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
</template>Button Customization 
Variant, Color and Size 
Every props in Button like variant, color, size, pill and icon also works in here. Check out Button for more information.
preview
vue
<template>
  <p-dropdown
    text="Button"
    variant="outline"
    color="secondary"
    size="lg"
    pill>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
</template>Custom Button Content 
You also can customize button content via slot button-content
preview
vue
<template>
  <p-dropdown
    icon>
    <template #button-content>
      <IconBee />
    </template>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
</template>
<script setup>
  import IconBee from '@carbon/icons-vue/lib/bee/20'
</script>Custom Activator 
You can also completely change dropdown's activator button to something else via slot activator.
preview
vue
<template>
  <p-dropdown
    text="Button"
    icon>
    <template #activator="{ open }">
      <p-input placeholder="This is Dropdown" @focus="open" />
    </template>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
</template>Disabled State 
preview
vue
<template>
  <p-dropdown
    text="Button"
    disabled>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
</template>Hide Caret 
Add props no-caret to hide caret icon
preview
vue
<template>
  <p-dropdown
    text="Button"
    no-caret>
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
</template>Binding v-model 
You can programmatically toggle dropdown using v-model
preview
vue
<template>
  <p-checkbox v-model="show">Show Dropdown</p-checkbox>
  <p-dropdown
    v-model="show"
    text="Button">
    <p-dropdown-item>Item Text</p-dropdown-item>
    <p-dropdown-item>Item Text</p-dropdown-item>
  </p-dropdown>
</template>API 
Props 
| Props | Type | Default | Description | 
|---|---|---|---|
| text | String | - | Dropdown's button text | 
| variant | String | solid | Dropdown's button style variant, valid value is solid,outline,ghost,link | 
| color | String | primary | Dropdown's button color variant, valid value is primary,secondary,success,info,warning,danger,gold | 
| size | String | md | Size of button, valid value is sm,md,lg | 
| pill | Boolean | false | Enable pill mode | 
| icon | Boolean | false | Enable icon mode | 
| no-caret | Boolean | false | Hide caret icon | 
| disabled | Boolean | false | Disable state | 
| href | String | - | Place url permalink in the dropdown-item | 
| placement | String | bottom-start | Menu placement, valid value is top,top-start,top-end,bottom,bottom-start,bottom-end,right,right-start,right-end,left,left-start,left-end | 
| modelValue | Boolean | false | v-model value for menu visibilities | 
| menu-class | StringorArrayorObject | - | CSS class to add in the menu container | 
Slots 
| Name | Description | 
|---|---|
| default | Dropdown menu content | 
| button-content | Content to placed in Activator Button | 
| activator | Content to replace Activator Button | 
Events 
| Name | Arguments | Description | 
|---|---|---|
| show | - | Event when dropdown popup shown | 
| hide | - | Event when dropdown popup hidden |