UNPKG

ng-click-outside2

Version:

Angular directive for handling click events outside an element.

1 lines 19.4 kB
{"version":3,"file":"ng-click-outside2.mjs","sources":["../../../projects/ng-click-outside2/src/lib/ng-click-outside-exclude.directive.ts","../../../projects/ng-click-outside2/src/lib/array-attribute.ts","../../../projects/ng-click-outside2/src/lib/ng-click-outside.directive.ts","../../../projects/ng-click-outside2/src/lib/ng-click-outside-attach-outside.directive.ts","../../../projects/ng-click-outside2/src/lib/ng-click-outside-delay-outside.directive.ts","../../../projects/ng-click-outside2/src/lib/ng-click-outside-emit-on-blur.directive.ts","../../../projects/ng-click-outside2/src/public-api.ts","../../../projects/ng-click-outside2/src/ng-click-outside2.ts"],"sourcesContent":["import {Directive, DOCUMENT, inject, input} from '@angular/core';\n\n\n/**\n * Optimization for Treeshaking: https://angular.io/guide/lightweight-injection-tokens\n */\nexport abstract class NgClickOutsideExcludeToken {\n abstract isExclude(target: any): boolean;\n}\n\n/**\n * Directive to exclude elements from the click-outside\n */\n@Directive({\n selector: '[clickOutsideExclude]',\n standalone: true,\n providers: [\n {provide: NgClickOutsideExcludeToken, useExisting: NgClickOutsideExcludeDirective}\n ]\n})\nexport class NgClickOutsideExcludeDirective extends NgClickOutsideExcludeToken {\n\n /**\n * A comma-separated string of DOM element queries to exclude when clicking outside of the element.\n * For example: `[exclude]=\"'button,.btn-primary'\"`.\n */\n clickOutsideExclude = input('');\n\n private document: Document = inject(DOCUMENT);\n\n public excludeCheck(): HTMLElement[] {\n const clickOutsideExclude = this.clickOutsideExclude()\n if (clickOutsideExclude) {\n try {\n const nodes = Array.from(this.document.querySelectorAll(clickOutsideExclude)) as Array<HTMLElement>;\n if (nodes) {\n return nodes;\n }\n } catch (err) {\n console.error('[ng-click-outside] Check your exclude selector syntax.', err);\n }\n }\n return [];\n }\n\n public isExclude(target: any): boolean {\n const nodesExcluded = this.excludeCheck();\n for (let excludedNode of nodesExcluded) {\n if (excludedNode.contains(target)) {\n return true;\n }\n }\n\n return false;\n }\n}\n","export function arrayAttribute (events: string | string[]) {\n if (Array.isArray(events)) {\n return events\n } else {\n return events.split(',')\n }\n}\n","import {\n afterNextRender,\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n NgZone,\n OnDestroy,\n output,\n DOCUMENT\n} from '@angular/core';\nimport {NgClickOutsideExcludeToken} from \"./ng-click-outside-exclude.directive\";\nimport {arrayAttribute} from \"./array-attribute\";\n\n/**\n * Directive to detect clicks outside of the current element\n *\n * ```typescript\n * @Component({\n * selector: 'app',\n * template: `\n * <div (clickOutside)=\"onClickedOutside($event)\">Click outside this</div>\n * `\n * })\n * export class AppComponent {\n * onClickedOutside(e: Event) {\n * console.log('Clicked outside:', e);\n * }\n * }\n * ```\n */\n@Directive({\n selector: '[clickOutside]:not([delayClickOutsideInit]):not([attachOutsideOnClick])',\n standalone: true,\n})\nexport class NgClickOutsideDirective implements OnDestroy {\n\n /**\n * Enables directive.\n */\n clickOutsideEnabled = input(true, {transform: booleanAttribute});\n\n /**\n * A comma-separated list of events to cause the trigger.\n * ### For example, for additional mobile support:\n * `[clickOutsideEvents]=\"'click,touchstart'\"`\n */\n clickOutsideEvents = input(['click'], {\n transform: arrayAttribute\n });\n\n /**\n * Outside Click Event\n */\n clickOutside = output<Event>();\n\n excludeDirective = inject(NgClickOutsideExcludeToken, {host: true, optional: true});\n protected _el = inject(ElementRef);\n protected _ngZone = inject(NgZone);\n private document = inject<Document>(DOCUMENT);\n lastRemoved?: Node[];\n mutationObserver?: MutationObserver;\n\n constructor() {\n this._initOnClickBody = this._initOnClickBody.bind(this);\n this._onClickBody = this._onClickBody.bind(this);\n afterNextRender(() => this._init())\n }\n\n ngOnDestroy() {\n this._removeClickOutsideListener();\n this.mutationObserver?.disconnect();\n }\n\n protected _init() {\n this._initOnClickBody();\n }\n\n protected _initOnClickBody() {\n this.initListener();\n }\n\n protected _emit(ev: Event) {\n this._ngZone.run(() => this.clickOutside.emit(ev));\n }\n\n protected initListener() {\n this.initMutationObserver();\n this._initClickOutsideListener();\n }\n\n private initMutationObserver() {\n this.mutationObserver = new MutationObserver((mutationList) => {\n this.lastRemoved = mutationList.flatMap(list => Array.from((list.removedNodes as any).values()));\n });\n\n this.mutationObserver.observe(this._el.nativeElement, {\n childList: true,\n subtree: true,\n });\n }\n\n protected _initClickOutsideListener() {\n this._ngZone.runOutsideAngular(() => {\n this.clickOutsideEvents().forEach(e => this.document.addEventListener(e, this._onClickBody));\n });\n }\n\n protected _removeClickOutsideListener() {\n this._ngZone.runOutsideAngular(() => {\n this.clickOutsideEvents().forEach(e => this.document.removeEventListener(e, this._onClickBody));\n });\n }\n\n private _onClickBody(ev: Event) {\n if (!this.clickOutsideEnabled()) {\n return;\n }\n\n if (!this._el.nativeElement.contains(ev.target) && !this.excludeDirective?.isExclude(ev.target) && !this.gotRemoved(ev.target as Node)) {\n this._emit(ev);\n }\n this.resetLastRemovedList();\n }\n\n protected gotRemoved(target: Node, list = this.lastRemoved): boolean {\n return list?.some(node => node === target || node.contains(target)) ?? false;\n }\n\n private resetLastRemovedList() {\n this.lastRemoved = undefined;\n }\n}\n","import {booleanAttribute, Directive, effect, input, OnDestroy} from '@angular/core';\nimport {NgClickOutsideDirective} from \"./ng-click-outside.directive\";\n\n/**\n * Directive only starts after a single click and the outside click event handler\n * will then be removed after a click outside has occurred.\n */\n@Directive({\n selector: '[clickOutside][attachOutsideOnClick]',\n standalone: true\n})\nexport class NgClickOutsideAttachOutsideDirective extends NgClickOutsideDirective implements OnDestroy {\n /**\n * By default, the outside click event handler is automatically attached.\n *\n * Explicitely setting this to `true`sets the handler after the element is clicked. The outside click event handler\n * will then be removed after a click outside has occurred.\n */\n attachOutsideOnClick = input.required({transform: booleanAttribute});\n\n\n constructor() {\n super();\n effect(() => {\n this.attachOutsideOnClick();\n this._init()\n });\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this._removeAttachOutsideOnClickListener();\n }\n\n protected override _init() {\n if (this.attachOutsideOnClick()) {\n this._initAttachOutsideOnClickListener();\n } else {\n this._initOnClickBody();\n }\n }\n\n protected override _emit(ev: Event) {\n if (this.attachOutsideOnClick()) {\n this._removeClickOutsideListener();\n }\n super._emit(ev);\n }\n\n protected _initAttachOutsideOnClickListener() {\n this._ngZone.runOutsideAngular(() => {\n this.clickOutsideEvents().forEach(e => this._el.nativeElement.addEventListener(e, this._initOnClickBody));\n });\n }\n\n protected _removeAttachOutsideOnClickListener() {\n this._ngZone.runOutsideAngular(() => {\n this.clickOutsideEvents().forEach(e => this._el.nativeElement.removeEventListener(e, this._initOnClickBody));\n });\n }\n}\n","import {booleanAttribute, Directive, input} from '@angular/core';\nimport {NgClickOutsideDirective} from \"./ng-click-outside.directive\";\n\n/**\n * Click oustside Directive but with an setTimeout on the listener\n * This may help for items that are conditionally shown ([see issue #13](https://github.com/arkon/ng-click-outside/issues/13)).\n */\n@Directive({\n selector: '[clickOutside][delayClickOutsideInit]',\n standalone: true\n})\nexport class NgClickOutsideDelayOutsideDirective extends NgClickOutsideDirective {\n\n /**\n * Delays the initialization of the click outside handler.\n * This may help for items that are conditionally shown ([see issue #13](https://github.com/arkon/ng-click-outside/issues/13)).\n */\n delayClickOutsideInit = input.required( {transform: booleanAttribute});\n\n protected override _initOnClickBody() {\n if (this.delayClickOutsideInit()) {\n setTimeout(super.initListener.bind(this));\n } else {\n super.initListener();\n }\n }\n}\n","import {afterNextRender, Directive, DOCUMENT, inject, NgZone, OnDestroy, output} from '@angular/core';\n\n/**\n * emits an event when user clicks outside of applications' window while it's visible.\n * Especially useful if page contains iframes.\n */\n@Directive({\n selector: '[clickOutsideEmitOnBlur]',\n standalone: true\n})\nexport class NgClickOutsideEmitOnBlurDirective implements OnDestroy {\n private _ngZone = inject(NgZone);\n private document = inject<Document>(DOCUMENT);\n blurWindow = output<Event>();\n\n constructor() {\n this._onWindowBlur = this._onWindowBlur.bind(this);\n afterNextRender(() => this._initWindowBlurListener())\n }\n\n ngOnDestroy() {\n this._removeWindowBlurListener();\n }\n\n private _initWindowBlurListener() {\n this._ngZone.runOutsideAngular(() => {\n this.document.defaultView?.addEventListener('blur', this._onWindowBlur);\n });\n }\n\n /**\n * Resolves problem with outside click on iframe\n * @see https://github.com/arkon/ng-click-outside/issues/32\n */\n private _onWindowBlur(ev: Event) {\n if (!this.document.hidden) {\n this._ngZone.run(() => this.blurWindow.emit(ev));\n }\n }\n\n private _removeWindowBlurListener() {\n this._ngZone.runOutsideAngular(() => {\n this.document.defaultView?.removeEventListener('blur', this._onWindowBlur);\n });\n }\n}\n","/*\n * Public API Surface of ng-click-outside2\n */\n\nexport * from './lib/ng-click-outside.directive';\nexport * from './lib/ng-click-outside-attach-outside.directive';\nexport * from './lib/ng-click-outside-delay-outside.directive';\nexport * from './lib/ng-click-outside-exclude.directive';\nexport * from './lib/ng-click-outside-emit-on-blur.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}