UNPKG

@studiocms/ui

Version:

The UI library for StudioCMS. Includes the layouts & components we use to build StudioCMS.

60 lines (59 loc) 1.7 kB
export type SelectOption = { value: string; label: string; disabled?: boolean; }; interface SelectState { options: SelectOption[]; isMultiple: boolean; focusIndex: number; placeholder: string; } type ResizeCallback = (width: number, height: number, element: Element) => void; export declare class SUISelectElement extends HTMLElement { readonly CONSTANTS: { OPTION_HEIGHT: number; BORDER_SIZE: number; MARGIN: number; BADGE_PADDING: number; }; observerMap: WeakMap<Element, { observer: ResizeObserver; callback: ResizeCallback; }>; state: SelectState; button: HTMLButtonElement | undefined; dropdown: HTMLDivElement | undefined; select: HTMLSelectElement | undefined; constructor(); connectedCallback(): void; private observeResize; private unobserveResize; private isVisible; getDropdownPosition: (element: HTMLElement) => { isAbove: boolean; customRect: { top: number; bottom: number; left: number; right: number; width: number; x: number; y: number; height: number; }; }; private closeDropdown; private openDropdown; createSelectBadge: (value: string, label: string) => HTMLSpanElement; private measureBadgesWidth; private handleBadgeOverflow; updateLabel: () => void; private deselectMultiOption; recomputeOptions: () => void; getInteractiveOptions: () => HTMLLIElement[]; private handleOptionSelect; private handleContainerClick; handleSelectKeyDown: (e: KeyboardEvent) => void; } export {};