veui
Version:
Baidu Enterprise UI for Vue.js.
55 lines (47 loc) • 1.27 kB
TypeScript
import {
VeuiDefineComponent,
VeuiDefineInstance,
Normalized,
SearchableProps,
UiMixin,
DropdownMixin,
FocusableMixin
} from '../common'
import { Item, LooseOptionLeaf, LooseOptionParent } from './option-group'
type Props<T extends Item> = {
label?: string
disabled?: boolean
options?: Array<T>
trigger?: 'click' | 'hover'
split?: boolean
searchable?: boolean
placeholder?: string
} & SearchableProps<Normalized<'options', T>>
type Emits = {
click(value?: unknown): void
}
type Mixins = [UiMixin, DropdownMixin, FocusableMixin]
type TriggerSlots = {
attrs: Record<any, unknown>
handlers: Record<any, Function>
expanded: boolean
toggle: (force: boolean) => unknown
}
type Slots = {
trigger(slotProps: TriggerSlots): unknown
label(slotProps: { label: string }): unknown
'no-data'(slotProps: { keyword: string }): unknown
default(slotProps: { close: () => unknown }): unknown
option(slotProps: LooseOptionLeaf): unknown
'option-label'(slotProps: LooseOptionLeaf): unknown
'group-label'(slotProps: LooseOptionParent): unknown
}
type Dropdown = VeuiDefineComponent<{
new <T extends Item = Item>(...args: any[]): VeuiDefineInstance<
Props<T>,
Emits,
Slots,
Mixins
>
}>
export default Dropdown