interface Options { /** Data items */ data?: Record; /** Method for rendering the items */ render?: (label: string, item: object) => string; /** Event when value is changed */ onchange?: (el: HTMLElement, instance: Picker, reservedValue: string, value: string, index: number, e: MouseEvent) => void; /** Event when value is changed */ onopen?: (el: HTMLElement, instance: Picker) => void; /** Event when value is changed */ onclose?: (el: HTMLElement, instance: Picker) => void; /** Event when value is changed */ onload?: (el: HTMLElement, instance: Picker) => void; /** Default width */ width?: number; /** Show the header. Default: true */ header?: boolean; /** Align right. Default: false */ right?: boolean; /** Open picker from bottom to top direction. Default: false */ bottom?: boolean; /** Replace the header value by an material icon keyword. Default: false */ content?: boolean; /** Number elements per line. Default: null */ columns?: number; /** Order elements in a grid. Default: null */ grid?: number; /** Default height */ height?: null; } export type Picker = (el: HTMLElement, options: Options) => { /** Get the current selected value */ getValue: () => void; /** Set the current value for the component */ setValue: (v: number, event: MouseEvent | boolean) => void; /** Internal method. Get the label */ getLabel: (v, item) => void; /** Internal method. Set the label */ setLabel: (v) => void; /** Open the picker */ open: () => void; /** Close the picker */ close: () => void; }