@c8y/ngx-components 1021.21.0 → 1021.22.26
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 +23 -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/branding/shared/data/branding-tracking.service.d.ts +20 -0
- package/branding/shared/data/branding-tracking.service.d.ts.map +1 -0
- package/branding/shared/data/branding-version.service.d.ts.map +1 -1
- package/branding/shared/data/index.d.ts +1 -0
- package/branding/shared/data/index.d.ts.map +1 -1
- package/branding/shared/data/store-branding.service.d.ts +8 -1
- package/branding/shared/data/store-branding.service.d.ts.map +1 -1
- package/branding/shared/lazy/branding/branding.component.d.ts +3 -2
- package/branding/shared/lazy/branding/branding.component.d.ts.map +1 -1
- package/branding/shared/lazy/branding-theme-form/branding-theme-form.component.d.ts.map +1 -1
- package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
- package/cockpit-config/cockpit-config.module.d.ts +1 -1
- package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
- package/context-dashboard/context-dashboard.service.d.ts +1 -1
- package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
- package/core/bootstrap/bootstrap.component.d.ts.map +1 -1
- package/core/common/service-registry.model.d.ts +2 -1
- package/core/common/service-registry.model.d.ts.map +1 -1
- package/core/common/ui-state.service.d.ts +0 -1
- package/core/common/ui-state.service.d.ts.map +1 -1
- package/core/i18n/missing-translation-custom.handler.d.ts +1 -0
- package/core/i18n/missing-translation-custom.handler.d.ts.map +1 -1
- package/core/plugins/index.d.ts +1 -0
- package/core/plugins/index.d.ts.map +1 -1
- package/core/plugins/plugin-loaded.pipe.d.ts +12 -0
- package/core/plugins/plugin-loaded.pipe.d.ts.map +1 -0
- package/core/plugins/plugins-resolve.service.d.ts +4 -2
- package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
- package/core/plugins/plugins.model.d.ts +3 -1
- package/core/plugins/plugins.model.d.ts.map +1 -1
- package/core/plugins/plugins.service.d.ts +3 -0
- package/core/plugins/plugins.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 +6 -3
- 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/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
- package/ecosystem/application-plugins/application-plugins.guard.d.ts.map +1 -1
- package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.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 +94 -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/branding/shared/data/branding-tracking.service.mjs +58 -0
- package/esm2022/branding/shared/data/branding-version.service.mjs +9 -5
- package/esm2022/branding/shared/data/index.mjs +2 -1
- package/esm2022/branding/shared/data/store-branding.service.mjs +15 -4
- package/esm2022/branding/shared/lazy/branding/branding.component.mjs +16 -12
- package/esm2022/branding/shared/lazy/branding-theme-form/branding-theme-form.component.mjs +5 -2
- package/esm2022/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.mjs +2 -2
- package/esm2022/cockpit-config/cockpit-config.module.mjs +6 -3
- package/esm2022/cockpit-config/feature-config.component.mjs +5 -4
- package/esm2022/context-dashboard/context-dashboard.service.mjs +47 -13
- package/esm2022/core/bootstrap/bootstrap.component.mjs +4 -3
- package/esm2022/core/common/service-registry.model.mjs +1 -1
- package/esm2022/core/common/ui-state.service.mjs +1 -19
- package/esm2022/core/i18n/missing-translation-custom.handler.mjs +5 -1
- package/esm2022/core/i18n/translation-loader.service.mjs +2 -2
- package/esm2022/core/plugins/index.mjs +2 -1
- package/esm2022/core/plugins/plugin-loaded.pipe.mjs +26 -0
- package/esm2022/core/plugins/plugins-resolve.service.mjs +5 -1
- package/esm2022/core/plugins/plugins.model.mjs +2 -1
- package/esm2022/core/plugins/plugins.service.mjs +13 -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 +66 -21
- 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/core/version/websdk-plugin-version.factory.mjs +2 -2
- package/esm2022/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.mjs +3 -3
- package/esm2022/ecosystem/activity-log/activity-log.component.mjs +3 -3
- package/esm2022/ecosystem/application-plugins/application-plugins.component.mjs +67 -23
- package/esm2022/ecosystem/application-plugins/application-plugins.guard.mjs +8 -2
- package/esm2022/ecosystem/application-plugins/orphaned-status-cell-renderer.component.mjs +7 -1
- package/esm2022/interval-picker/interval-picker.component.mjs +1 -1
- package/esm2022/interval-picker/interval-picker.model.mjs +1 -1
- package/esm2022/protocol-lwm2m/ng1/plugin-checker.service.mjs +5 -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 +12 -2
- 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 +389 -268
- package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +76 -9
- package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +19 -12
- package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs +7 -5
- package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs +46 -12
- package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -2
- package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +79 -23
- package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-ecosystem.mjs +81 -25
- package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components-protocol-lwm2m.mjs +4 -0
- package/fesm2022/c8y-ngx-components-protocol-lwm2m.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 +124 -15
- package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
- package/fesm2022/c8y-ngx-components.mjs +489 -176
- 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/de.po +431 -538
- package/locales/en.po +2 -889
- package/locales/en_US.po +2 -880
- package/locales/es.po +462 -540
- package/locales/fr.po +470 -549
- package/locales/ja_JP.po +405 -598
- package/locales/ko.po +649 -502
- package/locales/locales.pot +27 -12
- package/locales/nl.po +463 -541
- package/locales/pl.po +504 -554
- package/locales/pt_BR.po +466 -543
- package/locales/zh_CN.po +650 -498
- package/locales/zh_TW.po +650 -498
- package/package.json +1 -1
- package/protocol-lwm2m/ng1/plugin-checker.service.d.ts +4 -0
- package/protocol-lwm2m/ng1/plugin-checker.service.d.ts.map +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
|
@@ -4,17 +4,16 @@ import * as i2$2 from 'ngx-bootstrap/dropdown';
|
|
|
4
4
|
import { BsDropdownModule, BsDropdownDirective } from 'ngx-bootstrap/dropdown';
|
|
5
5
|
import * as i3$1 from '@angular/cdk/a11y';
|
|
6
6
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
7
|
-
import { castArray, flatten, uniq, sortBy, groupBy, camelCase, isEqual, isUndefined, throttle as throttle$1, keys, get, isNaN as isNaN$1, isFinite, each, mapValues, mapKeys, forEach, reduce, union, cloneDeep, uniqBy, assign, min, every, first, map as map$
|
|
8
|
-
import { merge, of, defer, combineLatest, race, isObservable, from, Subject, BehaviorSubject, NEVER, Observable, firstValueFrom, fromEvent, pipe, throwError, concat,
|
|
7
|
+
import { castArray, flatten, uniq, sortBy, groupBy, camelCase, isEqual, isUndefined, throttle as throttle$1, keys, get, isNaN as isNaN$1, isFinite, each, mapValues, mapKeys, forEach, reduce, union, cloneDeep, uniqBy, assign, min, every, first, map as map$2, find, negate, upperFirst, memoize as memoize$1, property, some, entries, omitBy, isDate, orderBy, flatMap, isEmpty, filter as filter$1, snakeCase, matches, isString, clone, toNumber, isEqualWith, escape as escape$1, escapeRegExp, assignWith, set, omit, pick, has, transform, identity, flow, isNil, chunk, values, without, indexOf, parseInt as parseInt$1, kebabCase, forOwn } from 'lodash-es';
|
|
8
|
+
import { merge, of, defer, combineLatest, race, isObservable, from, Subject, BehaviorSubject, NEVER, Observable, firstValueFrom, map as map$1, distinctUntilChanged as distinctUntilChanged$1, fromEvent, pipe, throwError, concat, EMPTY, timer, fromEventPattern, startWith as startWith$1, switchMap as switchMap$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
|
-
import { satisfies, compare, coerce } from 'semver';
|
|
18
17
|
import { coerceNumberProperty } from '@angular/cdk/coercion';
|
|
19
18
|
import * as i2$1 from '@angular/cdk/scrolling';
|
|
20
19
|
import { VIRTUAL_SCROLL_STRATEGY, ScrollingModule } from '@angular/cdk/scrolling';
|
|
@@ -30,6 +29,7 @@ export * from '@c8y/ngx-components/gettext';
|
|
|
30
29
|
import * as i3 from 'ngx-bootstrap/datepicker';
|
|
31
30
|
import { BsDatepickerModule, BsDatepickerDirective } from 'ngx-bootstrap/datepicker';
|
|
32
31
|
import { defineLocale, enGbLocale, zhCnLocale, ptBrLocale, plLocale, nlLocale, koLocale, jaLocale, frLocale, esLocale, deLocale } from 'ngx-bootstrap/chronos';
|
|
32
|
+
import { compare, coerce } from 'semver';
|
|
33
33
|
import saveAs$1, { saveAs } from 'file-saver';
|
|
34
34
|
import * as i1$2 from '@angular/platform-browser';
|
|
35
35
|
import { BlobReader, ZipReader, BlobWriter, ZipWriter } from '@zip.js/zip.js';
|
|
@@ -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
|
|
@@ -897,25 +897,8 @@ class AppStateService extends StateService {
|
|
|
897
897
|
this.state.supportUrl = await this.options.getSupportUrl();
|
|
898
898
|
this.state.activateSupportUserAvailable = await this.options.getActivateSupportUser();
|
|
899
899
|
this.state.versions.backend = await this.options.getSystemOption('system', 'version');
|
|
900
|
-
try {
|
|
901
|
-
this.showIncompatibleVersionsError();
|
|
902
|
-
}
|
|
903
|
-
catch (ex) {
|
|
904
|
-
// ignore this
|
|
905
|
-
}
|
|
906
900
|
this.emitNewState();
|
|
907
901
|
}
|
|
908
|
-
showIncompatibleVersionsError() {
|
|
909
|
-
if (this.options.noVersionWarning) {
|
|
910
|
-
return;
|
|
911
|
-
}
|
|
912
|
-
const uiVersion = this.state.versions.ui.ngx;
|
|
913
|
-
const backendVersion = this.state.versions.backend;
|
|
914
|
-
if (!satisfies(uiVersion, `<=${backendVersion} || ~${backendVersion}`)) {
|
|
915
|
-
const errorContent = `You are running version ${uiVersion} of the UI and version ${backendVersion} of backend!`;
|
|
916
|
-
console.log('%c ' + errorContent, 'font-weight: bold; font-size: 30px; color: red;');
|
|
917
|
-
}
|
|
918
|
-
}
|
|
919
902
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AppStateService, deps: [{ token: i1.ApplicationService }, { token: i4.ApiService }, { token: OptionsService }, { token: i1.FetchClient }, { token: i1.TenantLoginOptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
920
903
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: AppStateService, providedIn: 'root' }); }
|
|
921
904
|
}
|
|
@@ -1685,6 +1668,7 @@ class MissingTranslationCustomHandler {
|
|
|
1685
1668
|
else {
|
|
1686
1669
|
translation = this.parser.interpolate(messageKey, interpolateParams);
|
|
1687
1670
|
}
|
|
1671
|
+
translation = this.removeContextIndicators(translation);
|
|
1688
1672
|
this.addToCache(messageKey, interpolateParams, translation);
|
|
1689
1673
|
}
|
|
1690
1674
|
return translation;
|
|
@@ -1715,6 +1699,9 @@ class MissingTranslationCustomHandler {
|
|
|
1715
1699
|
}
|
|
1716
1700
|
return undefined;
|
|
1717
1701
|
}
|
|
1702
|
+
removeContextIndicators(translation) {
|
|
1703
|
+
return translation.replace(/`[^`]*`/g, '');
|
|
1704
|
+
}
|
|
1718
1705
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MissingTranslationCustomHandler, deps: [{ token: i1$1.TranslateParser }, { token: PatternMessagesService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1719
1706
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: MissingTranslationCustomHandler }); }
|
|
1720
1707
|
}
|
|
@@ -4476,6 +4463,7 @@ var ApplicationPluginStatus;
|
|
|
4476
4463
|
ApplicationPluginStatus["LATEST"] = "LATEST";
|
|
4477
4464
|
ApplicationPluginStatus["OUTDATED"] = "OUTDATED";
|
|
4478
4465
|
ApplicationPluginStatus["REVOKED"] = "REVOKED";
|
|
4466
|
+
ApplicationPluginStatus["AUTO"] = "AUTO";
|
|
4479
4467
|
})(ApplicationPluginStatus || (ApplicationPluginStatus = {}));
|
|
4480
4468
|
var PackageType;
|
|
4481
4469
|
(function (PackageType) {
|
|
@@ -4565,6 +4553,7 @@ class PluginsResolveService {
|
|
|
4565
4553
|
this._pluginDetails$ = new Subject();
|
|
4566
4554
|
this._allPluginsLoaded$ = new BehaviorSubject(false);
|
|
4567
4555
|
this._contextPathsFromWhereRemotesHaveBeenLoaded$ = new BehaviorSubject([]);
|
|
4556
|
+
this._loadedPluginNames$ = new BehaviorSubject([]);
|
|
4568
4557
|
this.injectors$ = this._injectors$.asObservable().pipe(
|
|
4569
4558
|
// not specifying the bufferSize of shareReplay so all injectors are received on subscription
|
|
4570
4559
|
shareReplay());
|
|
@@ -4575,6 +4564,7 @@ class PluginsResolveService {
|
|
|
4575
4564
|
this.allPluginsLoaded$ = this._allPluginsLoaded$.asObservable();
|
|
4576
4565
|
this.contextPathsFromWhereRemotesHaveBeenLoaded$ =
|
|
4577
4566
|
this._contextPathsFromWhereRemotesHaveBeenLoaded$.asObservable();
|
|
4567
|
+
this.loadedPluginNames$ = this._loadedPluginNames$.asObservable();
|
|
4578
4568
|
}
|
|
4579
4569
|
/**
|
|
4580
4570
|
* Loads plugins by resolving the remote NgModules and injecting it. Also attaching
|
|
@@ -4601,6 +4591,8 @@ class PluginsResolveService {
|
|
|
4601
4591
|
else {
|
|
4602
4592
|
this.loadModule(moduleOrProviders);
|
|
4603
4593
|
}
|
|
4594
|
+
const newLoadedPluginNames = [...this._loadedPluginNames$.value, name];
|
|
4595
|
+
this._loadedPluginNames$.next(newLoadedPluginNames);
|
|
4604
4596
|
}
|
|
4605
4597
|
catch (ex) {
|
|
4606
4598
|
console.error(`Failed to load ${name}`, ex);
|
|
@@ -4837,8 +4829,9 @@ class PluginsService {
|
|
|
4837
4829
|
*/
|
|
4838
4830
|
async addRemotes(application, plugins) {
|
|
4839
4831
|
const pluginsArray = Array.isArray(plugins) ? plugins : [plugins];
|
|
4840
|
-
const
|
|
4841
|
-
const
|
|
4832
|
+
const manifestRemotes = application.manifest?.remotes || {};
|
|
4833
|
+
const appConfig = application?.config;
|
|
4834
|
+
const appConfigRemotes = appConfig?.remotes || manifestRemotes;
|
|
4842
4835
|
const appConfigExcludedRemotes = appConfig?.excludedRemotes || {};
|
|
4843
4836
|
// only normal and self optional scoped plugins should be added to remotes
|
|
4844
4837
|
// self scoped plugins will be automatically added
|
|
@@ -4856,8 +4849,9 @@ class PluginsService {
|
|
|
4856
4849
|
*/
|
|
4857
4850
|
async removeRemotes(application, plugins) {
|
|
4858
4851
|
const pluginsArray = Array.isArray(plugins) ? plugins : [plugins];
|
|
4859
|
-
const
|
|
4860
|
-
const
|
|
4852
|
+
const manifestRemotes = application.manifest?.remotes || {};
|
|
4853
|
+
const appConfig = application?.config;
|
|
4854
|
+
const appConfigRemotes = appConfig?.remotes || manifestRemotes;
|
|
4861
4855
|
const appConfigExcludedRemotes = appConfig?.excludedRemotes || {};
|
|
4862
4856
|
// app plugins need to be removed from remotes
|
|
4863
4857
|
const newRemotes = this.removePluginsFromRemotesConfig(appConfigRemotes, plugins);
|
|
@@ -4907,6 +4901,12 @@ class PluginsService {
|
|
|
4907
4901
|
return undefined;
|
|
4908
4902
|
}
|
|
4909
4903
|
}
|
|
4904
|
+
async resetRemotes(application) {
|
|
4905
|
+
return await this.applicationService.updateApplicationConfig(application, {
|
|
4906
|
+
remotes: undefined,
|
|
4907
|
+
excludedRemotes: undefined
|
|
4908
|
+
});
|
|
4909
|
+
}
|
|
4910
4910
|
sortVersions(source, order) {
|
|
4911
4911
|
const sourceCopy = cloneDeep(source);
|
|
4912
4912
|
if (source.list && source.path) {
|
|
@@ -5173,6 +5173,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
5173
5173
|
}]
|
|
5174
5174
|
}] });
|
|
5175
5175
|
|
|
5176
|
+
class PluginLoadedPipe {
|
|
5177
|
+
constructor(pluginsResolve) {
|
|
5178
|
+
this.pluginsResolve = pluginsResolve;
|
|
5179
|
+
}
|
|
5180
|
+
transform(pluginName) {
|
|
5181
|
+
if (!pluginName) {
|
|
5182
|
+
return of(false);
|
|
5183
|
+
}
|
|
5184
|
+
return this.pluginsResolve.loadedPluginNames$.pipe(map$1(pluginNames => pluginNames.includes(pluginName)), distinctUntilChanged$1());
|
|
5185
|
+
}
|
|
5186
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PluginLoadedPipe, deps: [{ token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
5187
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: PluginLoadedPipe, isStandalone: true, name: "c8yPluginLoaded" }); }
|
|
5188
|
+
}
|
|
5189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: PluginLoadedPipe, decorators: [{
|
|
5190
|
+
type: Pipe,
|
|
5191
|
+
args: [{
|
|
5192
|
+
name: 'c8yPluginLoaded',
|
|
5193
|
+
standalone: true
|
|
5194
|
+
}]
|
|
5195
|
+
}], ctorParameters: () => [{ type: PluginsResolveService }] });
|
|
5196
|
+
|
|
5176
5197
|
/**
|
|
5177
5198
|
* A service to load translations from different sources.
|
|
5178
5199
|
* It combines translations from the app, user-defined translations, and plugins.
|
|
@@ -5194,7 +5215,7 @@ class TranslationLoaderService {
|
|
|
5194
5215
|
this.translateService.onLangChange
|
|
5195
5216
|
.pipe(map(event => event.lang), distinctUntilChanged(), switchMap(lang => this.getTranslation(lang).pipe(map(translations => ({ lang, translations })))))
|
|
5196
5217
|
.subscribe(({ lang, translations }) => {
|
|
5197
|
-
this.translateService.setTranslation(lang, translations,
|
|
5218
|
+
this.translateService.setTranslation(lang, translations, true);
|
|
5198
5219
|
});
|
|
5199
5220
|
}
|
|
5200
5221
|
getTranslation(lang) {
|
|
@@ -6473,7 +6494,7 @@ class FilesService {
|
|
|
6473
6494
|
* @returns Returns list of file extensions.
|
|
6474
6495
|
*/
|
|
6475
6496
|
getFileExtensions() {
|
|
6476
|
-
return uniq(flatten(map$
|
|
6497
|
+
return uniq(flatten(map$2(this.fileTypeExtensionsMap, ({ exts }) => exts)));
|
|
6477
6498
|
}
|
|
6478
6499
|
/**
|
|
6479
6500
|
* The list of generic file types.
|
|
@@ -9333,7 +9354,7 @@ class InterAppService {
|
|
|
9333
9354
|
* @returns Observable of Application
|
|
9334
9355
|
*/
|
|
9335
9356
|
getApp$(key) {
|
|
9336
|
-
return this.stateService.currentAppsOfUser.pipe(map$
|
|
9357
|
+
return this.stateService.currentAppsOfUser.pipe(map$1(apps => apps.find(app => app.key === key)));
|
|
9337
9358
|
}
|
|
9338
9359
|
/**
|
|
9339
9360
|
* Checks if current application is the same as the one that key is provided
|
|
@@ -9341,7 +9362,7 @@ class InterAppService {
|
|
|
9341
9362
|
* @returns Observable of boolean; true if current app matches provided key.
|
|
9342
9363
|
*/
|
|
9343
9364
|
isCurrentApp$(key) {
|
|
9344
|
-
return this.stateService.currentApplication.pipe(map$
|
|
9365
|
+
return this.stateService.currentApplication.pipe(map$1(app => app?.key === key));
|
|
9345
9366
|
}
|
|
9346
9367
|
/**
|
|
9347
9368
|
* Checks if other (other than current) application link should be displayed. It consists of two conditions:
|
|
@@ -9352,9 +9373,9 @@ class InterAppService {
|
|
|
9352
9373
|
*/
|
|
9353
9374
|
shouldShowAppLink$(appKey) {
|
|
9354
9375
|
return combineLatest([
|
|
9355
|
-
this.getApp$(appKey).pipe(map$
|
|
9356
|
-
this.isCurrentApp$(appKey).pipe(map$
|
|
9357
|
-
]).pipe(map$
|
|
9376
|
+
this.getApp$(appKey).pipe(map$1(Boolean)),
|
|
9377
|
+
this.isCurrentApp$(appKey).pipe(map$1(val => !val))
|
|
9378
|
+
]).pipe(map$1(([linkedAppIsAvailable, linkLeadsToOtherAppThanCurrent]) => linkedAppIsAvailable && linkLeadsToOtherAppThanCurrent));
|
|
9358
9379
|
}
|
|
9359
9380
|
/**
|
|
9360
9381
|
* Navigates to app by provided app key
|
|
@@ -9362,7 +9383,7 @@ class InterAppService {
|
|
|
9362
9383
|
* @param path {string} - Additional path in target application.
|
|
9363
9384
|
*/
|
|
9364
9385
|
async navigateToApp(appKey, path) {
|
|
9365
|
-
const contextPath = await firstValueFrom(this.getApp$(appKey).pipe(map$
|
|
9386
|
+
const contextPath = await firstValueFrom(this.getApp$(appKey).pipe(map$1(app => app?.contextPath)));
|
|
9366
9387
|
if (!contextPath) {
|
|
9367
9388
|
const msg = this.translateService.instant(gettext$1('Application with key "{{appKey}}" not found.'), { appKey });
|
|
9368
9389
|
this.alertService.danger(msg);
|
|
@@ -16949,11 +16970,11 @@ class TabsOutletComponent {
|
|
|
16949
16970
|
return { widthScroll, width, scrollLeft };
|
|
16950
16971
|
}
|
|
16951
16972
|
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" }] }); }
|
|
16973
|
+
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
16974
|
}
|
|
16954
16975
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: TabsOutletComponent, decorators: [{
|
|
16955
16976
|
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" }]
|
|
16977
|
+
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
16978
|
}], ctorParameters: () => [{ type: i1$3.Router }, { type: i0.Renderer2 }, { type: HeaderService }, { type: TabsService }], propDecorators: { tabs: [{
|
|
16958
16979
|
type: Input
|
|
16959
16980
|
}], orientation: [{
|
|
@@ -18079,8 +18100,9 @@ class BootstrapComponent {
|
|
|
18079
18100
|
// Remotes in the URL are used in the development process.
|
|
18080
18101
|
let remotes = PluginsResolveService.mergeRemotes([
|
|
18081
18102
|
selfRemotes,
|
|
18082
|
-
|
|
18083
|
-
config?.remotes,
|
|
18103
|
+
// if the config remotes are not present we fall back to the application remotes
|
|
18104
|
+
config?.remotes || this.options?.remotes || {},
|
|
18105
|
+
// url remotes should always be loaded
|
|
18084
18106
|
this.pluginsResolve.loadUrlRemotes()
|
|
18085
18107
|
]);
|
|
18086
18108
|
// remove remotes that are on the exclude list
|
|
@@ -18998,7 +19020,7 @@ class SelectKeyboardService {
|
|
|
18998
19020
|
return list.changes.pipe(startWith$1(list), switchMap$1((items) => combineLatest([
|
|
18999
19021
|
merge(fromEvent(input, 'keyup'), fromEvent(input, 'keydown')),
|
|
19000
19022
|
of(items.toArray())
|
|
19001
|
-
])), map$
|
|
19023
|
+
])), map$1(([e, items]) => this.handleKeyboard(e, input, items, dropdown)), distinctUntilChanged$1(), takeUntil$1(this.destroyed$));
|
|
19002
19024
|
}
|
|
19003
19025
|
ngOnDestroy() {
|
|
19004
19026
|
this.unregister();
|
|
@@ -22082,7 +22104,7 @@ class WebSDKPluginVersionFactory {
|
|
|
22082
22104
|
const versionsBehindKey = modules.map(module => {
|
|
22083
22105
|
return {
|
|
22084
22106
|
label: `${contextPath} => ${module}`,
|
|
22085
|
-
version: version || '
|
|
22107
|
+
version: version || 'latest',
|
|
22086
22108
|
type: 'INSTALLED_MF_PLUGINS',
|
|
22087
22109
|
hidden: true,
|
|
22088
22110
|
custom: {
|
|
@@ -23148,7 +23170,7 @@ class DropAreaComponent {
|
|
|
23148
23170
|
return maxFileSizeInMegaBytes * 1_048_576;
|
|
23149
23171
|
}
|
|
23150
23172
|
getFilesNamesAsString(files) {
|
|
23151
|
-
return map$
|
|
23173
|
+
return map$2(files, ({ name }) => name).join(', ');
|
|
23152
23174
|
}
|
|
23153
23175
|
isFilesArrayEmpty() {
|
|
23154
23176
|
return get(this, 'files.length', 0) === 0;
|
|
@@ -24148,6 +24170,11 @@ var ViewContext;
|
|
|
24148
24170
|
ViewContext["Service"] = "service/:id";
|
|
24149
24171
|
ViewContext["DatapointLibrary"] = "datapointlibrary/:id";
|
|
24150
24172
|
ViewContext["Simulators"] = "simulators/:id";
|
|
24173
|
+
ViewContext["Alarms"] = "alarms/:id";
|
|
24174
|
+
ViewContext["GroupAlarms"] = "group/:id/alarms/:id";
|
|
24175
|
+
ViewContext["DeviceAlarms"] = "device/:id/alarms/:id";
|
|
24176
|
+
ViewContext["ServiceAlarms"] = "service/:id/alarms/:id";
|
|
24177
|
+
ViewContext["SimulatorsAlarms"] = "simulators/:id/alarms/:id";
|
|
24151
24178
|
})(ViewContext || (ViewContext = {}));
|
|
24152
24179
|
|
|
24153
24180
|
class RouterTabsResolver {
|
|
@@ -24158,39 +24185,84 @@ class RouterTabsResolver {
|
|
|
24158
24185
|
get routerStateSnapshot() {
|
|
24159
24186
|
return this.router.routerState.snapshot;
|
|
24160
24187
|
}
|
|
24161
|
-
resolve(
|
|
24162
|
-
const
|
|
24163
|
-
|
|
24188
|
+
resolve(currentRoute) {
|
|
24189
|
+
const routeConfig = currentRoute.routeConfig;
|
|
24190
|
+
const latestChildren = this.getLatestChildRoutes(routeConfig.rootContext);
|
|
24191
|
+
return from(latestChildren || []).pipe(mergeMap((child) => from(this.getGuards(child)).pipe(map(canActivate => canActivate(currentRoute, this.routerStateSnapshot)), mergeMap((result) => {
|
|
24164
24192
|
if (isObservable(result)) {
|
|
24165
24193
|
return result;
|
|
24166
24194
|
}
|
|
24167
|
-
|
|
24168
|
-
|
|
24195
|
+
const resultAsPromise = result;
|
|
24196
|
+
if (resultAsPromise && typeof resultAsPromise.then === 'function') {
|
|
24197
|
+
return from(resultAsPromise);
|
|
24169
24198
|
}
|
|
24170
24199
|
return of(result);
|
|
24171
24200
|
}), tap(result => {
|
|
24172
24201
|
if (Array.isArray(result)) {
|
|
24173
24202
|
child.tabs = result;
|
|
24174
24203
|
}
|
|
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
|
-
|
|
24204
|
+
}), every$1(result => !!result), filter(result => result), mergeMap(() => (Array.isArray(child.tabs) ? from(child.tabs) : of(child))), map(result => {
|
|
24205
|
+
const url = this.getBaselUrl(currentRoute).join('/');
|
|
24206
|
+
return result.label || result.path
|
|
24207
|
+
? {
|
|
24208
|
+
label: result.label,
|
|
24209
|
+
icon: result.icon,
|
|
24210
|
+
path: `/${decodeURIComponent(url)}/${result.path}`,
|
|
24211
|
+
priority: result.priority,
|
|
24212
|
+
hide: result.hide,
|
|
24213
|
+
badge: result.badge,
|
|
24214
|
+
tooltipText: result.tooltipText,
|
|
24215
|
+
featureId: result.featureId,
|
|
24216
|
+
tabsOutlet: result.tabsOutlet,
|
|
24217
|
+
showAlways: result.showAlways
|
|
24218
|
+
}
|
|
24219
|
+
: undefined;
|
|
24220
|
+
}))), filter(tabs => !!tabs), toArray());
|
|
24221
|
+
}
|
|
24222
|
+
getBaselUrl(currentRoute) {
|
|
24223
|
+
let prefix = [];
|
|
24224
|
+
if (currentRoute.parent?.url.length > 0) {
|
|
24225
|
+
prefix = this.getBaselUrl(currentRoute.parent);
|
|
24226
|
+
}
|
|
24227
|
+
return [...prefix, ...currentRoute.url];
|
|
24228
|
+
}
|
|
24229
|
+
getLatestChildRoutes(context) {
|
|
24230
|
+
const thisContextRoute = this.findRootContextRoutes(this.router.config, context);
|
|
24231
|
+
return thisContextRoute?.children || [];
|
|
24232
|
+
}
|
|
24233
|
+
findRootContextRoutes(routes, context) {
|
|
24234
|
+
for (const route of routes) {
|
|
24235
|
+
if (route.rootContext === context) {
|
|
24236
|
+
return route;
|
|
24185
24237
|
}
|
|
24186
|
-
|
|
24238
|
+
if (route.children) {
|
|
24239
|
+
const childResult = this.findRootContextRoutes(route.children, context);
|
|
24240
|
+
if (childResult) {
|
|
24241
|
+
return childResult;
|
|
24242
|
+
}
|
|
24243
|
+
}
|
|
24244
|
+
}
|
|
24245
|
+
return null;
|
|
24187
24246
|
}
|
|
24188
24247
|
getGuards(child) {
|
|
24189
|
-
const
|
|
24190
|
-
|
|
24248
|
+
const injector = child._injector || this.injector;
|
|
24249
|
+
const canActivates = child.canActivate || [];
|
|
24250
|
+
const guards = canActivates.map(guard => {
|
|
24251
|
+
return ((route, state) => {
|
|
24252
|
+
// for legacy CanActivate guards
|
|
24253
|
+
const instance = this.injector.get(guard, null);
|
|
24254
|
+
if (instance) {
|
|
24255
|
+
return instance.canActivate(route, state);
|
|
24256
|
+
}
|
|
24257
|
+
// for current CanActivateFn guards
|
|
24258
|
+
const canActivate = guard;
|
|
24259
|
+
return runInInjectionContext(injector, () => {
|
|
24260
|
+
return canActivate(route, state);
|
|
24261
|
+
});
|
|
24262
|
+
});
|
|
24191
24263
|
});
|
|
24192
24264
|
if (child.data && child.data.showIf) {
|
|
24193
|
-
guards.push(
|
|
24265
|
+
guards.push((route, state) => child.data.showIf(route, state));
|
|
24194
24266
|
}
|
|
24195
24267
|
return guards;
|
|
24196
24268
|
}
|
|
@@ -24206,22 +24278,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
24206
24278
|
|
|
24207
24279
|
class ViewContextServices {
|
|
24208
24280
|
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
|
-
|
|
24281
|
+
[ViewContext.Device]: { service: InventoryService, path: ViewContext.Device, autoRoute: true },
|
|
24282
|
+
[ViewContext.Group]: { service: InventoryService, path: ViewContext.Group, autoRoute: true },
|
|
24283
|
+
[ViewContext.User]: { service: UserService, path: ViewContext.User, autoRoute: true },
|
|
24284
|
+
[ViewContext.Application]: {
|
|
24285
|
+
service: ApplicationService,
|
|
24286
|
+
path: ViewContext.Application,
|
|
24287
|
+
autoRoute: true
|
|
24288
|
+
},
|
|
24289
|
+
[ViewContext.Microservice]: {
|
|
24290
|
+
service: ApplicationService,
|
|
24291
|
+
path: ViewContext.Microservice,
|
|
24292
|
+
autoRoute: true
|
|
24293
|
+
},
|
|
24294
|
+
[ViewContext.Extension]: {
|
|
24295
|
+
service: ApplicationService,
|
|
24296
|
+
path: ViewContext.Extension,
|
|
24297
|
+
autoRoute: true
|
|
24298
|
+
},
|
|
24299
|
+
[ViewContext.Feature]: {
|
|
24300
|
+
service: ApplicationService,
|
|
24301
|
+
path: ViewContext.Feature,
|
|
24302
|
+
autoRoute: true
|
|
24303
|
+
},
|
|
24304
|
+
[ViewContext.SubscribedApplications]: {
|
|
24305
|
+
service: ApplicationService,
|
|
24306
|
+
path: ViewContext.SubscribedApplications,
|
|
24307
|
+
autoRoute: true
|
|
24308
|
+
},
|
|
24309
|
+
[ViewContext.Tenant]: { service: TenantService, path: ViewContext.Tenant, autoRoute: true },
|
|
24310
|
+
[ViewContext.Report]: { service: InventoryService, path: ViewContext.Report, autoRoute: true },
|
|
24311
|
+
[ViewContext.Service]: {
|
|
24312
|
+
service: InventoryService,
|
|
24313
|
+
path: ViewContext.Service,
|
|
24314
|
+
autoRoute: true
|
|
24315
|
+
},
|
|
24316
|
+
[ViewContext.DatapointLibrary]: {
|
|
24317
|
+
service: InventoryService,
|
|
24318
|
+
path: ViewContext.DatapointLibrary,
|
|
24319
|
+
autoRoute: true
|
|
24320
|
+
},
|
|
24321
|
+
[ViewContext.Simulators]: {
|
|
24322
|
+
service: InventoryService,
|
|
24323
|
+
path: ViewContext.Simulators,
|
|
24324
|
+
autoRoute: true
|
|
24325
|
+
},
|
|
24326
|
+
[ViewContext.Alarms]: { service: AlarmService, path: ':id', autoRoute: false },
|
|
24327
|
+
[ViewContext.GroupAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
|
|
24328
|
+
[ViewContext.DeviceAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
|
|
24329
|
+
[ViewContext.SimulatorsAlarms]: { service: AlarmService, path: ':id', autoRoute: false },
|
|
24330
|
+
[ViewContext.ServiceAlarms]: { service: AlarmService, path: ':id', autoRoute: false }
|
|
24222
24331
|
}; }
|
|
24223
24332
|
static contextToService(context) {
|
|
24224
|
-
return ViewContextServices.services[context];
|
|
24333
|
+
return ViewContextServices.services[context]?.service;
|
|
24334
|
+
}
|
|
24335
|
+
static getPath(context) {
|
|
24336
|
+
return ViewContextServices.services[context]?.path;
|
|
24337
|
+
}
|
|
24338
|
+
static isAutoRoute(context) {
|
|
24339
|
+
return ViewContextServices.services[context]?.autoRoute;
|
|
24225
24340
|
}
|
|
24226
24341
|
}
|
|
24227
24342
|
|
|
@@ -24233,8 +24348,8 @@ class ContextRouteService {
|
|
|
24233
24348
|
this.apiService = apiService;
|
|
24234
24349
|
this.injector = injector;
|
|
24235
24350
|
this.lastAddedTabs = [];
|
|
24236
|
-
this.refreshTrigger = new Subject();
|
|
24237
24351
|
this.ID_REGEX = /([0-9]+)/;
|
|
24352
|
+
this.refreshTrigger$ = new Subject();
|
|
24238
24353
|
/**
|
|
24239
24354
|
* Last context data snapshot
|
|
24240
24355
|
*/
|
|
@@ -24260,24 +24375,53 @@ class ContextRouteService {
|
|
|
24260
24375
|
}
|
|
24261
24376
|
return null;
|
|
24262
24377
|
}
|
|
24378
|
+
/**
|
|
24379
|
+
* Returns a route for the given ContextData.
|
|
24380
|
+
*
|
|
24381
|
+
* @param contextData The ContextData object.
|
|
24382
|
+
* @returns A route with the ids set correctly.
|
|
24383
|
+
*/
|
|
24263
24384
|
getContextRoute(contextData) {
|
|
24264
|
-
return contextData.context.replace(
|
|
24385
|
+
return contextData.context.replace(/:id/g, contextData.contextData.id);
|
|
24386
|
+
}
|
|
24387
|
+
/**
|
|
24388
|
+
* Verifies if a given url is a view context route.
|
|
24389
|
+
*
|
|
24390
|
+
* @param url A route url.
|
|
24391
|
+
* @param contextToCheck The view context(s) to check. If not provided, all contexts are checked.
|
|
24392
|
+
* @returns true if the given url is a view context route.
|
|
24393
|
+
*/
|
|
24394
|
+
isContextRoute(url, contextToCheck = []) {
|
|
24395
|
+
const viewContexts = contextToCheck.length === 0 ? Object.values(ViewContext) : contextToCheck;
|
|
24396
|
+
// replace all :id placeholders with a regex matcher for a number
|
|
24397
|
+
const regexMatchers = viewContexts.map(context => `/${context.replace(/:id/g, '([0-9]+)')}`);
|
|
24398
|
+
const matchingRegexContext = regexMatchers.find(context => new RegExp(context).test(url));
|
|
24399
|
+
return !!matchingRegexContext;
|
|
24265
24400
|
}
|
|
24401
|
+
/**
|
|
24402
|
+
* @deprecated: Use ScopedContextRouteService instead. Will be removed in 10.22
|
|
24403
|
+
*/
|
|
24266
24404
|
init(route) {
|
|
24267
24405
|
this.routerSubscription = this.router.events
|
|
24268
24406
|
.pipe(filter(e => e instanceof NavigationEnd))
|
|
24269
24407
|
.subscribe(() => this.redirectToFirstTab());
|
|
24270
24408
|
this.dataSubscription = route.data
|
|
24271
|
-
.pipe(merge$1(this.updatedContext(route), this.refreshTrigger), switchMap(() => this.tabsResolver.resolve(route.snapshot)))
|
|
24409
|
+
.pipe(merge$1(this.updatedContext(route), this.refreshTrigger$), switchMap(() => this.tabsResolver.resolve(route.snapshot)))
|
|
24272
24410
|
.subscribe(tabs => this.updateTabs(tabs));
|
|
24273
24411
|
}
|
|
24412
|
+
/**
|
|
24413
|
+
* @deprecated: Use ScopedContextRouteService instead. Will be removed in 10.22
|
|
24414
|
+
*/
|
|
24274
24415
|
destroy() {
|
|
24275
24416
|
this.dataSubscription.unsubscribe();
|
|
24276
24417
|
this.routerSubscription.unsubscribe();
|
|
24277
24418
|
this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
|
|
24278
24419
|
}
|
|
24420
|
+
/**
|
|
24421
|
+
* Reloads all ViewContexts.
|
|
24422
|
+
*/
|
|
24279
24423
|
refreshContext() {
|
|
24280
|
-
this.refreshTrigger
|
|
24424
|
+
this.refreshTrigger$.next();
|
|
24281
24425
|
}
|
|
24282
24426
|
/**
|
|
24283
24427
|
* Sets a new contextData in the ActivatedRoute.
|
|
@@ -24293,6 +24437,9 @@ class ContextRouteService {
|
|
|
24293
24437
|
}
|
|
24294
24438
|
data.contextData = { ...contextData };
|
|
24295
24439
|
}
|
|
24440
|
+
/**
|
|
24441
|
+
* @deprecated: Use ScopedContextRouteService instead. Will be removed in 10.21
|
|
24442
|
+
*/
|
|
24296
24443
|
updatedContext(route) {
|
|
24297
24444
|
const { data } = route.snapshot;
|
|
24298
24445
|
const serviceInstance = ViewContextServices.contextToService(data.context);
|
|
@@ -24372,6 +24519,237 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
24372
24519
|
}]
|
|
24373
24520
|
}], ctorParameters: () => [{ type: RouterTabsResolver }, { type: TabsService }, { type: i1$3.Router }, { type: i4.ApiService }, { type: i0.Injector }] });
|
|
24374
24521
|
|
|
24522
|
+
/**
|
|
24523
|
+
* A service which is injected into the context route component to handle the context data.
|
|
24524
|
+
*/
|
|
24525
|
+
class ScopedContextRouteService {
|
|
24526
|
+
constructor(tabsResolver, tabsService, router, apiService, injector, destroyRef) {
|
|
24527
|
+
this.tabsResolver = tabsResolver;
|
|
24528
|
+
this.tabsService = tabsService;
|
|
24529
|
+
this.router = router;
|
|
24530
|
+
this.apiService = apiService;
|
|
24531
|
+
this.injector = injector;
|
|
24532
|
+
this.destroyRef = destroyRef;
|
|
24533
|
+
this.lastAddedTabs = [];
|
|
24534
|
+
this.refreshTrigger$ = new Subject();
|
|
24535
|
+
this.ID_REGEX = /([0-9]+)/;
|
|
24536
|
+
}
|
|
24537
|
+
/**
|
|
24538
|
+
* Indicates that the data is loading
|
|
24539
|
+
* @returns An boolean observable which indicates if the data is loading.
|
|
24540
|
+
*/
|
|
24541
|
+
isLoading$() {
|
|
24542
|
+
return this.router.events.pipe(filter(e => (e instanceof ActivationStart || e instanceof ChildActivationEnd) &&
|
|
24543
|
+
e.snapshot.routeConfig?.rootContext === this.currentContext), map(e => e instanceof ActivationStart), takeUntilDestroyed(this.destroyRef));
|
|
24544
|
+
}
|
|
24545
|
+
/**
|
|
24546
|
+
* Initializes the context route.
|
|
24547
|
+
* @param route The current activated route.
|
|
24548
|
+
*/
|
|
24549
|
+
init(route) {
|
|
24550
|
+
this.currentContext = route.routeConfig.rootContext;
|
|
24551
|
+
if (!this.currentContext) {
|
|
24552
|
+
throw new Error(`${ScopedContextRouteService.name} should not be used on a route without a rootContext`);
|
|
24553
|
+
}
|
|
24554
|
+
this.router.events
|
|
24555
|
+
.pipe(filter(e => e instanceof ActivationEnd), takeUntilDestroyed(this.destroyRef))
|
|
24556
|
+
.subscribe((e) => this.redirectToFirstTab(e));
|
|
24557
|
+
route.data
|
|
24558
|
+
.pipe(merge$1(this.updatedContext(route), this.refreshTrigger$), switchMap(() => this.tabsResolver.resolve(route.snapshot)), takeUntilDestroyed(this.destroyRef))
|
|
24559
|
+
.subscribe(tabs => this.updateTabs(tabs));
|
|
24560
|
+
}
|
|
24561
|
+
/**
|
|
24562
|
+
* Destroys the service.
|
|
24563
|
+
*/
|
|
24564
|
+
ngOnDestroy() {
|
|
24565
|
+
this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
|
|
24566
|
+
}
|
|
24567
|
+
/**
|
|
24568
|
+
* Refreshes the context.
|
|
24569
|
+
*/
|
|
24570
|
+
refreshContext() {
|
|
24571
|
+
this.refreshTrigger$.next();
|
|
24572
|
+
}
|
|
24573
|
+
/**
|
|
24574
|
+
* Sets an API hook to refresh the contextData on changes.
|
|
24575
|
+
* @param activatedRoute The current activated route.
|
|
24576
|
+
*/
|
|
24577
|
+
updatedContext(route) {
|
|
24578
|
+
const { data } = route.snapshot;
|
|
24579
|
+
const serviceInstance = ViewContextServices.contextToService(data.context);
|
|
24580
|
+
if (serviceInstance) {
|
|
24581
|
+
const service = this.injector.get(serviceInstance);
|
|
24582
|
+
const detailsUrlRegex = service
|
|
24583
|
+
.getDetailUrl(data.contextData)
|
|
24584
|
+
.replace(/\d+/g, '?\\d*');
|
|
24585
|
+
const contextRegex = new RegExp(detailsUrlRegex, 'i');
|
|
24586
|
+
const childrenRegex = new RegExp(`${detailsUrlRegex}/child`, 'i');
|
|
24587
|
+
const filterResponse = ({ url, method }) => {
|
|
24588
|
+
const contextChanged = contextRegex.test(url) && ['POST', 'PUT'].includes(method);
|
|
24589
|
+
const childrenAffected = childrenRegex.test(url) && ['POST', 'DELETE'].includes(method);
|
|
24590
|
+
return contextChanged || childrenAffected;
|
|
24591
|
+
};
|
|
24592
|
+
return this.apiService.hookResponse(filterResponse);
|
|
24593
|
+
}
|
|
24594
|
+
return NEVER;
|
|
24595
|
+
}
|
|
24596
|
+
updateTabs(tabs = []) {
|
|
24597
|
+
this.lastAddedTabs.forEach(t => this.tabsService.remove(t));
|
|
24598
|
+
this.lastAddedTabs = tabs;
|
|
24599
|
+
tabs.forEach(t => this.tabsService.add(t));
|
|
24600
|
+
this.redirectToFirstTab();
|
|
24601
|
+
}
|
|
24602
|
+
redirectToFirstTab(event) {
|
|
24603
|
+
const currentQueryParams = this.router.routerState.snapshot.root.queryParams;
|
|
24604
|
+
const queryParamsString = new URLSearchParams(currentQueryParams).toString();
|
|
24605
|
+
const queryParamsSuffix = queryParamsString ? `?${queryParamsString}` : '';
|
|
24606
|
+
if (event) {
|
|
24607
|
+
if (this.needsRedirect(event)) {
|
|
24608
|
+
const tab = this.tabsService.sortTabs(event.snapshot.data.tabs)?.[0];
|
|
24609
|
+
if (!tab) {
|
|
24610
|
+
return;
|
|
24611
|
+
}
|
|
24612
|
+
const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
|
|
24613
|
+
const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
|
|
24614
|
+
if (currentContextId === tabPathId) {
|
|
24615
|
+
this.router.navigateByUrl(`${tab.path}${queryParamsSuffix}`, {
|
|
24616
|
+
replaceUrl: true
|
|
24617
|
+
});
|
|
24618
|
+
}
|
|
24619
|
+
}
|
|
24620
|
+
}
|
|
24621
|
+
else {
|
|
24622
|
+
const currentContextId = (this.router.url.match(this.ID_REGEX) || []).shift();
|
|
24623
|
+
if (this.needsRedirectLegacy()) {
|
|
24624
|
+
this.tabsService.firstTab$.pipe(filter((tab) => !!tab?.path)).subscribe((tab) => {
|
|
24625
|
+
const tabPathId = (tab.path.match(this.ID_REGEX) || []).shift();
|
|
24626
|
+
if (currentContextId === tabPathId) {
|
|
24627
|
+
this.router.navigateByUrl(`${tab.path}${queryParamsSuffix}`, { replaceUrl: true });
|
|
24628
|
+
}
|
|
24629
|
+
});
|
|
24630
|
+
}
|
|
24631
|
+
}
|
|
24632
|
+
}
|
|
24633
|
+
needsRedirectLegacy() {
|
|
24634
|
+
const tree = this.router.parseUrl(this.router.url);
|
|
24635
|
+
const groups = tree.root.children[PRIMARY_OUTLET];
|
|
24636
|
+
const context = this.getMatchingContextRoute(this.router.url);
|
|
24637
|
+
if (!context) {
|
|
24638
|
+
return groups.segments.length === 2;
|
|
24639
|
+
}
|
|
24640
|
+
return context.split('/').length === groups.segments.length;
|
|
24641
|
+
}
|
|
24642
|
+
needsRedirect(event) {
|
|
24643
|
+
const contextRoute = event.snapshot.routeConfig;
|
|
24644
|
+
if (!contextRoute.rootContext) {
|
|
24645
|
+
return false;
|
|
24646
|
+
}
|
|
24647
|
+
const contextRouteFromUrl = this.getMatchingContextRoute(this.router.url);
|
|
24648
|
+
return contextRoute.rootContext === contextRouteFromUrl;
|
|
24649
|
+
}
|
|
24650
|
+
getMatchingContextRoute(url) {
|
|
24651
|
+
const viewContexts = Object.values(ViewContext);
|
|
24652
|
+
// replace all :id placeholders with a regex matcher for a number
|
|
24653
|
+
const regexMatchers = viewContexts.map(context => `^/${context.replace(/:id/g, '([0-9]+)')}(\\?.*)?$`);
|
|
24654
|
+
const matchingRegexContext = regexMatchers.find(context => new RegExp(context).test(url));
|
|
24655
|
+
return matchingRegexContext ? viewContexts[regexMatchers.indexOf(matchingRegexContext)] : null;
|
|
24656
|
+
}
|
|
24657
|
+
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 }); }
|
|
24658
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService }); }
|
|
24659
|
+
}
|
|
24660
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ScopedContextRouteService, decorators: [{
|
|
24661
|
+
type: Injectable
|
|
24662
|
+
}], ctorParameters: () => [{ type: RouterTabsResolver }, { type: TabsService }, { type: i1$3.Router }, { type: i4.ApiService }, { type: i0.Injector }, { type: i0.DestroyRef }] });
|
|
24663
|
+
|
|
24664
|
+
class ContextRouteComponent {
|
|
24665
|
+
constructor(route, scopedContextRouteService, contextRouteService, destroyRef) {
|
|
24666
|
+
this.route = route;
|
|
24667
|
+
this.scopedContextRouteService = scopedContextRouteService;
|
|
24668
|
+
this.contextRouteService = contextRouteService;
|
|
24669
|
+
this.destroyRef = destroyRef;
|
|
24670
|
+
this.isLoading$ = this.scopedContextRouteService.isLoading$();
|
|
24671
|
+
}
|
|
24672
|
+
ngOnInit() {
|
|
24673
|
+
this.contextRouteService.refreshTrigger$
|
|
24674
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
24675
|
+
.subscribe(() => {
|
|
24676
|
+
this.refreshTabs();
|
|
24677
|
+
});
|
|
24678
|
+
this.scopedContextRouteService.init(this.route);
|
|
24679
|
+
}
|
|
24680
|
+
refreshTabs() {
|
|
24681
|
+
this.scopedContextRouteService.refreshContext();
|
|
24682
|
+
}
|
|
24683
|
+
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 }); }
|
|
24684
|
+
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" }] }); }
|
|
24685
|
+
}
|
|
24686
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteComponent, decorators: [{
|
|
24687
|
+
type: Component,
|
|
24688
|
+
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" }]
|
|
24689
|
+
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: ScopedContextRouteService }, { type: ContextRouteService }, { type: i0.DestroyRef }] });
|
|
24690
|
+
|
|
24691
|
+
class ContextRouteGuard {
|
|
24692
|
+
constructor(injector) {
|
|
24693
|
+
this.injector = injector;
|
|
24694
|
+
this.caches = new Map();
|
|
24695
|
+
}
|
|
24696
|
+
canActivate(route) {
|
|
24697
|
+
const id = route.paramMap.get('id');
|
|
24698
|
+
const service = this.service(route);
|
|
24699
|
+
this.clearDetailCached(service, id);
|
|
24700
|
+
return this.detailCached(service, id).pipe(tap(contextData => {
|
|
24701
|
+
Object.keys(route.data.contextData).forEach(key => delete route.data.contextData[key]);
|
|
24702
|
+
Object.assign(route.data.contextData, contextData);
|
|
24703
|
+
}), map(() => true), catchError(() => of(false)));
|
|
24704
|
+
}
|
|
24705
|
+
service(route) {
|
|
24706
|
+
const serviceInstance = ViewContextServices.contextToService(route.data.context);
|
|
24707
|
+
return this.injector.get(serviceInstance);
|
|
24708
|
+
}
|
|
24709
|
+
detailCached(service, id) {
|
|
24710
|
+
if (id === 'new') {
|
|
24711
|
+
return of(undefined);
|
|
24712
|
+
}
|
|
24713
|
+
const cache = this.getCache(service);
|
|
24714
|
+
let cached = cache[id];
|
|
24715
|
+
if (!cached) {
|
|
24716
|
+
const params = service instanceof InventoryService ? { withChildren: false } : undefined;
|
|
24717
|
+
cached = from(service.detail(id, params)).pipe(map(({ data }) => data), shareReplay(1));
|
|
24718
|
+
cache[id] = cached;
|
|
24719
|
+
}
|
|
24720
|
+
return cached;
|
|
24721
|
+
}
|
|
24722
|
+
clearDetailCached(service, id) {
|
|
24723
|
+
const cache = this.getCache(service);
|
|
24724
|
+
delete cache[id];
|
|
24725
|
+
}
|
|
24726
|
+
getCache(service) {
|
|
24727
|
+
let cache = this.caches.get(service);
|
|
24728
|
+
if (!cache) {
|
|
24729
|
+
cache = {};
|
|
24730
|
+
this.caches.set(service, cache);
|
|
24731
|
+
}
|
|
24732
|
+
return cache;
|
|
24733
|
+
}
|
|
24734
|
+
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 }); }
|
|
24735
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteGuard, providedIn: 'root' }); }
|
|
24736
|
+
}
|
|
24737
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: ContextRouteGuard, decorators: [{
|
|
24738
|
+
type: Injectable,
|
|
24739
|
+
args: [{
|
|
24740
|
+
providedIn: 'root'
|
|
24741
|
+
}]
|
|
24742
|
+
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
24743
|
+
|
|
24744
|
+
class EmptyComponent {
|
|
24745
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: EmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
24746
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: EmptyComponent, selector: "empty", ngImport: i0, template: '', isInline: true }); }
|
|
24747
|
+
}
|
|
24748
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: EmptyComponent, decorators: [{
|
|
24749
|
+
type: Component,
|
|
24750
|
+
args: [{ selector: 'empty', template: '' }]
|
|
24751
|
+
}] });
|
|
24752
|
+
|
|
24375
24753
|
/**
|
|
24376
24754
|
* A hook to use for Multi Provider extension.
|
|
24377
24755
|
* @deprecated Consider using the `hookRoute` function instead.
|
|
@@ -24474,16 +24852,17 @@ class RouterService extends ExtensionPointWithoutStateForPlugins {
|
|
|
24474
24852
|
// Empty route needs to be last as of navigation to angularjs routes
|
|
24475
24853
|
// if ** route hit, the angularjs routes are loaded.
|
|
24476
24854
|
const emptyRoute = this.router.config.find(r => r.path === '**');
|
|
24855
|
+
const rootContextRoutes = this.findAllRootContextRoutes([...this.router.config, ...routes]);
|
|
24477
24856
|
this.router.resetConfig([
|
|
24478
24857
|
...this.router.config.filter(r => r.path !== '**'),
|
|
24479
|
-
...routes.map((r) => this.convertRoute(
|
|
24858
|
+
...routes.map((r) => this.convertRoute(rootContextRoutes, r)),
|
|
24480
24859
|
emptyRoute
|
|
24481
24860
|
].filter(Boolean));
|
|
24482
24861
|
}
|
|
24483
|
-
convertRoute(
|
|
24862
|
+
convertRoute(rootContextRoutes, route) {
|
|
24484
24863
|
if (route.context) {
|
|
24485
|
-
|
|
24486
|
-
if (r.
|
|
24864
|
+
rootContextRoutes.forEach((r) => {
|
|
24865
|
+
if (r.rootContext === route.context) {
|
|
24487
24866
|
r.children = [route, ...(r.children || [])];
|
|
24488
24867
|
}
|
|
24489
24868
|
});
|
|
@@ -24491,6 +24870,19 @@ class RouterService extends ExtensionPointWithoutStateForPlugins {
|
|
|
24491
24870
|
}
|
|
24492
24871
|
return route;
|
|
24493
24872
|
}
|
|
24873
|
+
findAllRootContextRoutes(routes) {
|
|
24874
|
+
const result = [];
|
|
24875
|
+
routes.forEach(route => {
|
|
24876
|
+
if (route.rootContext) {
|
|
24877
|
+
result.push(route);
|
|
24878
|
+
}
|
|
24879
|
+
if (route.children) {
|
|
24880
|
+
const childRoutes = this.findAllRootContextRoutes(route.children);
|
|
24881
|
+
result.push(...childRoutes);
|
|
24882
|
+
}
|
|
24883
|
+
});
|
|
24884
|
+
return result;
|
|
24885
|
+
}
|
|
24494
24886
|
resolveRouterForChildRoutes(moduleRef, remoteNgModule) {
|
|
24495
24887
|
// NOTE: stolen from lazy loaded routes from Angular itself.
|
|
24496
24888
|
// https://github.com/angular/angular/blob/da58801f95c66c201e332189af25702bdd722f3f/packages/router/src/router_config_loader.ts#L103-L108
|
|
@@ -24513,90 +24905,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
24513
24905
|
}]
|
|
24514
24906
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1$3.Router }, { type: ContextRouteService }, { type: PluginsResolveService }, { type: OptionsService }] });
|
|
24515
24907
|
|
|
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
24908
|
const extraRoutes = [
|
|
24601
24909
|
{
|
|
24602
24910
|
path: 'users/new',
|
|
@@ -24607,17 +24915,21 @@ const extraRoutes = [
|
|
|
24607
24915
|
component: EmptyComponent
|
|
24608
24916
|
}
|
|
24609
24917
|
];
|
|
24918
|
+
const viewContextRoutes = [];
|
|
24610
24919
|
// tslint:disable-next-line: forin
|
|
24611
24920
|
for (const key in ViewContext) {
|
|
24612
24921
|
const context = ViewContext[key];
|
|
24613
|
-
|
|
24614
|
-
|
|
24922
|
+
if (!ViewContextServices.isAutoRoute(context)) {
|
|
24923
|
+
continue;
|
|
24924
|
+
}
|
|
24925
|
+
viewContextRoutes.push({
|
|
24926
|
+
path: ViewContextServices.getPath(context),
|
|
24927
|
+
rootContext: context,
|
|
24615
24928
|
component: ContextRouteComponent,
|
|
24616
24929
|
canActivate: [ContextRouteGuard],
|
|
24617
24930
|
data: { context, contextData: {} },
|
|
24618
24931
|
resolve: {
|
|
24619
24932
|
tabs: RouterTabsResolver
|
|
24620
|
-
// contextData: ContextRouteGuard
|
|
24621
24933
|
}
|
|
24622
24934
|
});
|
|
24623
24935
|
}
|
|
@@ -24646,10 +24958,10 @@ class RouterModule {
|
|
|
24646
24958
|
// initialNavigation disabled by default because of MTM-44047 (routes triggered before the actual login)
|
|
24647
24959
|
config.initialNavigation = config.initialNavigation ?? 'disabled';
|
|
24648
24960
|
config.useHash = config.useHash ?? true;
|
|
24649
|
-
const ngRouterModule = RouterModule$1.forRoot([...routes, ...extraRoutes], config);
|
|
24961
|
+
const ngRouterModule = RouterModule$1.forRoot([...routes, ...extraRoutes, ...viewContextRoutes], config);
|
|
24650
24962
|
return {
|
|
24651
24963
|
ngModule: RouterModule,
|
|
24652
|
-
providers: [...ngRouterModule.providers]
|
|
24964
|
+
providers: [...ngRouterModule.providers, ScopedContextRouteService]
|
|
24653
24965
|
};
|
|
24654
24966
|
}
|
|
24655
24967
|
constructor(
|
|
@@ -24659,13 +24971,14 @@ class RouterModule {
|
|
|
24659
24971
|
}
|
|
24660
24972
|
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
24973
|
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] }); }
|
|
24974
|
+
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
24975
|
}
|
|
24664
24976
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: RouterModule, decorators: [{
|
|
24665
24977
|
type: NgModule,
|
|
24666
24978
|
args: [{
|
|
24667
24979
|
declarations: [ContextRouteComponent, EmptyComponent],
|
|
24668
|
-
imports: [RouterModule$1, HeaderModule, CommonModule]
|
|
24980
|
+
imports: [RouterModule$1, HeaderModule, CommonModule],
|
|
24981
|
+
providers: [ScopedContextRouteService]
|
|
24669
24982
|
}]
|
|
24670
24983
|
}], ctorParameters: () => [{ type: RouterService }] });
|
|
24671
24984
|
|
|
@@ -31141,7 +31454,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
31141
31454
|
|
|
31142
31455
|
class VisibleControlsPipe {
|
|
31143
31456
|
transform(actionControls, arg) {
|
|
31144
|
-
return defer(() => of(actionControls ?? [])).pipe(mergeMap$1(controls => forkJoin(controls.map(control => toObservable(!control.showIf || control.showIf(arg)).pipe(map$
|
|
31457
|
+
return defer(() => of(actionControls ?? [])).pipe(mergeMap$1(controls => forkJoin(controls.map(control => toObservable(!control.showIf || control.showIf(arg)).pipe(map$1(visible => ({ control, visible }))))).pipe(map$1(evaluatedControls => evaluatedControls.filter(ec => ec.visible).map(ec => ec.control)))), map$1(visible => values(groupBy(visible, 'type'))
|
|
31145
31458
|
.map((actionControls) => {
|
|
31146
31459
|
if (actionControls?.length === 1) {
|
|
31147
31460
|
return actionControls[0];
|
|
@@ -34970,5 +35283,5 @@ function colorValidator(allowedModes) {
|
|
|
34970
35283
|
* Generated bundle index. Do not edit.
|
|
34971
35284
|
*/
|
|
34972
35285
|
|
|
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 };
|
|
35286
|
+
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, PluginLoadedPipe, 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
35287
|
//# sourceMappingURL=c8y-ngx-components.mjs.map
|