UNPKG

@taiga-ui/cdk

Version:

Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance

74 lines 11.8 kB
import { __decorate } from "tslib"; import { Directive, inject, Input, NgZone, Output } from '@angular/core'; import { NgControl } from '@angular/forms'; import { tuiZoneOptimized } from '@taiga-ui/cdk/observables'; import { TUI_ACTIVE_ELEMENT } from '@taiga-ui/cdk/tokens'; import { tuiArrayRemove, tuiInjectElement, tuiPure } from '@taiga-ui/cdk/utils'; import { distinctUntilChanged, map, share, skip, startWith, tap } from 'rxjs'; import * as i0 from "@angular/core"; class TuiActiveZone { constructor() { // TODO: Should we remove in v5? It's no longer used in Taiga UI this.control = inject(NgControl, { self: true, optional: true }); this.active$ = inject(TUI_ACTIVE_ELEMENT); this.zone = inject(NgZone); this.el = tuiInjectElement(); this.tuiActiveZoneParent = null; this.subActiveZones = []; this.directParentActiveZone = inject(TuiActiveZone, { skipSelf: true, optional: true, }); this.tuiActiveZoneChange = this.active$.pipe(map((element) => !!element && this.contains(element)), startWith(false), distinctUntilChanged(), skip(1), tap((active) => { if (!active && typeof this.control?.valueAccessor.onTouched === 'function') { this.control.valueAccessor.onTouched(); } }), tuiZoneOptimized(this.zone), share()); this.directParentActiveZone?.addSubActiveZone(this); } set tuiActiveZoneParentSetter(zone) { this.setZone(zone); } ngOnDestroy() { this.directParentActiveZone?.removeSubActiveZone(this); this.tuiActiveZoneParent?.removeSubActiveZone(this); } contains(node) { return (this.el.contains(node) || this.subActiveZones.some((item, index, array) => array.indexOf(item) === index && item.contains(node))); } setZone(zone) { this.tuiActiveZoneParent?.removeSubActiveZone(this); zone?.addSubActiveZone(this); this.tuiActiveZoneParent = zone; } addSubActiveZone(activeZone) { this.subActiveZones = [...this.subActiveZones, activeZone]; } removeSubActiveZone(activeZone) { this.subActiveZones = tuiArrayRemove(this.subActiveZones, this.subActiveZones.indexOf(activeZone)); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiActiveZone, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiActiveZone, isStandalone: true, selector: "[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)", inputs: { tuiActiveZoneParentSetter: ["tuiActiveZoneParent", "tuiActiveZoneParentSetter"] }, outputs: { tuiActiveZoneChange: "tuiActiveZoneChange" }, host: { listeners: { "document:mousedown.zoneless": "(0)" } }, exportAs: ["tuiActiveZone"], ngImport: i0 }); } } __decorate([ tuiPure ], TuiActiveZone.prototype, "setZone", null); export { TuiActiveZone }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiActiveZone, decorators: [{ type: Directive, args: [{ standalone: true, selector: '[tuiActiveZone]:not(ng-container), [tuiActiveZoneChange]:not(ng-container), [tuiActiveZoneParent]:not(ng-container)', exportAs: 'tuiActiveZone', host: { '(document:mousedown.zoneless)': '(0)', }, }] }], ctorParameters: function () { return []; }, propDecorators: { tuiActiveZoneChange: [{ type: Output }], tuiActiveZoneParentSetter: [{ type: Input, args: ['tuiActiveZoneParent'] }], setZone: [] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZlLXpvbmUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL2RpcmVjdGl2ZXMvYWN0aXZlLXpvbmUvYWN0aXZlLXpvbmUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFDLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUU5RSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFNUUsTUFTYSxhQUFhO0lBNEJ0QjtRQTNCQSxnRUFBZ0U7UUFDL0MsWUFBTyxHQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQy9ELFlBQU8sR0FBRyxNQUFNLENBQTZCLGtCQUFrQixDQUFDLENBQUM7UUFDakUsU0FBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixPQUFFLEdBQUcsZ0JBQWdCLEVBQUUsQ0FBQztRQUNqQyx3QkFBbUIsR0FBeUIsSUFBSSxDQUFDO1FBQ2pELG1CQUFjLEdBQTZCLEVBQUUsQ0FBQztRQUNyQywyQkFBc0IsR0FBRyxNQUFNLENBQUMsYUFBYSxFQUFFO1lBQzVELFFBQVEs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cmUnO1xuaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIE5nWm9uZSwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge3R1aVpvbmVPcHRpbWl6ZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHtUVUlfQUNUSVZFX0VMRU1FTlR9IGZyb20gJ0B0YWlnYS11aS9jZGsvdG9rZW5zJztcbmltcG9ydCB7dHVpQXJyYXlSZW1vdmUsIHR1aUluamVjdEVsZW1lbnQsIHR1aVB1cmV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMnO1xuaW1wb3J0IHR5cGUge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZSwgc2tpcCwgc3RhcnRXaXRoLCB0YXB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOlxuICAgICAgICAnW3R1aUFjdGl2ZVpvbmVdOm5vdChuZy1jb250YWluZXIpLCBbdHVpQWN0aXZlWm9uZUNoYW5nZV06bm90KG5nLWNvbnRhaW5lciksIFt0dWlBY3RpdmVab25lUGFyZW50XTpub3QobmctY29udGFpbmVyKScsXG4gICAgZXhwb3J0QXM6ICd0dWlBY3RpdmVab25lJyxcbiAgICBob3N0OiB7XG4gICAgICAgICcoZG9jdW1lbnQ6bW91c2Vkb3duLnpvbmVsZXNzKSc6ICcoMCknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUFjdGl2ZVpvbmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAgIC8vIFRPRE86IFNob3VsZCB3ZSByZW1vdmUgaW4gdjU/IEl0J3Mgbm8gbG9uZ2VyIHVzZWQgaW4gVGFpZ2EgVUlcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRyb2w6IGFueSA9IGluamVjdChOZ0NvbnRyb2wsIHtzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZX0pO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgYWN0aXZlJCA9IGluamVjdDxPYnNlcnZhYmxlPEVsZW1lbnQgfCBudWxsPj4oVFVJX0FDVElWRV9FTEVNRU5UKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHpvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgdHVpQWN0aXZlWm9uZVBhcmVudDogVHVpQWN0aXZlWm9uZSB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgc3ViQWN0aXZlWm9uZXM6IHJlYWRvbmx5IFR1aUFjdGl2ZVpvbmVbXSA9IFtdO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0UGFyZW50QWN0aXZlWm9uZSA9IGluamVjdChUdWlBY3RpdmVab25lLCB7XG4gICAgICAgIHNraXBTZWxmOiB0cnVlLFxuICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICB9KTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSB0dWlBY3RpdmVab25lQ2hhbmdlID0gdGhpcy5hY3RpdmUkLnBpcGUoXG4gICAgICAgIG1hcCgoZWxlbWVudCkgPT4gISFlbGVtZW50ICYmIHRoaXMuY29udGFpbnMoZWxlbWVudCkpLFxuICAgICAgICBzdGFydFdpdGgoZmFsc2UpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICB0YXAoKGFjdGl2ZSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFhY3RpdmUgJiYgdHlwZW9mIHRoaXMuY29udHJvbD8udmFsdWVBY2Nlc3Nvci5vblRvdWNoZWQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRyb2wudmFsdWVBY2Nlc3Nvci5vblRvdWNoZWQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHR1aVpvbmVPcHRpbWl6ZWQodGhpcy56b25lKSxcbiAgICAgICAgc2hhcmUoKSxcbiAgICApO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZGlyZWN0UGFyZW50QWN0aXZlWm9uZT8uYWRkU3ViQWN0aXZlWm9uZSh0aGlzKTtcbiAgICB9XG5cbiAgICBASW5wdXQoJ3R1aUFjdGl2ZVpvbmVQYXJlbnQnKVxuICAgIHB1YmxpYyBzZXQgdHVpQWN0aXZlWm9uZVBhcmVudFNldHRlcih6b25lOiBUdWlBY3RpdmVab25lIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnNldFpvbmUoem9uZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpcmVjdFBhcmVudEFjdGl2ZVpvbmU/LnJlbW92ZVN1YkFjdGl2ZVpvbmUodGhpcyk7XG4gICAgICAgIHRoaXMudHVpQWN0aXZlWm9uZVBhcmVudD8ucmVtb3ZlU3ViQWN0aXZlWm9uZSh0aGlzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29udGFpbnMobm9kZTogTm9kZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgdGhpcy5lbC5jb250YWlucyhub2RlKSB8fFxuICAgICAgICAgICAgdGhpcy5zdWJBY3RpdmVab25lcy5zb21lKFxuICAgICAgICAgICAgICAgIChpdGVtLCBpbmRleCwgYXJyYXkpID0+XG4gICAgICAgICAgICAgICAgICAgIGFycmF5LmluZGV4T2YoaXRlbSkgPT09IGluZGV4ICYmIGl0ZW0uY29udGFpbnMobm9kZSksXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIHNldFpvbmUoem9uZTogVHVpQWN0aXZlWm9uZSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgdGhpcy50dWlBY3RpdmVab25lUGFyZW50Py5yZW1vdmVTdWJBY3RpdmVab25lKHRoaXMpO1xuICAgICAgICB6b25lPy5hZGRTdWJBY3RpdmVab25lKHRoaXMpO1xuICAgICAgICB0aGlzLnR1aUFjdGl2ZVpvbmVQYXJlbnQgPSB6b25lO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkU3ViQWN0aXZlWm9uZShhY3RpdmVab25lOiBUdWlBY3RpdmVab25lKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3ViQWN0aXZlWm9uZXMgPSBbLi4udGhpcy5zdWJBY3RpdmVab25lcywgYWN0aXZlWm9uZV07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVTdWJBY3RpdmVab25lKGFjdGl2ZVpvbmU6IFR1aUFjdGl2ZVpvbmUpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJBY3RpdmVab25lcyA9IHR1aUFycmF5UmVtb3ZlKFxuICAgICAgICAgICAgdGhpcy5zdWJBY3RpdmVab25lcyxcbiAgICAgICAgICAgIHRoaXMuc3ViQWN0aXZlWm9uZXMuaW5kZXhPZihhY3RpdmVab25lKSxcbiAgICAgICAgKTtcbiAgICB9XG59XG4iXX0=