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
TypeScript
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 {};