@studiocms/ui
Version:
The UI library for StudioCMS. Includes the layouts & components we use to build StudioCMS.
47 lines (46 loc) • 1.52 kB
TypeScript
type Position = 'auto' | 'top' | 'bottom' | 'left' | 'right';
type Point = {
x: number;
y: number;
};
interface TooltipOptions {
position: Position;
defaultOpen?: boolean;
gap?: number;
enterDelay?: number;
exitDelay?: number;
hoverOnly?: boolean;
animate?: boolean;
pointer?: boolean;
}
declare class Tooltip {
#private;
container: HTMLElement;
anchor: HTMLElement;
tooltip: HTMLElement;
options: TooltipOptions;
resizeObserver: ResizeObserver | null;
throttleUpdate: () => void;
rafId: number | null;
offset: number;
isSticky: boolean;
edgePadding: number;
constructor(container: HTMLElement | null);
processOptionsFromAttributes(): TooltipOptions;
update(): void;
bindEvents(): void;
updatePosition(): void;
updatePointer(position: Position | 'overlap', anchorCenter: Point, tooltipPosition: Point, tooltipWidth: number, tooltipHeight: number): void;
determinePosition(anchorRect: DOMRect, tooltipWidth: number, tooltipHeight: number): Position | 'overlap';
isAnchorInViewport(anchorRect: DOMRect): boolean;
applyViewportConstraints(x: number, y: number, width: number, height: number): Point;
throttle(fn: (...args: unknown[]) => void, delay: number): () => void;
show(): void;
hide(): void;
getAnchor(): HTMLElement;
isHoverOnly(): boolean;
setSticky(sticky: boolean): void;
isDefaultOpen(): boolean;
destroy(): void;
}
declare function loadTooltips(): void;