import m from 'mithril'; import { AbstractComponent } from '../abstract-component'; import { IAttrs, ISizeAttrs, Option } from '../../_shared'; import { IButtonAttrs } from '../button'; export interface ICustomSelectAttrs extends IAttrs, ISizeAttrs { /** Initially selected value (uncontrolled mode) */ defaultValue?: string | number; /** * Array of list options * @default [] */ options: Option[]; /** Value of the selected option */ value?: string | number; /** Callback invoked when selection changes */ onSelect?: (option: Option) => void; /** Testing */ itemRender?: (item: Option, isSelected: boolean, index: number) => m.Vnode; /** * Attrs passed through to trigger * @default {} */ triggerAttrs?: IButtonAttrs; /** Name attr of hidden input (useful for HTML forms) */ name?: string; } export declare class CustomSelect extends AbstractComponent { private activeIndex; private selected?; private isOpen; getDefaultAttrs(): ICustomSelectAttrs; oninit(vnode: m.Vnode): void; onbeforeupdate(vnode: m.Vnode, old: m.VnodeDOM): void; view(): m.Vnode; private renderItem; private handleSelect; private handleActiveItemChange; private handleTriggerKeyDown; private handlePopoverInteraction; private get selectedValue(); private get selectedLabel(); private setSelected; }