@vismaux/ngx-nordic-cool
Version:
Common Nordic-Cool components for Angular.
38 lines • 5.91 kB
JavaScript
import { Directive, } from '@angular/core';
import { race, Subject } from 'rxjs';
import { distinctUntilChanged, filter, skip, take, takeUntil, } from 'rxjs/operators';
import { registerOutsideClick } from '../utils/outside-click.utils';
import * as i0 from "@angular/core";
import * as i1 from "./dropdown.directive";
export class NcDropdownMenuDirective {
constructor(dropdown, el, cdRef, ngZone) {
this.dropdown = dropdown;
this.el = el;
this.cdRef = cdRef;
this.ngZone = ngZone;
this.destroyed$ = new Subject();
}
ngAfterViewInit() {
this.dropdown.isOpen$
.pipe(distinctUntilChanged(), filter((isOpen) => isOpen), takeUntil(this.destroyed$))
.subscribe(() => {
const closed$ = this.dropdown.isOpen$.pipe(skip(1), take(1));
registerOutsideClick(() => {
this.dropdown.close();
this.cdRef.markForCheck();
}, [this.el.nativeElement, this.dropdown.toggler.elRef.nativeElement], race(closed$, this.destroyed$), this.ngZone);
});
}
ngOnDestroy() {
this.destroyed$.next();
}
}
NcDropdownMenuDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NcDropdownMenuDirective, deps: [{ token: i1.NcDropdownDirective }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
NcDropdownMenuDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.3", type: NcDropdownMenuDirective, selector: "[ncDropdownMenu]", ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.3", ngImport: i0, type: NcDropdownMenuDirective, decorators: [{
type: Directive,
args: [{
selector: '[ncDropdownMenu]',
}]
}], ctorParameters: function () { return [{ type: i1.NcDropdownDirective }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24tbWVudS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbm9yZGljLWNvb2wvc3JjL2xpYi9kcm9wZG93bi9kcm9wZG93bi1tZW51LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsTUFBTSxFQUNOLElBQUksRUFDSixJQUFJLEVBQ0osU0FBUyxHQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQU1wRSxNQUFNLE9BQU8sdUJBQXVCO0lBR2xDLFlBQ1UsUUFBNkIsRUFDN0IsRUFBMkIsRUFDM0IsS0FBd0IsRUFDeEIsTUFBYztRQUhkLGFBQVEsR0FBUixRQUFRLENBQXFCO1FBQzdCLE9BQUUsR0FBRixFQUFFLENBQXlCO1FBQzNCLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFOaEIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7SUFPaEMsQ0FBQztJQUVKLGVBQWU7UUFDYixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU87YUFDbEIsSUFBSSxDQUNILG9CQUFvQixFQUFFLEVBQ3RCLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQzFCLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzNCO2FBQ0EsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFN0Qsb0JBQW9CLENBQ2xCLEdBQUcsRUFBRTtnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVCLENBQUMsRUFDRCxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFDbEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQzlCLElBQUksQ0FBQyxNQUFNLENBQ1osQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7O29IQWxDVSx1QkFBdUI7d0dBQXZCLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUhuQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxrQkFBa0I7aUJBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgcmFjZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIGZpbHRlcixcbiAgc2tpcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsLFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyByZWdpc3Rlck91dHNpZGVDbGljayB9IGZyb20gJy4uL3V0aWxzL291dHNpZGUtY2xpY2sudXRpbHMnO1xuaW1wb3J0IHsgTmNEcm9wZG93bkRpcmVjdGl2ZSB9IGZyb20gJy4vZHJvcGRvd24uZGlyZWN0aXZlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW25jRHJvcGRvd25NZW51XScsXG59KVxuZXhwb3J0IGNsYXNzIE5jRHJvcGRvd25NZW51RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBkZXN0cm95ZWQkID0gbmV3IFN1YmplY3QoKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGRyb3Bkb3duOiBOY0Ryb3Bkb3duRGlyZWN0aXZlLFxuICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmVcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRyb3Bkb3duLmlzT3BlbiRcbiAgICAgIC5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBmaWx0ZXIoKGlzT3BlbikgPT4gaXNPcGVuKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBjbG9zZWQkID0gdGhpcy5kcm9wZG93bi5pc09wZW4kLnBpcGUoc2tpcCgxKSwgdGFrZSgxKSk7XG5cbiAgICAgICAgcmVnaXN0ZXJPdXRzaWRlQ2xpY2soXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIFt0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMuZHJvcGRvd24udG9nZ2xlci5lbFJlZi5uYXRpdmVFbGVtZW50XSxcbiAgICAgICAgICByYWNlKGNsb3NlZCQsIHRoaXMuZGVzdHJveWVkJCksXG4gICAgICAgICAgdGhpcy5uZ1pvbmVcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQkLm5leHQoKTtcbiAgfVxufVxuIl19