Basic usage
items is an array of menu entries rendered in order. divider: true renders a separator; header: true renders a group title. Keyboard: up/down navigate, Enter / Space to select, Esc to close, Home / End to jump to first/last.
查看代码 复制 < script setup lang = "ts" >
import { CfButton, CfDropdown } from '@chufix-design/vue' ;
import type { DropdownItem } from '@chufix-design/vue' ;
const items : DropdownItem [] = [
{ key: 'profile' , label: 'Profile' },
{ key: 'settings' , label: 'Settings' },
{ divider: true , label: '' },
{ header: true , label: 'Actions' },
{ key: 'rename' , label: 'Rename' },
{ key: 'archive' , label: 'Archive' , disabled: true },
{ key: 'delete' , label: 'Delete' , tone: 'danger' },
];
function onSelect ( item : DropdownItem ) {
console. log ( 'selected:' , item.key);
}
</ script >
< template >
< CfDropdown : items = " items " placement = "bottom" @ select = " onSelect " >
< CfButton variant = "secondary" >Actions ▾</ CfButton >
</ CfDropdown >
</ template > 复制 import { CfButton, CfDropdown } from '@chufix-design/react' ;
import type { DropdownItem } from '@chufix-design/react' ;
const items : DropdownItem [] = [
{ key: 'profile' , label: 'Profile' },
{ key: 'settings' , label: 'Settings' },
{ divider: true , label: '' },
{ header: true , label: 'Actions' },
{ key: 'rename' , label: 'Rename' },
{ key: 'archive' , label: 'Archive' , disabled: true },
{ key: 'delete' , label: 'Delete' , tone: 'danger' },
];
export default function Demo () {
return (
< CfDropdown
items = {items}
placement = "bottom"
onSelect = {( item ) => console. log ( 'selected:' , item.key)}
>
< CfButton variant = "secondary" >Actions ▾</ CfButton >
</ CfDropdown >
);
}
API · Props
Prop Type Default Description itemsDropdownItem[][]Menu item array placement'top' | 'bottom' | 'left' | 'right''bottom'Preferred placement offsetnumber6Gap to the trigger (px) closeOnSelectbooleantrueClose after select disabledbooleanfalseDisable trigger widthnumber | string—Fixed width; auto if omitted openboolean—For controlled use
API · DropdownItem
Field Type Description keystringUnique id (recommended for routing in select) labelstringDisplay text iconstringOptional leading icon (emoji or symbol) disabledbooleanDisabled item dividerbooleanRender as separator headerbooleanRender as group header (non-clickable) tone'default' | 'danger'Semantic color; danger for irreversible actions
API · Events
Event Args Description select (Vue) / onSelect (React)(item, index)Fires when an item is selected update:open (Vue) / onOpenChange (React)(open: boolean)Open state change
反馈与讨论
Dropdown · Discussion