UNPKG

@zag-js/dismissable

Version:

Dismissable layer utilities for the DOM

44 lines (42 loc) 1.78 kB
type LayerType = "dialog" | "popover" | "menu" | "listbox" | (string & {}); type LayerDismissEventDetail = { originalLayer: HTMLElement; targetLayer: HTMLElement | undefined; originalIndex: number; targetIndex: number; }; type LayerDismissEvent = CustomEvent<LayerDismissEventDetail>; interface Layer { dismiss: VoidFunction; node: HTMLElement; type: LayerType; pointerBlocking?: boolean | undefined; requestDismiss?: ((event: LayerDismissEvent) => void) | undefined; } declare const layerStack: { layers: Layer[]; branches: HTMLElement[]; recentlyRemoved: Set<HTMLElement>; count(): number; pointerBlockingLayers(): Layer[]; topMostPointerBlockingLayer(): Layer | undefined; hasPointerBlockingLayer(): boolean; isBelowPointerBlockingLayer(node: HTMLElement): boolean; isTopMost(node: HTMLElement | null): boolean; getNestedLayers(node: HTMLElement): Layer[]; getLayersByType(type: LayerType): Layer[]; getNestedLayersByType(node: HTMLElement, type: LayerType): Layer[]; getParentLayerOfType(node: HTMLElement, type: LayerType): Layer | undefined; countNestedLayersOfType(node: HTMLElement, type: LayerType): number; isInNestedLayer(node: HTMLElement, target: HTMLElement | EventTarget | null): boolean; isInBranch(target: HTMLElement | EventTarget | null): boolean; add(layer: Layer): void; addBranch(node: HTMLElement): void; remove(node: HTMLElement): void; removeBranch(node: HTMLElement): void; syncLayers(): void; indexOf(node: HTMLElement | undefined): number; dismiss(node: HTMLElement, parent?: HTMLElement): void; clear(): void; }; export { type Layer, type LayerDismissEvent, type LayerDismissEventDetail, type LayerType, layerStack };