UNPKG

@taiga-ui/cdk

Version:

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

77 lines 9.36 kB
/// <reference types="@taiga-ui/tsconfig/ng-dev-mode" /> /// <reference types="@taiga-ui/tsconfig/ng-dev-mode" /> import { Directive, inject, Injectable, INJECTOR, ViewChild, ViewContainerRef, } from '@angular/core'; import { tuiProvide } from '@taiga-ui/cdk/utils'; import * as i0 from "@angular/core"; /** * Abstract class for host element for dynamically created portals. */ class TuiPortals { constructor() { this.injector = inject(INJECTOR); this.nothing = inject(TuiPortalService).attach(this); } addComponentChild(component) { const injector = component.createInjector(this.injector); const ref = this.vcr.createComponent(component.component, { injector }); ref.changeDetectorRef.detectChanges(); return ref; } addTemplateChild(templateRef, context) { return this.vcr.createEmbeddedView(templateRef, context); } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPortals, deps: [], target: i0.ɵɵFactoryTarget.Directive }); } static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TuiPortals, viewQueries: [{ propertyName: "vcr", first: true, predicate: ["viewContainer"], descendants: true, read: ViewContainerRef }], ngImport: i0 }); } } export { TuiPortals }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPortals, decorators: [{ type: Directive }], propDecorators: { vcr: [{ type: ViewChild, args: ['viewContainer', { read: ViewContainerRef }] }] } }); /** * Abstract service for displaying portals */ class TuiPortalService { attach(host) { this.host = host; } add(component) { return this.safeHost.addComponentChild(component); } remove({ hostView }) { this.removeTemplate(hostView); } addTemplate(templateRef, context) { return this.safeHost.addTemplateChild(templateRef, context); } removeTemplate(viewRef) { if (!viewRef.destroyed) { viewRef.destroy(); } } get safeHost() { if (!this.host) { throw new TuiNoHostException(); } return this.host; } static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPortalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); } static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPortalService }); } } export { TuiPortalService }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPortalService, decorators: [{ type: Injectable }] }); export function tuiAsPortal(portal) { return tuiProvide(TuiPortalService, portal); } export class TuiNoHostException extends Error { constructor() { super(ngDevMode ? 'Portals cannot be used without TuiPortalHostComponent; perhaps you forgot to wrap your application with tui-root.' : ''); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9jbGFzc2VzL3BvcnRhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQXhELHdEQUF3RDtBQUN4RCxPQUFPLEVBRUgsU0FBUyxFQUVULE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxFQUdSLFNBQVMsRUFDVCxnQkFBZ0IsR0FFbkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQUcvQzs7R0FFRztBQUNILE1BQ3NCLFVBQVU7SUFEaEM7UUFLcUIsYUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQixZQUFPLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBaUJ0RTtJQWZVLGlCQUFpQixDQUFJLFNBQW1DO1FBQzNELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDO1FBRXRFLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUV0QyxPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUM7SUFFTSxnQkFBZ0IsQ0FDbkIsV0FBMkIsRUFDM0IsT0FBVztRQUVYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDN0QsQ0FBQzsrR0F0QmlCLFVBQVU7bUdBQVYsVUFBVSwyR0FDTyxnQkFBZ0I7O1NBRGpDLFVBQVU7NEZBQVYsVUFBVTtrQkFEL0IsU0FBUzs4QkFHVyxHQUFHO3NCQURuQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBQzs7QUF3QnhEOztHQUVHO0FBQ0gsTUFDc0IsZ0JBQWdCO0lBRzNCLE1BQU0sQ0FBQyxJQUFnQjtRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRU0sR0FBRyxDQUFJLFNBQW1DO1FBQzdDLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sTUFBTSxDQUFJLEVBQUMsUUFBUSxFQUFrQjtRQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTSxXQUFXLENBQUksV0FBMkIsRUFBRSxPQUFXO1FBQzFELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVNLGNBQWMsQ0FBSSxPQUFxQztRQUMxRCxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtZQUNwQixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsSUFBYyxRQUFRO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1osTUFBTSxJQUFJLGtCQUFrQixFQUFFLENBQUM7U0FDbEM7UUFFRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQzsrR0EvQmlCLGdCQUFnQjttSEFBaEIsZ0JBQWdCOztTQUFoQixnQkFBZ0I7NEZBQWhCLGdCQUFnQjtrQkFEckMsVUFBVTs7QUFtQ1gsTUFBTSxVQUFVLFdBQVcsQ0FBQyxNQUErQjtJQUN2RCxPQUFPLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNoRCxDQUFDO0FBRUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLEtBQUs7SUFDekM7UUFDSSxLQUFLLENBQ0QsU0FBUztZQUNMLENBQUMsQ0FBQyxtSEFBbUg7WUFDckgsQ0FBQyxDQUFDLEVBQUUsQ0FDWCxDQUFDO0lBQ04sQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCJAdGFpZ2EtdWkvdHNjb25maWcvbmctZGV2LW1vZGVcIiAvPlxuaW1wb3J0IHtcbiAgICB0eXBlIENvbXBvbmVudFJlZixcbiAgICBEaXJlY3RpdmUsXG4gICAgdHlwZSBFbWJlZGRlZFZpZXdSZWYsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGFibGUsXG4gICAgSU5KRUNUT1IsXG4gICAgdHlwZSBQcm92aWRlcixcbiAgICB0eXBlIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxuICAgIHR5cGUgVmlld1JlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3R1aVByb3ZpZGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMnO1xuaW1wb3J0IHt0eXBlIFBvbHltb3JwaGV1c0NvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5cbi8qKlxuICogQWJzdHJhY3QgY2xhc3MgZm9yIGhvc3QgZWxlbWVudCBmb3IgZHluYW1pY2FsbHkgY3JlYXRlZCBwb3J0YWxzLlxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBUdWlQb3J0YWxzIHtcbiAgICBAVmlld0NoaWxkKCd2aWV3Q29udGFpbmVyJywge3JlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICAgIHByaXZhdGUgcmVhZG9ubHkgdmNyITogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSU5KRUNUT1IpO1xuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG5vdGhpbmcgPSBpbmplY3QoVHVpUG9ydGFsU2VydmljZSkuYXR0YWNoKHRoaXMpO1xuXG4gICAgcHVibGljIGFkZENvbXBvbmVudENoaWxkPEM+KGNvbXBvbmVudDogUG9seW1vcnBoZXVzQ29tcG9uZW50PEM+KTogQ29tcG9uZW50UmVmPEM+IHtcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBjb21wb25lbnQuY3JlYXRlSW5qZWN0b3IodGhpcy5pbmplY3Rvcik7XG4gICAgICAgIGNvbnN0IHJlZiA9IHRoaXMudmNyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnQuY29tcG9uZW50LCB7aW5qZWN0b3J9KTtcblxuICAgICAgICByZWYuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHJldHVybiByZWY7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFRlbXBsYXRlQ2hpbGQ8Qz4oXG4gICAgICAgIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxDPixcbiAgICAgICAgY29udGV4dD86IEMsXG4gICAgKTogRW1iZWRkZWRWaWV3UmVmPEM+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmNyLmNyZWF0ZUVtYmVkZGVkVmlldyh0ZW1wbGF0ZVJlZiwgY29udGV4dCk7XG4gICAgfVxufVxuXG4vKipcbiAqIEFic3RyYWN0IHNlcnZpY2UgZm9yIGRpc3BsYXlpbmcgcG9ydGFsc1xuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgVHVpUG9ydGFsU2VydmljZSB7XG4gICAgcHJvdGVjdGVkIGhvc3Q/OiBUdWlQb3J0YWxzO1xuXG4gICAgcHVibGljIGF0dGFjaChob3N0OiBUdWlQb3J0YWxzKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaG9zdCA9IGhvc3Q7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZDxDPihjb21wb25lbnQ6IFBvbHltb3JwaGV1c0NvbXBvbmVudDxDPik6IENvbXBvbmVudFJlZjxDPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNhZmVIb3N0LmFkZENvbXBvbmVudENoaWxkKGNvbXBvbmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZTxDPih7aG9zdFZpZXd9OiBDb21wb25lbnRSZWY8Qz4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZW1vdmVUZW1wbGF0ZShob3N0Vmlldyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFRlbXBsYXRlPEM+KHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxDPiwgY29udGV4dD86IEMpOiBFbWJlZGRlZFZpZXdSZWY8Qz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zYWZlSG9zdC5hZGRUZW1wbGF0ZUNoaWxkKHRlbXBsYXRlUmVmLCBjb250ZXh0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlVGVtcGxhdGU8Qz4odmlld1JlZjogRW1iZWRkZWRWaWV3UmVmPEM+IHwgVmlld1JlZik6IHZvaWQge1xuICAgICAgICBpZiAoIXZpZXdSZWYuZGVzdHJveWVkKSB7XG4gICAgICAgICAgICB2aWV3UmVmLmRlc3Ryb3koKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgc2FmZUhvc3QoKTogVHVpUG9ydGFscyB7XG4gICAgICAgIGlmICghdGhpcy5ob3N0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHVpTm9Ib3N0RXhjZXB0aW9uKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5ob3N0O1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHR1aUFzUG9ydGFsKHBvcnRhbDogdHlwZW9mIFR1aVBvcnRhbFNlcnZpY2UpOiBQcm92aWRlciB7XG4gICAgcmV0dXJuIHR1aVByb3ZpZGUoVHVpUG9ydGFsU2VydmljZSwgcG9ydGFsKTtcbn1cblxuZXhwb3J0IGNsYXNzIFR1aU5vSG9zdEV4Y2VwdGlvbiBleHRlbmRzIEVycm9yIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXG4gICAgICAgICAgICBuZ0Rldk1vZGVcbiAgICAgICAgICAgICAgICA/ICdQb3J0YWxzIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgVHVpUG9ydGFsSG9zdENvbXBvbmVudDsgcGVyaGFwcyB5b3UgZm9yZ290IHRvIHdyYXAgeW91ciBhcHBsaWNhdGlvbiB3aXRoIHR1aS1yb290LidcbiAgICAgICAgICAgICAgICA6ICcnLFxuICAgICAgICApO1xuICAgIH1cbn1cbiJdfQ==