@oruga-ui/oruga-next
Version:
UI components for Vue.js and CSS framework agnostic
1 lines • 2.92 kB
Source Map (JSON)
{"version":3,"file":"useClickOutside-CoQ2BNWF.cjs","sources":["../../src/composables/useClickOutside.ts"],"sourcesContent":["import { type MaybeRefOrGetter } from \"vue\";\nimport {\n useEventListener,\n type EventTarget,\n type EventListenerOptions,\n} from \"./useEventListener\";\nimport { unrefElement } from \"./unrefElement\";\n\n/**\n * Listen for clicks outside of an element.\n * Adaption of {@link https://vueuse.org/core/onClickOutside}\n *\n * @param elements DOM elements to click outside\n * @param handler Event handler function\n * @param options ClickOutsideOptions\n * @return stop function\n */\nexport function useClickOutside(\n elements:\n | MaybeRefOrGetter<EventTarget>\n | string\n | (MaybeRefOrGetter<EventTarget> | string)[],\n handler: (evt: PointerEvent) => void,\n options?: EventListenerOptions,\n): () => void {\n if (!window) return () => {};\n\n // set default options\n const listenerOptions = Object.assign({ ignore: [] }, options);\n\n // convert elements to ignore list\n const ignores = Array.isArray(elements) ? elements : [elements];\n\n /**\n * White-listed items that not emit event when clicked.\n * All children from ignore prop.\n */\n const shouldIgnore = (event: PointerEvent): boolean => {\n return ignores.some((target) => {\n if (typeof target === \"string\") {\n return Array.from(\n window.document.querySelectorAll(target),\n ).some(\n (el) =>\n el === event.target ||\n event.composedPath().includes(el),\n );\n } else {\n const el = unrefElement(target);\n return (\n el &&\n (event.target === el || event.composedPath().includes(el))\n );\n }\n });\n };\n\n function listener(event: PointerEvent): void {\n if (shouldIgnore(event)) return;\n handler(event);\n }\n\n const stop = useEventListener(window, \"click\", listener, listenerOptions);\n\n return stop;\n}\n"],"names":["unrefElement","useEventListener"],"mappings":";;;;;AAiBgB,SAAA,gBACZ,UAIA,SACA,SACU;AACN,MAAA,CAAC,OAAQ,QAAO,MAAM;AAAA,EAAC;AAGrB,QAAA,kBAAkB,OAAO,OAAO,EAAE,QAAQ,CAAA,KAAM,OAAO;AAG7D,QAAM,UAAU,MAAM,QAAQ,QAAQ,IAAI,WAAW,CAAC,QAAQ;AAMxD,QAAA,eAAe,CAAC,UAAiC;AAC5C,WAAA,QAAQ,KAAK,CAAC,WAAW;AACxB,UAAA,OAAO,WAAW,UAAU;AAC5B,eAAO,MAAM;AAAA,UACT,OAAO,SAAS,iBAAiB,MAAM;AAAA,QAAA,EACzC;AAAA,UACE,CAAC,OACG,OAAO,MAAM,UACb,MAAM,aAAA,EAAe,SAAS,EAAE;AAAA,QACxC;AAAA,MAAA,OACG;AACG,cAAA,KAAKA,0BAAa,MAAM;AAE1B,eAAA,OACC,MAAM,WAAW,MAAM,MAAM,aAAa,EAAE,SAAS,EAAE;AAAA,MAAA;AAAA,IAEhE,CACH;AAAA,EACL;AAEA,WAAS,SAAS,OAA2B;AACrC,QAAA,aAAa,KAAK,EAAG;AACzB,YAAQ,KAAK;AAAA,EAAA;AAGjB,QAAM,OAAOC,iBAAAA,iBAAiB,QAAQ,SAAS,UAAU,eAAe;AAEjE,SAAA;AACX;;"}