UNPKG

clickout-lite

Version:

A lightweight utility to detect outside clicks on elements — compatible with Vue, React, and vanilla JavaScript.

22 lines (21 loc) 1.13 kB
export type Fn = () => void; export type MaybeRefOrGetter<T> = T | (() => T) | { value: T; }; export type MaybeElementRef = HTMLElement | SVGElement | undefined | null; export interface OnClickOutsideOptions<Controls extends boolean = false> { ignore?: MaybeRefOrGetter<(MaybeElementRef | string)[]>; capture?: boolean; detectIframe?: boolean; controls?: Controls; window?: Window; } export type OnClickOutsideHandler<T extends OnClickOutsideOptions<boolean> = OnClickOutsideOptions> = (event: (T['detectIframe'] extends true ? FocusEvent : never) | (T['controls'] extends true ? Event : never) | PointerEvent) => void; interface OnClickOutsideControlsReturn { stop: Fn; cancel: Fn; trigger: (event: Event) => void; } export declare function onClickOutside<T extends OnClickOutsideOptions>(target: MaybeRefOrGetter<MaybeElementRef>, handler: OnClickOutsideHandler<T>, options?: T): Fn; export declare function onClickOutside<T extends OnClickOutsideOptions<true>>(target: MaybeRefOrGetter<MaybeElementRef>, handler: OnClickOutsideHandler<T>, options: T): OnClickOutsideControlsReturn; export {};