ng-click-outside2
Version:
Angular directive for handling click events outside an element.
139 lines (132 loc) • 6.38 kB
TypeScript
import * as i0 from '@angular/core';
import { OnDestroy, ElementRef, NgZone } from '@angular/core';
/**
* Optimization for Treeshaking: https://angular.io/guide/lightweight-injection-tokens
*/
declare abstract class NgClickOutsideExcludeToken {
abstract isExclude(target: any): boolean;
}
/**
* Directive to exclude elements from the click-outside
*/
declare class NgClickOutsideExcludeDirective extends NgClickOutsideExcludeToken {
/**
* A comma-separated string of DOM element queries to exclude when clicking outside of the element.
* For example: `[exclude]="'button,.btn-primary'"`.
*/
clickOutsideExclude: i0.InputSignal<string>;
private document;
excludeCheck(): HTMLElement[];
isExclude(target: any): boolean;
static ɵfac: i0.ɵɵFactoryDeclaration<NgClickOutsideExcludeDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NgClickOutsideExcludeDirective, "[clickOutsideExclude]", never, { "clickOutsideExclude": { "alias": "clickOutsideExclude"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}
/**
* Directive to detect clicks outside of the current element
*
* ```typescript
* @Component({
* selector: 'app',
* template: `
* <div (clickOutside)="onClickedOutside($event)">Click outside this</div>
* `
* })
* export class AppComponent {
* onClickedOutside(e: Event) {
* console.log('Clicked outside:', e);
* }
* }
* ```
*/
declare class NgClickOutsideDirective implements OnDestroy {
/**
* Enables directive.
*/
clickOutsideEnabled: i0.InputSignalWithTransform<boolean, unknown>;
/**
* A comma-separated list of events to cause the trigger.
* ### For example, for additional mobile support:
* `[clickOutsideEvents]="'click,touchstart'"`
*/
clickOutsideEvents: i0.InputSignalWithTransform<string[], string | string[]>;
/**
* Outside Click Event
*/
clickOutside: i0.OutputEmitterRef<Event>;
excludeDirective: NgClickOutsideExcludeToken | null;
protected _el: ElementRef<any>;
protected _ngZone: NgZone;
private document;
lastRemoved?: Node[];
mutationObserver?: MutationObserver;
constructor();
ngOnDestroy(): void;
protected _init(): void;
protected _initOnClickBody(): void;
protected _emit(ev: Event): void;
protected initListener(): void;
private initMutationObserver;
protected _initClickOutsideListener(): void;
protected _removeClickOutsideListener(): void;
private _onClickBody;
protected gotRemoved(target: Node, list?: Node[] | undefined): boolean;
private resetLastRemovedList;
static ɵfac: i0.ɵɵFactoryDeclaration<NgClickOutsideDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NgClickOutsideDirective, "[clickOutside]:not([delayClickOutsideInit]):not([attachOutsideOnClick])", never, { "clickOutsideEnabled": { "alias": "clickOutsideEnabled"; "required": false; "isSignal": true; }; "clickOutsideEvents": { "alias": "clickOutsideEvents"; "required": false; "isSignal": true; }; }, { "clickOutside": "clickOutside"; }, never, never, true, never>;
}
/**
* Directive only starts after a single click and the outside click event handler
* will then be removed after a click outside has occurred.
*/
declare class NgClickOutsideAttachOutsideDirective extends NgClickOutsideDirective implements OnDestroy {
/**
* By default, the outside click event handler is automatically attached.
*
* Explicitely setting this to `true`sets the handler after the element is clicked. The outside click event handler
* will then be removed after a click outside has occurred.
*/
attachOutsideOnClick: i0.InputSignalWithTransform<boolean, unknown>;
constructor();
ngOnDestroy(): void;
protected _init(): void;
protected _emit(ev: Event): void;
protected _initAttachOutsideOnClickListener(): void;
protected _removeAttachOutsideOnClickListener(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<NgClickOutsideAttachOutsideDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NgClickOutsideAttachOutsideDirective, "[clickOutside][attachOutsideOnClick]", never, { "attachOutsideOnClick": { "alias": "attachOutsideOnClick"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}
/**
* Click oustside Directive but with an setTimeout on the listener
* This may help for items that are conditionally shown ([see issue #13](https://github.com/arkon/ng-click-outside/issues/13)).
*/
declare class NgClickOutsideDelayOutsideDirective extends NgClickOutsideDirective {
/**
* Delays the initialization of the click outside handler.
* This may help for items that are conditionally shown ([see issue #13](https://github.com/arkon/ng-click-outside/issues/13)).
*/
delayClickOutsideInit: i0.InputSignalWithTransform<boolean, unknown>;
protected _initOnClickBody(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<NgClickOutsideDelayOutsideDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NgClickOutsideDelayOutsideDirective, "[clickOutside][delayClickOutsideInit]", never, { "delayClickOutsideInit": { "alias": "delayClickOutsideInit"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
}
/**
* emits an event when user clicks outside of applications' window while it's visible.
* Especially useful if page contains iframes.
*/
declare class NgClickOutsideEmitOnBlurDirective implements OnDestroy {
private _ngZone;
private document;
blurWindow: i0.OutputEmitterRef<Event>;
constructor();
ngOnDestroy(): void;
private _initWindowBlurListener;
/**
* Resolves problem with outside click on iframe
* @see https://github.com/arkon/ng-click-outside/issues/32
*/
private _onWindowBlur;
private _removeWindowBlurListener;
static ɵfac: i0.ɵɵFactoryDeclaration<NgClickOutsideEmitOnBlurDirective, never>;
static ɵdir: i0.ɵɵDirectiveDeclaration<NgClickOutsideEmitOnBlurDirective, "[clickOutsideEmitOnBlur]", never, {}, { "blurWindow": "blurWindow"; }, never, never, true, never>;
}
export { NgClickOutsideAttachOutsideDirective, NgClickOutsideDelayOutsideDirective, NgClickOutsideDirective, NgClickOutsideEmitOnBlurDirective, NgClickOutsideExcludeDirective, NgClickOutsideExcludeToken };