UNPKG

@ebay/ebayui-core

Version:

Collection of core eBay components; considered to be the building blocks for all composite structures, pages & apps.

57 lines (56 loc) 1.85 kB
import { createLinear } from "makeup-active-descendant"; import type { AttrString, AttrStringOrNumber } from "marko/tags-html"; import typeahead from "makeup-typeahead"; import type { WithNormalizedProps } from "../../global"; export interface ChangeEvent { index: number; wasClicked: boolean; selected: AttrStringOrNumber[]; el: HTMLOptionElement; } export interface Option extends Omit<Marko.HTML.Option, `on${string}`> { disabled?: boolean; text?: AttrString; description?: Marko.AttrTag<{ renderBody?: Marko.Body; }>; icon?: Marko.AttrTag<{ renderBody?: Marko.Body; }>; } interface ListboxInput extends Omit<Marko.HTML.Div, `on${string}`> { "list-selection"?: "auto" | "manual"; "typeahead-timeout-length"?: number; option?: Marko.AttrTag<Option>; name?: string; disabled?: boolean; "on-change"?: (event: ChangeEvent) => void; "on-escape"?: () => void; } export interface Input extends WithNormalizedProps<ListboxInput> { } interface State { selectedIndex: number; } declare class Listbox extends Marko.Component<Input, State> { wasClicked: boolean; _activeDescendant: ReturnType<typeof createLinear>; getTypeaheadIndex: ReturnType<typeof typeahead>["getIndex"]; destroyTypeahead: ReturnType<typeof typeahead>["destroy"]; get isAutoSelection(): boolean; elementScroll(): void; handleChange(index: number, wasClicked: boolean): void; handleClick(index: number): void; handleMouseDown(): void; handleKeyDown(originalEvent: KeyboardEvent): void; handleListboxChange(event: CustomEvent): void; onCreate(): void; onInput(input: Input): void; onMount(): void; onUpdate(): void; onRender(): void; onDestroy(): void; _setupMakeup(): void; _cleanupMakeup(): void; } export default Listbox;