@taiga-ui/kit
Version:
Taiga UI Angular main components kit
53 lines • 8.75 kB
JavaScript
import { ChangeDetectionStrategy, Component, inject, INJECTOR } from '@angular/core';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { ActivatedRoute, Router } from '@angular/router';
import { TuiDialogService } from '@taiga-ui/core/components/dialog';
import { PolymorpheusComponent } from '@taiga-ui/polymorpheus';
import { from, of, switchMap } from 'rxjs';
import * as i0 from "@angular/core";
class TuiRoutableDialog {
constructor() {
this.route = inject(ActivatedRoute);
this.router = inject(Router);
this.injector = inject(INJECTOR);
this.initialUrl = this.router.url;
this.dialog = inject(TuiDialogService);
const { dialog } = this.route.snapshot.data;
from(isClass(dialog) ? of(dialog) : dialog().then((m) => m.default ?? m))
.pipe(switchMap((dialog) => this.dialog.open(new PolymorpheusComponent(dialog, this.injector), this.route.snapshot.data['dialogOptions'])), takeUntilDestroyed())
.subscribe({ complete: () => this.onDialogClosing() });
}
get lazyLoadedBackUrl() {
return (this.route.parent?.snapshot.url || []).map(() => '..').join('/');
}
onDialogClosing() {
if (this.initialUrl === this.router.url) {
this.navigateToParent();
}
}
navigateToParent() {
const backUrl = this.route.snapshot.data['isLazy']
? this.lazyLoadedBackUrl
: this.route.snapshot.data['backUrl'];
void this.router.navigate([backUrl], {
relativeTo: this.route,
});
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRoutableDialog, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiRoutableDialog, isStandalone: true, selector: "tui-routable-dialog", ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
export default TuiRoutableDialog;
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiRoutableDialog, decorators: [{
type: Component,
args: [{
standalone: true,
selector: 'tui-routable-dialog',
template: '',
changeDetection: ChangeDetectionStrategy.OnPush,
}]
}], ctorParameters: function () { return []; } });
function isClass(fn) {
return (typeof fn === 'function' &&
Object.getOwnPropertyDescriptor(fn, 'prototype')?.writable === false);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGFibGUtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tpdC9jb21wb25lbnRzL3JvdXRhYmxlLWRpYWxvZy9yb3V0YWJsZS1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNuRixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUMsY0FBYyxFQUFFLE1BQU0sRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzdELE9BQU8sRUFBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7QUFFekMsTUFNcUIsaUJBQWlCO0lBT2xDO1FBTmlCLFVBQUssR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsV0FBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVCLGVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUM3QixXQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFHL0MsTUFBTSxFQUFDLE1BQU0sRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUUxQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQzthQUN6RSxJQUFJLENBQ0QsU0FBUyxDQUFDLENBQUMsTUFBVyxFQUFFLEVBQUUsQ0FDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ1osSUFBSSxxQkFBcUIsQ0FBWSxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUMzRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQzVDLENBQ0osRUFDRCxrQkFBa0IsRUFBRSxDQUN2QjthQUNBLFNBQVMsQ0FBQyxFQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxJQUFZLGlCQUFpQjtRQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFFTyxlQUFlO1FBQ25CLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNyQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUMzQjtJQUNMLENBQUM7SUFFTyxnQkFBZ0I7UUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUM5QyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQjtZQUN4QixDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTFDLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDekIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzsrR0F6Q2dCLGlCQUFpQjttR0FBakIsaUJBQWlCLCtFQUh4QixFQUFFOztlQUdLLGlCQUFpQjs0RkFBakIsaUJBQWlCO2tCQU5yQyxTQUFTO21CQUFDO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUscUJBQXFCO29CQUMvQixRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDbEQ7O0FBNkNELFNBQVMsT0FBTyxDQUFDLEVBQVc7SUFDeEIsT0FBTyxDQUNILE9BQU8sRUFBRSxLQUFLLFVBQVU7UUFDeEIsTUFBTSxDQUFDLHdCQUF3QixDQUFDLEVBQUUsRUFBRSxXQUFXLENBQUMsRUFBRSxRQUFRLEtBQUssS0FBSyxDQUN2RSxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBJTkpFQ1RPUn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge3Rha2VVbnRpbERlc3Ryb3llZH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtUdWlEaWFsb2dTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2RpYWxvZyc7XG5pbXBvcnQge1BvbHltb3JwaGV1c0NvbXBvbmVudH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQge2Zyb20sIG9mLCBzd2l0Y2hNYXB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLXJvdXRhYmxlLWRpYWxvZycsXG4gICAgdGVtcGxhdGU6ICcnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFR1aVJvdXRhYmxlRGlhbG9nIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3IgPSBpbmplY3QoSU5KRUNUT1IpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5pdGlhbFVybCA9IHRoaXMucm91dGVyLnVybDtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZyA9IGluamVjdChUdWlEaWFsb2dTZXJ2aWNlKTtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBjb25zdCB7ZGlhbG9nfSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YTtcblxuICAgICAgICBmcm9tKGlzQ2xhc3MoZGlhbG9nKSA/IG9mKGRpYWxvZykgOiBkaWFsb2coKS50aGVuKChtOiBhbnkpID0+IG0uZGVmYXVsdCA/PyBtKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHN3aXRjaE1hcCgoZGlhbG9nOiBhbnkpID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nLm9wZW4oXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUG9seW1vcnBoZXVzQ29tcG9uZW50PFR5cGU8YW55Pj4oZGlhbG9nLCB0aGlzLmluamVjdG9yKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsnZGlhbG9nT3B0aW9ucyddLFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtjb21wbGV0ZTogKCkgPT4gdGhpcy5vbkRpYWxvZ0Nsb3NpbmcoKX0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGxhenlMb2FkZWRCYWNrVXJsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAodGhpcy5yb3V0ZS5wYXJlbnQ/LnNuYXBzaG90LnVybCB8fCBbXSkubWFwKCgpID0+ICcuLicpLmpvaW4oJy8nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG9uRGlhbG9nQ2xvc2luZygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbFVybCA9PT0gdGhpcy5yb3V0ZXIudXJsKSB7XG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRlVG9QYXJlbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgbmF2aWdhdGVUb1BhcmVudCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYmFja1VybCA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YVsnaXNMYXp5J11cbiAgICAgICAgICAgID8gdGhpcy5sYXp5TG9hZGVkQmFja1VybFxuICAgICAgICAgICAgOiB0aGlzLnJvdXRlLnNuYXBzaG90LmRhdGFbJ2JhY2tVcmwnXTtcblxuICAgICAgICB2b2lkIHRoaXMucm91dGVyLm5hdmlnYXRlKFtiYWNrVXJsXSwge1xuICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBpc0NsYXNzKGZuOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZm4sICdwcm90b3R5cGUnKT8ud3JpdGFibGUgPT09IGZhbHNlXG4gICAgKTtcbn1cbiJdfQ==