UNPKG

@clr/angular

Version:

Angular components for Clarity

48 lines 5.93 kB
/* * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved. * This software is released under MIT license. * The full license information can be found in LICENSE in the root directory of this project. */ import { Directive, EventEmitter, Input, Output } from '@angular/core'; import * as i0 from "@angular/core"; export class OutsideClick { constructor(host, renderer, ngZone) { this.strict = false; this.outsideClick = new EventEmitter(false); ngZone.runOutsideAngular(() => { this.documentClickListener = renderer.listen('document', 'click', (event) => { // Compare the element in the DOM on which the mouse was clicked // with the current actionMenu native HTML element. if (host.nativeElement === event.target) { return; } if (!this.strict && host.nativeElement.contains(event.target)) { return; } // We'll run change detection only if the click event actually happened outside of // the host element. ngZone.run(() => { this.outsideClick.emit(event); }); }); }); } ngOnDestroy() { this.documentClickListener(); } } OutsideClick.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: OutsideClick, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); OutsideClick.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: OutsideClick, selector: "[clrOutsideClick]", inputs: { strict: ["clrStrict", "strict"] }, outputs: { outsideClick: "clrOutsideClick" }, ngImport: i0 }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: OutsideClick, decorators: [{ type: Directive, args: [{ selector: '[clrOutsideClick]', }] }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }]; }, propDecorators: { strict: [{ type: Input, args: ['clrStrict'] }], outsideClick: [{ type: Output, args: ['clrOutsideClick'] }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0c2lkZS1jbGljay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL3V0aWxzL291dHNpZGUtY2xpY2svb3V0c2lkZS1jbGljay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWEsTUFBTSxlQUFlLENBQUM7O0FBS2pILE1BQU0sT0FBTyxZQUFZO0lBT3ZCLFlBQVksSUFBNkIsRUFBRSxRQUFtQixFQUFFLE1BQWM7UUFOMUQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUVSLGlCQUFZLEdBQUcsSUFBSSxZQUFZLENBQU0sS0FBSyxDQUFDLENBQUM7UUFLckUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUM1QixJQUFJLENBQUMscUJBQXFCLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLENBQUMsS0FBaUIsRUFBRSxFQUFFO2dCQUN0RixnRUFBZ0U7Z0JBQ2hFLG1EQUFtRDtnQkFDbkQsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUU7b0JBQ3ZDLE9BQU87aUJBQ1I7Z0JBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQXFCLENBQUMsRUFBRTtvQkFDNUUsT0FBTztpQkFDUjtnQkFFRCxrRkFBa0Y7Z0JBQ2xGLG9CQUFvQjtnQkFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQzs7eUdBL0JVLFlBQVk7NkZBQVosWUFBWTsyRkFBWixZQUFZO2tCQUh4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7aUJBQzlCOzhJQUVxQixNQUFNO3NCQUF6QixLQUFLO3VCQUFDLFdBQVc7Z0JBRVMsWUFBWTtzQkFBdEMsTUFBTTt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjMgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE91dHB1dCwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjbHJPdXRzaWRlQ2xpY2tdJyxcbn0pXG5leHBvcnQgY2xhc3MgT3V0c2lkZUNsaWNrIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQElucHV0KCdjbHJTdHJpY3QnKSBzdHJpY3QgPSBmYWxzZTtcblxuICBAT3V0cHV0KCdjbHJPdXRzaWRlQ2xpY2snKSBvdXRzaWRlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oZmFsc2UpO1xuXG4gIHByaXZhdGUgZG9jdW1lbnRDbGlja0xpc3RlbmVyOiBWb2lkRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoaG9zdDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sIHJlbmRlcmVyOiBSZW5kZXJlcjIsIG5nWm9uZTogTmdab25lKSB7XG4gICAgbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyID0gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAvLyBDb21wYXJlIHRoZSBlbGVtZW50IGluIHRoZSBET00gb24gd2hpY2ggdGhlIG1vdXNlIHdhcyBjbGlja2VkXG4gICAgICAgIC8vIHdpdGggdGhlIGN1cnJlbnQgYWN0aW9uTWVudSBuYXRpdmUgSFRNTCBlbGVtZW50LlxuICAgICAgICBpZiAoaG9zdC5uYXRpdmVFbGVtZW50ID09PSBldmVudC50YXJnZXQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXRoaXMuc3RyaWN0ICYmIGhvc3QubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2UnbGwgcnVuIGNoYW5nZSBkZXRlY3Rpb24gb25seSBpZiB0aGUgY2xpY2sgZXZlbnQgYWN0dWFsbHkgaGFwcGVuZWQgb3V0c2lkZSBvZlxuICAgICAgICAvLyB0aGUgaG9zdCBlbGVtZW50LlxuICAgICAgICBuZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLm91dHNpZGVDbGljay5lbWl0KGV2ZW50KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZG9jdW1lbnRDbGlja0xpc3RlbmVyKCk7XG4gIH1cbn1cbiJdfQ==