@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
TypeScript
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;