@c8y/ngx-components 1021.21.0 → 1021.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/alarms/alarm-details.component.d.ts +1 -3
- package/alarms/alarm-details.component.d.ts.map +1 -1
- package/alarms/alarm-info.component.d.ts +9 -14
- package/alarms/alarm-info.component.d.ts.map +1 -1
- package/alarms/alarms-date-filter.component.d.ts +22 -10
- package/alarms/alarms-date-filter.component.d.ts.map +1 -1
- package/alarms/alarms-type-filter.component.d.ts +21 -14
- package/alarms/alarms-type-filter.component.d.ts.map +1 -1
- package/alarms/alarms-view.service.d.ts +7 -0
- package/alarms/alarms-view.service.d.ts.map +1 -1
- package/alarms/alarms.component.d.ts.map +1 -1
- package/alarms/alarms.helper.d.ts +5 -0
- package/alarms/alarms.helper.d.ts.map +1 -0
- package/alarms/alarms.model.d.ts +1 -6
- package/alarms/alarms.model.d.ts.map +1 -1
- package/alarms/alarms.module.d.ts +1 -1
- package/alarms/alarms.module.d.ts.map +1 -1
- package/alarms/cockpit/index.d.ts.map +1 -1
- package/alarms/devicemanagement/index.d.ts.map +1 -1
- package/alarms/index.d.ts +6 -4
- package/alarms/index.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/core/router/context-route.component.d.ts +8 -3
- package/core/router/context-route.component.d.ts.map +1 -1
- package/core/router/context-route.service.d.ts +29 -3
- package/core/router/context-route.service.d.ts.map +1 -1
- package/core/router/router-tabs.resolver.d.ts +4 -1
- package/core/router/router-tabs.resolver.d.ts.map +1 -1
- package/core/router/router.model.d.ts +40 -3
- package/core/router/router.model.d.ts.map +1 -1
- package/core/router/router.module.d.ts +2 -1
- package/core/router/router.module.d.ts.map +1 -1
- package/core/router/router.service.d.ts +5 -4
- package/core/router/router.service.d.ts.map +1 -1
- package/core/router/scoped-context-route.service.d.ts +57 -0
- package/core/router/scoped-context-route.service.d.ts.map +1 -0
- package/core/router/view-context.service.d.ts +8 -18
- package/core/router/view-context.service.d.ts.map +1 -1
- package/esm2022/alarms/alarm-details.component.mjs +7 -9
- package/esm2022/alarms/alarm-info.component.mjs +23 -33
- package/esm2022/alarms/alarm-severity-to-label.pipe.mjs +2 -2
- package/esm2022/alarms/alarms-date-filter.component.mjs +92 -42
- package/esm2022/alarms/alarms-type-filter.component.mjs +102 -72
- package/esm2022/alarms/alarms-view.service.mjs +17 -3
- package/esm2022/alarms/alarms.component.mjs +12 -5
- package/esm2022/alarms/alarms.helper.mjs +32 -0
- package/esm2022/alarms/alarms.model.mjs +1 -1
- package/esm2022/alarms/alarms.module.mjs +7 -7
- package/esm2022/alarms/cockpit/index.mjs +13 -17
- package/esm2022/alarms/devicemanagement/index.mjs +15 -18
- package/esm2022/alarms/index.mjs +7 -5
- package/esm2022/context-dashboard/context-dashboard.service.mjs +18 -5
- package/esm2022/core/router/context-route.component.mjs +23 -13
- package/esm2022/core/router/context-route.service.mjs +37 -5
- package/esm2022/core/router/router-tabs.resolver.mjs +46 -15
- package/esm2022/core/router/router.model.mjs +6 -1
- package/esm2022/core/router/router.module.mjs +20 -13
- package/esm2022/core/router/router.service.mjs +24 -10
- package/esm2022/core/router/scoped-context-route.service.mjs +157 -0
- package/esm2022/core/router/view-context.service.mjs +59 -16
- package/esm2022/core/tabs/tabs-outlet.component.mjs +3 -3
- package/esm2022/interval-picker/interval-picker.component.mjs +1 -1
- package/esm2022/interval-picker/interval-picker.model.mjs +1 -1
- package/esm2022/widgets/definitions/alarms/alarm-list/index.mjs +2 -1
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.mjs +73 -4
- package/esm2022/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.mjs +29 -5
- package/esm2022/widgets/implementations/alarms/alarm-list-widget.model.mjs +7 -1
- package/esm2022/widgets/implementations/alarms/alarm-widget.service.mjs +11 -1
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +12 -16
- package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +14 -17
- package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-alarms.mjs +388 -268
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +17 -4
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -0
- package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +123 -14
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +410 -133
- package/fesm2022/c8y-ngx-components.mjs.map +1 -1
- package/interval-picker/interval-picker.component.d.ts +2 -2
- package/interval-picker/interval-picker.component.d.ts.map +1 -1
- package/interval-picker/interval-picker.model.d.ts +5 -0
- package/interval-picker/interval-picker.model.d.ts.map +1 -1
- package/locales/locales.pot +18 -6
- package/package.json +1 -1
- package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +12 -1
- package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +12 -1
- package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts +11 -1
- package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
- package/widgets/implementations/alarms/alarm-widget.service.d.ts.map +1 -1
|
@@ -8,10 +8,10 @@ import { castArray, flatten, uniq, sortBy, groupBy, camelCase, isEqual, isUndefi
|
|
|
8
8
|
import { merge, of, defer, combineLatest, race, isObservable, from, Subject, BehaviorSubject, NEVER, Observable, firstValueFrom, fromEvent, pipe, throwError, concat, map as map$2, EMPTY, timer, fromEventPattern, startWith as startWith$1, switchMap as switchMap$1, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, empty, forkJoin, ReplaySubject, interval, shareReplay as shareReplay$1, mergeMap as mergeMap$1 } from 'rxjs';
|
|
9
9
|
import { map, distinctUntilChanged, filter, startWith, switchMap, take, shareReplay, scan, debounceTime, share, takeUntil, tap, catchError, first as first$1, retryWhen, delay, concatMap, debounce, sample, withLatestFrom, mergeMap, every as every$1, toArray, merge as merge$1, expand, skip, mapTo, finalize, reduce as reduce$1, combineLatestWith } from 'rxjs/operators';
|
|
10
10
|
import * as i1 from '@c8y/client';
|
|
11
|
-
import { ApplicationAvailability, OperationStatus, TenantLoginOptionType, UserManagementSource, GrantType, ApplicationType, aggregationType, BearerAuthFromSessionStorage, FetchClient, Client, PasswordStrength, QueriesUtil, InventoryService, UserService, ApplicationService, TenantService, Service } from '@c8y/client';
|
|
11
|
+
import { ApplicationAvailability, OperationStatus, TenantLoginOptionType, UserManagementSource, GrantType, ApplicationType, aggregationType, BearerAuthFromSessionStorage, FetchClient, Client, PasswordStrength, QueriesUtil, InventoryService, UserService, ApplicationService, TenantService, AlarmService, Service } from '@c8y/client';
|
|
12
12
|
import { __decorate, __metadata } from 'tslib';
|
|
13
13
|
import * as i1$3 from '@angular/router';
|
|
14
|
-
import { NavigationEnd, RouterModule as RouterModule$1, ActivationEnd, NavigationStart, PRIMARY_OUTLET, ActivatedRoute, ROUTES, Router, NavigationCancel, NavigationError } from '@angular/router';
|
|
14
|
+
import { NavigationEnd, RouterModule as RouterModule$1, ActivationEnd, NavigationStart, PRIMARY_OUTLET, ActivatedRoute, ActivationStart, ChildActivationEnd, ROUTES, Router, NavigationCancel, NavigationError } from '@angular/router';
|
|
15
15
|
import * as i4 from '@c8y/ngx-components/api';
|
|
16
16
|
import { DataModule } from '@c8y/ngx-components/api';
|
|
17
17
|
import { satisfies, compare, coerce } from 'semver';
|
|
@@ -52,6 +52,7 @@ import { CdkStepper, STEP_STATE, CdkStepperModule, CdkStep, STEPPER_GLOBAL_OPTIO
|
|
|
52
52
|
import * as i1$5 from '@angular/cdk/bidi';
|
|
53
53
|
import { getThemePreference, setThemePreference, applyTheme } from '@c8y/bootstrap';
|
|
54
54
|
import * as mimeDB from 'mime-db';
|
|
55
|
+
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
55
56
|
import * as i6 from '@ngx-formly/core';
|
|
56
57
|
import { FormlyModule, FieldArrayType, FieldType, FieldWrapper, FORMLY_CONFIG, ɵdefineHiddenProp as _defineHiddenProp } from '@ngx-formly/core';
|
|
57
58
|
import * as i5$2 from '@ngx-formly/core/select';
|
|
@@ -66,7 +67,6 @@ import * as i9 from '@angular/cdk/table';
|
|
|
66
67
|
import { CdkTable, CdkHeaderCell, CdkTableModule } from '@angular/cdk/table';
|
|
67
68
|
import * as i19 from 'ngx-bootstrap/pagination';
|
|
68
69
|
import { PaginationModule } from 'ngx-bootstrap/pagination';
|
|
69
|
-
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
70
70
|
|
|
71
71
|
/**
|
|
72
72
|
* Allows to set a icon. Switches between c8y default icons
|
|
@@ -16949,11 +16949,11 @@ class TabsOutletComponent {
|
|
|
16949
16949
|
return { widthScroll, width, scrollLeft };
|
|
16950
16950
|
}
|
|
16951
16951
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, deps: [{ token: i1$3.Router }, { token: i0.Renderer2 }, { token: HeaderService }, { token: TabsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16952
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i2$3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
16952
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector"] }, { kind: "directive", type: i1$3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$3.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i2$3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
|
|
16953
16953
|
}
|
|
16954
16954
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, decorators: [{
|
|
16955
16955
|
type: Component,
|
|
16956
|
-
args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
|
|
16956
|
+
args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
|
|
16957
16957
|
}], ctorParameters: () => [{ type: i1$3.Router }, { type: i0.Renderer2 }, { type: HeaderService }, { type: TabsService }], propDecorators: { tabs: [{
|
|
16958
16958
|
type: Input
|
|
16959
16959
|
}], orientation: [{
|
|
@@ -24148,6 +24148,11 @@ var ViewContext;
|
|
|
24148
24148
|
ViewContext["Service"] = "service/:id";
|
|
24149
24149
|
ViewContext["DatapointLibrary"] = "datapointlibrary/:id";
|
|
24150
24150
|
ViewContext["Simulators"] = "simulators/:id";
|
|
24151
|
+
ViewContext["Alarms"] = "alarms/:id";
|
|
24152
|
+
ViewContext["GroupAlarms"] = "group/:id/alarms/:id";
|
|
24153
|
+
ViewContext["DeviceAlarms"] = "device/:id/alarms/:id";
|
|
24154
|
+
ViewContext["ServiceAlarms"] = "service/:id/alarms/:id";
|
|
24155
|
+
ViewContext["SimulatorsAlarms"] = "simulators/:id/alarms/:id";
|
|
24151
24156
|
})(ViewContext || (ViewContext = {}));
|
|
24152
24157
|
|
|
24153
24158
|
class RouterTabsResolver {
|
|
@@ -24158,9 +24163,10 @@ class RouterTabsResolver {
|
|
|
24158
24163
|
get routerStateSnapshot() {
|
|
24159
24164
|
return this.router.routerState.snapshot;
|
|
24160
24165
|
}
|
|
24161
|
-
resolve(
|
|
24162
|
-
const
|
|
24163
|
-
|
|
24166
|
+
resolve(currentRoute) {
|
|
24167
|
+
const routeConfig = currentRoute.routeConfig;
|
|
24168
|
+
const latestChildren = this.getLatestChildRoutes(routeConfig.rootContext);
|
|
24169
|
+
return from(latestChildren || []).pipe(mergeMap((child) => from(this.getGuards(child)).pipe(map((guard) => guard.canActivate(currentRoute, this.routerStateSnapshot)), mergeMap((result) => {
|
|
24164
24170
|
if (isObservable(result)) {
|
|
24165
24171
|
return result;
|
|
24166
24172
|
}
|
|
@@ -24172,18 +24178,48 @@ class RouterTabsResolver {
|
|
|
24172
24178
|
if (Array.isArray(result)) {
|
|
24173
24179
|
child.tabs = result;
|
|
24174
24180
|
}
|
|
24175
|
-
}), every$1(result => !!result), filter(result => result), mergeMap(() => (Array.isArray(child.tabs) ? from(child.tabs) : of(child))), map(result =>
|
|
24176
|
-
|
|
24177
|
-
|
|
24178
|
-
|
|
24179
|
-
|
|
24180
|
-
|
|
24181
|
-
|
|
24182
|
-
|
|
24183
|
-
|
|
24184
|
-
|
|
24181
|
+
}), every$1(result => !!result), filter(result => result), mergeMap(() => (Array.isArray(child.tabs) ? from(child.tabs) : of(child))), map(result => {
|
|
24182
|
+
const url = this.getBaselUrl(currentRoute).join('/');
|
|
24183
|
+
return result.label || result.path
|
|
24184
|
+
? {
|
|
24185
|
+
label: result.label,
|
|
24186
|
+
icon: result.icon,
|
|
24187
|
+
path: `/${decodeURIComponent(url)}/${result.path}`,
|
|
24188
|
+
priority: result.priority,
|
|
24189
|
+
hide: result.hide,
|
|
24190
|
+
badge: result.badge,
|
|
24191
|
+
tooltipText: result.tooltipText,
|
|
24192
|
+
featureId: result.featureId,
|
|
24193
|
+
tabsOutlet: result.tabsOutlet,
|
|
24194
|
+
showAlways: result.showAlways
|
|
24195
|
+
}
|
|
24196
|
+
: undefined;
|
|
24197
|
+
}))), filter(tabs => !!tabs), toArray());
|
|
24198
|
+
}
|
|
24199
|
+
getBaselUrl(currentRoute) {
|
|
24200
|
+
let prefix = [];
|
|
24201
|
+
if (currentRoute.parent?.url.length > 0) {
|
|
24202
|
+
prefix = this.getBaselUrl(currentRoute.parent);
|
|
24203
|
+
}
|
|
24204
|
+
return [...prefix, ...currentRoute.url];
|
|
24205
|
+
}
|
|
24206
|
+
getLatestChildRoutes(context) {
|
|
24207
|
+
const thisContextRoute = this.findRootContextRoutes(this.router.config, context);
|
|
24208
|
+
return thisContextRoute?.children || [];
|
|
24209
|
+
}
|
|
24210
|
+
findRootContextRoutes(routes, context) {
|
|
24211
|
+
for (const route of routes) {
|
|
24212
|
+
if (route.rootContext === context) {
|
|
24213
|
+
return route;
|
|
24185
24214
|
}
|
|
24186
|
-
|
|
24215
|
+
if (route.children) {
|
|
24216
|
+
const childResult = this.findRootContextRoutes(route.children, context);
|
|
24217
|
+
if (childResult) {
|
|
24218
|
+
return childResult;
|
|
24219
|
+
}
|
|
24220
|
+
}
|
|
24221
|
+
}
|
|
24222
|
+
return null;
|
|
24187
24223
|
}
|
|
24188
24224
|
getGuards(child) {
|
|
24189
24225
|
const guards = (child.canActivate || []).map(guard => {
|
|
@@ -24206,22 +24242,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
24206
24242
|
|
|
24207
24243
|
class ViewContextServices {
|
|
24208
24244
|
static { this.services = {
|
|
24209
|
-
[ViewContext.Device]: InventoryService,
|
|
24210
|
-
[ViewContext.Group]: InventoryService,
|
|
24211
|
-
[ViewContext.User]: UserService,
|
|
24212
|
-
[ViewContext.Application]:
|
|
24213
|
-
|
|
24214
|
-
|
|
24215
|
-
|
|
24216
|
-
|
|
24217
|
-
[ViewContext.
|
|
24218
|
-
|
|
24219
|
-
|
|
24220
|
-
|
|
24221
|
-
|
|
24245
|
+
[ViewContext.Device]: { service: InventoryService, path: ViewContext.Device, autoRoute: true },
|
|
24246
|
+
[ViewContext.Group]: { service: InventoryService, path: ViewContext.Group, autoRoute: true },
|
|
24247
|
+
[ViewContext.User]: { service: UserService, path: ViewContext.User, autoRoute: true },
|
|
24248
|
+
[ViewContext.Application]: {
|
|
24249
|
+
service: ApplicationService,
|
|
24250
|
+
path: ViewContext.Application,
|
|
24251
|
+
autoRoute: true
|
|
24252
|
+
},
|
|
24253
|
+
[ViewContext.Microservice]: {
|
|
24254
|
+
service: ApplicationService,
|
|
24255
|
+
path: ViewContext.Microservice,
|
|
24256
|
+
autoRoute: true
|
|
24257
|
+
},
|
|
24258
|
+
[ViewContext.Extension]: {
|
|
24259
|
+
service: ApplicationService,
|
|
24260
|
+
path: ViewContext.Extension,
|
|
24261
|
+
autoRoute: true
|
|
24262
|
+
},
|
|
24263
|
+
[ViewContext.Feature]: {
|
|
24264
|
+
service: ApplicationService,
|
|
24265
|
+
path: ViewContext.Feature,
|
|
24266
|
+
autoRoute: true
|
|
24267
|
+
},
|
|
24268
|
+
[ViewContext.SubscribedApplications]: {
|
|
24269
|
+
service: ApplicationService,
|
|
24270
|
+
path: ViewContext.SubscribedApplications,
|
|
24271
|
+
autoRoute: true
|
|
24272
|
+
},
|
|
24273
|
+
[ViewContext.Tenant]: { service: TenantService, path: ViewContext.Tenant, autoRoute: true },
|
|
24274
|
+
[ViewContext.Report]: { service: InventoryService, path: ViewContext.Report, autoRoute: true },
|
|
24275
|
+
[ViewContext.Service]: {
|
|
24276
|
+
service: InventoryService,
|
|
24277
|
+
path: ViewContext.Service,
|
|
24278
|
+
autoRoute: true
|
|
24279
|
+
},
|
|
24280
|
+
[ViewContext.DatapointLibrary]: {
|
|
24281
|
+
service: InventoryService,
|
|
24282
|
+
path: ViewContext.DatapointLibrary,
|
|
24283
|
+
autoRoute: true
|
|
24284
|
+
},
|
|
24285
|
+
[ViewContext.Simulators]: {
|
|
24286
|
+
service: InventoryService,
|
|
24287
|
+
path: ViewContext.Simulators,
|
|
24288
|
+
autoRoute: true
|
|
24289
|
+
},
|
|
24290
|
+
[ViewContext.Alarms]: { service: AlarmService, path: ':id', autoRoute: false },
|
|
24291
|
+
[ViewContext.GroupAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
|
|
24292
|
+
[ViewContext.DeviceAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
|
|
24293
|
+
[ViewContext.SimulatorsAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
|
|
24294
|
+
[ViewContext.ServiceAlarms]: { service: AlarmService, path: ':id', autoRoute: false }
|
|
24222
24295
|
}; }
|
|
24223
24296
|
static contextToService(context) {
|
|
24224
|
-
return ViewContextServices.services[context];
|
|
24297
|
+
return ViewContextServices.services[context]?.service;
|
|
24298
|
+
}
|
|
24299
|
+
static getPath(context) {
|
|
24300
|
+
return ViewContextServices.services[context]?.path;
|
|
24301
|
+
}
|
|
24302
|
+
static isAutoRoute(context) {
|
|
24303
|
+
return ViewContextServices.services[context]?.autoRoute;
|
|
24225
24304
|
}
|
|
24226
24305
|
}
|
|
24227
24306
|
|
|
@@ -24233,8 +24312,8 @@ class ContextRouteService {
|
|
|
24233
24312
|
this.apiService = apiService;
|
|
24234
24313
|
this.injector = injector;
|
|
24235
24314
|
this.lastAddedTabs = [];
|
|
24236
|
-
this.refreshTrigger = new Subject();
|
|
24237
24315
|
this.ID_REGEX = /([0-9]+)/;
|
|
24316
|
+
this.refreshTrigger$ = new Subject();
|
|
24238
24317
|
/**
|
|
24239
24318
|
* Last context data snapshot
|
|
24240
24319
|
*/
|
|
@@ -24260,24 +24339,53 @@ class ContextRouteService {
|
|
|
24260
24339
|
}
|
|
24261
24340
|
return null;
|
|
24262
24341
|
}
|
|
24342
|
+
/**
|
|
24343
|
+
* Returns a route for the given ContextData.
|
|
24344
|
+
*
|
|
24345
|
+
* @param contextData The ContextData object.
|
|
24346
|
+
* @returns A route with the ids set correctly.
|
|
24347
|
+
*/
|
|
24263
24348
|
getContextRoute(contextData) {
|
|
24264
|
-
return contextData.context.replace(
|
|
24349
|
+
return contextData.context.replace(/:id/g, contextData.contextData.id);
|
|
24265
24350
|
}
|
|
24351
|
+
/**
|
|
24352
|
+
* Verifies if a given url is a view context route.
|
|
24353
|
+
*
|
|
24354
|
+
* @param url A route url.
|
|
24355
|
+
* @param contextToCheck The view context(s) to check. If not provided, all contexts are checked.
|
|
24356
|
+
* @returns true if the given url is a view context route.
|
|
24357
|
+
*/
|
|
24358
|
+
isContextRoute(url, contextToCheck = []) {
|
|
24359
|
+
const viewContexts = contextToCheck.length === 0 ? Object.values(ViewContext) : contextToCheck;
|
|
24360
|
+
// replace all :id placeholders with a regex matcher for a number
|
|
24361
|
+
const regexMatchers = viewContexts.map(context => `/${context.replace(/:id/g, '([0-9]+)')}`);
|
|
24362
|
+
const matchingRegexContext = regexMatchers.find(context => new RegExp(context).test(url));
|
|
24363
|
+
return !!matchingRegexContext;
|
|
24364
|
+
}
|
|
24365
|
+
/**
|
|
24366
|
+
* @deprecated: Use ScopedContextRouteService instead. Will be removed in 10.22
|
|
24367
|
+
*/
|
|
24266
24368
|
init(route) {
|
|
24267
24369
|
this.routerSubscription = this.router.events
|
|
24268
24370
|
.pipe(filter(e => e instanceof NavigationEnd))
|
|
24269
24371
|
.subscribe(() => this.redirectToFirstTab());
|
|
24270
24372
|
this.dataSubscription = route.data
|
|
24271
|
-
.pipe(merge$1(this.updatedContext(route), this.refreshTrigger), switchMap(() => this.tabsResolver.resolve(route.snapshot)))
|
|
24373
|
+
.pipe(merge$1(this.updatedContext(route), this.refreshTrigger$), switchMap(() => this.tabsResolver.resolve(route.snapshot)))
|
|
24272
24374
|
.subscribe(tabs => this.updateTabs(tabs));
|
|
24273
24375
|
}
|
|
24376
|
+
/**
|
|
24377
|
+
* @deprecated: Use ScopedContextRouteService instead. Will be removed in 10.22
|
|
24378
|
+
*/
|
|
24274
24379
|
destroy() {
|
|
24275
24380
|
this.dataSubscription.unsubscribe();
|
|
24276
24381
|
this.routerSubscription.unsubscribe();
|
|
24277
24382
|
this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
|
|
24278
24383
|
}
|
|
24384
|
+
/**
|
|
24385
|
+
* Reloads all ViewContexts.
|
|
24386
|
+
*/
|
|
24279
24387
|
refreshContext() {
|
|
24280
|
-
this.refreshTrigger
|
|
24388
|
+
this.refreshTrigger$.next();
|
|
24281
24389
|
}
|
|
24282
24390
|
/**
|
|
24283
24391
|
* Sets a new contextData in the ActivatedRoute.
|
|
@@ -24293,6 +24401,9 @@ class ContextRouteService {
|
|
|
24293
24401
|
}
|
|
24294
24402
|
data.contextData = { ...contextData };
|
|
24295
24403
|
}
|
|
24404
|
+
/**
|
|
24405
|
+
* @deprecated: Use ScopedContextRouteService instead. Will be removed in 10.21
|
|
24406
|
+
*/
|
|
24296
24407
|
updatedContext(route) {
|
|
24297
24408
|
const { data } = route.snapshot;
|
|
24298
24409
|
const serviceInstance = ViewContextServices.contextToService(data.context);
|
|
@@ -24372,6 +24483,237 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
24372
24483
|
}]
|
|
24373
24484
|
}], ctorParameters: () => [{ type: RouterTabsResolver }, { type: TabsService }, { type: i1$3.Router }, { type: i4.ApiService }, { type: i0.Injector }] });
|
|
24374
24485
|
|
|
24486
|
+
/**
|
|
24487
|
+
* A service which is injected into the context route component to handle the context data.
|
|
24488
|
+
*/
|
|
24489
|
+
class ScopedContextRouteService {
|
|
24490
|
+
constructor(tabsResolver, tabsService, router, apiService, injector, destroyRef) {
|
|
24491
|
+
this.tabsResolver = tabsResolver;
|
|
24492
|
+
this.tabsService = tabsService;
|
|
24493
|
+
this.router = router;
|
|
24494
|
+
this.apiService = apiService;
|
|
24495
|
+
this.injector = injector;
|
|
24496
|
+
this.destroyRef = destroyRef;
|
|
24497
|
+
this.lastAddedTabs = [];
|
|
24498
|
+
this.refreshTrigger$ = new Subject();
|
|
24499
|
+
this.ID_REGEX = /([0-9]+)/;
|
|
24500
|
+
}
|
|
24501
|
+
/**
|
|
24502
|
+
* Indicates that the data is loading
|
|
24503
|
+
* @returns An boolean observable which indicates if the data is loading.
|
|
24504
|
+
*/
|
|
24505
|
+
isLoading$() {
|
|
24506
|
+
return this.router.events.pipe(filter(e => (e instanceof ActivationStart || e instanceof ChildActivationEnd) &&
|
|
24507
|
+
e.snapshot.routeConfig?.rootContext === this.currentContext), map(e => e instanceof ActivationStart), takeUntilDestroyed(this.destroyRef));
|
|
24508
|
+
}
|
|
24509
|
+
/**
|
|
24510
|
+
* Initializes the context route.
|
|
24511
|
+
* @param route The current activated route.
|
|
24512
|
+
*/
|
|
24513
|
+
init(route) {
|
|
24514
|
+
this.currentContext = route.routeConfig.rootContext;
|
|
24515
|
+
if (!this.currentContext) {
|
|
24516
|
+
throw new Error(`${ScopedContextRouteService.name} should not be used on a route without a rootContext`);
|
|
24517
|
+
}
|
|
24518
|
+
this.router.events
|
|
24519
|
+
.pipe(filter(e => e instanceof ActivationEnd), takeUntilDestroyed(this.destroyRef))
|
|
24520
|
+
.subscribe((e) => this.redirectToFirstTab(e));
|
|
24521
|
+
route.data
|
|
24522
|
+
.pipe(merge$1(this.updatedContext(route), this.refreshTrigger$), switchMap(() => this.tabsResolver.resolve(route.snapshot)), takeUntilDestroyed(this.destroyRef))
|
|
24523
|
+
.subscribe(tabs => this.updateTabs(tabs));
|
|
24524
|
+
}
|
|
24525
|
+
/**
|
|
24526
|
+
* Destroys the service.
|
|
24527
|
+
*/
|
|
24528
|
+
ngOnDestroy() {
|
|
24529
|
+
this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
|
|
24530
|
+
}
|
|
24531
|
+
/**
|
|
24532
|
+
* Refreshes the context.
|
|
24533
|
+
*/
|
|
24534
|
+
refreshContext() {
|
|
24535
|
+
this.refreshTrigger$.next();
|
|
24536
|
+
}
|
|
24537
|
+
/**
|
|
24538
|
+
* Sets an API hook to refresh the contextData on changes.
|
|
24539
|
+
* @param activatedRoute The current activated route.
|
|
24540
|
+
*/
|
|
24541
|
+
updatedContext(route) {
|
|
24542
|
+
const { data } = route.snapshot;
|
|
24543
|
+
const serviceInstance = ViewContextServices.contextToService(data.context);
|
|
24544
|
+
if (serviceInstance) {
|
|
24545
|
+
const service = this.injector.get(serviceInstance);
|
|
24546
|
+
const detailsUrlRegex = service
|
|
24547
|
+
.getDetailUrl(data.contextData)
|
|
24548
|
+
.replace(/\d+/g, '?\\d*');
|
|
24549
|
+
const contextRegex = new RegExp(detailsUrlRegex, 'i');
|
|
24550
|
+
const childrenRegex = new RegExp(`${detailsUrlRegex}/child`, 'i');
|
|
24551
|
+
const filterResponse = ({ url, method }) => {
|
|
24552
|
+
const contextChanged = contextRegex.test(url) && ['POST', 'PUT'].includes(method);
|
|
24553
|
+
const childrenAffected = childrenRegex.test(url) && ['POST', 'DELETE'].includes(method);
|
|
24554
|
+
return contextChanged || childrenAffected;
|
|
24555
|
+
};
|
|
24556
|
+
return this.apiService.hookResponse(filterResponse);
|
|
24557
|
+
}
|
|
24558
|
+
return NEVER;
|
|
24559
|
+
}
|
|
24560
|
+
updateTabs(tabs = []) {
|
|
24561
|
+
this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
|
|
24562
|
+
this.lastAddedTabs = tabs;
|
|
24563
|
+
tabs.forEach(t => this.tabsService.add(t));
|
|
24564
|
+
this.redirectToFirstTab();
|
|
24565
|
+
}
|
|
24566
|
+
redirectToFirstTab(event) {
|
|
24567
|
+
const currentQueryParams = this.router.routerState.snapshot.root.queryParams;
|
|
24568
|
+
const queryParamsString = new URLSearchParams(currentQueryParams).toString();
|
|
24569
|
+
const queryParamsSuffix = queryParamsString ? `?${queryParamsString}` : '';
|
|
24570
|
+
if (event) {
|
|
24571
|
+
if (this.needsRedirect(event)) {
|
|
24572
|
+
const tab = this.tabsService.sortTabs(event.snapshot.data.tabs)?.[0];
|
|
24573
|
+
if (!tab) {
|
|
24574
|
+
return;
|
|
24575
|
+
}
|
|
24576
|
+
const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
|
|
24577
|
+
const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
|
|
24578
|
+
if (currentContextId === tabPathId) {
|
|
24579
|
+
this.router.navigateByUrl(`${tab.path}${queryParamsSuffix}`, {
|
|
24580
|
+
replaceUrl: true
|
|
24581
|
+
});
|
|
24582
|
+
}
|
|
24583
|
+
}
|
|
24584
|
+
}
|
|
24585
|
+
else {
|
|
24586
|
+
const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
|
|
24587
|
+
if (this.needsRedirectLegacy()) {
|
|
24588
|
+
this.tabsService.firstTab$.pipe(filter((tab) => !!tab?.path)).subscribe((tab) => {
|
|
24589
|
+
const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
|
|
24590
|
+
if (currentContextId === tabPathId) {
|
|
24591
|
+
this.router.navigateByUrl(`${tab.path}${queryParamsSuffix}`, { replaceUrl: true });
|
|
24592
|
+
}
|
|
24593
|
+
});
|
|
24594
|
+
}
|
|
24595
|
+
}
|
|
24596
|
+
}
|
|
24597
|
+
needsRedirectLegacy() {
|
|
24598
|
+
const tree = this.router.parseUrl(this.router.url);
|
|
24599
|
+
const groups = tree.root.children[PRIMARY_OUTLET];
|
|
24600
|
+
const context = this.getMatchingContextRoute(this.router.url);
|
|
24601
|
+
if (!context) {
|
|
24602
|
+
return groups.segments.length === 2;
|
|
24603
|
+
}
|
|
24604
|
+
return context.split('/').length === groups.segments.length;
|
|
24605
|
+
}
|
|
24606
|
+
needsRedirect(event) {
|
|
24607
|
+
const contextRoute = event.snapshot.routeConfig;
|
|
24608
|
+
if (!contextRoute.rootContext) {
|
|
24609
|
+
return false;
|
|
24610
|
+
}
|
|
24611
|
+
const contextRouteFromUrl = this.getMatchingContextRoute(this.router.url);
|
|
24612
|
+
return contextRoute.rootContext === contextRouteFromUrl;
|
|
24613
|
+
}
|
|
24614
|
+
getMatchingContextRoute(url) {
|
|
24615
|
+
const viewContexts = Object.values(ViewContext);
|
|
24616
|
+
// replace all :id placeholders with a regex matcher for a number
|
|
24617
|
+
const regexMatchers = viewContexts.map(context => `^/${context.replace(/:id/g, '([0-9]+)')}(\\?.*)?$`);
|
|
24618
|
+
const matchingRegexContext = regexMatchers.find(context => new RegExp(context).test(url));
|
|
24619
|
+
return matchingRegexContext ? viewContexts[regexMatchers.indexOf(matchingRegexContext)] : null;
|
|
24620
|
+
}
|
|
24621
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService, deps: [{ token: RouterTabsResolver }, { token: TabsService }, { token: i1$3.Router }, { token: i4.ApiService }, { token: i0.Injector }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24622
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService }); }
|
|
24623
|
+
}
|
|
24624
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService, decorators: [{
|
|
24625
|
+
type: Injectable
|
|
24626
|
+
}], ctorParameters: () => [{ type: RouterTabsResolver }, { type: TabsService }, { type: i1$3.Router }, { type: i4.ApiService }, { type: i0.Injector }, { type: i0.DestroyRef }] });
|
|
24627
|
+
|
|
24628
|
+
class ContextRouteComponent {
|
|
24629
|
+
constructor(route, scopedContextRouteService, contextRouteService, destroyRef) {
|
|
24630
|
+
this.route = route;
|
|
24631
|
+
this.scopedContextRouteService = scopedContextRouteService;
|
|
24632
|
+
this.contextRouteService = contextRouteService;
|
|
24633
|
+
this.destroyRef = destroyRef;
|
|
24634
|
+
this.isLoading$ = this.scopedContextRouteService.isLoading$();
|
|
24635
|
+
}
|
|
24636
|
+
ngOnInit() {
|
|
24637
|
+
this.contextRouteService.refreshTrigger$
|
|
24638
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
24639
|
+
.subscribe(() => {
|
|
24640
|
+
this.refreshTabs();
|
|
24641
|
+
});
|
|
24642
|
+
this.scopedContextRouteService.init(this.route);
|
|
24643
|
+
}
|
|
24644
|
+
refreshTabs() {
|
|
24645
|
+
this.scopedContextRouteService.refreshContext();
|
|
24646
|
+
}
|
|
24647
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: ScopedContextRouteService }, { token: ContextRouteService }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24648
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ContextRouteComponent, selector: "c8y-context-route", providers: [ScopedContextRouteService], ngImport: i0, template: "<router-outlet *ngIf=\"!(isLoading$ | async); else loading\"></router-outlet>\n\n<ng-template #loading>\n <div class=\"d-flex d-col a-i-center j-c-center fit-h\">\n <c8y-loading></c8y-loading>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
24649
|
+
}
|
|
24650
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteComponent, decorators: [{
|
|
24651
|
+
type: Component,
|
|
24652
|
+
args: [{ selector: 'c8y-context-route', providers: [ScopedContextRouteService], template: "<router-outlet *ngIf=\"!(isLoading$ | async); else loading\"></router-outlet>\n\n<ng-template #loading>\n <div class=\"d-flex d-col a-i-center j-c-center fit-h\">\n <c8y-loading></c8y-loading>\n </div>\n</ng-template>\n" }]
|
|
24653
|
+
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: ScopedContextRouteService }, { type: ContextRouteService }, { type: i0.DestroyRef }] });
|
|
24654
|
+
|
|
24655
|
+
class ContextRouteGuard {
|
|
24656
|
+
constructor(injector) {
|
|
24657
|
+
this.injector = injector;
|
|
24658
|
+
this.caches = new Map();
|
|
24659
|
+
}
|
|
24660
|
+
canActivate(route) {
|
|
24661
|
+
const id = route.paramMap.get('id');
|
|
24662
|
+
const service = this.service(route);
|
|
24663
|
+
this.clearDetailCached(service, id);
|
|
24664
|
+
return this.detailCached(service, id).pipe(tap(contextData => {
|
|
24665
|
+
Object.keys(route.data.contextData).forEach(key => delete route.data.contextData[key]);
|
|
24666
|
+
Object.assign(route.data.contextData, contextData);
|
|
24667
|
+
}), map(() => true), catchError(() => of(false)));
|
|
24668
|
+
}
|
|
24669
|
+
service(route) {
|
|
24670
|
+
const serviceInstance = ViewContextServices.contextToService(route.data.context);
|
|
24671
|
+
return this.injector.get(serviceInstance);
|
|
24672
|
+
}
|
|
24673
|
+
detailCached(service, id) {
|
|
24674
|
+
if (id === 'new') {
|
|
24675
|
+
return of(undefined);
|
|
24676
|
+
}
|
|
24677
|
+
const cache = this.getCache(service);
|
|
24678
|
+
let cached = cache[id];
|
|
24679
|
+
if (!cached) {
|
|
24680
|
+
const params = service instanceof InventoryService ? { withChildren: false } : undefined;
|
|
24681
|
+
cached = from(service.detail(id, params)).pipe(map(({ data }) => data), shareReplay(1));
|
|
24682
|
+
cache[id] = cached;
|
|
24683
|
+
}
|
|
24684
|
+
return cached;
|
|
24685
|
+
}
|
|
24686
|
+
clearDetailCached(service, id) {
|
|
24687
|
+
const cache = this.getCache(service);
|
|
24688
|
+
delete cache[id];
|
|
24689
|
+
}
|
|
24690
|
+
getCache(service) {
|
|
24691
|
+
let cache = this.caches.get(service);
|
|
24692
|
+
if (!cache) {
|
|
24693
|
+
cache = {};
|
|
24694
|
+
this.caches.set(service, cache);
|
|
24695
|
+
}
|
|
24696
|
+
return cache;
|
|
24697
|
+
}
|
|
24698
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteGuard, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24699
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteGuard, providedIn: 'root' }); }
|
|
24700
|
+
}
|
|
24701
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteGuard, decorators: [{
|
|
24702
|
+
type: Injectable,
|
|
24703
|
+
args: [{
|
|
24704
|
+
providedIn: 'root'
|
|
24705
|
+
}]
|
|
24706
|
+
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
24707
|
+
|
|
24708
|
+
class EmptyComponent {
|
|
24709
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: EmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24710
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: EmptyComponent, selector: "empty", ngImport: i0, template: '', isInline: true }); }
|
|
24711
|
+
}
|
|
24712
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: EmptyComponent, decorators: [{
|
|
24713
|
+
type: Component,
|
|
24714
|
+
args: [{ selector: 'empty', template: '' }]
|
|
24715
|
+
}] });
|
|
24716
|
+
|
|
24375
24717
|
/**
|
|
24376
24718
|
* A hook to use for Multi Provider extension.
|
|
24377
24719
|
* @deprecated Consider using the `hookRoute` function instead.
|
|
@@ -24474,16 +24816,17 @@ class RouterService extends ExtensionPointWithoutStateForPlugins {
|
|
|
24474
24816
|
// Empty route needs to be last as of navigation to angularjs routes
|
|
24475
24817
|
// if ** route hit, the angularjs routes are loaded.
|
|
24476
24818
|
const emptyRoute = this.router.config.find(r => r.path === '**');
|
|
24819
|
+
const rootContextRoutes = this.findAllRootContextRoutes([...this.router.config, ...routes]);
|
|
24477
24820
|
this.router.resetConfig([
|
|
24478
24821
|
...this.router.config.filter(r => r.path !== '**'),
|
|
24479
|
-
...routes.map((r) => this.convertRoute(
|
|
24822
|
+
...routes.map((r) => this.convertRoute(rootContextRoutes, r)),
|
|
24480
24823
|
emptyRoute
|
|
24481
24824
|
].filter(Boolean));
|
|
24482
24825
|
}
|
|
24483
|
-
convertRoute(
|
|
24826
|
+
convertRoute(rootContextRoutes, route) {
|
|
24484
24827
|
if (route.context) {
|
|
24485
|
-
|
|
24486
|
-
if (r.
|
|
24828
|
+
rootContextRoutes.forEach((r) => {
|
|
24829
|
+
if (r.rootContext === route.context) {
|
|
24487
24830
|
r.children = [route, ...(r.children || [])];
|
|
24488
24831
|
}
|
|
24489
24832
|
});
|
|
@@ -24491,6 +24834,19 @@ class RouterService extends ExtensionPointWithoutStateForPlugins {
|
|
|
24491
24834
|
}
|
|
24492
24835
|
return route;
|
|
24493
24836
|
}
|
|
24837
|
+
findAllRootContextRoutes(routes) {
|
|
24838
|
+
const result = [];
|
|
24839
|
+
routes.forEach(route => {
|
|
24840
|
+
if (route.rootContext) {
|
|
24841
|
+
result.push(route);
|
|
24842
|
+
}
|
|
24843
|
+
if (route.children) {
|
|
24844
|
+
const childRoutes = this.findAllRootContextRoutes(route.children);
|
|
24845
|
+
result.push(...childRoutes);
|
|
24846
|
+
}
|
|
24847
|
+
});
|
|
24848
|
+
return result;
|
|
24849
|
+
}
|
|
24494
24850
|
resolveRouterForChildRoutes(moduleRef, remoteNgModule) {
|
|
24495
24851
|
// NOTE: stolen from lazy loaded routes from Angular itself.
|
|
24496
24852
|
// https://github.com/angular/angular/blob/da58801f95c66c201e332189af25702bdd722f3f/packages/router/src/router_config_loader.ts#L103-L108
|
|
@@ -24513,90 +24869,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
24513
24869
|
}]
|
|
24514
24870
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1$3.Router }, { type: ContextRouteService }, { type: PluginsResolveService }, { type: OptionsService }] });
|
|
24515
24871
|
|
|
24516
|
-
class ContextRouteComponent {
|
|
24517
|
-
constructor(route, contextRouteService) {
|
|
24518
|
-
this.route = route;
|
|
24519
|
-
this.contextRouteService = contextRouteService;
|
|
24520
|
-
}
|
|
24521
|
-
ngOnInit() {
|
|
24522
|
-
this.contextRouteService.init(this.route);
|
|
24523
|
-
}
|
|
24524
|
-
ngOnDestroy() {
|
|
24525
|
-
this.contextRouteService.destroy();
|
|
24526
|
-
}
|
|
24527
|
-
refreshTabs() {
|
|
24528
|
-
this.contextRouteService.refreshContext();
|
|
24529
|
-
}
|
|
24530
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: ContextRouteService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24531
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: ContextRouteComponent, selector: "c8y-context-route", ngImport: i0, template: "<router-outlet></router-outlet>\n", dependencies: [{ kind: "directive", type: i1$3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] }); }
|
|
24532
|
-
}
|
|
24533
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteComponent, decorators: [{
|
|
24534
|
-
type: Component,
|
|
24535
|
-
args: [{ selector: 'c8y-context-route', template: "<router-outlet></router-outlet>\n" }]
|
|
24536
|
-
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: ContextRouteService }] });
|
|
24537
|
-
|
|
24538
|
-
class ContextRouteGuard {
|
|
24539
|
-
constructor(injector) {
|
|
24540
|
-
this.injector = injector;
|
|
24541
|
-
this.caches = new Map();
|
|
24542
|
-
}
|
|
24543
|
-
canActivate(route) {
|
|
24544
|
-
const id = route.paramMap.get('id');
|
|
24545
|
-
const service = this.service(route);
|
|
24546
|
-
this.clearDetailCached(service, id);
|
|
24547
|
-
return this.detailCached(service, id).pipe(tap(contextData => {
|
|
24548
|
-
Object.keys(route.data.contextData).forEach(key => delete route.data.contextData[key]);
|
|
24549
|
-
Object.assign(route.data.contextData, contextData);
|
|
24550
|
-
}), map(() => true), catchError(() => of(false)));
|
|
24551
|
-
}
|
|
24552
|
-
service(route) {
|
|
24553
|
-
const serviceInstance = ViewContextServices.contextToService(route.data.context);
|
|
24554
|
-
return this.injector.get(serviceInstance);
|
|
24555
|
-
}
|
|
24556
|
-
detailCached(service, id) {
|
|
24557
|
-
if (id === 'new') {
|
|
24558
|
-
return of(undefined);
|
|
24559
|
-
}
|
|
24560
|
-
const cache = this.getCache(service);
|
|
24561
|
-
let cached = cache[id];
|
|
24562
|
-
if (!cached) {
|
|
24563
|
-
const params = service instanceof InventoryService ? { withChildren: false } : undefined;
|
|
24564
|
-
cached = from(service.detail(id, params)).pipe(map(({ data }) => data), shareReplay(1));
|
|
24565
|
-
cache[id] = cached;
|
|
24566
|
-
}
|
|
24567
|
-
return cached;
|
|
24568
|
-
}
|
|
24569
|
-
clearDetailCached(service, id) {
|
|
24570
|
-
const cache = this.getCache(service);
|
|
24571
|
-
delete cache[id];
|
|
24572
|
-
}
|
|
24573
|
-
getCache(service) {
|
|
24574
|
-
let cache = this.caches.get(service);
|
|
24575
|
-
if (!cache) {
|
|
24576
|
-
cache = {};
|
|
24577
|
-
this.caches.set(service, cache);
|
|
24578
|
-
}
|
|
24579
|
-
return cache;
|
|
24580
|
-
}
|
|
24581
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteGuard, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
24582
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteGuard, providedIn: 'root' }); }
|
|
24583
|
-
}
|
|
24584
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteGuard, decorators: [{
|
|
24585
|
-
type: Injectable,
|
|
24586
|
-
args: [{
|
|
24587
|
-
providedIn: 'root'
|
|
24588
|
-
}]
|
|
24589
|
-
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
24590
|
-
|
|
24591
|
-
class EmptyComponent {
|
|
24592
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: EmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24593
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: EmptyComponent, selector: "empty", ngImport: i0, template: '', isInline: true }); }
|
|
24594
|
-
}
|
|
24595
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: EmptyComponent, decorators: [{
|
|
24596
|
-
type: Component,
|
|
24597
|
-
args: [{ selector: 'empty', template: '' }]
|
|
24598
|
-
}] });
|
|
24599
|
-
|
|
24600
24872
|
const extraRoutes = [
|
|
24601
24873
|
{
|
|
24602
24874
|
path: 'users/new',
|
|
@@ -24607,17 +24879,21 @@ const extraRoutes = [
|
|
|
24607
24879
|
component: EmptyComponent
|
|
24608
24880
|
}
|
|
24609
24881
|
];
|
|
24882
|
+
const viewContextRoutes = [];
|
|
24610
24883
|
// tslint:disable-next-line: forin
|
|
24611
24884
|
for (const key in ViewContext) {
|
|
24612
24885
|
const context = ViewContext[key];
|
|
24613
|
-
|
|
24614
|
-
|
|
24886
|
+
if (!ViewContextServices.isAutoRoute(context)) {
|
|
24887
|
+
continue;
|
|
24888
|
+
}
|
|
24889
|
+
viewContextRoutes.push({
|
|
24890
|
+
path: ViewContextServices.getPath(context),
|
|
24891
|
+
rootContext: context,
|
|
24615
24892
|
component: ContextRouteComponent,
|
|
24616
24893
|
canActivate: [ContextRouteGuard],
|
|
24617
24894
|
data: { context, contextData: {} },
|
|
24618
24895
|
resolve: {
|
|
24619
24896
|
tabs: RouterTabsResolver
|
|
24620
|
-
// contextData: ContextRouteGuard
|
|
24621
24897
|
}
|
|
24622
24898
|
});
|
|
24623
24899
|
}
|
|
@@ -24646,10 +24922,10 @@ class RouterModule {
|
|
|
24646
24922
|
// initialNavigation disabled by default because of MTM-44047 (routes triggered before the actual login)
|
|
24647
24923
|
config.initialNavigation = config.initialNavigation ?? 'disabled';
|
|
24648
24924
|
config.useHash = config.useHash ?? true;
|
|
24649
|
-
const ngRouterModule = RouterModule$1.forRoot([...routes, ...extraRoutes], config);
|
|
24925
|
+
const ngRouterModule = RouterModule$1.forRoot([...routes, ...extraRoutes, ...viewContextRoutes], config);
|
|
24650
24926
|
return {
|
|
24651
24927
|
ngModule: RouterModule,
|
|
24652
|
-
providers: [...ngRouterModule.providers]
|
|
24928
|
+
providers: [...ngRouterModule.providers, ScopedContextRouteService]
|
|
24653
24929
|
};
|
|
24654
24930
|
}
|
|
24655
24931
|
constructor(
|
|
@@ -24659,13 +24935,14 @@ class RouterModule {
|
|
|
24659
24935
|
}
|
|
24660
24936
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, deps: [{ token: RouterService }], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
24661
24937
|
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, declarations: [ContextRouteComponent, EmptyComponent], imports: [RouterModule$1, HeaderModule, CommonModule] }); }
|
|
24662
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, imports: [RouterModule$1, HeaderModule, CommonModule] }); }
|
|
24938
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, providers: [ScopedContextRouteService], imports: [RouterModule$1, HeaderModule, CommonModule] }); }
|
|
24663
24939
|
}
|
|
24664
24940
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, decorators: [{
|
|
24665
24941
|
type: NgModule,
|
|
24666
24942
|
args: [{
|
|
24667
24943
|
declarations: [ContextRouteComponent, EmptyComponent],
|
|
24668
|
-
imports: [RouterModule$1, HeaderModule, CommonModule]
|
|
24944
|
+
imports: [RouterModule$1, HeaderModule, CommonModule],
|
|
24945
|
+
providers: [ScopedContextRouteService]
|
|
24669
24946
|
}]
|
|
24670
24947
|
}], ctorParameters: () => [{ type: RouterService }] });
|
|
24671
24948
|
|
|
@@ -34970,5 +35247,5 @@ function colorValidator(allowedModes) {
|
|
|
34970
35247
|
* Generated bundle index. Do not edit.
|
|
34971
35248
|
*/
|
|
34972
35249
|
|
|
34973
|
-
export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangePasswordComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CredentialsComponent, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, LoginComponent, LoginModule, LoginService, LoginViews, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_QUERY_PARAM, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthValidatorDirective, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginsExportScopes, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProvidePhoneNumberComponent, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RecoverPasswordComponent, RelativeTimePipe, RequiredInputPlaceholderDirective, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SkipLinkDirective, SmsChallengeComponent, StandalonePluginInjector, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StrengthValidatorService, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpAuthComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, wrapperLegendFieldConfig };
|
|
35250
|
+
export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangePasswordComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CredentialsComponent, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, LoginComponent, LoginModule, LoginService, LoginViews, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_QUERY_PARAM, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthValidatorDirective, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginsExportScopes, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProvidePhoneNumberComponent, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RecoverPasswordComponent, RelativeTimePipe, RequiredInputPlaceholderDirective, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SkipLinkDirective, SmsChallengeComponent, StandalonePluginInjector, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StrengthValidatorService, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpAuthComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, viewContextRoutes, wrapperLegendFieldConfig };
|
|
34974
35251
|
//# sourceMappingURL=c8y-ngx-components.mjs.map
|