export type BrSelectOptionElement = HTMLElement & {
disabled?: boolean;
label?: string;
value?: string;
selected?: boolean;
};
export type SelectOptionItem = {
disabled?: boolean;
label: string;
value: string;
selected?: boolean;
sourceElement?: BrSelectOptionElement;
};
export type SelectOptionData = {
/** Conteúdo projetado da opção, preservado para a janela virtualizada. */
content?: string;
disabled?: boolean;
indeterminate?: boolean;
label?: string;
selected?: boolean;
value: string;
};
export type SelectOptionStateChange = {
disabled?: boolean;
indeterminate?: boolean;
label?: string;
selected?: boolean;
value: string;
};
export type SelectStateChangeDetail = {
isOpen: boolean;
option?: SelectOptionData;
options?: SelectOptionData[];
};
export type SelectValidator = (value: string | string[]) => string | null | Promise;
export type SelectSearchMode = 'local' | 'remote';
export type SelectSearchDetail = {
query: string;
};
export type SelectListController = {
focusOption?: (index: number) => Promise;
scrollOptionToTop?: (index: number) => Promise;
scrollFirstSelectedOptionToTop?: () => Promise;
setSearchTerm?: (term: string) => Promise;
setOptionSelected?: (index: number, selected: boolean) => Promise;
options?: SelectOptionData[];
};
export type EventWithLegacyPath = Event & {
path?: EventTarget[];
};