@c8y/ngx-components 1017.0.346 → 1017.0.355

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.
Files changed (45) hide show
  1. package/NOTICES +1 -1
  2. package/core/range-display/range-display.component.d.ts +19 -1
  3. package/core/realtime/realtime-subject.service.d.ts +4 -0
  4. package/core/realtime/realtime.service.d.ts +10 -0
  5. package/device-protocols/device-protocols.guard.d.ts +12 -0
  6. package/device-protocols/device-protocols.module.d.ts +8 -0
  7. package/device-protocols/device-type-detail-edited.service.d.ts +8 -0
  8. package/device-protocols/device-type-detail.component.d.ts +12 -0
  9. package/device-protocols/device-type-detail.directive.d.ts +9 -0
  10. package/device-protocols/index.d.ts +5 -0
  11. package/esm2020/core/modal/modal-confirm.component.mjs +3 -3
  12. package/esm2020/core/range-display/range-display.component.mjs +87 -4
  13. package/esm2020/core/realtime/realtime-subject.service.mjs +47 -4
  14. package/esm2020/core/realtime/realtime.service.mjs +15 -1
  15. package/esm2020/device-protocols/c8y-ngx-components-device-protocols.mjs +5 -0
  16. package/esm2020/device-protocols/device-protocols.guard.mjs +40 -0
  17. package/esm2020/device-protocols/device-protocols.module.mjs +46 -0
  18. package/esm2020/device-protocols/device-type-detail-edited.service.mjs +19 -0
  19. package/esm2020/device-protocols/device-type-detail.component.mjs +45 -0
  20. package/esm2020/device-protocols/device-type-detail.directive.mjs +19 -0
  21. package/esm2020/device-protocols/index.mjs +6 -0
  22. package/esm2020/ecosystem/application-properties/subscription-modal/subscription-modal.component.mjs +4 -1
  23. package/esm2020/upgrade/ng1/downgraded.services.mjs +6 -4
  24. package/esm2020/upgrade/ng1/index.mjs +6 -5
  25. package/esm2020/upgrade/upgrade.module.mjs +10 -10
  26. package/fesm2015/c8y-ngx-components-device-protocols.mjs +162 -0
  27. package/fesm2015/c8y-ngx-components-device-protocols.mjs.map +1 -0
  28. package/fesm2015/c8y-ngx-components-ecosystem.mjs +3 -0
  29. package/fesm2015/c8y-ngx-components-ecosystem.mjs.map +1 -1
  30. package/fesm2015/c8y-ngx-components-upgrade.mjs +91 -88
  31. package/fesm2015/c8y-ngx-components-upgrade.mjs.map +1 -1
  32. package/fesm2015/c8y-ngx-components.mjs +312 -172
  33. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  34. package/fesm2020/c8y-ngx-components-device-protocols.mjs +159 -0
  35. package/fesm2020/c8y-ngx-components-device-protocols.mjs.map +1 -0
  36. package/fesm2020/c8y-ngx-components-ecosystem.mjs +3 -0
  37. package/fesm2020/c8y-ngx-components-ecosystem.mjs.map +1 -1
  38. package/fesm2020/c8y-ngx-components-upgrade.mjs +90 -87
  39. package/fesm2020/c8y-ngx-components-upgrade.mjs.map +1 -1
  40. package/fesm2020/c8y-ngx-components.mjs +310 -172
  41. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  42. package/locales/en.po +11 -12
  43. package/locales/locales.pot +4 -13
  44. package/package.json +10 -2
  45. package/upgrade/ng1/downgraded.services.d.ts +1 -0
@@ -5,17 +5,17 @@ import { filter, startWith, switchMap, map, distinctUntilChanged, shareReplay, s
5
5
  import * as i1 from '@angular/router';
6
6
  import { NavigationEnd, RouterModule as RouterModule$1, PRIMARY_OUTLET, ROUTES, RouterLinkActive, ROUTER_CONFIGURATION } from '@angular/router';
7
7
  import { castArray, flatten, uniq, sortBy, groupBy, camelCase, isUndefined, throttle as throttle$1, keys, get, each, mapValues, mapKeys, isString, isNaN as isNaN$1, isFinite, forEach, every, first, map as map$1, assign, upperFirst, memoize as memoize$1, property, some, find as find$1, entries, omitBy, isDate, flatMap, filter as filter$1, isEqual, snakeCase, matches, reduce, union, isEmpty, orderBy, clone, omit, pick, isEqualWith, escape as escape$1, escapeRegExp, assignWith, set as set$1, findIndex, cloneDeep, uniqBy, flow, isNil, chunk, transform, identity, without, indexOf, parseInt as parseInt$1, isFunction, kebabCase, forOwn } from 'lodash-es';
8
- import * as i1$a from 'ngx-bootstrap/collapse';
8
+ import * as i1$9 from 'ngx-bootstrap/collapse';
9
9
  import { CollapseModule } from 'ngx-bootstrap/collapse';
10
- import * as i1$7 from 'ngx-bootstrap/dropdown';
10
+ import * as i1$6 from 'ngx-bootstrap/dropdown';
11
11
  import { BsDropdownModule, BsDropdownDirective } from 'ngx-bootstrap/dropdown';
12
- import * as i2 from '@angular/cdk/scrolling';
12
+ import * as i2$1 from '@angular/cdk/scrolling';
13
13
  import { VIRTUAL_SCROLL_STRATEGY, ScrollingModule } from '@angular/cdk/scrolling';
14
- import * as i1$5 from '@angular/common';
14
+ import * as i2 from '@angular/common';
15
15
  import { formatDate, registerLocaleData, DatePipe as DatePipe$1, DATE_PIPE_DEFAULT_TIMEZONE, DecimalPipe, CommonModule as CommonModule$1, DOCUMENT } from '@angular/common';
16
16
  import * as i1$1 from '@c8y/ngx-components/api';
17
17
  import { DataModule, InventoryService as InventoryService$1 } from '@c8y/ngx-components/api';
18
- import * as i1$8 from 'ngx-bootstrap/tooltip';
18
+ import * as i1$7 from 'ngx-bootstrap/tooltip';
19
19
  import { TooltipModule } from 'ngx-bootstrap/tooltip';
20
20
  import { setTheme } from 'ngx-bootstrap/utils';
21
21
  import * as i1$4 from '@angular/common/http';
@@ -32,21 +32,21 @@ import { defineLocale, enGbLocale, zhCnLocale, ruLocale, ptBrLocale, plLocale, n
32
32
  import { saveAs } from 'file-saver';
33
33
  import { coerceNumberProperty } from '@angular/cdk/coercion';
34
34
  import { get as get$1, find, negate, isUndefined as isUndefined$1, set, sortBy as sortBy$1, isEmpty as isEmpty$1, flatten as flatten$1, pick as pick$1 } from 'lodash';
35
- import * as i1$6 from '@angular/platform-browser';
35
+ import * as i1$5 from '@angular/platform-browser';
36
36
  import * as i4 from '@angular/cdk/a11y';
37
37
  import { A11yModule } from '@angular/cdk/a11y';
38
- import * as i1$9 from 'ngx-bootstrap/modal';
38
+ import * as i1$8 from 'ngx-bootstrap/modal';
39
39
  import { ModalModule as ModalModule$1, BsModalRef } from 'ngx-bootstrap/modal';
40
40
  import * as i5 from '@angular/forms';
41
41
  import { NgModel, FormControlName, Validators, ControlContainer, NgForm, NG_VALIDATORS, FormControl, FormsModule as FormsModule$1, ReactiveFormsModule, NG_VALUE_ACCESSOR, CheckboxControlValueAccessor, FormGroup, FormArray } from '@angular/forms';
42
42
  import * as i5$1 from 'angularx-qrcode';
43
43
  import { QRCodeModule } from 'angularx-qrcode';
44
44
  import { parsePhoneNumberFromString } from 'libphonenumber-js/max';
45
- import * as i2$1 from 'ngx-bootstrap/popover';
45
+ import * as i2$2 from 'ngx-bootstrap/popover';
46
46
  import { PopoverDirective, PopoverModule } from 'ngx-bootstrap/popover';
47
- import * as i2$2 from '@angular/cdk/stepper';
47
+ import * as i2$3 from '@angular/cdk/stepper';
48
48
  import { CdkStepper, STEP_STATE, CdkStepperModule, CdkStep, STEPPER_GLOBAL_OPTIONS } from '@angular/cdk/stepper';
49
- import * as i1$b from '@angular/cdk/bidi';
49
+ import * as i1$a from '@angular/cdk/bidi';
50
50
  import * as i4$1 from '@ngx-formly/core';
51
51
  import { FieldArrayType, FieldType, FieldWrapper, FormlyModule, FORMLY_CONFIG, ɵdefineHiddenProp } from '@ngx-formly/core';
52
52
  import * as i5$2 from '@ngx-formly/core/select';
@@ -3779,7 +3779,7 @@ const ICONS = [
3779
3779
  class EmptyStateComponent {
3780
3780
  }
3781
3781
  EmptyStateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3782
- EmptyStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: { icon: "icon", title: "title", subtitle: "subtitle", horizontal: "horizontal" }, ngImport: i0, template: "<div class=\"c8y-empty-state\" [ngClass]=\"{ 'c8y-empty-state--horizontal': horizontal }\">\n <i [c8yIcon]=\"icon\" class=\"c8y-icon-duocolor\"></i>\n\n <ng-container *ngIf=\"!horizontal\">\n <div>\n <h3 class=\"text-medium\">{{ title | translate }}</h3>\n <p class=\"p-b-16\" *ngIf=\"subtitle\">{{ subtitle | translate }}</p>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"horizontal\">\n <div class=\"d-flex d-col j-c-center\">\n <p class=\"text-medium a-s-start\">{{ title | translate }}</p>\n <p *ngIf=\"subtitle\" class=\"small a-s-start\">{{ subtitle | translate }}</p>\n <div class=\"small a-s-start\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
3782
+ EmptyStateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: { icon: "icon", title: "title", subtitle: "subtitle", horizontal: "horizontal" }, ngImport: i0, template: "<div class=\"c8y-empty-state\" [ngClass]=\"{ 'c8y-empty-state--horizontal': horizontal }\">\n <i [c8yIcon]=\"icon\" class=\"c8y-icon-duocolor\"></i>\n\n <ng-container *ngIf=\"!horizontal\">\n <div>\n <h3 class=\"text-medium\">{{ title | translate }}</h3>\n <p class=\"p-b-16\" *ngIf=\"subtitle\">{{ subtitle | translate }}</p>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"horizontal\">\n <div class=\"d-flex d-col j-c-center\">\n <p class=\"text-medium a-s-start\">{{ title | translate }}</p>\n <p *ngIf=\"subtitle\" class=\"small a-s-start\">{{ subtitle | translate }}</p>\n <div class=\"small a-s-start\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
3783
3783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmptyStateComponent, decorators: [{
3784
3784
  type: Component,
3785
3785
  args: [{ selector: 'c8y-ui-empty-state', template: "<div class=\"c8y-empty-state\" [ngClass]=\"{ 'c8y-empty-state--horizontal': horizontal }\">\n <i [c8yIcon]=\"icon\" class=\"c8y-icon-duocolor\"></i>\n\n <ng-container *ngIf=\"!horizontal\">\n <div>\n <h3 class=\"text-medium\">{{ title | translate }}</h3>\n <p class=\"p-b-16\" *ngIf=\"subtitle\">{{ subtitle | translate }}</p>\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"horizontal\">\n <div class=\"d-flex d-col j-c-center\">\n <p class=\"text-medium a-s-start\">{{ title | translate }}</p>\n <p *ngIf=\"subtitle\" class=\"small a-s-start\">{{ subtitle | translate }}</p>\n <div class=\"small a-s-start\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </div>\n </div>\n </ng-container>\n\n <ng-template #content>\n <ng-content></ng-content>\n </ng-template>\n</div>\n" }]
@@ -4166,7 +4166,7 @@ class LoadMoreComponent {
4166
4166
  }
4167
4167
  }
4168
4168
  LoadMoreComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoadMoreComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
4169
- LoadMoreComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoadMoreComponent, selector: "c8y-load-more", inputs: { paging: "paging", useIntersection: "useIntersection", hidden: "hidden", container: "container", class: "class", maxIterations: "maxIterations", noMoreDataHint: "noMoreDataHint", loadingTemplate: "loadingTemplate", hideNoMoreDataHint: "hideNoMoreDataHint", loadNextLabel: "loadNextLabel", loadingLabel: "loadingLabel" }, outputs: { onLoad: "onLoad" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<button\n class=\"btn btn-default btn-block text-center\"\n (click)=\"loadMore($event)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n *ngIf=\"hasMore && !(loadingTemplate && isLoading)\"\n [style.visibility]=\"hidden ? 'hidden' : 'visible'\"\n [style.height]=\"hidden ? '1px' : null\"\n title=\"{{ 'Load more' | translate }}\"\n>\n <ng-container *ngIf=\"!isLoading\">\n <span *ngIf=\"loadNextLabel; else loadPage\" [innerHTML]=\"loadNextLabel | translate\"></span>\n <ng-template #loadPage>\n <span translate ngNonBindable [translateParams]=\"{ pageNo: paging.currentPage + 1 }\">\n Load page {{ pageNo }}</span\n >\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isLoading\">\n <span *ngIf=\"loadingLabel; else loading\" [innerHTML]=\"loadingLabel | translate\"></span>\n <ng-template #loading>\n <span translate ngNonBindable [translateParams]=\"{ pageNo: paging.currentPage + 1 }\">\n Page {{ pageNo }} is loading\u2026\n </span>\n </ng-template>\n </ng-container>\n</button>\n\n<ng-container *ngIf=\"hasNoMoreData && !hideNoMoreDataHint && !isLoading\">\n <ng-container *ngTemplateOutlet=\"noMoreDataHint || finishHint\"></ng-container>\n</ng-container>\n\n<ng-template #finishHint>\n <div class=\"legend form-block center last-record\" title=\"{{ 'Last record' | translate }}\">\n <i [c8yIcon]=\"'circle'\"></i>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"loadingTemplate && isLoading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
4169
+ LoadMoreComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoadMoreComponent, selector: "c8y-load-more", inputs: { paging: "paging", useIntersection: "useIntersection", hidden: "hidden", container: "container", class: "class", maxIterations: "maxIterations", noMoreDataHint: "noMoreDataHint", loadingTemplate: "loadingTemplate", hideNoMoreDataHint: "hideNoMoreDataHint", loadNextLabel: "loadNextLabel", loadingLabel: "loadingLabel" }, outputs: { onLoad: "onLoad" }, host: { properties: { "class": "this.hostClass" } }, ngImport: i0, template: "<button\n class=\"btn btn-default btn-block text-center\"\n (click)=\"loadMore($event)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n *ngIf=\"hasMore && !(loadingTemplate && isLoading)\"\n [style.visibility]=\"hidden ? 'hidden' : 'visible'\"\n [style.height]=\"hidden ? '1px' : null\"\n title=\"{{ 'Load more' | translate }}\"\n>\n <ng-container *ngIf=\"!isLoading\">\n <span *ngIf=\"loadNextLabel; else loadPage\" [innerHTML]=\"loadNextLabel | translate\"></span>\n <ng-template #loadPage>\n <span translate ngNonBindable [translateParams]=\"{ pageNo: paging.currentPage + 1 }\">\n Load page {{ pageNo }}</span\n >\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isLoading\">\n <span *ngIf=\"loadingLabel; else loading\" [innerHTML]=\"loadingLabel | translate\"></span>\n <ng-template #loading>\n <span translate ngNonBindable [translateParams]=\"{ pageNo: paging.currentPage + 1 }\">\n Page {{ pageNo }} is loading\u2026\n </span>\n </ng-template>\n </ng-container>\n</button>\n\n<ng-container *ngIf=\"hasNoMoreData && !hideNoMoreDataHint && !isLoading\">\n <ng-container *ngTemplateOutlet=\"noMoreDataHint || finishHint\"></ng-container>\n</ng-container>\n\n<ng-template #finishHint>\n <div class=\"legend form-block center last-record\" title=\"{{ 'Last record' | translate }}\">\n <i [c8yIcon]=\"'circle'\"></i>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"loadingTemplate && isLoading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
4170
4170
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoadMoreComponent, decorators: [{
4171
4171
  type: Component,
4172
4172
  args: [{ selector: 'c8y-load-more', template: "<button\n class=\"btn btn-default btn-block text-center\"\n (click)=\"loadMore($event)\"\n [ngClass]=\"{ 'btn-pending': isLoading }\"\n *ngIf=\"hasMore && !(loadingTemplate && isLoading)\"\n [style.visibility]=\"hidden ? 'hidden' : 'visible'\"\n [style.height]=\"hidden ? '1px' : null\"\n title=\"{{ 'Load more' | translate }}\"\n>\n <ng-container *ngIf=\"!isLoading\">\n <span *ngIf=\"loadNextLabel; else loadPage\" [innerHTML]=\"loadNextLabel | translate\"></span>\n <ng-template #loadPage>\n <span translate ngNonBindable [translateParams]=\"{ pageNo: paging.currentPage + 1 }\">\n Load page {{ pageNo }}</span\n >\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"isLoading\">\n <span *ngIf=\"loadingLabel; else loading\" [innerHTML]=\"loadingLabel | translate\"></span>\n <ng-template #loading>\n <span translate ngNonBindable [translateParams]=\"{ pageNo: paging.currentPage + 1 }\">\n Page {{ pageNo }} is loading\u2026\n </span>\n </ng-template>\n </ng-container>\n</button>\n\n<ng-container *ngIf=\"hasNoMoreData && !hideNoMoreDataHint && !isLoading\">\n <ng-container *ngTemplateOutlet=\"noMoreDataHint || finishHint\"></ng-container>\n</ng-container>\n\n<ng-template #finishHint>\n <div class=\"legend form-block center last-record\" title=\"{{ 'Last record' | translate }}\">\n <i [c8yIcon]=\"'circle'\"></i>\n </div>\n</ng-template>\n\n<ng-container *ngIf=\"loadingTemplate && isLoading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n</ng-container>\n" }]
@@ -4440,7 +4440,7 @@ class VirtualScrollerWrapperComponent {
4440
4440
  }
4441
4441
  }
4442
4442
  VirtualScrollerWrapperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: VirtualScrollerWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4443
- VirtualScrollerWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: VirtualScrollerWrapperComponent, selector: "c8y-virtual-scroller-wrapper", inputs: { items: "items", itemHeight: "itemHeight", containerHeight: "containerHeight", template: "template", filterPipe: "filterPipe", strategy: "strategy", trackByFn: "trackByFn" }, ngImport: i0, template: "<ng-container *ngIf=\"items$ |async as items\" [ngSwitch]=\"strategy\">\n <ng-container *ngSwitchCase=\"'window'\">\n <cdk-virtual-scroll-viewport windowVirtualScrollStrategy [itemSizePx]=\"itemHeight\">\n <div *cdkVirtualFor=\"let item of items; index as i; trackBy: trackByFn\">\n <ng-container *ngTemplateOutlet=\"template; context: {$implicit: item, index: i}\"></ng-container>\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'fixed'\">\n <cdk-virtual-scroll-viewport [itemSize]=\"itemHeight\" [style.height]=\"containerHeight + 'px'\">\n <div *cdkVirtualFor=\"let item of items; index as i; trackBy: trackByFn\" >\n <ng-container *ngTemplateOutlet=\"template; context: {$implicit: item, index: i}\"></ng-container>\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: VirtualScrollWindowDirective, selector: "cdk-virtual-scroll-viewport[windowVirtualScrollStrategy]", inputs: ["itemSizePx", "minBufferPx", "maxBufferPx", "offsetSizePx"] }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
4443
+ VirtualScrollerWrapperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: VirtualScrollerWrapperComponent, selector: "c8y-virtual-scroller-wrapper", inputs: { items: "items", itemHeight: "itemHeight", containerHeight: "containerHeight", template: "template", filterPipe: "filterPipe", strategy: "strategy", trackByFn: "trackByFn" }, ngImport: i0, template: "<ng-container *ngIf=\"items$ |async as items\" [ngSwitch]=\"strategy\">\n <ng-container *ngSwitchCase=\"'window'\">\n <cdk-virtual-scroll-viewport windowVirtualScrollStrategy [itemSizePx]=\"itemHeight\">\n <div *cdkVirtualFor=\"let item of items; index as i; trackBy: trackByFn\">\n <ng-container *ngTemplateOutlet=\"template; context: {$implicit: item, index: i}\"></ng-container>\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'fixed'\">\n <cdk-virtual-scroll-viewport [itemSize]=\"itemHeight\" [style.height]=\"containerHeight + 'px'\">\n <div *cdkVirtualFor=\"let item of items; index as i; trackBy: trackByFn\" >\n <ng-container *ngTemplateOutlet=\"template; context: {$implicit: item, index: i}\"></ng-container>\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n</ng-container>\n", dependencies: [{ 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: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2$1.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i2$1.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: i2$1.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: VirtualScrollWindowDirective, selector: "cdk-virtual-scroll-viewport[windowVirtualScrollStrategy]", inputs: ["itemSizePx", "minBufferPx", "maxBufferPx", "offsetSizePx"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
4444
4444
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: VirtualScrollerWrapperComponent, decorators: [{
4445
4445
  type: Component,
4446
4446
  args: [{ selector: 'c8y-virtual-scroller-wrapper', template: "<ng-container *ngIf=\"items$ |async as items\" [ngSwitch]=\"strategy\">\n <ng-container *ngSwitchCase=\"'window'\">\n <cdk-virtual-scroll-viewport windowVirtualScrollStrategy [itemSizePx]=\"itemHeight\">\n <div *cdkVirtualFor=\"let item of items; index as i; trackBy: trackByFn\">\n <ng-container *ngTemplateOutlet=\"template; context: {$implicit: item, index: i}\"></ng-container>\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'fixed'\">\n <cdk-virtual-scroll-viewport [itemSize]=\"itemHeight\" [style.height]=\"containerHeight + 'px'\">\n <div *cdkVirtualFor=\"let item of items; index as i; trackBy: trackByFn\" >\n <ng-container *ngTemplateOutlet=\"template; context: {$implicit: item, index: i}\"></ng-container>\n </div>\n </cdk-virtual-scroll-viewport>\n </ng-container>\n</ng-container>\n" }]
@@ -5747,7 +5747,7 @@ function strToNumber(value) {
5747
5747
  class OperationResultComponent {
5748
5748
  }
5749
5749
  OperationResultComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: OperationResultComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5750
- OperationResultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: OperationResultComponent, selector: "c8y-operation-result", inputs: { text: "text", vertical: "vertical", size: "size", type: "type" }, ngImport: i0, template: "<style>\n .stroke-anim {\n animation: stroke-anim 0.75s ease-in-out 0s 1 forwards;\n }\n .check-anim {\n animation: check-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n .symbol-anim {\n animation: symbol-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n\n @keyframes stroke-anim {\n 0% {\n stroke-dashoffset: 60;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n @keyframes check-anim {\n 0% {\n stroke-dashoffset: 28;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n @keyframes symbol-anim {\n 0% {\n stroke-dashoffset: 7;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n .delay-05 {\n animation-delay: 0.5s;\n }\n</style>\n<div class=\"d-flex a-i-center p-24 m-24 p-b-0\" [ngClass]=\"{ 'd-col j-c-center': vertical }\">\n <svg *ngIf=\"type === 'success'\" viewBox=\"0 0 24 24\" [ngStyle]=\"{ 'max-width.px': size || 64 }\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" stroke-linecap=\"round\">\n <polyline\n stroke=\"var(--input-validation-success, #008800)\"\n stroke-width=\"2\"\n stroke-linejoin=\"round\"\n points=\"7.8678862 11.508 11.9656988 15.984 20.2137797 7.44836856\"\n class=\"check-anim\"\n stroke-dasharray=\"28\"\n stroke-dashoffset=\"28\"\n ></polyline>\n <path\n d=\"M18.3656773,3.02795925 C16.5689809,1.75089408 14.3721808,1 12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12\"\n id=\"Path\"\n class=\"stroke-anim\"\n stroke=\"var(--input-validation-success, #008800)\"\n stroke-width=\"2\"\n stroke-dasharray=\"60\"\n stroke-dashoffset=\"60\"\n ></path>\n </g>\n </svg>\n\n <svg *ngIf=\"type === 'error'\" viewBox=\"0 0 24 24\" [ngStyle]=\"{ 'max-width.px': size || 64 }\">\n <g id=\"Artboard-Copy-3\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <line\n x1=\"12\"\n y1=\"13.5356315\"\n x2=\"12\"\n y2=\"7\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-error, #E0000E)\"\n class=\"symbol-anim\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n ></line>\n <line\n x1=\"12\"\n y1=\"17.7678157\"\n x2=\"12\"\n y2=\"17.2321843\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-error, #E0000E)\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n class=\"symbol-anim\"\n ></line>\n <circle\n id=\"Oval\"\n stroke=\"var(--input-validation-error, #E0000E)\"\n stroke-width=\"2\"\n cx=\"12\"\n cy=\"12\"\n r=\"11\"\n class=\"stroke-anim\"\n stroke-dasharray=\"70\"\n stroke-dashoffset=\"70\"\n stroke-linejoin=\"round\"\n ></circle>\n </g>\n </svg>\n\n <svg *ngIf=\"type === 'warning'\" viewBox=\"0 0 24 24\" [ngStyle]=\"{ 'max-width.px': size || 64 }\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <line\n x1=\"12\"\n y1=\"13.5356315\"\n x2=\"12\"\n y2=\"7\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-warning, #FF801F)\"\n class=\"symbol-anim\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n ></line>\n <line\n x1=\"12\"\n y1=\"17.7678157\"\n x2=\"12\"\n y2=\"17.2321843\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-warning, #FF801F)\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n class=\"symbol-anim\"\n ></line>\n\n <g\n fill-rule=\"nonzero\"\n stroke=\"var(--input-validation-warning, #FF801F)\"\n stroke-width=\"2\"\n class=\"stroke-anim\"\n stroke-dashoffset=\"1000\"\n stroke-dasharray=\"90\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M12,1 L23,21 L1,21 L12,1 Z\" id=\"Path\"></path>\n </g>\n </g>\n </svg>\n <p *ngIf=\"text\" class=\"text-center text-medium animated fadeIn delay-05 m-8\">\n {{ text }}\n </p>\n</div>\n", styles: ["\n .stroke-anim {\n animation: stroke-anim 0.75s ease-in-out 0s 1 forwards;\n }\n .check-anim {\n animation: check-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n .symbol-anim {\n animation: symbol-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n\n @keyframes stroke-anim {\n 0% {\n stroke-dashoffset: 60;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n @keyframes check-anim {\n 0% {\n stroke-dashoffset: 28;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n @keyframes symbol-anim {\n 0% {\n stroke-dashoffset: 7;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n .delay-05 {\n animation-delay: 0.5s;\n }\n"], dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
5750
+ OperationResultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: OperationResultComponent, selector: "c8y-operation-result", inputs: { text: "text", vertical: "vertical", size: "size", type: "type" }, ngImport: i0, template: "<style>\n .stroke-anim {\n animation: stroke-anim 0.75s ease-in-out 0s 1 forwards;\n }\n .check-anim {\n animation: check-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n .symbol-anim {\n animation: symbol-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n\n @keyframes stroke-anim {\n 0% {\n stroke-dashoffset: 60;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n @keyframes check-anim {\n 0% {\n stroke-dashoffset: 28;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n @keyframes symbol-anim {\n 0% {\n stroke-dashoffset: 7;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n .delay-05 {\n animation-delay: 0.5s;\n }\n</style>\n<div class=\"d-flex a-i-center p-24 m-24 p-b-0\" [ngClass]=\"{ 'd-col j-c-center': vertical }\">\n <svg *ngIf=\"type === 'success'\" viewBox=\"0 0 24 24\" [ngStyle]=\"{ 'max-width.px': size || 64 }\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" stroke-linecap=\"round\">\n <polyline\n stroke=\"var(--input-validation-success, #008800)\"\n stroke-width=\"2\"\n stroke-linejoin=\"round\"\n points=\"7.8678862 11.508 11.9656988 15.984 20.2137797 7.44836856\"\n class=\"check-anim\"\n stroke-dasharray=\"28\"\n stroke-dashoffset=\"28\"\n ></polyline>\n <path\n d=\"M18.3656773,3.02795925 C16.5689809,1.75089408 14.3721808,1 12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12\"\n id=\"Path\"\n class=\"stroke-anim\"\n stroke=\"var(--input-validation-success, #008800)\"\n stroke-width=\"2\"\n stroke-dasharray=\"60\"\n stroke-dashoffset=\"60\"\n ></path>\n </g>\n </svg>\n\n <svg *ngIf=\"type === 'error'\" viewBox=\"0 0 24 24\" [ngStyle]=\"{ 'max-width.px': size || 64 }\">\n <g id=\"Artboard-Copy-3\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <line\n x1=\"12\"\n y1=\"13.5356315\"\n x2=\"12\"\n y2=\"7\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-error, #E0000E)\"\n class=\"symbol-anim\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n ></line>\n <line\n x1=\"12\"\n y1=\"17.7678157\"\n x2=\"12\"\n y2=\"17.2321843\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-error, #E0000E)\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n class=\"symbol-anim\"\n ></line>\n <circle\n id=\"Oval\"\n stroke=\"var(--input-validation-error, #E0000E)\"\n stroke-width=\"2\"\n cx=\"12\"\n cy=\"12\"\n r=\"11\"\n class=\"stroke-anim\"\n stroke-dasharray=\"70\"\n stroke-dashoffset=\"70\"\n stroke-linejoin=\"round\"\n ></circle>\n </g>\n </svg>\n\n <svg *ngIf=\"type === 'warning'\" viewBox=\"0 0 24 24\" [ngStyle]=\"{ 'max-width.px': size || 64 }\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <line\n x1=\"12\"\n y1=\"13.5356315\"\n x2=\"12\"\n y2=\"7\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-warning, #FF801F)\"\n class=\"symbol-anim\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n ></line>\n <line\n x1=\"12\"\n y1=\"17.7678157\"\n x2=\"12\"\n y2=\"17.2321843\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-warning, #FF801F)\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n class=\"symbol-anim\"\n ></line>\n\n <g\n fill-rule=\"nonzero\"\n stroke=\"var(--input-validation-warning, #FF801F)\"\n stroke-width=\"2\"\n class=\"stroke-anim\"\n stroke-dashoffset=\"1000\"\n stroke-dasharray=\"90\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M12,1 L23,21 L1,21 L12,1 Z\" id=\"Path\"></path>\n </g>\n </g>\n </svg>\n <p *ngIf=\"text\" class=\"text-center text-medium animated fadeIn delay-05 m-8\">\n {{ text }}\n </p>\n</div>\n", styles: ["\n .stroke-anim {\n animation: stroke-anim 0.75s ease-in-out 0s 1 forwards;\n }\n .check-anim {\n animation: check-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n .symbol-anim {\n animation: symbol-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n\n @keyframes stroke-anim {\n 0% {\n stroke-dashoffset: 60;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n @keyframes check-anim {\n 0% {\n stroke-dashoffset: 28;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n @keyframes symbol-anim {\n 0% {\n stroke-dashoffset: 7;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n .delay-05 {\n animation-delay: 0.5s;\n }\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
5751
5751
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: OperationResultComponent, decorators: [{
5752
5752
  type: Component,
5753
5753
  args: [{ selector: 'c8y-operation-result', template: "<style>\n .stroke-anim {\n animation: stroke-anim 0.75s ease-in-out 0s 1 forwards;\n }\n .check-anim {\n animation: check-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n .symbol-anim {\n animation: symbol-anim 0.35s ease-in-out 0.5s 1 forwards;\n }\n\n @keyframes stroke-anim {\n 0% {\n stroke-dashoffset: 60;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n @keyframes check-anim {\n 0% {\n stroke-dashoffset: 28;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n @keyframes symbol-anim {\n 0% {\n stroke-dashoffset: 7;\n }\n 100% {\n stroke-dashoffset: 0;\n }\n }\n\n .delay-05 {\n animation-delay: 0.5s;\n }\n</style>\n<div class=\"d-flex a-i-center p-24 m-24 p-b-0\" [ngClass]=\"{ 'd-col j-c-center': vertical }\">\n <svg *ngIf=\"type === 'success'\" viewBox=\"0 0 24 24\" [ngStyle]=\"{ 'max-width.px': size || 64 }\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\" stroke-linecap=\"round\">\n <polyline\n stroke=\"var(--input-validation-success, #008800)\"\n stroke-width=\"2\"\n stroke-linejoin=\"round\"\n points=\"7.8678862 11.508 11.9656988 15.984 20.2137797 7.44836856\"\n class=\"check-anim\"\n stroke-dasharray=\"28\"\n stroke-dashoffset=\"28\"\n ></polyline>\n <path\n d=\"M18.3656773,3.02795925 C16.5689809,1.75089408 14.3721808,1 12,1 C5.92486775,1 1,5.92486775 1,12 C1,18.0751322 5.92486775,23 12,23 C18.0751322,23 23,18.0751322 23,12\"\n id=\"Path\"\n class=\"stroke-anim\"\n stroke=\"var(--input-validation-success, #008800)\"\n stroke-width=\"2\"\n stroke-dasharray=\"60\"\n stroke-dashoffset=\"60\"\n ></path>\n </g>\n </svg>\n\n <svg *ngIf=\"type === 'error'\" viewBox=\"0 0 24 24\" [ngStyle]=\"{ 'max-width.px': size || 64 }\">\n <g id=\"Artboard-Copy-3\" stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <line\n x1=\"12\"\n y1=\"13.5356315\"\n x2=\"12\"\n y2=\"7\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-error, #E0000E)\"\n class=\"symbol-anim\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n ></line>\n <line\n x1=\"12\"\n y1=\"17.7678157\"\n x2=\"12\"\n y2=\"17.2321843\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-error, #E0000E)\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n class=\"symbol-anim\"\n ></line>\n <circle\n id=\"Oval\"\n stroke=\"var(--input-validation-error, #E0000E)\"\n stroke-width=\"2\"\n cx=\"12\"\n cy=\"12\"\n r=\"11\"\n class=\"stroke-anim\"\n stroke-dasharray=\"70\"\n stroke-dashoffset=\"70\"\n stroke-linejoin=\"round\"\n ></circle>\n </g>\n </svg>\n\n <svg *ngIf=\"type === 'warning'\" viewBox=\"0 0 24 24\" [ngStyle]=\"{ 'max-width.px': size || 64 }\">\n <g stroke=\"none\" stroke-width=\"1\" fill=\"none\" fill-rule=\"evenodd\">\n <line\n x1=\"12\"\n y1=\"13.5356315\"\n x2=\"12\"\n y2=\"7\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-warning, #FF801F)\"\n class=\"symbol-anim\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n ></line>\n <line\n x1=\"12\"\n y1=\"17.7678157\"\n x2=\"12\"\n y2=\"17.2321843\"\n id=\"Path-2\"\n stroke=\"var(--input-validation-warning, #FF801F)\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-dasharray=\"7\"\n stroke-dashoffset=\"7\"\n class=\"symbol-anim\"\n ></line>\n\n <g\n fill-rule=\"nonzero\"\n stroke=\"var(--input-validation-warning, #FF801F)\"\n stroke-width=\"2\"\n class=\"stroke-anim\"\n stroke-dashoffset=\"1000\"\n stroke-dasharray=\"90\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M12,1 L23,21 L1,21 L12,1 Z\" id=\"Path\"></path>\n </g>\n </g>\n </svg>\n <p *ngIf=\"text\" class=\"text-center text-medium animated fadeIn delay-05 m-8\">\n {{ text }}\n </p>\n</div>\n" }]
@@ -5884,7 +5884,7 @@ class ProgressBarComponent {
5884
5884
  }
5885
5885
  }
5886
5886
  ProgressBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProgressBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
5887
- ProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ProgressBarComponent, selector: "c8y-progress-bar", inputs: { message: "message", progress: "progress" }, ngImport: i0, template: "<div class=\"bg-inherit\">\n <div class=\"progress progress-striped active\" *ngIf=\"progress !== null\">\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n [attr.aria-label]=\"'Progress' | translate\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === null\"></div>\n <p *ngIf=\"message\">\n {{ message | translate }}\n </p>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
5887
+ ProgressBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ProgressBarComponent, selector: "c8y-progress-bar", inputs: { message: "message", progress: "progress" }, ngImport: i0, template: "<div class=\"bg-inherit\">\n <div class=\"progress progress-striped active\" *ngIf=\"progress !== null\">\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n [attr.aria-label]=\"'Progress' | translate\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === null\"></div>\n <p *ngIf=\"message\">\n {{ message | translate }}\n </p>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
5888
5888
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProgressBarComponent, decorators: [{
5889
5889
  type: Component,
5890
5890
  args: [{ selector: 'c8y-progress-bar', template: "<div class=\"bg-inherit\">\n <div class=\"progress progress-striped active\" *ngIf=\"progress !== null\">\n <div\n class=\"progress-bar\"\n role=\"progressbar\"\n [attr.aria-label]=\"'Progress' | translate\"\n [attr.aria-valuenow]=\"progress\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === null\"></div>\n <p *ngIf=\"message\">\n {{ message | translate }}\n </p>\n</div>\n" }]
@@ -6617,14 +6617,14 @@ class MarkdownToHtmlPipe {
6617
6617
  : of('');
6618
6618
  }
6619
6619
  }
6620
- MarkdownToHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MarkdownToHtmlPipe, deps: [{ token: i1$6.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
6620
+ MarkdownToHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MarkdownToHtmlPipe, deps: [{ token: i1$5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
6621
6621
  MarkdownToHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: MarkdownToHtmlPipe, name: "markdownToHtml" });
6622
6622
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MarkdownToHtmlPipe, decorators: [{
6623
6623
  type: Pipe,
6624
6624
  args: [{
6625
6625
  name: 'markdownToHtml'
6626
6626
  }]
6627
- }], ctorParameters: function () { return [{ type: i1$6.DomSanitizer }]; } });
6627
+ }], ctorParameters: function () { return [{ type: i1$5.DomSanitizer }]; } });
6628
6628
 
6629
6629
  class StringifyObjectPipe {
6630
6630
  constructor(c8yDatePipe) {
@@ -7391,7 +7391,7 @@ class ActionBarComponent {
7391
7391
  }
7392
7392
  }
7393
7393
  ActionBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ActionBarComponent, deps: [{ token: GainsightService }], target: i0.ɵɵFactoryTarget.Component });
7394
- ActionBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ActionBarComponent, selector: "c8y-action-bar", inputs: { navigatorOpen: "navigatorOpen", hasTabs: "hasTabs", isTabsHorizontal: "isTabsHorizontal", items$: "items$" }, host: { listeners: { "mousedown": "mouseDown($event.target)" }, properties: { "class.navigator-open": "this.navigatorOpen", "class.has-tabs": "this.hasTabs", "class.horizontal-tabs": "this.isTabsHorizontal", "class.c8y-ui-action-bar": "this.uiActionBar", "hidden": "this.hidden" }, classAttribute: "c8y-ui-action-bar" }, ngImport: i0, template: "<div class=\"navbar-header\" role=\"presentation\">\n <p class=\"text-label-small p-l-16 p-t-8 p-b-8 visible-xs\">\n <span class=\"text-primary\">{{ 'Action bar' | translate }}</span>\n </p>\n</div>\n\n<div id=\"page-toolbar\" class=\"navbar-collapse\" role=\"complementary\" >\n <ul class=\"nav navbar-nav navbar-left\">\n <ng-container *ngFor=\"let item of left$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"nav navbar-nav navbar-right\">\n <ng-container *ngFor=\"let item of right$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n <li *ngIf=\"(more$ | async).length === 1; else moreWithMultipleOptions\" class=\"no-remove more-wrapper\">\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </li>\n <ng-template #moreWithMultipleOptions>\n <li class=\"no-remove more-wrapper\" *ngIf=\"(more$ | async).length > 1\">\n <div class=\"dropdown\" dropdown>\n <button\n title=\"{{ 'More\u2026' | translate }}\"\n type=\"button\"\n class=\"dropdown-toggle c8y-dropdown d-flex\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <span class=\"text-truncate\" translate>More\u2026</span>\n <i [c8yIcon]=\"'caret-down'\"></i>\n </button>\n <ul class=\"dropdown-menu visible-xs\">\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"dropdown-menu dropdown-menu-right hidden-xs\" *dropdownMenu>\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </li>\n </ng-template> \n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
7394
+ ActionBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ActionBarComponent, selector: "c8y-action-bar", inputs: { navigatorOpen: "navigatorOpen", hasTabs: "hasTabs", isTabsHorizontal: "isTabsHorizontal", items$: "items$" }, host: { listeners: { "mousedown": "mouseDown($event.target)" }, properties: { "class.navigator-open": "this.navigatorOpen", "class.has-tabs": "this.hasTabs", "class.horizontal-tabs": "this.isTabsHorizontal", "class.c8y-ui-action-bar": "this.uiActionBar", "hidden": "this.hidden" }, classAttribute: "c8y-ui-action-bar" }, ngImport: i0, template: "<div class=\"navbar-header\" role=\"presentation\">\n <p class=\"text-label-small p-l-16 p-t-8 p-b-8 visible-xs\">\n <span class=\"text-primary\">{{ 'Action bar' | translate }}</span>\n </p>\n</div>\n\n<div id=\"page-toolbar\" class=\"navbar-collapse\" role=\"complementary\" >\n <ul class=\"nav navbar-nav navbar-left\">\n <ng-container *ngFor=\"let item of left$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"nav navbar-nav navbar-right\">\n <ng-container *ngFor=\"let item of right$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n <li *ngIf=\"(more$ | async).length === 1; else moreWithMultipleOptions\" class=\"no-remove more-wrapper\">\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </li>\n <ng-template #moreWithMultipleOptions>\n <li class=\"no-remove more-wrapper\" *ngIf=\"(more$ | async).length > 1\">\n <div class=\"dropdown\" dropdown>\n <button\n title=\"{{ 'More\u2026' | translate }}\"\n type=\"button\"\n class=\"dropdown-toggle c8y-dropdown d-flex\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <span class=\"text-truncate\" translate>More\u2026</span>\n <i [c8yIcon]=\"'caret-down'\"></i>\n </button>\n <ul class=\"dropdown-menu visible-xs\">\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"dropdown-menu dropdown-menu-right hidden-xs\" *dropdownMenu>\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </li>\n </ng-template> \n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
7395
7395
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ActionBarComponent, decorators: [{
7396
7396
  type: Component,
7397
7397
  args: [{ selector: 'c8y-action-bar', host: { class: 'c8y-ui-action-bar' }, template: "<div class=\"navbar-header\" role=\"presentation\">\n <p class=\"text-label-small p-l-16 p-t-8 p-b-8 visible-xs\">\n <span class=\"text-primary\">{{ 'Action bar' | translate }}</span>\n </p>\n</div>\n\n<div id=\"page-toolbar\" class=\"navbar-collapse\" role=\"complementary\" >\n <ul class=\"nav navbar-nav navbar-left\">\n <ng-container *ngFor=\"let item of left$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"nav navbar-nav navbar-right\">\n <ng-container *ngFor=\"let item of right$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n <li *ngIf=\"(more$ | async).length === 1; else moreWithMultipleOptions\" class=\"no-remove more-wrapper\">\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </li>\n <ng-template #moreWithMultipleOptions>\n <li class=\"no-remove more-wrapper\" *ngIf=\"(more$ | async).length > 1\">\n <div class=\"dropdown\" dropdown>\n <button\n title=\"{{ 'More\u2026' | translate }}\"\n type=\"button\"\n class=\"dropdown-toggle c8y-dropdown d-flex\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <span class=\"text-truncate\" translate>More\u2026</span>\n <i [c8yIcon]=\"'caret-down'\"></i>\n </button>\n <ul class=\"dropdown-menu visible-xs\">\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </ul>\n <ul class=\"dropdown-menu dropdown-menu-right hidden-xs\" *dropdownMenu>\n <ng-container *ngFor=\"let item of more$ | async\">\n <ng-container *c8yOutlet=\"item.component || item.template; injector: item.injector\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </li>\n </ng-template> \n </ul>\n</div>\n" }]
@@ -7581,7 +7581,7 @@ class ActionOutletComponent {
7581
7581
  }
7582
7582
  }
7583
7583
  ActionOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ActionOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
7584
- ActionOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ActionOutletComponent, selector: "c8y-action-outlet", inputs: { items: "items" }, host: { classAttribute: "d-contents" }, ngImport: i0, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *ngComponentOutlet=\"item.component; injector: item.injector\"></ng-container>\n </div>\n</ng-container>\n<ng-container>\n <div class=\"main-header-item\" *ngIf=\"(templatesAndLabels$ | async)?.length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n type=\"button\"\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n title=\"{{ 'Actions' | translate }}\"\n >\n <i [c8yIcon]=\"'plus-circle'\" class=\"icon-2x\"></i>\n </button>\n\n <ul class=\"dropdown-menu cog-dropdown\" *dropdownMenu>\n <ng-container *ngFor=\"let item of templatesAndLabels$ | async\">\n <ng-container *c8yOutlet=\"item.template; injector: item.injector\"></ng-container>\n <li *ngIf=\"item.label\">\n <button\n title=\"{{ item.label | translate }}\"\n type=\"button\"\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\n (click)=\"invoke(item)\"\n >\n <i *ngIf=\"item.icon\" [c8yIcon]=\"item.icon\"></i>\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i1$5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
7584
+ ActionOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ActionOutletComponent, selector: "c8y-action-outlet", inputs: { items: "items" }, host: { classAttribute: "d-contents" }, ngImport: i0, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *ngComponentOutlet=\"item.component; injector: item.injector\"></ng-container>\n </div>\n</ng-container>\n<ng-container>\n <div class=\"main-header-item\" *ngIf=\"(templatesAndLabels$ | async)?.length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n type=\"button\"\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n title=\"{{ 'Actions' | translate }}\"\n >\n <i [c8yIcon]=\"'plus-circle'\" class=\"icon-2x\"></i>\n </button>\n\n <ul class=\"dropdown-menu cog-dropdown\" *dropdownMenu>\n <ng-container *ngFor=\"let item of templatesAndLabels$ | async\">\n <ng-container *c8yOutlet=\"item.template; injector: item.injector\"></ng-container>\n <li *ngIf=\"item.label\">\n <button\n title=\"{{ item.label | translate }}\"\n type=\"button\"\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\n (click)=\"invoke(item)\"\n >\n <i *ngIf=\"item.icon\" [c8yIcon]=\"item.icon\"></i>\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "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: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
7585
7585
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ActionOutletComponent, decorators: [{
7586
7586
  type: Component,
7587
7587
  args: [{ selector: 'c8y-action-outlet', host: { class: 'd-contents' }, template: "<ng-container *ngIf=\"(components$ | async)?.length > 0\">\n <div class=\"main-header-item\" *ngFor=\"let item of components$ | async\">\n <ng-container *ngComponentOutlet=\"item.component; injector: item.injector\"></ng-container>\n </div>\n</ng-container>\n<ng-container>\n <div class=\"main-header-item\" *ngIf=\"(templatesAndLabels$ | async)?.length > 0\">\n <div class=\"dropdown\" dropdown>\n <button\n type=\"button\"\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n title=\"{{ 'Actions' | translate }}\"\n >\n <i [c8yIcon]=\"'plus-circle'\" class=\"icon-2x\"></i>\n </button>\n\n <ul class=\"dropdown-menu cog-dropdown\" *dropdownMenu>\n <ng-container *ngFor=\"let item of templatesAndLabels$ | async\">\n <ng-container *c8yOutlet=\"item.template; injector: item.injector\"></ng-container>\n <li *ngIf=\"item.label\">\n <button\n title=\"{{ item.label | translate }}\"\n type=\"button\"\n [attr.disabled]=\"item.disabled ? 'disabled' : null\"\n (click)=\"invoke(item)\"\n >\n <i *ngIf=\"item.icon\" [c8yIcon]=\"item.icon\"></i>\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n </div>\n </div>\n</ng-container>\n" }]
@@ -8063,7 +8063,7 @@ class AlertOutletComponent extends AlertOutletBase {
8063
8063
  }
8064
8064
  }
8065
8065
  AlertOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AlertOutletComponent, deps: [{ token: 'position', attribute: true }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
8066
- AlertOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AlertOutletComponent, selector: "c8y-alert-outlet", host: { properties: { "class.static": "this.isStatic" } }, usesInheritance: true, ngImport: i0, template: "<div\n class=\"alert animated fadeInRightBig m-t-16\"\n *ngFor=\"let alert of alerts | async\"\n [ngClass]=\"[getClass(alert), isDetailsShow(alert) ? 'expanded' : '']\"\n>\n <button title=\"{{ 'Close' | translate }}\" type=\"button\" class=\"close\" (click)=\"close(alert)\">\n <span aria-hidden=\"true\">&times;</span>\n <span class=\"sr-only\">{{ 'Close' | translate }}</span>\n </button>\n\n <div *ngIf=\"!isTemplateRef(alert.text); else template(alert.text)\">\n <strong *ngIf=\"!alert.allowHtml\" [textContent]=\"alert.text | translate\" class=\"message\"></strong>\n <strong *ngIf=\"alert.allowHtml\" [innerHTML]=\"alert.text | translate\" class=\"message\"></strong>\n </div>\n <p *ngIf=\"hasDetails(alert) && !isDetailsShow(alert)\" class=\"text-muted m-t-8\">\n <button\n title=\"{{ 'Show details' | translate }}\"\n class=\"btn btn-clean\"\n (click)=\"showDetails(alert)\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n {{ 'Show details' | translate }}\n </button>\n </p>\n <p *ngIf=\"hasDetails(alert) && isDetailsShow(alert)\" class=\"text-muted m-t-8\">\n <button title=\"{{ 'Hide details' | translate }}\" class=\"btn btn-clean\" (click)=\"closeDetails()\">\n <i c8yIcon=\"chevron-up\"></i>\n {{ 'Hide details' | translate }}\n </button>\n </p>\n <div *ngIf=\"isDetailsShow(alert)\">\n <div *ngIf=\"!isTemplateRef(detailDisplayedAlert.contents); else template(alert.detailedData)\">\n <pre><code [textContent]=\"detailDisplayedAlert.contents | translate\"></code></pre>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
8066
+ AlertOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AlertOutletComponent, selector: "c8y-alert-outlet", host: { properties: { "class.static": "this.isStatic" } }, usesInheritance: true, ngImport: i0, template: "<div\n class=\"alert animated fadeInRightBig m-t-16\"\n *ngFor=\"let alert of alerts | async\"\n [ngClass]=\"[getClass(alert), isDetailsShow(alert) ? 'expanded' : '']\"\n>\n <button title=\"{{ 'Close' | translate }}\" type=\"button\" class=\"close\" (click)=\"close(alert)\">\n <span aria-hidden=\"true\">&times;</span>\n <span class=\"sr-only\">{{ 'Close' | translate }}</span>\n </button>\n\n <div *ngIf=\"!isTemplateRef(alert.text); else template(alert.text)\">\n <strong *ngIf=\"!alert.allowHtml\" [textContent]=\"alert.text | translate\" class=\"message\"></strong>\n <strong *ngIf=\"alert.allowHtml\" [innerHTML]=\"alert.text | translate\" class=\"message\"></strong>\n </div>\n <p *ngIf=\"hasDetails(alert) && !isDetailsShow(alert)\" class=\"text-muted m-t-8\">\n <button\n title=\"{{ 'Show details' | translate }}\"\n class=\"btn btn-clean\"\n (click)=\"showDetails(alert)\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n {{ 'Show details' | translate }}\n </button>\n </p>\n <p *ngIf=\"hasDetails(alert) && isDetailsShow(alert)\" class=\"text-muted m-t-8\">\n <button title=\"{{ 'Hide details' | translate }}\" class=\"btn btn-clean\" (click)=\"closeDetails()\">\n <i c8yIcon=\"chevron-up\"></i>\n {{ 'Hide details' | translate }}\n </button>\n </p>\n <div *ngIf=\"isDetailsShow(alert)\">\n <div *ngIf=\"!isTemplateRef(detailDisplayedAlert.contents); else template(alert.detailedData)\">\n <pre><code [textContent]=\"detailDisplayedAlert.contents | translate\"></code></pre>\n </div>\n </div>\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.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
8067
8067
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AlertOutletComponent, decorators: [{
8068
8068
  type: Component,
8069
8069
  args: [{ selector: 'c8y-alert-outlet', template: "<div\n class=\"alert animated fadeInRightBig m-t-16\"\n *ngFor=\"let alert of alerts | async\"\n [ngClass]=\"[getClass(alert), isDetailsShow(alert) ? 'expanded' : '']\"\n>\n <button title=\"{{ 'Close' | translate }}\" type=\"button\" class=\"close\" (click)=\"close(alert)\">\n <span aria-hidden=\"true\">&times;</span>\n <span class=\"sr-only\">{{ 'Close' | translate }}</span>\n </button>\n\n <div *ngIf=\"!isTemplateRef(alert.text); else template(alert.text)\">\n <strong *ngIf=\"!alert.allowHtml\" [textContent]=\"alert.text | translate\" class=\"message\"></strong>\n <strong *ngIf=\"alert.allowHtml\" [innerHTML]=\"alert.text | translate\" class=\"message\"></strong>\n </div>\n <p *ngIf=\"hasDetails(alert) && !isDetailsShow(alert)\" class=\"text-muted m-t-8\">\n <button\n title=\"{{ 'Show details' | translate }}\"\n class=\"btn btn-clean\"\n (click)=\"showDetails(alert)\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n {{ 'Show details' | translate }}\n </button>\n </p>\n <p *ngIf=\"hasDetails(alert) && isDetailsShow(alert)\" class=\"text-muted m-t-8\">\n <button title=\"{{ 'Hide details' | translate }}\" class=\"btn btn-clean\" (click)=\"closeDetails()\">\n <i c8yIcon=\"chevron-up\"></i>\n {{ 'Hide details' | translate }}\n </button>\n </p>\n <div *ngIf=\"isDetailsShow(alert)\">\n <div *ngIf=\"!isTemplateRef(detailDisplayedAlert.contents); else template(alert.detailedData)\">\n <pre><code [textContent]=\"detailDisplayedAlert.contents | translate\"></code></pre>\n </div>\n </div>\n</div>\n" }]
@@ -10628,7 +10628,7 @@ class SearchOutletComponent {
10628
10628
  }
10629
10629
  }
10630
10630
  SearchOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SearchOutletComponent, deps: [{ token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
10631
- SearchOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchOutletComponent, selector: "c8y-search-outlet", inputs: { search: "search" }, ngImport: i0, template: "<ng-container *ngFor=\"let item of getByPriority()\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
10631
+ SearchOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchOutletComponent, selector: "c8y-search-outlet", inputs: { search: "search" }, ngImport: i0, template: "<ng-container *ngFor=\"let item of getByPriority()\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n</ng-container>\n", dependencies: [{ kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
10632
10632
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SearchOutletComponent, decorators: [{
10633
10633
  type: Component,
10634
10634
  args: [{ selector: 'c8y-search-outlet', template: "<ng-container *ngFor=\"let item of getByPriority()\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n</ng-container>\n" }]
@@ -10649,7 +10649,7 @@ class BreadcrumbOutletComponent {
10649
10649
  }
10650
10650
  }
10651
10651
  BreadcrumbOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BreadcrumbOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10652
- BreadcrumbOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: BreadcrumbOutletComponent, selector: "c8y-breadcrumb-outlet", inputs: { breadcrumbs: "breadcrumbs" }, ngImport: i0, template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n aria-label=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n class=\"btn-show-all-breadcrumbs pull-left\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$8.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" }] });
10652
+ BreadcrumbOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: BreadcrumbOutletComponent, selector: "c8y-breadcrumb-outlet", inputs: { breadcrumbs: "breadcrumbs" }, ngImport: i0, template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n aria-label=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n class=\"btn-show-all-breadcrumbs pull-left\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i1$7.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" }] });
10653
10653
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BreadcrumbOutletComponent, decorators: [{
10654
10654
  type: Component,
10655
10655
  args: [{ selector: 'c8y-breadcrumb-outlet', template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n aria-label=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n class=\"btn-show-all-breadcrumbs pull-left\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n" }]
@@ -10754,7 +10754,7 @@ class AppIconComponent {
10754
10754
  }
10755
10755
  }
10756
10756
  AppIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppIconComponent, deps: [{ token: OptionsService }], target: i0.ɵɵFactoryTarget.Component });
10757
- AppIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppIconComponent, selector: "c8y-app-icon", inputs: { contextPath: "contextPath", name: "name", app: "app" }, host: { classAttribute: "c8y-app-icon" }, ngImport: i0, template: "<i *ngIf=\"model.showIcon\" [ngClass]=\"model.iconClass\" [ngStyle]=\"model.iconStyle\"></i>\n<span *ngIf=\"!model.showIcon\" class=\"app-noicon\"> {{model.appNameAbbr}}</span>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
10757
+ AppIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppIconComponent, selector: "c8y-app-icon", inputs: { contextPath: "contextPath", name: "name", app: "app" }, host: { classAttribute: "c8y-app-icon" }, ngImport: i0, template: "<i *ngIf=\"model.showIcon\" [ngClass]=\"model.iconClass\" [ngStyle]=\"model.iconStyle\"></i>\n<span *ngIf=\"!model.showIcon\" class=\"app-noicon\"> {{model.appNameAbbr}}</span>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
10758
10758
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppIconComponent, decorators: [{
10759
10759
  type: Component,
10760
10760
  args: [{ selector: 'c8y-app-icon', host: { class: 'c8y-app-icon' }, template: "<i *ngIf=\"model.showIcon\" [ngClass]=\"model.iconClass\" [ngStyle]=\"model.iconStyle\"></i>\n<span *ngIf=\"!model.showIcon\" class=\"app-noicon\"> {{model.appNameAbbr}}</span>\n" }]
@@ -10935,7 +10935,7 @@ class AppSwitcherComponent {
10935
10935
  }
10936
10936
  }
10937
10937
  AppSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppSwitcherComponent, deps: [{ token: AppSwitcherService }], target: i0.ɵɵFactoryTarget.Component });
10938
- AppSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppSwitcherComponent, selector: "c8y-app-switcher", ngImport: i0, template: "<div\n class=\"app-switcher-dropdown\"\n dropdown\n #appSwitcherDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\"\n>\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div\n *ngIf=\"!(switcherService.finishedLoading$ | async)\"\n class=\"d-flex a-i-center j-c-center p-4\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [name]=\"app.name\"\n [contextPath]=\"app.contextPath\"\n ></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: AppHrefPipe, name: "appHref" }, { kind: "pipe", type: IsActiveAppPipe, name: "isActiveApp" }] });
10938
+ AppSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AppSwitcherComponent, selector: "c8y-app-switcher", ngImport: i0, template: "<div\n class=\"app-switcher-dropdown\"\n dropdown\n #appSwitcherDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\"\n>\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div\n *ngIf=\"!(switcherService.finishedLoading$ | async)\"\n class=\"d-flex a-i-center j-c-center p-4\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [name]=\"app.name\"\n [contextPath]=\"app.contextPath\"\n ></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizeAppNamePipe, name: "humanizeAppName" }, { kind: "pipe", type: AppHrefPipe, name: "appHref" }, { kind: "pipe", type: IsActiveAppPipe, name: "isActiveApp" }] });
10939
10939
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AppSwitcherComponent, decorators: [{
10940
10940
  type: Component,
10941
10941
  args: [{ selector: 'c8y-app-switcher', template: "<div\n class=\"app-switcher-dropdown\"\n dropdown\n #appSwitcherDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"appSwitcherDropdown.isOpen\"\n>\n <button\n class=\"main-header-button c8y-dropdown dropdown-toggle\"\n id=\"appSwitcherDropdown\"\n dropdownToggle\n title=\"{{ 'Application switcher' | translate }}\"\n type=\"button\"\n >\n <i c8yIcon=\"th\" class=\"icon-2x\"></i>\n </button>\n <div\n *dropdownMenu\n class=\"app-switcher-dropdown-menu dropdown-menu\"\n aria-labelledby=\"appSwitcherDropdown\"\n role=\"group\"\n >\n <div\n *ngIf=\"!(switcherService.finishedLoading$ | async)\"\n class=\"d-flex a-i-center j-c-center p-4\"\n >\n <c8y-loading></c8y-loading>\n </div>\n <ng-container *ngIf=\"switcherService.oneCloudApps$ | async as oneCloudApps\">\n <div class=\"app-switcher-sagcloud\" *ngIf=\"oneCloudApps.length > 0\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n *ngFor=\"let app of oneCloudApps\"\n [href]=\"app | appHref\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon\n [app]=\"app\"\n [name]=\"app.name\"\n [contextPath]=\"app.contextPath\"\n ></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </ng-container>\n <div class=\"app-switcher\" *ngIf=\"switcherService.apps$ | async as apps\">\n <a\n title=\"{{ app.name | humanizeAppName | async }}\"\n class=\"appLink\"\n [ngClass]=\"(app | isActiveApp | async) ? 'active' : ''\"\n *ngFor=\"let app of apps\"\n [href]=\"app | appHref\"\n [rel]=\"app.type === 'EXTERNAL' ? 'noopener noreferrer' : ''\"\n c8yProductExperience\n [actionName]=\"'appSwitched'\"\n [actionData]=\"{ applicationName: app && app.name }\"\n >\n <c8y-app-icon [app]=\"app\" [name]=\"app.name\" [contextPath]=\"app.contextPath\"></c8y-app-icon>\n <span class=\"text-truncate-wrap\">{{ app | humanizeAppName | async }}</span>\n </a>\n </div>\n </div>\n</div>\n" }]
@@ -10982,12 +10982,12 @@ class ConfirmModalComponent {
10982
10982
  this.dismiss();
10983
10983
  }
10984
10984
  }
10985
- ConfirmModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ConfirmModalComponent, deps: [{ token: i1$9.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
10986
- ConfirmModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ConfirmModalComponent, selector: "c8y-confirm-modal", inputs: { title: "title", body: "body", confirmOptions: "confirmOptions", status: "status", labels: "labels" }, ngImport: i0, template: "<div class=\"c8y-prompt alert\" [ngClass]=\"[classAlert]\">\n <h3 class=\"m-b-16 d-flex a-i-center\" *ngIf=\"title\">\n <i class=\"dlt-c8y-icon\" [ngClass]=\"[classIcon]\"></i>\n <span *ngIf=\"title\">{{ title | translate }}</span>\n </h3>\n <p class=\"text-break-word m-b-16\">{{ body | translate }}</p>\n <div\n class=\"c8y-checkbox plain m-b-8\"\n *ngFor=\"let co of confirmOptions | showIfFilter | async | keyvalue\"\n >\n <label [title]=\"co.value.text | translate\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"co.value.checked\"\n (change)=\"co.value.checked = !co.value.checked\"\n [disabled]=\"confirmOptions[co.value.disabledByKey]?.checked\"\n />\n <span></span>\n <span class=\"text-muted\">{{ co.value.text | translate }}</span>\n </label>\n </div>\n <ng-content></ng-content>\n <div class=\"alert-footer\">\n <button\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n *ngIf=\"labels.cancel !== null\"\n (click)=\"dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"close()\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$5.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: ShowIfFilterPipe, name: "showIfFilter" }] });
10985
+ ConfirmModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ConfirmModalComponent, deps: [{ token: i1$8.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
10986
+ ConfirmModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ConfirmModalComponent, selector: "c8y-confirm-modal", inputs: { title: "title", body: "body", confirmOptions: "confirmOptions", status: "status", labels: "labels" }, ngImport: i0, template: "<div class=\"c8y-prompt alert\" [ngClass]=\"[classAlert]\" data-cy=\"prompt-alert\">\n <h3 class=\"m-b-16 d-flex a-i-center\" *ngIf=\"title\">\n <i class=\"dlt-c8y-icon\" [ngClass]=\"[classIcon]\"></i>\n <span *ngIf=\"title\">{{ title | translate }}</span>\n </h3>\n <p class=\"text-break-word m-b-16\">{{ body | translate }}</p>\n <div\n class=\"c8y-checkbox plain m-b-8\"\n *ngFor=\"let co of confirmOptions | showIfFilter | async | keyvalue\"\n >\n <label [title]=\"co.value.text | translate\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"co.value.checked\"\n (change)=\"co.value.checked = !co.value.checked\"\n [disabled]=\"confirmOptions[co.value.disabledByKey]?.checked\"\n />\n <span></span>\n <span class=\"text-muted\">{{ co.value.text | translate }}</span>\n </label>\n </div>\n <ng-content></ng-content>\n <div class=\"alert-footer\">\n <button\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n *ngIf=\"labels.cancel !== null\"\n (click)=\"dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"close()\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: ShowIfFilterPipe, name: "showIfFilter" }] });
10987
10987
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ConfirmModalComponent, decorators: [{
10988
10988
  type: Component,
10989
- args: [{ selector: 'c8y-confirm-modal', template: "<div class=\"c8y-prompt alert\" [ngClass]=\"[classAlert]\">\n <h3 class=\"m-b-16 d-flex a-i-center\" *ngIf=\"title\">\n <i class=\"dlt-c8y-icon\" [ngClass]=\"[classIcon]\"></i>\n <span *ngIf=\"title\">{{ title | translate }}</span>\n </h3>\n <p class=\"text-break-word m-b-16\">{{ body | translate }}</p>\n <div\n class=\"c8y-checkbox plain m-b-8\"\n *ngFor=\"let co of confirmOptions | showIfFilter | async | keyvalue\"\n >\n <label [title]=\"co.value.text | translate\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"co.value.checked\"\n (change)=\"co.value.checked = !co.value.checked\"\n [disabled]=\"confirmOptions[co.value.disabledByKey]?.checked\"\n />\n <span></span>\n <span class=\"text-muted\">{{ co.value.text | translate }}</span>\n </label>\n </div>\n <ng-content></ng-content>\n <div class=\"alert-footer\">\n <button\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n *ngIf=\"labels.cancel !== null\"\n (click)=\"dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"close()\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n" }]
10990
- }], ctorParameters: function () { return [{ type: i1$9.BsModalRef }]; }, propDecorators: { title: [{
10989
+ args: [{ selector: 'c8y-confirm-modal', template: "<div class=\"c8y-prompt alert\" [ngClass]=\"[classAlert]\" data-cy=\"prompt-alert\">\n <h3 class=\"m-b-16 d-flex a-i-center\" *ngIf=\"title\">\n <i class=\"dlt-c8y-icon\" [ngClass]=\"[classIcon]\"></i>\n <span *ngIf=\"title\">{{ title | translate }}</span>\n </h3>\n <p class=\"text-break-word m-b-16\">{{ body | translate }}</p>\n <div\n class=\"c8y-checkbox plain m-b-8\"\n *ngFor=\"let co of confirmOptions | showIfFilter | async | keyvalue\"\n >\n <label [title]=\"co.value.text | translate\" class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"co.value.checked\"\n (change)=\"co.value.checked = !co.value.checked\"\n [disabled]=\"confirmOptions[co.value.disabledByKey]?.checked\"\n />\n <span></span>\n <span class=\"text-muted\">{{ co.value.text | translate }}</span>\n </label>\n </div>\n <ng-content></ng-content>\n <div class=\"alert-footer\">\n <button\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n *ngIf=\"labels.cancel !== null\"\n (click)=\"dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"close()\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n" }]
10990
+ }], ctorParameters: function () { return [{ type: i1$8.BsModalRef }]; }, propDecorators: { title: [{
10991
10991
  type: Input
10992
10992
  }], body: [{
10993
10993
  type: Input
@@ -11086,14 +11086,14 @@ class ModalService {
11086
11086
  });
11087
11087
  }
11088
11088
  }
11089
- ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalService, deps: [{ token: i1$9.BsModalService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Injectable });
11089
+ ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalService, deps: [{ token: i1$8.BsModalService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Injectable });
11090
11090
  ModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalService, providedIn: 'root' });
11091
11091
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalService, decorators: [{
11092
11092
  type: Injectable,
11093
11093
  args: [{
11094
11094
  providedIn: 'root'
11095
11095
  }]
11096
- }], ctorParameters: function () { return [{ type: i1$9.BsModalService }, { type: GainsightService }]; } });
11096
+ }], ctorParameters: function () { return [{ type: i1$8.BsModalService }, { type: GainsightService }]; } });
11097
11097
 
11098
11098
  /**
11099
11099
  * Service to manage the login.
@@ -11677,12 +11677,12 @@ class LoginService {
11677
11677
  });
11678
11678
  }
11679
11679
  }
11680
- LoginService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginService, deps: [{ token: i0.Injector }, { token: i1$2.FetchClient }, { token: i1$2.BasicAuth }, { token: i1$2.CookieAuth }, { token: AppStateService }, { token: i1$2.UserService }, { token: i1$2.TenantService }, { token: i1$2.Realtime }, { token: AlertService }, { token: i1$1.ApiService }, { token: TenantUiService }, { token: i1$2.TenantLoginOptionsService }, { token: i1$3.TranslateService }, { token: i1$5.LocationStrategy, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
11680
+ LoginService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginService, deps: [{ token: i0.Injector }, { token: i1$2.FetchClient }, { token: i1$2.BasicAuth }, { token: i1$2.CookieAuth }, { token: AppStateService }, { token: i1$2.UserService }, { token: i1$2.TenantService }, { token: i1$2.Realtime }, { token: AlertService }, { token: i1$1.ApiService }, { token: TenantUiService }, { token: i1$2.TenantLoginOptionsService }, { token: i1$3.TranslateService }, { token: i2.LocationStrategy, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
11681
11681
  LoginService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginService });
11682
11682
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginService, decorators: [{
11683
11683
  type: Injectable
11684
11684
  }], ctorParameters: function () {
11685
- return [{ type: i0.Injector }, { type: i1$2.FetchClient }, { type: i1$2.BasicAuth }, { type: i1$2.CookieAuth }, { type: AppStateService }, { type: i1$2.UserService }, { type: i1$2.TenantService }, { type: i1$2.Realtime }, { type: AlertService }, { type: i1$1.ApiService }, { type: TenantUiService }, { type: i1$2.TenantLoginOptionsService }, { type: i1$3.TranslateService }, { type: i1$5.LocationStrategy, decorators: [{
11685
+ return [{ type: i0.Injector }, { type: i1$2.FetchClient }, { type: i1$2.BasicAuth }, { type: i1$2.CookieAuth }, { type: AppStateService }, { type: i1$2.UserService }, { type: i1$2.TenantService }, { type: i1$2.Realtime }, { type: AlertService }, { type: i1$1.ApiService }, { type: TenantUiService }, { type: i1$2.TenantLoginOptionsService }, { type: i1$3.TranslateService }, { type: i2.LocationStrategy, decorators: [{
11686
11686
  type: Optional
11687
11687
  }] }];
11688
11688
  } });
@@ -11847,7 +11847,7 @@ class MessagesComponent {
11847
11847
  }
11848
11848
  }
11849
11849
  MessagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MessagesComponent, deps: [{ token: i1$3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
11850
- MessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: MessagesComponent, selector: "c8y-messages", inputs: { show: "show", defaults: "defaults" }, queries: [{ propertyName: "customMessages", predicate: MessageDirective }], usesOnChanges: true, ngImport: i0, template: "<small class=\"form-control-feedback-message\">\n <div class=\"d-block\" *ngFor=\"let msg of messages\">\n {{msg | translate}}\n </div>\n <ng-content></ng-content>\n</small>\n", dependencies: [{ kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
11850
+ MessagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: MessagesComponent, selector: "c8y-messages", inputs: { show: "show", defaults: "defaults" }, queries: [{ propertyName: "customMessages", predicate: MessageDirective }], usesOnChanges: true, ngImport: i0, template: "<small class=\"form-control-feedback-message\">\n <div class=\"d-block\" *ngFor=\"let msg of messages\">\n {{msg | translate}}\n </div>\n <ng-content></ng-content>\n</small>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
11851
11851
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MessagesComponent, decorators: [{
11852
11852
  type: Component,
11853
11853
  args: [{ selector: 'c8y-messages', template: "<small class=\"form-control-feedback-message\">\n <div class=\"d-block\" *ngFor=\"let msg of messages\">\n {{msg | translate}}\n </div>\n <ng-content></ng-content>\n</small>\n" }]
@@ -11955,7 +11955,7 @@ class FormGroupComponent {
11955
11955
  }
11956
11956
  }
11957
11957
  FormGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FormGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11958
- FormGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FormGroupComponent, selector: "c8y-form-group", inputs: { hasError: "hasError", hasWarning: "hasWarning", hasSuccess: "hasSuccess", novalidation: "novalidation", status: "status" }, host: { properties: { "class.has-error": "this.error", "class.has-warning": "this.warning", "class.has-success": "this.success" }, classAttribute: "form-group" }, queries: [{ propertyName: "customErrorMessage", first: true, predicate: MessagesComponent, descendants: true }, { propertyName: "model", first: true, predicate: NgModel, descendants: true, static: true }, { propertyName: "formControlName", first: true, predicate: FormControlName, descendants: true, static: true }], ngImport: i0, template: "<ng-content></ng-content>\n<c8y-messages *ngIf=\"!customErrorMessage\" [show]=\"errors\"></c8y-messages>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }] });
11958
+ FormGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FormGroupComponent, selector: "c8y-form-group", inputs: { hasError: "hasError", hasWarning: "hasWarning", hasSuccess: "hasSuccess", novalidation: "novalidation", status: "status" }, host: { properties: { "class.has-error": "this.error", "class.has-warning": "this.warning", "class.has-success": "this.success" }, classAttribute: "form-group" }, queries: [{ propertyName: "customErrorMessage", first: true, predicate: MessagesComponent, descendants: true }, { propertyName: "model", first: true, predicate: NgModel, descendants: true, static: true }, { propertyName: "formControlName", first: true, predicate: FormControlName, descendants: true, static: true }], ngImport: i0, template: "<ng-content></ng-content>\n<c8y-messages *ngIf=\"!customErrorMessage\" [show]=\"errors\"></c8y-messages>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }] });
11959
11959
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FormGroupComponent, decorators: [{
11960
11960
  type: Component,
11961
11961
  args: [{ selector: 'c8y-form-group', host: {
@@ -12146,13 +12146,13 @@ class ModalComponent {
12146
12146
  }
12147
12147
  }
12148
12148
  }
12149
- ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalComponent, deps: [{ token: i1$9.BsModalRef, optional: true }], target: i0.ɵɵFactoryTarget.Component });
12150
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ModalComponent, selector: "c8y-modal", inputs: { disabled: "disabled", close: "close", dismiss: "dismiss", title: "title", body: "body", customFooter: "customFooter", headerClasses: "headerClasses", labels: "labels" }, outputs: { onDismiss: "onDismiss", onClose: "onClose" }, host: { listeners: { "document:keydown.enter": "onEnterKeyDown($event)" } }, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header {{ headerClasses }}\" [ngClass]=\"{ separator: title }\">\n <ng-content select=\"[c8y-modal-title]\"></ng-content>\n <div [hidden]=\"!title\" id=\"modal-title\" class=\"modal-title\">\n {{ title | translate }}\n </div>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div [ngClass]=\"{ 'modal-body': !customFooter, 'd-contents': customFooter }\">\n <p *ngIf=\"title\" class=\"text-center text-break-word\">\n {{ body }}\n </p>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"modal-footer\" *ngIf=\"!customFooter\">\n <ng-content select=\"[c8y-modal-footer]\"></ng-content>\n <button\n type=\"button\"\n title=\"{{ labels.cancel | translate }}\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"_dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n type=\"button\"\n title=\"{{ labels.ok | translate }}\"\n *ngIf=\"labels.ok\"\n class=\"btn btn-primary\"\n (click)=\"_close()\"\n [disabled]=\"disabled\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
12149
+ ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalComponent, deps: [{ token: i1$8.BsModalRef, optional: true }], target: i0.ɵɵFactoryTarget.Component });
12150
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ModalComponent, selector: "c8y-modal", inputs: { disabled: "disabled", close: "close", dismiss: "dismiss", title: "title", body: "body", customFooter: "customFooter", headerClasses: "headerClasses", labels: "labels" }, outputs: { onDismiss: "onDismiss", onClose: "onClose" }, host: { listeners: { "document:keydown.enter": "onEnterKeyDown($event)" } }, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header {{ headerClasses }}\" [ngClass]=\"{ separator: title }\">\n <ng-content select=\"[c8y-modal-title]\"></ng-content>\n <div [hidden]=\"!title\" id=\"modal-title\" class=\"modal-title\">\n {{ title | translate }}\n </div>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div [ngClass]=\"{ 'modal-body': !customFooter, 'd-contents': customFooter }\">\n <p *ngIf=\"title\" class=\"text-center text-break-word\">\n {{ body }}\n </p>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"modal-footer\" *ngIf=\"!customFooter\">\n <ng-content select=\"[c8y-modal-footer]\"></ng-content>\n <button\n type=\"button\"\n title=\"{{ labels.cancel | translate }}\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"_dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n type=\"button\"\n title=\"{{ labels.ok | translate }}\"\n *ngIf=\"labels.ok\"\n class=\"btn btn-primary\"\n (click)=\"_close()\"\n [disabled]=\"disabled\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
12151
12151
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalComponent, decorators: [{
12152
12152
  type: Component,
12153
12153
  args: [{ selector: 'c8y-modal', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header {{ headerClasses }}\" [ngClass]=\"{ separator: title }\">\n <ng-content select=\"[c8y-modal-title]\"></ng-content>\n <div [hidden]=\"!title\" id=\"modal-title\" class=\"modal-title\">\n {{ title | translate }}\n </div>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div [ngClass]=\"{ 'modal-body': !customFooter, 'd-contents': customFooter }\">\n <p *ngIf=\"title\" class=\"text-center text-break-word\">\n {{ body }}\n </p>\n <ng-content></ng-content>\n </div>\n </div>\n <div class=\"modal-footer\" *ngIf=\"!customFooter\">\n <ng-content select=\"[c8y-modal-footer]\"></ng-content>\n <button\n type=\"button\"\n title=\"{{ labels.cancel | translate }}\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"_dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n type=\"button\"\n title=\"{{ labels.ok | translate }}\"\n *ngIf=\"labels.ok\"\n class=\"btn btn-primary\"\n (click)=\"_close()\"\n [disabled]=\"disabled\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n" }]
12154
12154
  }], ctorParameters: function () {
12155
- return [{ type: i1$9.BsModalRef, decorators: [{
12155
+ return [{ type: i1$8.BsModalRef, decorators: [{
12156
12156
  type: Optional
12157
12157
  }] }];
12158
12158
  }, propDecorators: { onDismiss: [{
@@ -12261,12 +12261,12 @@ class CurrentPasswordModalComponent {
12261
12261
  this.modal.hide();
12262
12262
  }
12263
12263
  }
12264
- CurrentPasswordModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CurrentPasswordModalComponent, deps: [{ token: i1$9.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
12264
+ CurrentPasswordModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CurrentPasswordModalComponent, deps: [{ token: i1$8.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
12265
12265
  CurrentPasswordModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CurrentPasswordModalComponent, selector: "c8y-current-password-modal", outputs: { currentPasswordEmitter: "currentPasswordEmitter" }, ngImport: i0, template: "<c8y-modal [customFooter]=\"true\" [title]=\"'Confirm your current password' | translate\" #modal>\n <form #confirmForm=\"ngForm\" (ngSubmit)=\"confirmForm.form.valid && passwordConfirm()\">\n <div class=\"d-block p-24\">\n <c8y-form-group [hasWarning]=\"true\">\n <label translate for=\"currentPassword\">Enter your password</label>\n <input\n id=\"currentPassword\"\n [(ngModel)]=\"password\"\n type=\"password\"\n name=\"password\"\n class=\"form-control\"\n required\n />\n <c8y-messages>\n <c8y-message translate>\n The password of the user that you are currently logged in with.\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n title=\"{{ 'Confirm' | translate }}\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!confirmForm.form.valid\"\n >\n {{ 'Confirm' | translate }}\n </button>\n </div>\n </form>\n</c8y-modal>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
12266
12266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CurrentPasswordModalComponent, decorators: [{
12267
12267
  type: Component,
12268
12268
  args: [{ selector: 'c8y-current-password-modal', template: "<c8y-modal [customFooter]=\"true\" [title]=\"'Confirm your current password' | translate\" #modal>\n <form #confirmForm=\"ngForm\" (ngSubmit)=\"confirmForm.form.valid && passwordConfirm()\">\n <div class=\"d-block p-24\">\n <c8y-form-group [hasWarning]=\"true\">\n <label translate for=\"currentPassword\">Enter your password</label>\n <input\n id=\"currentPassword\"\n [(ngModel)]=\"password\"\n type=\"password\"\n name=\"password\"\n class=\"form-control\"\n required\n />\n <c8y-messages>\n <c8y-message translate>\n The password of the user that you are currently logged in with.\n </c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n title=\"{{ 'Confirm' | translate }}\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!confirmForm.form.valid\"\n >\n {{ 'Confirm' | translate }}\n </button>\n </div>\n </form>\n</c8y-modal>\n" }]
12269
- }], ctorParameters: function () { return [{ type: i1$9.BsModalRef }]; }, propDecorators: { currentPasswordEmitter: [{
12269
+ }], ctorParameters: function () { return [{ type: i1$8.BsModalRef }]; }, propDecorators: { currentPasswordEmitter: [{
12270
12270
  type: Output
12271
12271
  }] } });
12272
12272
 
@@ -12348,11 +12348,11 @@ class PasswordService {
12348
12348
  return this.DEFAULT_PASSWORD_MIN_LENGTH;
12349
12349
  }
12350
12350
  }
12351
- PasswordService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PasswordService, deps: [{ token: i1$9.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable });
12351
+ PasswordService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PasswordService, deps: [{ token: i1$8.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable });
12352
12352
  PasswordService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PasswordService });
12353
12353
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PasswordService, decorators: [{
12354
12354
  type: Injectable
12355
- }], ctorParameters: function () { return [{ type: i1$9.BsModalService }]; } });
12355
+ }], ctorParameters: function () { return [{ type: i1$8.BsModalService }]; } });
12356
12356
 
12357
12357
  class TotpChallengeComponent {
12358
12358
  constructor(loginService, users, alert) {
@@ -12399,7 +12399,7 @@ class TotpChallengeComponent {
12399
12399
  }
12400
12400
  }
12401
12401
  TotpChallengeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TotpChallengeComponent, deps: [{ token: LoginService }, { token: i1$2.UserService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
12402
- TotpChallengeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TotpChallengeComponent, selector: "c8y-totp-challenge", inputs: { verify: "verify", loading: "loading", hasError: "hasError" }, outputs: { onSuccess: "onSuccess", totpUnconfirmedEmitter: "totpUnconfirmedEmitter" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<form #totpForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"verifyCode()\" novalidate>\n <div class=\"d-block p-24 p-b-0\">\n <c8y-form-group\n [hasError]=\"hasError\"\n [novalidation]=\"true\"\n [ngClass]=\"hasError ? 'p-b-24' : ''\"\n >\n <label translate for=\"totpToken\">Verification code</label>\n\n <input\n id=\"totpToken\"\n [(ngModel)]=\"model.token\"\n name=\"totpToken\"\n type=\"text\"\n autofocus\n autocapitalize=\"off\"\n autocorrect=\"off\"\n autocomplete=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 624327\"\n required\n />\n\n <c8y-messages>\n <c8y-message *ngIf=\"hasError\" translate>\n Invalid verification code. In case of key loss, contact your platform administrator.\n </c8y-message>\n </c8y-messages>\n <p id=\"helpinput\" *ngIf=\"!hasError\" class=\"help-block\" translate>\n In case of key loss, please contact your platform administrator.\n </p>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom p-b-0\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n *ngIf=\"!loading\"\n title=\"{{ 'Verify' | translate }}\"\n [disabled]=\"!totpForm.form.valid\"\n type=\"submit\"\n class=\"btn btn-primary\"\n >\n {{ 'Verify' | translate }}\n </button>\n\n <button\n *ngIf=\"loading\"\n title=\"{{ 'Verifying\u2026' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-pending\"\n >\n {{ 'Verifying\u2026' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
12402
+ TotpChallengeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TotpChallengeComponent, selector: "c8y-totp-challenge", inputs: { verify: "verify", loading: "loading", hasError: "hasError" }, outputs: { onSuccess: "onSuccess", totpUnconfirmedEmitter: "totpUnconfirmedEmitter" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<form #totpForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"verifyCode()\" novalidate>\n <div class=\"d-block p-24 p-b-0\">\n <c8y-form-group\n [hasError]=\"hasError\"\n [novalidation]=\"true\"\n [ngClass]=\"hasError ? 'p-b-24' : ''\"\n >\n <label translate for=\"totpToken\">Verification code</label>\n\n <input\n id=\"totpToken\"\n [(ngModel)]=\"model.token\"\n name=\"totpToken\"\n type=\"text\"\n autofocus\n autocapitalize=\"off\"\n autocorrect=\"off\"\n autocomplete=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 624327\"\n required\n />\n\n <c8y-messages>\n <c8y-message *ngIf=\"hasError\" translate>\n Invalid verification code. In case of key loss, contact your platform administrator.\n </c8y-message>\n </c8y-messages>\n <p id=\"helpinput\" *ngIf=\"!hasError\" class=\"help-block\" translate>\n In case of key loss, please contact your platform administrator.\n </p>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom p-b-0\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n *ngIf=\"!loading\"\n title=\"{{ 'Verify' | translate }}\"\n [disabled]=\"!totpForm.form.valid\"\n type=\"submit\"\n class=\"btn btn-primary\"\n >\n {{ 'Verify' | translate }}\n </button>\n\n <button\n *ngIf=\"loading\"\n title=\"{{ 'Verifying\u2026' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-pending\"\n >\n {{ 'Verifying\u2026' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
12403
12403
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TotpChallengeComponent, decorators: [{
12404
12404
  type: Component,
12405
12405
  args: [{ selector: 'c8y-totp-challenge', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<form #totpForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"verifyCode()\" novalidate>\n <div class=\"d-block p-24 p-b-0\">\n <c8y-form-group\n [hasError]=\"hasError\"\n [novalidation]=\"true\"\n [ngClass]=\"hasError ? 'p-b-24' : ''\"\n >\n <label translate for=\"totpToken\">Verification code</label>\n\n <input\n id=\"totpToken\"\n [(ngModel)]=\"model.token\"\n name=\"totpToken\"\n type=\"text\"\n autofocus\n autocapitalize=\"off\"\n autocorrect=\"off\"\n autocomplete=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 624327\"\n required\n />\n\n <c8y-messages>\n <c8y-message *ngIf=\"hasError\" translate>\n Invalid verification code. In case of key loss, contact your platform administrator.\n </c8y-message>\n </c8y-messages>\n <p id=\"helpinput\" *ngIf=\"!hasError\" class=\"help-block\" translate>\n In case of key loss, please contact your platform administrator.\n </p>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom p-b-0\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n *ngIf=\"!loading\"\n title=\"{{ 'Verify' | translate }}\"\n [disabled]=\"!totpForm.form.valid\"\n type=\"submit\"\n class=\"btn btn-primary\"\n >\n {{ 'Verify' | translate }}\n </button>\n\n <button\n *ngIf=\"loading\"\n title=\"{{ 'Verifying\u2026' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-pending\"\n >\n {{ 'Verifying\u2026' | translate }}\n </button>\n </div>\n</form>\n" }]
@@ -12453,7 +12453,7 @@ class TotpSetupComponent {
12453
12453
  }
12454
12454
  }
12455
12455
  TotpSetupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TotpSetupComponent, deps: [{ token: i1$2.UserService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
12456
- TotpSetupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TotpSetupComponent, selector: "c8y-totp-setup", ngImport: i0, template: "<div class=\"text-center\">\n <p class=\"m-24 m-t-16 m-b-0\" translate>\n Scan this QR code with your smartphone using the Google Authenticator app.\n </p>\n\n <div class=\"d-flex j-c-center\">\n <qrcode\n [width]=\"180\"\n *ngIf=\"totpSecret\"\n [qrdata]=\"qrData\"\n [errorCorrectionLevel]=\"'M'\"\n [elementType]=\"'svg'\"\n ></qrcode>\n </div>\n <p class=\"text-center text-muted\">\n {{ secret }}\n </p>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.QRCodeComponent, selector: "qrcode", inputs: ["allowEmptyString", "colorDark", "colorLight", "cssClass", "elementType", "errorCorrectionLevel", "imageSrc", "imageHeight", "imageWidth", "margin", "qrdata", "scale", "version", "width", "alt", "ariaLabel", "title"], outputs: ["qrCodeURL"] }] });
12456
+ TotpSetupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TotpSetupComponent, selector: "c8y-totp-setup", ngImport: i0, template: "<div class=\"text-center\">\n <p class=\"m-24 m-t-16 m-b-0\" translate>\n Scan this QR code with your smartphone using the Google Authenticator app.\n </p>\n\n <div class=\"d-flex j-c-center\">\n <qrcode\n [width]=\"180\"\n *ngIf=\"totpSecret\"\n [qrdata]=\"qrData\"\n [errorCorrectionLevel]=\"'M'\"\n [elementType]=\"'svg'\"\n ></qrcode>\n </div>\n <p class=\"text-center text-muted\">\n {{ secret }}\n </p>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5$1.QRCodeComponent, selector: "qrcode", inputs: ["allowEmptyString", "colorDark", "colorLight", "cssClass", "elementType", "errorCorrectionLevel", "imageSrc", "imageHeight", "imageWidth", "margin", "qrdata", "scale", "version", "width", "alt", "ariaLabel", "title"], outputs: ["qrCodeURL"] }] });
12457
12457
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TotpSetupComponent, decorators: [{
12458
12458
  type: Component,
12459
12459
  args: [{ selector: 'c8y-totp-setup', template: "<div class=\"text-center\">\n <p class=\"m-24 m-t-16 m-b-0\" translate>\n Scan this QR code with your smartphone using the Google Authenticator app.\n </p>\n\n <div class=\"d-flex j-c-center\">\n <qrcode\n [width]=\"180\"\n *ngIf=\"totpSecret\"\n [qrdata]=\"qrData\"\n [errorCorrectionLevel]=\"'M'\"\n [elementType]=\"'svg'\"\n ></qrcode>\n </div>\n <p class=\"text-center text-muted\">\n {{ secret }}\n </p>\n</div>\n" }]
@@ -12483,12 +12483,12 @@ class UserTotpSetupComponent {
12483
12483
  this.modal.hide();
12484
12484
  }
12485
12485
  }
12486
- UserTotpSetupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserTotpSetupComponent, deps: [{ token: i1$2.UserService }, { token: ModalService }, { token: i1$9.BsModalRef }, { token: LoginService }], target: i0.ɵɵFactoryTarget.Component });
12486
+ UserTotpSetupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserTotpSetupComponent, deps: [{ token: i1$2.UserService }, { token: ModalService }, { token: i1$8.BsModalRef }, { token: LoginService }], target: i0.ɵɵFactoryTarget.Component });
12487
12487
  UserTotpSetupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserTotpSetupComponent, selector: "c8y-user-totp-setup", ngImport: i0, template: "<c8y-modal [customFooter]=\"true\" [title]=\"'Set up two-factor authentication' | translate\">\n <c8y-totp-setup></c8y-totp-setup>\n <c8y-totp-challenge (onSuccess)=\"totpSetupVerified()\" (totpUnconfirmedEmitter)=\"close()\"></c8y-totp-challenge>\n</c8y-modal>\n", dependencies: [{ kind: "component", type: ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: TotpChallengeComponent, selector: "c8y-totp-challenge", inputs: ["verify", "loading", "hasError"], outputs: ["onSuccess", "totpUnconfirmedEmitter"] }, { kind: "component", type: TotpSetupComponent, selector: "c8y-totp-setup" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
12488
12488
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserTotpSetupComponent, decorators: [{
12489
12489
  type: Component,
12490
12490
  args: [{ selector: 'c8y-user-totp-setup', template: "<c8y-modal [customFooter]=\"true\" [title]=\"'Set up two-factor authentication' | translate\">\n <c8y-totp-setup></c8y-totp-setup>\n <c8y-totp-challenge (onSuccess)=\"totpSetupVerified()\" (totpUnconfirmedEmitter)=\"close()\"></c8y-totp-challenge>\n</c8y-modal>\n" }]
12491
- }], ctorParameters: function () { return [{ type: i1$2.UserService }, { type: ModalService }, { type: i1$9.BsModalRef }, { type: LoginService }]; } });
12491
+ }], ctorParameters: function () { return [{ type: i1$2.UserService }, { type: ModalService }, { type: i1$8.BsModalRef }, { type: LoginService }]; } });
12492
12492
 
12493
12493
  class PhoneValidationDirective {
12494
12494
  constructor() {
@@ -12697,7 +12697,7 @@ class PasswordCheckListComponent {
12697
12697
  }
12698
12698
  }
12699
12699
  PasswordCheckListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PasswordCheckListComponent, deps: [{ token: LoginService }, { token: PasswordService }, { token: PasswordService }], target: i0.ɵɵFactoryTarget.Component });
12700
- PasswordCheckListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: PasswordCheckListComponent, selector: "c8y-password-check-list", inputs: { password: "password" }, ngImport: i0, template: "<div>\n <span class=\"small\">{{ 'Please meet 5 out of the 5 conditions below' | translate }}:</span>\n <ul class=\"list-unstyled\">\n <li class=\"small\" *ngFor=\"let requirement of checklist\">\n <i [c8yIcon]=\"requirement.icon\" class=\"text-success\"></i>\n <span\n class=\"small {{ requirement.contextualColor }}\"\n [translate]=\"requirement.label\"\n [translateParams]=\"this.translateParams\"\n ></span>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
12700
+ PasswordCheckListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: PasswordCheckListComponent, selector: "c8y-password-check-list", inputs: { password: "password" }, ngImport: i0, template: "<div>\n <span class=\"small\">{{ 'Please meet 5 out of the 5 conditions below' | translate }}:</span>\n <ul class=\"list-unstyled\">\n <li class=\"small\" *ngFor=\"let requirement of checklist\">\n <i [c8yIcon]=\"requirement.icon\" class=\"text-success\"></i>\n <span\n class=\"small {{ requirement.contextualColor }}\"\n [translate]=\"requirement.label\"\n [translateParams]=\"this.translateParams\"\n ></span>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
12701
12701
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PasswordCheckListComponent, decorators: [{
12702
12702
  type: Component,
12703
12703
  args: [{ selector: 'c8y-password-check-list', template: "<div>\n <span class=\"small\">{{ 'Please meet 5 out of the 5 conditions below' | translate }}:</span>\n <ul class=\"list-unstyled\">\n <li class=\"small\" *ngFor=\"let requirement of checklist\">\n <i [c8yIcon]=\"requirement.icon\" class=\"text-success\"></i>\n <span\n class=\"small {{ requirement.contextualColor }}\"\n [translate]=\"requirement.label\"\n [translateParams]=\"this.translateParams\"\n ></span>\n </li>\n </ul>\n</div>\n" }]
@@ -12743,7 +12743,7 @@ class NewPasswordComponent {
12743
12743
  }
12744
12744
  }
12745
12745
  NewPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NewPasswordComponent, deps: [{ token: LoginService }], target: i0.ɵɵFactoryTarget.Component });
12746
- NewPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: NewPasswordComponent, selector: "c8y-new-password", outputs: { password: "password" }, ngImport: i0, template: "<div class=\"form-group\">\n <button type=\"button\" class=\"btn btn-default\" (click)=\"toggleChangePassword()\">\n <ng-container *ngIf=\"!changePassword\">\n {{ 'Change password' | translate }}\n </ng-container>\n <ng-container *ngIf=\"changePassword\">\n {{ 'Cancel password change' | translate }}\n </ng-container>\n </button>\n</div>\n\n<div *ngIf=\"changePassword\" class=\"row content-flex-50\">\n <div class=\"col-7\">\n <c8y-form-group>\n <label for=\"newPassword\" translate>Password</label>\n <input\n id=\"newPassword\"\n name=\"newPassword\"\n type=\"password\"\n #newPassword=\"ngModel\"\n class=\"form-control\"\n [(ngModel)]=\"model.newPassword\"\n (change)=\"newPasswordChanged()\"\n (input)=\"newPasswordConfirm.control.updateValueAndValidity()\"\n required\n c8yDefaultValidation=\"password\"\n autocomplete=\"new-password\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label for=\"newConfirmPassword\" translate>Confirm password</label>\n <input\n id=\"newConfirmPassword\"\n name=\"newPasswordConfirm\"\n type=\"password\"\n #newPasswordConfirm=\"ngModel\"\n class=\"form-control\"\n [(ngModel)]=\"model.newPasswordConfirm\"\n required\n passwordConfirm=\"newPassword\"\n autocomplete=\"new-password\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-5\">\n <c8y-password-strength\n [password]=\"model.newPassword\"\n (strength)=\"model.strength = $event\"\n ></c8y-password-strength>\n\n <c8y-password-check-list\n class=\"m-t-32\"\n [password]=\"model.newPassword\"\n [hidden]=\"!passwordEnforced\"\n ></c8y-password-check-list>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PasswordConfirm, selector: "[passwordConfirm]" }, { kind: "component", type: PasswordStrengthComponent, selector: "c8y-password-strength", inputs: ["password"], outputs: ["strength"] }, { kind: "component", type: PasswordCheckListComponent, selector: "c8y-password-check-list", inputs: ["password"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
12746
+ NewPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: NewPasswordComponent, selector: "c8y-new-password", outputs: { password: "password" }, ngImport: i0, template: "<div class=\"form-group\">\n <button type=\"button\" class=\"btn btn-default\" (click)=\"toggleChangePassword()\">\n <ng-container *ngIf=\"!changePassword\">\n {{ 'Change password' | translate }}\n </ng-container>\n <ng-container *ngIf=\"changePassword\">\n {{ 'Cancel password change' | translate }}\n </ng-container>\n </button>\n</div>\n\n<div *ngIf=\"changePassword\" class=\"row content-flex-50\">\n <div class=\"col-7\">\n <c8y-form-group>\n <label for=\"newPassword\" translate>Password</label>\n <input\n id=\"newPassword\"\n name=\"newPassword\"\n type=\"password\"\n #newPassword=\"ngModel\"\n class=\"form-control\"\n [(ngModel)]=\"model.newPassword\"\n (change)=\"newPasswordChanged()\"\n (input)=\"newPasswordConfirm.control.updateValueAndValidity()\"\n required\n c8yDefaultValidation=\"password\"\n autocomplete=\"new-password\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label for=\"newConfirmPassword\" translate>Confirm password</label>\n <input\n id=\"newConfirmPassword\"\n name=\"newPasswordConfirm\"\n type=\"password\"\n #newPasswordConfirm=\"ngModel\"\n class=\"form-control\"\n [(ngModel)]=\"model.newPasswordConfirm\"\n required\n passwordConfirm=\"newPassword\"\n autocomplete=\"new-password\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-5\">\n <c8y-password-strength\n [password]=\"model.newPassword\"\n (strength)=\"model.strength = $event\"\n ></c8y-password-strength>\n\n <c8y-password-check-list\n class=\"m-t-32\"\n [password]=\"model.newPassword\"\n [hidden]=\"!passwordEnforced\"\n ></c8y-password-check-list>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: PasswordConfirm, selector: "[passwordConfirm]" }, { kind: "component", type: PasswordStrengthComponent, selector: "c8y-password-strength", inputs: ["password"], outputs: ["strength"] }, { kind: "component", type: PasswordCheckListComponent, selector: "c8y-password-check-list", inputs: ["password"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] });
12747
12747
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NewPasswordComponent, decorators: [{
12748
12748
  type: Component,
12749
12749
  args: [{ selector: 'c8y-new-password', viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], template: "<div class=\"form-group\">\n <button type=\"button\" class=\"btn btn-default\" (click)=\"toggleChangePassword()\">\n <ng-container *ngIf=\"!changePassword\">\n {{ 'Change password' | translate }}\n </ng-container>\n <ng-container *ngIf=\"changePassword\">\n {{ 'Cancel password change' | translate }}\n </ng-container>\n </button>\n</div>\n\n<div *ngIf=\"changePassword\" class=\"row content-flex-50\">\n <div class=\"col-7\">\n <c8y-form-group>\n <label for=\"newPassword\" translate>Password</label>\n <input\n id=\"newPassword\"\n name=\"newPassword\"\n type=\"password\"\n #newPassword=\"ngModel\"\n class=\"form-control\"\n [(ngModel)]=\"model.newPassword\"\n (change)=\"newPasswordChanged()\"\n (input)=\"newPasswordConfirm.control.updateValueAndValidity()\"\n required\n c8yDefaultValidation=\"password\"\n autocomplete=\"new-password\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label for=\"newConfirmPassword\" translate>Confirm password</label>\n <input\n id=\"newConfirmPassword\"\n name=\"newPasswordConfirm\"\n type=\"password\"\n #newPasswordConfirm=\"ngModel\"\n class=\"form-control\"\n [(ngModel)]=\"model.newPasswordConfirm\"\n required\n passwordConfirm=\"newPassword\"\n autocomplete=\"new-password\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-5\">\n <c8y-password-strength\n [password]=\"model.newPassword\"\n (strength)=\"model.strength = $event\"\n ></c8y-password-strength>\n\n <c8y-password-check-list\n class=\"m-t-32\"\n [password]=\"model.newPassword\"\n [hidden]=\"!passwordEnforced\"\n ></c8y-password-check-list>\n </div>\n</div>\n" }]
@@ -12856,12 +12856,12 @@ class UserEditComponent {
12856
12856
  });
12857
12857
  }
12858
12858
  }
12859
- UserEditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEditComponent, deps: [{ token: AppStateService }, { token: TranslateService }, { token: i1$9.BsModalService }, { token: AlertService }, { token: i1$2.UserService }, { token: i1$2.TenantLoginOptionsService }, { token: i1$2.TenantService }, { token: UserPreferencesService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Component });
12860
- UserEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserEditComponent, selector: "c8y-user-edit", inputs: { lang: "lang", loading: "loading", user: "user", showProductUsageSetting: "showProductUsageSetting", isUsageTrackingEnabled: "isUsageTrackingEnabled", isGainsightEngagementsEnabled: "isGainsightEngagementsEnabled" }, outputs: { onUser: "onUser", onLanguage: "onLanguage", onProductExperience: "onProductExperience", onGainsightEngagements: "onGainsightEngagements", onCancel: "onCancel" }, ngImport: i0, template: "<form #userForm=\"ngForm\" (ngSubmit)=\"userForm.form.valid && save()\">\n <div class=\"d-block p-24 p-b-0\">\n <div class=\"alert alert-warning\" role=\"alert\" *ngIf=\"userIsExternal\" translate>\n Some of the user settings are not editable here because they are managed via your\n authorization server.\n </div>\n <c8y-form-group>\n <label translate for=\"userName\">Username (for example, email)</label>\n <input\n id=\"userName\"\n class=\"form-control\"\n [(ngModel)]=\"user.userName\"\n name=\"userName\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [disabled]=\"user.id\"\n c8yDefaultValidation=\"user\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate for=\"displayName\">Login alias</label>\n <input\n id=\"displayName\"\n class=\"form-control\"\n [(ngModel)]=\"user.displayName\"\n name=\"displayName\"\n autocomplete=\"off\"\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe`LOCALIZE`' | translate }}\"\n [disabled]=\"userIsExternal\"\n c8yDefaultValidation=\"loginAlias\"\n />\n </c8y-form-group>\n\n <c8y-form-group [hasWarning]=\"!user.email\">\n <label translate for=\"userEmail\">Email</label>\n <input\n id=\"userEmail\"\n class=\"form-control\"\n type=\"email\"\n name=\"email\"\n [maxlength]=\"254\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [(ngModel)]=\"user.email\"\n email\n [required]=\"true\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userFirstName\">First name</label>\n <input\n id=\"userFirstName\"\n class=\"form-control\"\n autocomplete=\"off\"\n maxlength=\"50\"\n name=\"firstName\"\n [(ngModel)]=\"user.firstName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userLastName\">Last name</label>\n <input\n id=\"userLastName\"\n class=\"form-control\"\n autocomplete=\"off\"\n maxlength=\"50\"\n name=\"lastName\"\n [(ngModel)]=\"user.lastName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <c8y-form-group>\n <label translate for=\"userTelephone\">Telephone</label>\n <input\n id=\"userTelephone\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"phone\"\n maxlength=\"254\"\n [(ngModel)]=\"user.phone\"\n placeholder=\"{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}\"\n c8yPhoneValidation\n [required]=\"isPhoneRequired\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate for=\"userLang\">Language</label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n class=\"form-control\"\n #selectLang\n name=\"lang\"\n [(ngModel)]=\"lang\"\n (change)=\"onLanguage.emit(selectLang.value)\"\n >\n <option *ngFor=\"let lang of langs\" [value]=\"lang\">\n {{ translate.getNativeLanguage(lang) }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n\n <c8y-form-group class=\"p-t-16 separator-top\" *ngIf=\"showProductUsageSetting\">\n <label translate>Product experience</label>\n <label class=\"c8y-switch\" for=\"productUsageTracking\">\n <input\n id=\"productUsageTracking\"\n name=\"productUsageTracking\"\n type=\"checkbox\"\n (change)=\"onEnablingProductUsageTracking(isUsageTrackingEnabled)\"\n [(ngModel)]=\"isUsageTrackingEnabled\"\n />\n <span></span>\n {{ 'Enable tracking to enhance the product experience' | translate }}\n </label>\n <ng-container *ngIf=\"isUsageTrackingEnabled\">\n <label class=\"c8y-switch m-l-0\" for=\"gainsightEngagements\">\n <input\n id=\"gainsightEngagements\"\n name=\"gainsightEngagements\"\n type=\"checkbox\"\n [(ngModel)]=\"isGainsightEngagementsEnabled\"\n />\n <span></span>\n {{ 'Enable in-product information & communication' | translate }}\n </label>\n </ng-container>\n </c8y-form-group>\n\n <div class=\"form-group p-t-16 separator-top\" *ngIf=\"!userIsExternal\">\n <label class=\"control-label\">{{ 'Login options' | translate }}</label>\n <c8y-new-password (password)=\"onNewPasswordChanged($event)\"></c8y-new-password>\n <button\n title=\"{{ 'Set up two-factor authentication' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"setupTotp()\"\n *ngIf=\"userCanSetupTotp && !userHasActiveTotp && isTfaEnabled\"\n >\n {{ 'Set up two-factor authentication' | translate }}\n </button>\n </div>\n\n <c8y-form-group *ngIf=\"!!(state.state$ | async).newsletter\">\n <label translate>Newsletter</label>\n <label\n title=\"{{ 'Send me information about outages, maintenance or updates.' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n name=\"newsletter\"\n [(ngModel)]=\"user.newsletter\"\n [disabled]=\"userIsExternal\"\n />\n <span></span>\n <span>\n {{ 'Send me information about outages, maintenance or updates.' | translate }}\n </span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!userForm.form.valid || userForm.form.pristine || loading\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: PhoneValidationDirective, selector: "[c8yPhoneValidation]" }, { kind: "directive", type: DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NewPasswordComponent, selector: "c8y-new-password", outputs: ["password"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
12859
+ UserEditComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEditComponent, deps: [{ token: AppStateService }, { token: TranslateService }, { token: i1$8.BsModalService }, { token: AlertService }, { token: i1$2.UserService }, { token: i1$2.TenantLoginOptionsService }, { token: i1$2.TenantService }, { token: UserPreferencesService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Component });
12860
+ UserEditComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserEditComponent, selector: "c8y-user-edit", inputs: { lang: "lang", loading: "loading", user: "user", showProductUsageSetting: "showProductUsageSetting", isUsageTrackingEnabled: "isUsageTrackingEnabled", isGainsightEngagementsEnabled: "isGainsightEngagementsEnabled" }, outputs: { onUser: "onUser", onLanguage: "onLanguage", onProductExperience: "onProductExperience", onGainsightEngagements: "onGainsightEngagements", onCancel: "onCancel" }, ngImport: i0, template: "<form #userForm=\"ngForm\" (ngSubmit)=\"userForm.form.valid && save()\">\n <div class=\"d-block p-24 p-b-0\">\n <div class=\"alert alert-warning\" role=\"alert\" *ngIf=\"userIsExternal\" translate>\n Some of the user settings are not editable here because they are managed via your\n authorization server.\n </div>\n <c8y-form-group>\n <label translate for=\"userName\">Username (for example, email)</label>\n <input\n id=\"userName\"\n class=\"form-control\"\n [(ngModel)]=\"user.userName\"\n name=\"userName\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [disabled]=\"user.id\"\n c8yDefaultValidation=\"user\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate for=\"displayName\">Login alias</label>\n <input\n id=\"displayName\"\n class=\"form-control\"\n [(ngModel)]=\"user.displayName\"\n name=\"displayName\"\n autocomplete=\"off\"\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe`LOCALIZE`' | translate }}\"\n [disabled]=\"userIsExternal\"\n c8yDefaultValidation=\"loginAlias\"\n />\n </c8y-form-group>\n\n <c8y-form-group [hasWarning]=\"!user.email\">\n <label translate for=\"userEmail\">Email</label>\n <input\n id=\"userEmail\"\n class=\"form-control\"\n type=\"email\"\n name=\"email\"\n [maxlength]=\"254\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [(ngModel)]=\"user.email\"\n email\n [required]=\"true\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userFirstName\">First name</label>\n <input\n id=\"userFirstName\"\n class=\"form-control\"\n autocomplete=\"off\"\n maxlength=\"50\"\n name=\"firstName\"\n [(ngModel)]=\"user.firstName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userLastName\">Last name</label>\n <input\n id=\"userLastName\"\n class=\"form-control\"\n autocomplete=\"off\"\n maxlength=\"50\"\n name=\"lastName\"\n [(ngModel)]=\"user.lastName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <c8y-form-group>\n <label translate for=\"userTelephone\">Telephone</label>\n <input\n id=\"userTelephone\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"phone\"\n maxlength=\"254\"\n [(ngModel)]=\"user.phone\"\n placeholder=\"{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}\"\n c8yPhoneValidation\n [required]=\"isPhoneRequired\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate for=\"userLang\">Language</label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n class=\"form-control\"\n #selectLang\n name=\"lang\"\n [(ngModel)]=\"lang\"\n (change)=\"onLanguage.emit(selectLang.value)\"\n >\n <option *ngFor=\"let lang of langs\" [value]=\"lang\">\n {{ translate.getNativeLanguage(lang) }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n\n <c8y-form-group class=\"p-t-16 separator-top\" *ngIf=\"showProductUsageSetting\">\n <label translate>Product experience</label>\n <label class=\"c8y-switch\" for=\"productUsageTracking\">\n <input\n id=\"productUsageTracking\"\n name=\"productUsageTracking\"\n type=\"checkbox\"\n (change)=\"onEnablingProductUsageTracking(isUsageTrackingEnabled)\"\n [(ngModel)]=\"isUsageTrackingEnabled\"\n />\n <span></span>\n {{ 'Enable tracking to enhance the product experience' | translate }}\n </label>\n <ng-container *ngIf=\"isUsageTrackingEnabled\">\n <label class=\"c8y-switch m-l-0\" for=\"gainsightEngagements\">\n <input\n id=\"gainsightEngagements\"\n name=\"gainsightEngagements\"\n type=\"checkbox\"\n [(ngModel)]=\"isGainsightEngagementsEnabled\"\n />\n <span></span>\n {{ 'Enable in-product information & communication' | translate }}\n </label>\n </ng-container>\n </c8y-form-group>\n\n <div class=\"form-group p-t-16 separator-top\" *ngIf=\"!userIsExternal\">\n <label class=\"control-label\">{{ 'Login options' | translate }}</label>\n <c8y-new-password (password)=\"onNewPasswordChanged($event)\"></c8y-new-password>\n <button\n title=\"{{ 'Set up two-factor authentication' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"setupTotp()\"\n *ngIf=\"userCanSetupTotp && !userHasActiveTotp && isTfaEnabled\"\n >\n {{ 'Set up two-factor authentication' | translate }}\n </button>\n </div>\n\n <c8y-form-group *ngIf=\"!!(state.state$ | async).newsletter\">\n <label translate>Newsletter</label>\n <label\n title=\"{{ 'Send me information about outages, maintenance or updates.' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n name=\"newsletter\"\n [(ngModel)]=\"user.newsletter\"\n [disabled]=\"userIsExternal\"\n />\n <span></span>\n <span>\n {{ 'Send me information about outages, maintenance or updates.' | translate }}\n </span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!userForm.form.valid || userForm.form.pristine || loading\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: PhoneValidationDirective, selector: "[c8yPhoneValidation]" }, { kind: "directive", type: DefaultValidationDirective, selector: "[c8yDefaultValidation]", inputs: ["c8yDefaultValidation"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: NewPasswordComponent, selector: "c8y-new-password", outputs: ["password"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
12861
12861
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEditComponent, decorators: [{
12862
12862
  type: Component,
12863
12863
  args: [{ selector: 'c8y-user-edit', template: "<form #userForm=\"ngForm\" (ngSubmit)=\"userForm.form.valid && save()\">\n <div class=\"d-block p-24 p-b-0\">\n <div class=\"alert alert-warning\" role=\"alert\" *ngIf=\"userIsExternal\" translate>\n Some of the user settings are not editable here because they are managed via your\n authorization server.\n </div>\n <c8y-form-group>\n <label translate for=\"userName\">Username (for example, email)</label>\n <input\n id=\"userName\"\n class=\"form-control\"\n [(ngModel)]=\"user.userName\"\n name=\"userName\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [disabled]=\"user.id\"\n c8yDefaultValidation=\"user\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate for=\"displayName\">Login alias</label>\n <input\n id=\"displayName\"\n class=\"form-control\"\n [(ngModel)]=\"user.displayName\"\n name=\"displayName\"\n autocomplete=\"off\"\n maxlength=\"254\"\n placeholder=\"{{ 'e.g. joe.doe`LOCALIZE`' | translate }}\"\n [disabled]=\"userIsExternal\"\n c8yDefaultValidation=\"loginAlias\"\n />\n </c8y-form-group>\n\n <c8y-form-group [hasWarning]=\"!user.email\">\n <label translate for=\"userEmail\">Email</label>\n <input\n id=\"userEmail\"\n class=\"form-control\"\n type=\"email\"\n name=\"email\"\n [maxlength]=\"254\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. joe.doe@example.com`LOCALIZE`' | translate }}\"\n [(ngModel)]=\"user.email\"\n email\n [required]=\"true\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userFirstName\">First name</label>\n <input\n id=\"userFirstName\"\n class=\"form-control\"\n autocomplete=\"off\"\n maxlength=\"50\"\n name=\"firstName\"\n [(ngModel)]=\"user.firstName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label translate for=\"userLastName\">Last name</label>\n <input\n id=\"userLastName\"\n class=\"form-control\"\n autocomplete=\"off\"\n maxlength=\"50\"\n name=\"lastName\"\n [(ngModel)]=\"user.lastName\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n </div>\n </div>\n\n <c8y-form-group>\n <label translate for=\"userTelephone\">Telephone</label>\n <input\n id=\"userTelephone\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"phone\"\n maxlength=\"254\"\n [(ngModel)]=\"user.phone\"\n placeholder=\"{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}\"\n c8yPhoneValidation\n [required]=\"isPhoneRequired\"\n [disabled]=\"userIsExternal\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate for=\"userLang\">Language</label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n class=\"form-control\"\n #selectLang\n name=\"lang\"\n [(ngModel)]=\"lang\"\n (change)=\"onLanguage.emit(selectLang.value)\"\n >\n <option *ngFor=\"let lang of langs\" [value]=\"lang\">\n {{ translate.getNativeLanguage(lang) }}\n </option>\n </select>\n <span></span>\n </div>\n </c8y-form-group>\n\n <c8y-form-group class=\"p-t-16 separator-top\" *ngIf=\"showProductUsageSetting\">\n <label translate>Product experience</label>\n <label class=\"c8y-switch\" for=\"productUsageTracking\">\n <input\n id=\"productUsageTracking\"\n name=\"productUsageTracking\"\n type=\"checkbox\"\n (change)=\"onEnablingProductUsageTracking(isUsageTrackingEnabled)\"\n [(ngModel)]=\"isUsageTrackingEnabled\"\n />\n <span></span>\n {{ 'Enable tracking to enhance the product experience' | translate }}\n </label>\n <ng-container *ngIf=\"isUsageTrackingEnabled\">\n <label class=\"c8y-switch m-l-0\" for=\"gainsightEngagements\">\n <input\n id=\"gainsightEngagements\"\n name=\"gainsightEngagements\"\n type=\"checkbox\"\n [(ngModel)]=\"isGainsightEngagementsEnabled\"\n />\n <span></span>\n {{ 'Enable in-product information & communication' | translate }}\n </label>\n </ng-container>\n </c8y-form-group>\n\n <div class=\"form-group p-t-16 separator-top\" *ngIf=\"!userIsExternal\">\n <label class=\"control-label\">{{ 'Login options' | translate }}</label>\n <c8y-new-password (password)=\"onNewPasswordChanged($event)\"></c8y-new-password>\n <button\n title=\"{{ 'Set up two-factor authentication' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"setupTotp()\"\n *ngIf=\"userCanSetupTotp && !userHasActiveTotp && isTfaEnabled\"\n >\n {{ 'Set up two-factor authentication' | translate }}\n </button>\n </div>\n\n <c8y-form-group *ngIf=\"!!(state.state$ | async).newsletter\">\n <label translate>Newsletter</label>\n <label\n title=\"{{ 'Send me information about outages, maintenance or updates.' | translate }}\"\n class=\"c8y-checkbox\"\n >\n <input\n type=\"checkbox\"\n name=\"newsletter\"\n [(ngModel)]=\"user.newsletter\"\n [disabled]=\"userIsExternal\"\n />\n <span></span>\n <span>\n {{ 'Send me information about outages, maintenance or updates.' | translate }}\n </span>\n </label>\n </c8y-form-group>\n </div>\n <div class=\"modal-footer separator-top bg-level-0 sticky-bottom\">\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!userForm.form.valid || userForm.form.pristine || loading\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</form>\n" }]
12864
- }], ctorParameters: function () { return [{ type: AppStateService }, { type: TranslateService }, { type: i1$9.BsModalService }, { type: AlertService }, { type: i1$2.UserService }, { type: i1$2.TenantLoginOptionsService }, { type: i1$2.TenantService }, { type: UserPreferencesService }, { type: GainsightService }]; }, propDecorators: { lang: [{
12864
+ }], ctorParameters: function () { return [{ type: AppStateService }, { type: TranslateService }, { type: i1$8.BsModalService }, { type: AlertService }, { type: i1$2.UserService }, { type: i1$2.TenantLoginOptionsService }, { type: i1$2.TenantService }, { type: UserPreferencesService }, { type: GainsightService }]; }, propDecorators: { lang: [{
12865
12865
  type: Input
12866
12866
  }], loading: [{
12867
12867
  type: Input
@@ -13040,12 +13040,12 @@ class UserEditModalComponent {
13040
13040
  this.auth.updateCredentials(newCredentials);
13041
13041
  }
13042
13042
  }
13043
- UserEditModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEditModalComponent, deps: [{ token: i1$9.BsModalRef }, { token: i1$2.UserService }, { token: AppStateService }, { token: i1$2.BasicAuth }, { token: i1$2.FetchClient }, { token: AlertService }, { token: TranslateService }, { token: UserPreferencesService }, { token: ModalService }, { token: GainsightService }, { token: CookieBannerService }, { token: LoginService }, { token: PasswordService }], target: i0.ɵɵFactoryTarget.Component });
13044
- UserEditModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserEditModalComponent, selector: "c8y-user-edit-modal", ngImport: i0, template: "<c8y-modal [customFooter]=\"true\" [title]=\"'Edit user' | translate\" (onDismiss)=\"onDismiss()\">\n <c8y-user-edit\n [lang]=\"lang\"\n [user]=\"ui.currentUser | async\"\n [loading]=\"loading\"\n [isUsageTrackingEnabled]=\"currentUsageTrackingState\"\n [isGainsightEngagementsEnabled]=\"currentGainsightEngagementsState\"\n [showProductUsageSetting]=\"showProductUsageSetting\"\n (onLanguage)=\"onLanguage($event)\"\n (onProductExperience)=\"onProductExperience($event)\"\n (onGainsightEngagements)=\"onGainsightEngagements($event)\"\n (onUser)=\"updateAndClose($event)\"\n (onCancel)=\"onDismiss()\"\n >\n </c8y-user-edit>\n</c8y-modal>\n", dependencies: [{ kind: "component", type: ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: UserEditComponent, selector: "c8y-user-edit", inputs: ["lang", "loading", "user", "showProductUsageSetting", "isUsageTrackingEnabled", "isGainsightEngagementsEnabled"], outputs: ["onUser", "onLanguage", "onProductExperience", "onGainsightEngagements", "onCancel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
13043
+ UserEditModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEditModalComponent, deps: [{ token: i1$8.BsModalRef }, { token: i1$2.UserService }, { token: AppStateService }, { token: i1$2.BasicAuth }, { token: i1$2.FetchClient }, { token: AlertService }, { token: TranslateService }, { token: UserPreferencesService }, { token: ModalService }, { token: GainsightService }, { token: CookieBannerService }, { token: LoginService }, { token: PasswordService }], target: i0.ɵɵFactoryTarget.Component });
13044
+ UserEditModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserEditModalComponent, selector: "c8y-user-edit-modal", ngImport: i0, template: "<c8y-modal [customFooter]=\"true\" [title]=\"'Edit user' | translate\" (onDismiss)=\"onDismiss()\">\n <c8y-user-edit\n [lang]=\"lang\"\n [user]=\"ui.currentUser | async\"\n [loading]=\"loading\"\n [isUsageTrackingEnabled]=\"currentUsageTrackingState\"\n [isGainsightEngagementsEnabled]=\"currentGainsightEngagementsState\"\n [showProductUsageSetting]=\"showProductUsageSetting\"\n (onLanguage)=\"onLanguage($event)\"\n (onProductExperience)=\"onProductExperience($event)\"\n (onGainsightEngagements)=\"onGainsightEngagements($event)\"\n (onUser)=\"updateAndClose($event)\"\n (onCancel)=\"onDismiss()\"\n >\n </c8y-user-edit>\n</c8y-modal>\n", dependencies: [{ kind: "component", type: ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: UserEditComponent, selector: "c8y-user-edit", inputs: ["lang", "loading", "user", "showProductUsageSetting", "isUsageTrackingEnabled", "isGainsightEngagementsEnabled"], outputs: ["onUser", "onLanguage", "onProductExperience", "onGainsightEngagements", "onCancel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
13045
13045
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEditModalComponent, decorators: [{
13046
13046
  type: Component,
13047
13047
  args: [{ selector: 'c8y-user-edit-modal', template: "<c8y-modal [customFooter]=\"true\" [title]=\"'Edit user' | translate\" (onDismiss)=\"onDismiss()\">\n <c8y-user-edit\n [lang]=\"lang\"\n [user]=\"ui.currentUser | async\"\n [loading]=\"loading\"\n [isUsageTrackingEnabled]=\"currentUsageTrackingState\"\n [isGainsightEngagementsEnabled]=\"currentGainsightEngagementsState\"\n [showProductUsageSetting]=\"showProductUsageSetting\"\n (onLanguage)=\"onLanguage($event)\"\n (onProductExperience)=\"onProductExperience($event)\"\n (onGainsightEngagements)=\"onGainsightEngagements($event)\"\n (onUser)=\"updateAndClose($event)\"\n (onCancel)=\"onDismiss()\"\n >\n </c8y-user-edit>\n</c8y-modal>\n" }]
13048
- }], ctorParameters: function () { return [{ type: i1$9.BsModalRef }, { type: i1$2.UserService }, { type: AppStateService }, { type: i1$2.BasicAuth }, { type: i1$2.FetchClient }, { type: AlertService }, { type: TranslateService }, { type: UserPreferencesService }, { type: ModalService }, { type: GainsightService }, { type: CookieBannerService }, { type: LoginService }, { type: PasswordService }]; } });
13048
+ }], ctorParameters: function () { return [{ type: i1$8.BsModalRef }, { type: i1$2.UserService }, { type: AppStateService }, { type: i1$2.BasicAuth }, { type: i1$2.FetchClient }, { type: AlertService }, { type: TranslateService }, { type: UserPreferencesService }, { type: ModalService }, { type: GainsightService }, { type: CookieBannerService }, { type: LoginService }, { type: PasswordService }]; } });
13049
13049
 
13050
13050
  class UserMenuItemComponent {
13051
13051
  constructor(userService) {
@@ -13065,7 +13065,7 @@ class UserMenuItemComponent {
13065
13065
  }
13066
13066
  }
13067
13067
  UserMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserMenuItemComponent, deps: [{ token: UserMenuService }], target: i0.ɵɵFactoryTarget.Component });
13068
- UserMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserMenuItemComponent, selector: "c8y-user-menu-item", inputs: { icon: "icon", label: "label", link: "link", target: "target", priority: "priority", dataCy: "dataCy" }, outputs: { click: "click" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li >\n <a class=\"c8y-right-drawer__link\" (click)=\"onClick()\" [attr.data-cy]=\"dataCy\" *ngIf=\"link\" [attr.href]=\"link\" [attr.target]=\"target\">\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button *ngIf=\"!link\" (click)=\"onClick()\" [attr.data-cy]=\"dataCy\" type=\"button\" class=\"c8y-right-drawer__link\">\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
13068
+ UserMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserMenuItemComponent, selector: "c8y-user-menu-item", inputs: { icon: "icon", label: "label", link: "link", target: "target", priority: "priority", dataCy: "dataCy" }, outputs: { click: "click" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li >\n <a class=\"c8y-right-drawer__link\" (click)=\"onClick()\" [attr.data-cy]=\"dataCy\" *ngIf=\"link\" [attr.href]=\"link\" [attr.target]=\"target\">\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button *ngIf=\"!link\" (click)=\"onClick()\" [attr.data-cy]=\"dataCy\" type=\"button\" class=\"c8y-right-drawer__link\">\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
13069
13069
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserMenuItemComponent, decorators: [{
13070
13070
  type: Component,
13071
13071
  args: [{ selector: 'c8y-user-menu-item', template: "<ng-template #template>\n <li >\n <a class=\"c8y-right-drawer__link\" (click)=\"onClick()\" [attr.data-cy]=\"dataCy\" *ngIf=\"link\" [attr.href]=\"link\" [attr.target]=\"target\">\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button *ngIf=\"!link\" (click)=\"onClick()\" [attr.data-cy]=\"dataCy\" type=\"button\" class=\"c8y-right-drawer__link\">\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n" }]
@@ -13230,12 +13230,12 @@ class UserMenuOutletComponent {
13230
13230
  });
13231
13231
  }
13232
13232
  }
13233
- UserMenuOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserMenuOutletComponent, deps: [{ token: AppStateService }, { token: i1$9.BsModalService }, { token: ModalService }, { token: LoginService }, { token: i1$3.TranslateService }, { token: i1$2.TenantService }, { token: AlertService }, { token: i1$2.UserService }, { token: OptionsService }, { token: TenantUiService }, { token: Permissions }], target: i0.ɵɵFactoryTarget.Component });
13234
- UserMenuOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserMenuOutletComponent, selector: "c8y-user-menu-outlet", inputs: { items: "items" }, ngImport: i0, template: "<div *ngIf=\"items?.length\" class=\"p-t-8 p-b-8\">\n <ul class=\"list-unstyled m-b-0\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"item.template\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item.template\">\n <li>\n <button\n [attr.aria-label]=\"item.label | translate\"\n type=\"button\"\n class=\"c8y-right-drawer__link\"\n (click)=\"item.click()\"\n [attr.href]=\"item.link\"\n [attr.target]=\"item.target\"\n >\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n\n<!-- the default items -->\n<c8y-user-menu-item\n *ngIf=\"ui.currentUser | async\"\n [icon]=\"'user-menu-male'\"\n [label]=\"'User settings' | translate\"\n [priority]=\"20\"\n [dataCy]=\"'user-menu-user-settings-button'\"\n (click)=\"editUser()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"ui.currentUser | async\"\n [icon]=\"'sign-out'\"\n [label]=\"'Logout' | translate\"\n [dataCy]=\"'user-menu-logout-button'\"\n (click)=\"logout()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"!(ui.currentUser | async)?.supportUserEnabled && ((ui.state$ | async).activateSupportUserAvailable)\"\n [icon]=\"'c8y-c8y-support'\"\n [label]=\"'Activate support' | translate\"\n [dataCy]=\"'user-menu-activate-support-button'\"\n (click)=\"activateSupportAccess()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"(ui.currentUser | async)?.supportUserEnabled && ((ui.state$ | async).activateSupportUserAvailable)\"\n [icon]=\"'c8y-c8y-support'\"\n [label]=\"'Deactivate support' | translate\"\n [dataCy]=\"'user-menu-deactivate-support-button'\"\n (click)=\"deactivateSupportAccess()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"hasAdminPermissions\"\n [icon]=\"'account-disable'\"\n [label]=\"'Revoke tokens' | translate\"\n (click)=\"revokeTokens()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"(ui.state$ | async).supportUrl\"\n [icon]=\"'question-circle'\"\n [link]=\"(ui.state$ | async).supportUrl\"\n [target]=\"'_blank'\"\n [label]=\"'Request support' | translate\"\n [dataCy]=\"'user-menu-request-support-button'\"\n></c8y-user-menu-item>\n", dependencies: [{ kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UserMenuItemComponent, selector: "c8y-user-menu-item", inputs: ["icon", "label", "link", "target", "priority", "dataCy"], outputs: ["click"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
13233
+ UserMenuOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserMenuOutletComponent, deps: [{ token: AppStateService }, { token: i1$8.BsModalService }, { token: ModalService }, { token: LoginService }, { token: i1$3.TranslateService }, { token: i1$2.TenantService }, { token: AlertService }, { token: i1$2.UserService }, { token: OptionsService }, { token: TenantUiService }, { token: Permissions }], target: i0.ɵɵFactoryTarget.Component });
13234
+ UserMenuOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserMenuOutletComponent, selector: "c8y-user-menu-outlet", inputs: { items: "items" }, ngImport: i0, template: "<div *ngIf=\"items?.length\" class=\"p-t-8 p-b-8\">\n <ul class=\"list-unstyled m-b-0\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"item.template\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item.template\">\n <li>\n <button\n [attr.aria-label]=\"item.label | translate\"\n type=\"button\"\n class=\"c8y-right-drawer__link\"\n (click)=\"item.click()\"\n [attr.href]=\"item.link\"\n [attr.target]=\"item.target\"\n >\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n\n<!-- the default items -->\n<c8y-user-menu-item\n *ngIf=\"ui.currentUser | async\"\n [icon]=\"'user-menu-male'\"\n [label]=\"'User settings' | translate\"\n [priority]=\"20\"\n [dataCy]=\"'user-menu-user-settings-button'\"\n (click)=\"editUser()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"ui.currentUser | async\"\n [icon]=\"'sign-out'\"\n [label]=\"'Logout' | translate\"\n [dataCy]=\"'user-menu-logout-button'\"\n (click)=\"logout()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"!(ui.currentUser | async)?.supportUserEnabled && ((ui.state$ | async).activateSupportUserAvailable)\"\n [icon]=\"'c8y-c8y-support'\"\n [label]=\"'Activate support' | translate\"\n [dataCy]=\"'user-menu-activate-support-button'\"\n (click)=\"activateSupportAccess()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"(ui.currentUser | async)?.supportUserEnabled && ((ui.state$ | async).activateSupportUserAvailable)\"\n [icon]=\"'c8y-c8y-support'\"\n [label]=\"'Deactivate support' | translate\"\n [dataCy]=\"'user-menu-deactivate-support-button'\"\n (click)=\"deactivateSupportAccess()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"hasAdminPermissions\"\n [icon]=\"'account-disable'\"\n [label]=\"'Revoke tokens' | translate\"\n (click)=\"revokeTokens()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"(ui.state$ | async).supportUrl\"\n [icon]=\"'question-circle'\"\n [link]=\"(ui.state$ | async).supportUrl\"\n [target]=\"'_blank'\"\n [label]=\"'Request support' | translate\"\n [dataCy]=\"'user-menu-request-support-button'\"\n></c8y-user-menu-item>\n", dependencies: [{ kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: UserMenuItemComponent, selector: "c8y-user-menu-item", inputs: ["icon", "label", "link", "target", "priority", "dataCy"], outputs: ["click"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
13235
13235
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserMenuOutletComponent, decorators: [{
13236
13236
  type: Component,
13237
13237
  args: [{ selector: 'c8y-user-menu-outlet', template: "<div *ngIf=\"items?.length\" class=\"p-t-8 p-b-8\">\n <ul class=\"list-unstyled m-b-0\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"item.template\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item.template\">\n <li>\n <button\n [attr.aria-label]=\"item.label | translate\"\n type=\"button\"\n class=\"c8y-right-drawer__link\"\n (click)=\"item.click()\"\n [attr.href]=\"item.link\"\n [attr.target]=\"item.target\"\n >\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n\n<!-- the default items -->\n<c8y-user-menu-item\n *ngIf=\"ui.currentUser | async\"\n [icon]=\"'user-menu-male'\"\n [label]=\"'User settings' | translate\"\n [priority]=\"20\"\n [dataCy]=\"'user-menu-user-settings-button'\"\n (click)=\"editUser()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"ui.currentUser | async\"\n [icon]=\"'sign-out'\"\n [label]=\"'Logout' | translate\"\n [dataCy]=\"'user-menu-logout-button'\"\n (click)=\"logout()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"!(ui.currentUser | async)?.supportUserEnabled && ((ui.state$ | async).activateSupportUserAvailable)\"\n [icon]=\"'c8y-c8y-support'\"\n [label]=\"'Activate support' | translate\"\n [dataCy]=\"'user-menu-activate-support-button'\"\n (click)=\"activateSupportAccess()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"(ui.currentUser | async)?.supportUserEnabled && ((ui.state$ | async).activateSupportUserAvailable)\"\n [icon]=\"'c8y-c8y-support'\"\n [label]=\"'Deactivate support' | translate\"\n [dataCy]=\"'user-menu-deactivate-support-button'\"\n (click)=\"deactivateSupportAccess()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"hasAdminPermissions\"\n [icon]=\"'account-disable'\"\n [label]=\"'Revoke tokens' | translate\"\n (click)=\"revokeTokens()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n *ngIf=\"(ui.state$ | async).supportUrl\"\n [icon]=\"'question-circle'\"\n [link]=\"(ui.state$ | async).supportUrl\"\n [target]=\"'_blank'\"\n [label]=\"'Request support' | translate\"\n [dataCy]=\"'user-menu-request-support-button'\"\n></c8y-user-menu-item>\n" }]
13238
- }], ctorParameters: function () { return [{ type: AppStateService }, { type: i1$9.BsModalService }, { type: ModalService }, { type: LoginService }, { type: i1$3.TranslateService }, { type: i1$2.TenantService }, { type: AlertService }, { type: i1$2.UserService }, { type: OptionsService }, { type: TenantUiService }, { type: Permissions }]; }, propDecorators: { items: [{
13238
+ }], ctorParameters: function () { return [{ type: AppStateService }, { type: i1$8.BsModalService }, { type: ModalService }, { type: LoginService }, { type: i1$3.TranslateService }, { type: i1$2.TenantService }, { type: AlertService }, { type: i1$2.UserService }, { type: OptionsService }, { type: TenantUiService }, { type: Permissions }]; }, propDecorators: { items: [{
13239
13239
  type: Input
13240
13240
  }] } });
13241
13241
 
@@ -13456,12 +13456,12 @@ class VersionDetailsModalComponent {
13456
13456
  });
13457
13457
  }
13458
13458
  }
13459
- VersionDetailsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: VersionDetailsModalComponent, deps: [{ token: i1$9.BsModalRef }, { token: VersionService }, { token: PlatformDetailsService }], target: i0.ɵɵFactoryTarget.Component });
13460
- VersionDetailsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: VersionDetailsModalComponent, selector: "c8y-version-details-modal", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-cumulocity-iot'\"></i>\n <h4 id=\"modal-title\">{{ 'Platform info' | translate }}</h4>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-24 p-r-24\">\n <table class=\"table table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th class=\"sticky-top bg-component\" [title]=\"'Application' | translate\" translate>\n Application\n </th>\n <th\n class=\"text-right sticky-top bg-component\"\n [title]=\"'Version' | translate\"\n translate\n >\n Version\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of version.nonHiddenItems$ | async\">\n <td class=\"text-truncate\" [title]=\"item.label | translate\">\n {{ item.label | translate }}\n </td>\n <td class=\"text-truncate text-right\" [title]=\"item.version\">{{ item.version }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n <button\n title=\"{{ 'Download platform details' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"downloadPlatformDetails()\"\n >\n {{ 'Download platform details' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
13459
+ VersionDetailsModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: VersionDetailsModalComponent, deps: [{ token: i1$8.BsModalRef }, { token: VersionService }, { token: PlatformDetailsService }], target: i0.ɵɵFactoryTarget.Component });
13460
+ VersionDetailsModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: VersionDetailsModalComponent, selector: "c8y-version-details-modal", ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-cumulocity-iot'\"></i>\n <h4 id=\"modal-title\">{{ 'Platform info' | translate }}</h4>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-24 p-r-24\">\n <table class=\"table table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th class=\"sticky-top bg-component\" [title]=\"'Application' | translate\" translate>\n Application\n </th>\n <th\n class=\"text-right sticky-top bg-component\"\n [title]=\"'Version' | translate\"\n translate\n >\n Version\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of version.nonHiddenItems$ | async\">\n <td class=\"text-truncate\" [title]=\"item.label | translate\">\n {{ item.label | translate }}\n </td>\n <td class=\"text-truncate text-right\" [title]=\"item.version\">{{ item.version }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n <button\n title=\"{{ 'Download platform details' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"downloadPlatformDetails()\"\n >\n {{ 'Download platform details' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
13461
13461
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: VersionDetailsModalComponent, decorators: [{
13462
13462
  type: Component,
13463
13463
  args: [{ selector: 'c8y-version-details-modal', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-cumulocity-iot'\"></i>\n <h4 id=\"modal-title\">{{ 'Platform info' | translate }}</h4>\n </div>\n\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-24 p-r-24\">\n <table class=\"table table-condensed\">\n <colgroup>\n <col width=\"50%\" />\n <col width=\"50%\" />\n </colgroup>\n <thead>\n <tr>\n <th class=\"sticky-top bg-component\" [title]=\"'Application' | translate\" translate>\n Application\n </th>\n <th\n class=\"text-right sticky-top bg-component\"\n [title]=\"'Version' | translate\"\n translate\n >\n Version\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let item of version.nonHiddenItems$ | async\">\n <td class=\"text-truncate\" [title]=\"item.label | translate\">\n {{ item.label | translate }}\n </td>\n <td class=\"text-truncate text-right\" [title]=\"item.version\">{{ item.version }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n <button\n title=\"{{ 'Download platform details' | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"downloadPlatformDetails()\"\n >\n {{ 'Download platform details' | translate }}\n </button>\n </div>\n</div>\n" }]
13464
- }], ctorParameters: function () { return [{ type: i1$9.BsModalRef }, { type: VersionService }, { type: PlatformDetailsService }]; } });
13464
+ }], ctorParameters: function () { return [{ type: i1$8.BsModalRef }, { type: VersionService }, { type: PlatformDetailsService }]; } });
13465
13465
 
13466
13466
  class ClipboardService {
13467
13467
  constructor(alertService) {
@@ -13529,12 +13529,12 @@ class VersionListComponent {
13529
13529
  this.clipboardService.writeText(text);
13530
13530
  }
13531
13531
  }
13532
- VersionListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: VersionListComponent, deps: [{ token: VersionService }, { token: AppStateService }, { token: ClipboardService }, { token: i1$9.BsModalService }], target: i0.ɵɵFactoryTarget.Component });
13533
- VersionListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: VersionListComponent, selector: "c8y-version-list", ngImport: i0, template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"c8y-cumulocity-iot\"></i>\n <span class=\"text-bold\">{{ 'Platform info' | translate }}</span>\n </div>\n\n <ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\" *ngIf=\"currentTenantId$ | async as tenantId\">\n <span class=\"flex-grow text-muted m-0 text-12 text-truncate\" translate>Tenant ID</span>\n <button\n type=\"button\"\n title=\"{{ 'Copy tenant ID to the clipboard' | translate }}\"\n class=\"m-l-auto flex-no-shrink btn-clean p-0 text-info\"\n (click)=\"$event.stopPropagation(); copyIt(tenantId)\"\n >\n {{ tenantId }}\n <i [c8yIcon]=\"'clipboard'\" class=\"text-14 m-0\"></i>\n </button>\n </li>\n <li\n class=\"c8y-right-drawer__item\"\n *ngFor=\"let versionEntry of versionsToDirectlyDisplay$ | async\"\n >\n <span\n class=\"flex-grow text-muted text-12 text-truncate m-r-8\"\n [title]=\"versionEntry.label | translate\"\n >\n {{ versionEntry.label | translate }}\n </span>\n <span class=\"m-l-auto flex-no-shrink\" [title]=\"versionEntry.version | translate\">\n {{ versionEntry.version }}\n </span>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button class=\"btn btn-default btn-sm\" (click)=\"openDetailedInfo()\" translate>\n Detailed info\n </button>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
13532
+ VersionListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: VersionListComponent, deps: [{ token: VersionService }, { token: AppStateService }, { token: ClipboardService }, { token: i1$8.BsModalService }], target: i0.ɵɵFactoryTarget.Component });
13533
+ VersionListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: VersionListComponent, selector: "c8y-version-list", ngImport: i0, template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"c8y-cumulocity-iot\"></i>\n <span class=\"text-bold\">{{ 'Platform info' | translate }}</span>\n </div>\n\n <ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\" *ngIf=\"currentTenantId$ | async as tenantId\">\n <span class=\"flex-grow text-muted m-0 text-12 text-truncate\" translate>Tenant ID</span>\n <button\n type=\"button\"\n title=\"{{ 'Copy tenant ID to the clipboard' | translate }}\"\n class=\"m-l-auto flex-no-shrink btn-clean p-0 text-info\"\n (click)=\"$event.stopPropagation(); copyIt(tenantId)\"\n >\n {{ tenantId }}\n <i [c8yIcon]=\"'clipboard'\" class=\"text-14 m-0\"></i>\n </button>\n </li>\n <li\n class=\"c8y-right-drawer__item\"\n *ngFor=\"let versionEntry of versionsToDirectlyDisplay$ | async\"\n >\n <span\n class=\"flex-grow text-muted text-12 text-truncate m-r-8\"\n [title]=\"versionEntry.label | translate\"\n >\n {{ versionEntry.label | translate }}\n </span>\n <span class=\"m-l-auto flex-no-shrink\" [title]=\"versionEntry.version | translate\">\n {{ versionEntry.version }}\n </span>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button class=\"btn btn-default btn-sm\" (click)=\"openDetailedInfo()\" translate>\n Detailed info\n </button>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
13534
13534
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: VersionListComponent, decorators: [{
13535
13535
  type: Component,
13536
13536
  args: [{ selector: 'c8y-version-list', template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"c8y-cumulocity-iot\"></i>\n <span class=\"text-bold\">{{ 'Platform info' | translate }}</span>\n </div>\n\n <ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\" *ngIf=\"currentTenantId$ | async as tenantId\">\n <span class=\"flex-grow text-muted m-0 text-12 text-truncate\" translate>Tenant ID</span>\n <button\n type=\"button\"\n title=\"{{ 'Copy tenant ID to the clipboard' | translate }}\"\n class=\"m-l-auto flex-no-shrink btn-clean p-0 text-info\"\n (click)=\"$event.stopPropagation(); copyIt(tenantId)\"\n >\n {{ tenantId }}\n <i [c8yIcon]=\"'clipboard'\" class=\"text-14 m-0\"></i>\n </button>\n </li>\n <li\n class=\"c8y-right-drawer__item\"\n *ngFor=\"let versionEntry of versionsToDirectlyDisplay$ | async\"\n >\n <span\n class=\"flex-grow text-muted text-12 text-truncate m-r-8\"\n [title]=\"versionEntry.label | translate\"\n >\n {{ versionEntry.label | translate }}\n </span>\n <span class=\"m-l-auto flex-no-shrink\" [title]=\"versionEntry.version | translate\">\n {{ versionEntry.version }}\n </span>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button class=\"btn btn-default btn-sm\" (click)=\"openDetailedInfo()\" translate>\n Detailed info\n </button>\n </li>\n </ul>\n</div>\n" }]
13537
- }], ctorParameters: function () { return [{ type: VersionService }, { type: AppStateService }, { type: ClipboardService }, { type: i1$9.BsModalService }]; } });
13537
+ }], ctorParameters: function () { return [{ type: VersionService }, { type: AppStateService }, { type: ClipboardService }, { type: i1$8.BsModalService }]; } });
13538
13538
 
13539
13539
  class UserRolesListPipe {
13540
13540
  constructor(translateService) {
@@ -13599,7 +13599,7 @@ class RightDrawerComponent {
13599
13599
  }
13600
13600
  }
13601
13601
  RightDrawerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RightDrawerComponent, deps: [{ token: AppStateService }, { token: UserMenuService }, { token: OptionsService }], target: i0.ɵɵFactoryTarget.Component });
13602
- RightDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RightDrawerComponent, selector: "c8y-right-drawer", inputs: { _quickLinks: ["quickLinks", "_quickLinks"], _helpAndSupport: ["helpAndSupport", "_helpAndSupport"], app: "app", drawerOpen: "drawerOpen" }, outputs: { closeDrawer: "closeDrawer" }, ngImport: i0, template: "<aside class=\"c8y-right-drawer\" [cdkTrapFocus]=\"drawerOpen\">\n<!-- drawer header -->\n <div class=\"c8y-right-drawer__header separator-bottom\">\n <button type=\"button\" class=\"close\" title=\"{{'Close' | translate}}\" (click)=\"close()\">&times;</button>\n <div class=\"d-flex a-i-center\">\n <div class=\"user-dot\"> {{appState.currentUser | async | userNameInitials}}</div>\n <div class=\"min-width-0\">\n <p\n *ngIf=\"appState.currentUser | async\"\n class=\"text-truncate text-medium text-16\"\n title=\"{{appState.currentUser | async | shortenUserName}}\"\n >\n {{appState.currentUser | async | shortenUserName}}\n </p>\n <small *ngIf=\"appState.currentUser | async | userRolesList as userRoles\" [title]=\"userRoles\" class=\"text-truncate\">{{ userRoles }}</small>\n </div>\n </div>\n </div>\n\n <!-- user menu -->\n <c8y-user-menu-outlet\n [items]=\"(userMenuService.items$ | async)\"\n class=\"c8y-right-drawer__container\"\n ></c8y-user-menu-outlet>\n\n <!-- Version list -->\n <c8y-version-list *ngIf=\"showPlatformInformation\"></c8y-version-list>\n\n<!-- quicklinks > bookmarks -->\n <div *ngIf=\"(appState$ | async).showRightDrawer && quickLinks.length\"\n class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"bookmark\"></i>\n <span class=\"text-bold\">{{ 'Quick links' | translate }}</span>\n </div>\n\n <ng-container *ngFor=\"let quickLink of quickLinks\">\n <ng-container *ngIf=\"quickLink.component\">\n <ng-container\n *ngComponentOutlet=\"quickLink.component; injector: quickLink.injector\"\n ></ng-container>\n </ng-container>\n <a\n *ngIf=\"!quickLink.component\"\n title=\"{{ quickLink.label | translate }}\"\n type=\"button\"\n class=\"c8y-right-drawer__link\"\n [href]=\"quickLink.url || '#'\"\n (click)=\"quickLink.click && $event.preventDefault(); quickLink.click && quickLink.click()\"\n c8yProductExperience\n [actionName]=\"'quickLinkRightDrawer:' + quickLink.label\"\n [actionData]=\"\"\n tabindex=\"{{ drawerOpen ? '0' : '-1' }}\"\n >\n <i *ngIf=\"quickLink.icon\" class=\"{{ quickLink.icon }} c8y-icon-duocolor\"></i>\n <img\n *ngIf=\"quickLink.iconSrc\"\n [src]=\"quickLink.iconSrc\"\n style=\"max-width: 20px\"\n class=\"img-responsive\"\n onerror=\"this.style.display = 'none'\"\n />\n <span>{{ quickLink.label | translate }}</span>\n </a>\n </ng-container>\n\n </div>\n\n <div *ngIf=\"(appState$ | async).showRightDrawer && helpAndSupport.length\"\n class=\"separator-top p-t-8 p-b-8\">\n <button type=\"button\" class=\"c8y-right-drawer__link sticky-top\" (click)=\"documentationOpen = !documentationOpen\"\n [attr.aria-expanded]=\"!documentationCol.isCollapsed\" [attr.aria-controls]=\"'collapseDocs'\">\n <i c8yIcon=\"book-shelf\"></i>\n <span class=\"text-bold\">{{ 'Documentation' | translate }}</span>\n <i c8yIcon=\"angle-down\" class=\"m-l-auto\" [ngClass]=\"{'icon-rotate-180': documentationOpen }\"></i>\n </button>\n <div class=\"collapse\" id=\"collapseDocs\" [collapse]=\"!documentationOpen\" [isAnimated]=\"true\" #documentationCol=\"bs-collapse\">\n <ng-container *ngFor=\"let link of helpAndSupport\">\n <ng-container *ngIf=\"link.component\">\n <ng-container *ngComponentOutlet=\"link.component; injector: link.injector\"></ng-container>\n </ng-container>\n <a\n *ngIf=\"!link.component\"\n title=\"{{ link.label | translate }}\"\n type=\"button\"\n class=\"c8y-right-drawer__link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [href]=\"link.url\"\n c8yProductExperience\n [actionName]=\"'quickLinkRightDrawer:' + link.label\"\n [actionData]=\"\"\n tabindex=\"{{ drawerOpen ? '0' : '-1' }}\"\n >\n <span title=\"{{ link.label | translate }}\" class=\"text-truncate text-12\">\n {{ link.label | translate }}\n </span>\n </a>\n </ng-container>\n </div>\n </div>\n\n <!-- TODO: move legal notices here -->\n <!-- <div class=\"separator-top p-t-8 m-t-auto\">\n <a href=\"#\" class=\"c8y-right-drawer__link\">\n <small>Legal notices</small>\n </a>\n </div> -->\n</aside>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: UserMenuOutletComponent, selector: "c8y-user-menu-outlet", inputs: ["items"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: VersionListComponent, selector: "c8y-version-list" }, { kind: "directive", type: i1$a.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: ShortenUserNamePipe, name: "shortenUserName" }, { kind: "pipe", type: UserNameInitialsPipe, name: "userNameInitials" }, { kind: "pipe", type: UserRolesListPipe, name: "userRolesList" }] });
13602
+ RightDrawerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RightDrawerComponent, selector: "c8y-right-drawer", inputs: { _quickLinks: ["quickLinks", "_quickLinks"], _helpAndSupport: ["helpAndSupport", "_helpAndSupport"], app: "app", drawerOpen: "drawerOpen" }, outputs: { closeDrawer: "closeDrawer" }, ngImport: i0, template: "<aside class=\"c8y-right-drawer\" [cdkTrapFocus]=\"drawerOpen\">\n<!-- drawer header -->\n <div class=\"c8y-right-drawer__header separator-bottom\">\n <button type=\"button\" class=\"close\" title=\"{{'Close' | translate}}\" (click)=\"close()\">&times;</button>\n <div class=\"d-flex a-i-center\">\n <div class=\"user-dot\"> {{appState.currentUser | async | userNameInitials}}</div>\n <div class=\"min-width-0\">\n <p\n *ngIf=\"appState.currentUser | async\"\n class=\"text-truncate text-medium text-16\"\n title=\"{{appState.currentUser | async | shortenUserName}}\"\n >\n {{appState.currentUser | async | shortenUserName}}\n </p>\n <small *ngIf=\"appState.currentUser | async | userRolesList as userRoles\" [title]=\"userRoles\" class=\"text-truncate\">{{ userRoles }}</small>\n </div>\n </div>\n </div>\n\n <!-- user menu -->\n <c8y-user-menu-outlet\n [items]=\"(userMenuService.items$ | async)\"\n class=\"c8y-right-drawer__container\"\n ></c8y-user-menu-outlet>\n\n <!-- Version list -->\n <c8y-version-list *ngIf=\"showPlatformInformation\"></c8y-version-list>\n\n<!-- quicklinks > bookmarks -->\n <div *ngIf=\"(appState$ | async).showRightDrawer && quickLinks.length\"\n class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"bookmark\"></i>\n <span class=\"text-bold\">{{ 'Quick links' | translate }}</span>\n </div>\n\n <ng-container *ngFor=\"let quickLink of quickLinks\">\n <ng-container *ngIf=\"quickLink.component\">\n <ng-container\n *ngComponentOutlet=\"quickLink.component; injector: quickLink.injector\"\n ></ng-container>\n </ng-container>\n <a\n *ngIf=\"!quickLink.component\"\n title=\"{{ quickLink.label | translate }}\"\n type=\"button\"\n class=\"c8y-right-drawer__link\"\n [href]=\"quickLink.url || '#'\"\n (click)=\"quickLink.click && $event.preventDefault(); quickLink.click && quickLink.click()\"\n c8yProductExperience\n [actionName]=\"'quickLinkRightDrawer:' + quickLink.label\"\n [actionData]=\"\"\n tabindex=\"{{ drawerOpen ? '0' : '-1' }}\"\n >\n <i *ngIf=\"quickLink.icon\" class=\"{{ quickLink.icon }} c8y-icon-duocolor\"></i>\n <img\n *ngIf=\"quickLink.iconSrc\"\n [src]=\"quickLink.iconSrc\"\n style=\"max-width: 20px\"\n class=\"img-responsive\"\n onerror=\"this.style.display = 'none'\"\n />\n <span>{{ quickLink.label | translate }}</span>\n </a>\n </ng-container>\n\n </div>\n\n <div *ngIf=\"(appState$ | async).showRightDrawer && helpAndSupport.length\"\n class=\"separator-top p-t-8 p-b-8\">\n <button type=\"button\" class=\"c8y-right-drawer__link sticky-top\" (click)=\"documentationOpen = !documentationOpen\"\n [attr.aria-expanded]=\"!documentationCol.isCollapsed\" [attr.aria-controls]=\"'collapseDocs'\">\n <i c8yIcon=\"book-shelf\"></i>\n <span class=\"text-bold\">{{ 'Documentation' | translate }}</span>\n <i c8yIcon=\"angle-down\" class=\"m-l-auto\" [ngClass]=\"{'icon-rotate-180': documentationOpen }\"></i>\n </button>\n <div class=\"collapse\" id=\"collapseDocs\" [collapse]=\"!documentationOpen\" [isAnimated]=\"true\" #documentationCol=\"bs-collapse\">\n <ng-container *ngFor=\"let link of helpAndSupport\">\n <ng-container *ngIf=\"link.component\">\n <ng-container *ngComponentOutlet=\"link.component; injector: link.injector\"></ng-container>\n </ng-container>\n <a\n *ngIf=\"!link.component\"\n title=\"{{ link.label | translate }}\"\n type=\"button\"\n class=\"c8y-right-drawer__link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [href]=\"link.url\"\n c8yProductExperience\n [actionName]=\"'quickLinkRightDrawer:' + link.label\"\n [actionData]=\"\"\n tabindex=\"{{ drawerOpen ? '0' : '-1' }}\"\n >\n <span title=\"{{ link.label | translate }}\" class=\"text-truncate text-12\">\n {{ link.label | translate }}\n </span>\n </a>\n </ng-container>\n </div>\n </div>\n\n <!-- TODO: move legal notices here -->\n <!-- <div class=\"separator-top p-t-8 m-t-auto\">\n <a href=\"#\" class=\"c8y-right-drawer__link\">\n <small>Legal notices</small>\n </a>\n </div> -->\n</aside>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: UserMenuOutletComponent, selector: "c8y-user-menu-outlet", inputs: ["items"] }, { 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", "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: "component", type: VersionListComponent, selector: "c8y-version-list" }, { kind: "directive", type: i1$9.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: ShortenUserNamePipe, name: "shortenUserName" }, { kind: "pipe", type: UserNameInitialsPipe, name: "userNameInitials" }, { kind: "pipe", type: UserRolesListPipe, name: "userRolesList" }] });
13603
13603
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RightDrawerComponent, decorators: [{
13604
13604
  type: Component,
13605
13605
  args: [{ selector: 'c8y-right-drawer', template: "<aside class=\"c8y-right-drawer\" [cdkTrapFocus]=\"drawerOpen\">\n<!-- drawer header -->\n <div class=\"c8y-right-drawer__header separator-bottom\">\n <button type=\"button\" class=\"close\" title=\"{{'Close' | translate}}\" (click)=\"close()\">&times;</button>\n <div class=\"d-flex a-i-center\">\n <div class=\"user-dot\"> {{appState.currentUser | async | userNameInitials}}</div>\n <div class=\"min-width-0\">\n <p\n *ngIf=\"appState.currentUser | async\"\n class=\"text-truncate text-medium text-16\"\n title=\"{{appState.currentUser | async | shortenUserName}}\"\n >\n {{appState.currentUser | async | shortenUserName}}\n </p>\n <small *ngIf=\"appState.currentUser | async | userRolesList as userRoles\" [title]=\"userRoles\" class=\"text-truncate\">{{ userRoles }}</small>\n </div>\n </div>\n </div>\n\n <!-- user menu -->\n <c8y-user-menu-outlet\n [items]=\"(userMenuService.items$ | async)\"\n class=\"c8y-right-drawer__container\"\n ></c8y-user-menu-outlet>\n\n <!-- Version list -->\n <c8y-version-list *ngIf=\"showPlatformInformation\"></c8y-version-list>\n\n<!-- quicklinks > bookmarks -->\n <div *ngIf=\"(appState$ | async).showRightDrawer && quickLinks.length\"\n class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"bookmark\"></i>\n <span class=\"text-bold\">{{ 'Quick links' | translate }}</span>\n </div>\n\n <ng-container *ngFor=\"let quickLink of quickLinks\">\n <ng-container *ngIf=\"quickLink.component\">\n <ng-container\n *ngComponentOutlet=\"quickLink.component; injector: quickLink.injector\"\n ></ng-container>\n </ng-container>\n <a\n *ngIf=\"!quickLink.component\"\n title=\"{{ quickLink.label | translate }}\"\n type=\"button\"\n class=\"c8y-right-drawer__link\"\n [href]=\"quickLink.url || '#'\"\n (click)=\"quickLink.click && $event.preventDefault(); quickLink.click && quickLink.click()\"\n c8yProductExperience\n [actionName]=\"'quickLinkRightDrawer:' + quickLink.label\"\n [actionData]=\"\"\n tabindex=\"{{ drawerOpen ? '0' : '-1' }}\"\n >\n <i *ngIf=\"quickLink.icon\" class=\"{{ quickLink.icon }} c8y-icon-duocolor\"></i>\n <img\n *ngIf=\"quickLink.iconSrc\"\n [src]=\"quickLink.iconSrc\"\n style=\"max-width: 20px\"\n class=\"img-responsive\"\n onerror=\"this.style.display = 'none'\"\n />\n <span>{{ quickLink.label | translate }}</span>\n </a>\n </ng-container>\n\n </div>\n\n <div *ngIf=\"(appState$ | async).showRightDrawer && helpAndSupport.length\"\n class=\"separator-top p-t-8 p-b-8\">\n <button type=\"button\" class=\"c8y-right-drawer__link sticky-top\" (click)=\"documentationOpen = !documentationOpen\"\n [attr.aria-expanded]=\"!documentationCol.isCollapsed\" [attr.aria-controls]=\"'collapseDocs'\">\n <i c8yIcon=\"book-shelf\"></i>\n <span class=\"text-bold\">{{ 'Documentation' | translate }}</span>\n <i c8yIcon=\"angle-down\" class=\"m-l-auto\" [ngClass]=\"{'icon-rotate-180': documentationOpen }\"></i>\n </button>\n <div class=\"collapse\" id=\"collapseDocs\" [collapse]=\"!documentationOpen\" [isAnimated]=\"true\" #documentationCol=\"bs-collapse\">\n <ng-container *ngFor=\"let link of helpAndSupport\">\n <ng-container *ngIf=\"link.component\">\n <ng-container *ngComponentOutlet=\"link.component; injector: link.injector\"></ng-container>\n </ng-container>\n <a\n *ngIf=\"!link.component\"\n title=\"{{ link.label | translate }}\"\n type=\"button\"\n class=\"c8y-right-drawer__link\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n [href]=\"link.url\"\n c8yProductExperience\n [actionName]=\"'quickLinkRightDrawer:' + link.label\"\n [actionData]=\"\"\n tabindex=\"{{ drawerOpen ? '0' : '-1' }}\"\n >\n <span title=\"{{ link.label | translate }}\" class=\"text-truncate text-12\">\n {{ link.label | translate }}\n </span>\n </a>\n </ng-container>\n </div>\n </div>\n\n <!-- TODO: move legal notices here -->\n <!-- <div class=\"separator-top p-t-8 m-t-auto\">\n <a href=\"#\" class=\"c8y-right-drawer__link\">\n <small>Legal notices</small>\n </a>\n </div> -->\n</aside>\n" }]
@@ -13647,7 +13647,7 @@ class HeaderBarComponent {
13647
13647
  }
13648
13648
  }
13649
13649
  HeaderBarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HeaderBarComponent, deps: [{ token: HeaderService }, { token: ActionService }, { token: BreadcrumbService }, { token: SearchService }, { token: AppStateService }, { token: UserMenuService }, { token: DocsService }], target: i0.ɵɵFactoryTarget.Component });
13650
- HeaderBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: HeaderBarComponent, selector: "c8y-header-bar", inputs: { simple: "simple" }, ngImport: i0, template: "<div\n class=\"app-main-header\"\n role=\"banner\"\n [ngClass]=\"{\n open: (headerService.navigatorOpen$ | async) && !simple,\n drawerOpen: drawerOpen\n }\"\n>\n <div class=\"header-bar\">\n <button\n *ngIf=\"(canToggle$ | async) && !simple\"\n type=\"button\"\n class=\"navigator-toggle main-header-button\"\n title=\"{{ 'Toggle navigation bar' | translate }}\"\n (click)=\"headerService.toggleNavigator()\"\n [attr.aria-expanded]=\"(headerService.navigatorOpen$ | async)\"\n [attr.aria-controls]=\"'navigator'\"\n >\n <i [c8yIcon]=\"'outdent'\" *ngIf=\"!(headerService.navigatorOpen$ | async)\"></i>\n <i [c8yIcon]=\"'dedent-right'\" *ngIf=\"headerService.navigatorOpen$ | async\"></i>\n </button>\n <div class=\"app-view\">\n <c8y-app-icon\n [name]=\"(appState$ | async).app.name\"\n [contextPath]=\"(appState$ | async).app.contextPath\"\n ></c8y-app-icon>\n\n <span class=\"page-header\">\n <c8y-title-outlet></c8y-title-outlet>\n <c8y-breadcrumb-outlet\n *ngIf=\"!simple\"\n [breadcrumbs]=\"breadcrumbService.items$ | async\"\n class=\"app-breadcrumbs\"\n ></c8y-breadcrumb-outlet>\n </span>\n </div>\n <c8y-search-outlet\n *ngIf=\"!simple\"\n title=\"{{ 'Search' | translate }}\"\n [search]=\"searchService.items$ | async\"\n class=\"main-header-item\"\n ></c8y-search-outlet>\n <c8y-action-outlet\n *ngIf=\"!simple\"\n [items]=\"actionService.items$ | async\"\n ></c8y-action-outlet>\n <c8y-app-switcher\n *ngIf=\"appState.currentUser.value\"\n title=\"{{ 'Application switcher' | translate }}\"\n class=\"main-header-item\"\n ></c8y-app-switcher>\n\n <button\n class=\"main-header-button drawer-toggle\"\n type=\"button\"\n tooltip=\"{{ appState.currentUser | async | shortenUserName }}\"\n [delay]=\"500\"\n position=\"left\"\n (click)=\"toggleDrawer()\"\n [attr.aria-expanded]=\"drawerOpen\"\n [attr.aria-controls]=\"'right-drawer'\"\n [attr.data-cy]=\"'right-drawer-toggle-button'\"\n >\n <span\n *ngIf=\"appState.currentUser | async\"\n class=\"user-dot\"\n title=\"{{appState.currentUser | async | shortenUserName}}\"\n >\n {{appState.currentUser | async | userNameInitials}}\n </span>\n <span class=\"close-dot\">&times;</span>\n </button>\n </div>\n <div class=\"head-toggler\">\n <button title=\"{{ 'Toggle' | translate }}\" type=\"button\" (click)=\"headerService.toggle()\">\n <i [c8yIcon]=\"'angle-right'\"></i>\n </button>\n </div>\n <c8y-right-drawer\n [app]=\"(appState$ | async).app\"\n [quickLinks]=\"docs.items$ | async\"\n [helpAndSupport]=\"docs.items$ | async\"\n [attr.aria-hidden]=\"!drawerOpen\"\n [drawerOpen]=\"drawerOpen\"\n (closeDrawer)=\"closeDrawer()\"\n id=\"right-drawer\"\n ></c8y-right-drawer>\n <div class=\"loading-bar\" [ngClass]=\"{ active: (appState$ | async).isLoading }\"></div>\n</div>\n", dependencies: [{ kind: "component", type: SearchOutletComponent, selector: "c8y-search-outlet", inputs: ["search"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ActionOutletComponent, selector: "c8y-action-outlet", inputs: ["items"] }, { kind: "component", type: BreadcrumbOutletComponent, selector: "c8y-breadcrumb-outlet", inputs: ["breadcrumbs"] }, { kind: "directive", type: i1$8.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: "component", type: TitleOutletComponent, selector: "c8y-title-outlet" }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "component", type: AppSwitcherComponent, selector: "c8y-app-switcher" }, { kind: "component", type: RightDrawerComponent, selector: "c8y-right-drawer", inputs: ["quickLinks", "helpAndSupport", "app", "drawerOpen"], outputs: ["closeDrawer"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: ShortenUserNamePipe, name: "shortenUserName" }, { kind: "pipe", type: UserNameInitialsPipe, name: "userNameInitials" }] });
13650
+ HeaderBarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: HeaderBarComponent, selector: "c8y-header-bar", inputs: { simple: "simple" }, ngImport: i0, template: "<div\n class=\"app-main-header\"\n role=\"banner\"\n [ngClass]=\"{\n open: (headerService.navigatorOpen$ | async) && !simple,\n drawerOpen: drawerOpen\n }\"\n>\n <div class=\"header-bar\">\n <button\n *ngIf=\"(canToggle$ | async) && !simple\"\n type=\"button\"\n class=\"navigator-toggle main-header-button\"\n title=\"{{ 'Toggle navigation bar' | translate }}\"\n (click)=\"headerService.toggleNavigator()\"\n [attr.aria-expanded]=\"(headerService.navigatorOpen$ | async)\"\n [attr.aria-controls]=\"'navigator'\"\n >\n <i [c8yIcon]=\"'outdent'\" *ngIf=\"!(headerService.navigatorOpen$ | async)\"></i>\n <i [c8yIcon]=\"'dedent-right'\" *ngIf=\"headerService.navigatorOpen$ | async\"></i>\n </button>\n <div class=\"app-view\">\n <c8y-app-icon\n [name]=\"(appState$ | async).app.name\"\n [contextPath]=\"(appState$ | async).app.contextPath\"\n ></c8y-app-icon>\n\n <span class=\"page-header\">\n <c8y-title-outlet></c8y-title-outlet>\n <c8y-breadcrumb-outlet\n *ngIf=\"!simple\"\n [breadcrumbs]=\"breadcrumbService.items$ | async\"\n class=\"app-breadcrumbs\"\n ></c8y-breadcrumb-outlet>\n </span>\n </div>\n <c8y-search-outlet\n *ngIf=\"!simple\"\n title=\"{{ 'Search' | translate }}\"\n [search]=\"searchService.items$ | async\"\n class=\"main-header-item\"\n ></c8y-search-outlet>\n <c8y-action-outlet\n *ngIf=\"!simple\"\n [items]=\"actionService.items$ | async\"\n ></c8y-action-outlet>\n <c8y-app-switcher\n *ngIf=\"appState.currentUser.value\"\n title=\"{{ 'Application switcher' | translate }}\"\n class=\"main-header-item\"\n ></c8y-app-switcher>\n\n <button\n class=\"main-header-button drawer-toggle\"\n type=\"button\"\n tooltip=\"{{ appState.currentUser | async | shortenUserName }}\"\n [delay]=\"500\"\n position=\"left\"\n (click)=\"toggleDrawer()\"\n [attr.aria-expanded]=\"drawerOpen\"\n [attr.aria-controls]=\"'right-drawer'\"\n [attr.data-cy]=\"'right-drawer-toggle-button'\"\n >\n <span\n *ngIf=\"appState.currentUser | async\"\n class=\"user-dot\"\n title=\"{{appState.currentUser | async | shortenUserName}}\"\n >\n {{appState.currentUser | async | userNameInitials}}\n </span>\n <span class=\"close-dot\">&times;</span>\n </button>\n </div>\n <div class=\"head-toggler\">\n <button title=\"{{ 'Toggle' | translate }}\" type=\"button\" (click)=\"headerService.toggle()\">\n <i [c8yIcon]=\"'angle-right'\"></i>\n </button>\n </div>\n <c8y-right-drawer\n [app]=\"(appState$ | async).app\"\n [quickLinks]=\"docs.items$ | async\"\n [helpAndSupport]=\"docs.items$ | async\"\n [attr.aria-hidden]=\"!drawerOpen\"\n [drawerOpen]=\"drawerOpen\"\n (closeDrawer)=\"closeDrawer()\"\n id=\"right-drawer\"\n ></c8y-right-drawer>\n <div class=\"loading-bar\" [ngClass]=\"{ active: (appState$ | async).isLoading }\"></div>\n</div>\n", dependencies: [{ kind: "component", type: SearchOutletComponent, selector: "c8y-search-outlet", inputs: ["search"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ActionOutletComponent, selector: "c8y-action-outlet", inputs: ["items"] }, { kind: "component", type: BreadcrumbOutletComponent, selector: "c8y-breadcrumb-outlet", inputs: ["breadcrumbs"] }, { kind: "directive", type: i1$7.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: "component", type: TitleOutletComponent, selector: "c8y-title-outlet" }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "component", type: AppSwitcherComponent, selector: "c8y-app-switcher" }, { kind: "component", type: RightDrawerComponent, selector: "c8y-right-drawer", inputs: ["quickLinks", "helpAndSupport", "app", "drawerOpen"], outputs: ["closeDrawer"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: ShortenUserNamePipe, name: "shortenUserName" }, { kind: "pipe", type: UserNameInitialsPipe, name: "userNameInitials" }] });
13651
13651
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HeaderBarComponent, decorators: [{
13652
13652
  type: Component,
13653
13653
  args: [{ selector: 'c8y-header-bar', template: "<div\n class=\"app-main-header\"\n role=\"banner\"\n [ngClass]=\"{\n open: (headerService.navigatorOpen$ | async) && !simple,\n drawerOpen: drawerOpen\n }\"\n>\n <div class=\"header-bar\">\n <button\n *ngIf=\"(canToggle$ | async) && !simple\"\n type=\"button\"\n class=\"navigator-toggle main-header-button\"\n title=\"{{ 'Toggle navigation bar' | translate }}\"\n (click)=\"headerService.toggleNavigator()\"\n [attr.aria-expanded]=\"(headerService.navigatorOpen$ | async)\"\n [attr.aria-controls]=\"'navigator'\"\n >\n <i [c8yIcon]=\"'outdent'\" *ngIf=\"!(headerService.navigatorOpen$ | async)\"></i>\n <i [c8yIcon]=\"'dedent-right'\" *ngIf=\"headerService.navigatorOpen$ | async\"></i>\n </button>\n <div class=\"app-view\">\n <c8y-app-icon\n [name]=\"(appState$ | async).app.name\"\n [contextPath]=\"(appState$ | async).app.contextPath\"\n ></c8y-app-icon>\n\n <span class=\"page-header\">\n <c8y-title-outlet></c8y-title-outlet>\n <c8y-breadcrumb-outlet\n *ngIf=\"!simple\"\n [breadcrumbs]=\"breadcrumbService.items$ | async\"\n class=\"app-breadcrumbs\"\n ></c8y-breadcrumb-outlet>\n </span>\n </div>\n <c8y-search-outlet\n *ngIf=\"!simple\"\n title=\"{{ 'Search' | translate }}\"\n [search]=\"searchService.items$ | async\"\n class=\"main-header-item\"\n ></c8y-search-outlet>\n <c8y-action-outlet\n *ngIf=\"!simple\"\n [items]=\"actionService.items$ | async\"\n ></c8y-action-outlet>\n <c8y-app-switcher\n *ngIf=\"appState.currentUser.value\"\n title=\"{{ 'Application switcher' | translate }}\"\n class=\"main-header-item\"\n ></c8y-app-switcher>\n\n <button\n class=\"main-header-button drawer-toggle\"\n type=\"button\"\n tooltip=\"{{ appState.currentUser | async | shortenUserName }}\"\n [delay]=\"500\"\n position=\"left\"\n (click)=\"toggleDrawer()\"\n [attr.aria-expanded]=\"drawerOpen\"\n [attr.aria-controls]=\"'right-drawer'\"\n [attr.data-cy]=\"'right-drawer-toggle-button'\"\n >\n <span\n *ngIf=\"appState.currentUser | async\"\n class=\"user-dot\"\n title=\"{{appState.currentUser | async | shortenUserName}}\"\n >\n {{appState.currentUser | async | userNameInitials}}\n </span>\n <span class=\"close-dot\">&times;</span>\n </button>\n </div>\n <div class=\"head-toggler\">\n <button title=\"{{ 'Toggle' | translate }}\" type=\"button\" (click)=\"headerService.toggle()\">\n <i [c8yIcon]=\"'angle-right'\"></i>\n </button>\n </div>\n <c8y-right-drawer\n [app]=\"(appState$ | async).app\"\n [quickLinks]=\"docs.items$ | async\"\n [helpAndSupport]=\"docs.items$ | async\"\n [attr.aria-hidden]=\"!drawerOpen\"\n [drawerOpen]=\"drawerOpen\"\n (closeDrawer)=\"closeDrawer()\"\n id=\"right-drawer\"\n ></c8y-right-drawer>\n <div class=\"loading-bar\" [ngClass]=\"{ active: (appState$ | async).isLoading }\"></div>\n</div>\n" }]
@@ -13855,7 +13855,7 @@ class SmsChallengeComponent {
13855
13855
  }
13856
13856
  }
13857
13857
  SmsChallengeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SmsChallengeComponent, deps: [{ token: LoginService }, { token: i1$2.UserService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
13858
- SmsChallengeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SmsChallengeComponent, selector: "c8y-sms-challenge", inputs: { credentials: "credentials" }, outputs: { onCancel: "onCancel" }, ngImport: i0, template: "<form #twoFactorForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"verifyTFACode()\" novalidate>\n <div class=\"legend form-block center\" translate>Two-factor authentication</div>\n\n <c8y-form-group>\n <label translate>Verification code</label>\n <input\n [(ngModel)]=\"model.smsToken\"\n #sms_token=\"ngModel\"\n type=\"text\"\n name=\"sms_token\"\n autofocus\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 624327\"\n required\n />\n <p *ngIf=\"!twoFactorForm.form.valid || isLoading\" class=\"help-block\" translate>\n Insert the code received via SMS.\n </p>\n </c8y-form-group>\n\n <button\n title=\"{{ 'Verify' | translate }}\"\n [disabled]=\"!twoFactorForm.form.valid || isLoading\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Verify' | translate }}\n </button>\n\n <div class=\"d-flex m-t-8\">\n <button\n type=\"button\"\n title=\"{{ 'Send new code' | translate }}\"\n [ngClass]=\"{ disabled: isLoading }\"\n class=\"btn btn-link btn-sm\"\n (click)=\"resendTFASms()\"\n >\n {{ 'Send new code' | translate }}\n </button>\n <button\n type=\"button\"\n title=\"{{ 'Log in' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onCancel.emit()\"\n >\n {{ 'Log in' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
13858
+ SmsChallengeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SmsChallengeComponent, selector: "c8y-sms-challenge", inputs: { credentials: "credentials" }, outputs: { onCancel: "onCancel" }, ngImport: i0, template: "<form #twoFactorForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"verifyTFACode()\" novalidate>\n <div class=\"legend form-block center\" translate>Two-factor authentication</div>\n\n <c8y-form-group>\n <label translate>Verification code</label>\n <input\n [(ngModel)]=\"model.smsToken\"\n #sms_token=\"ngModel\"\n type=\"text\"\n name=\"sms_token\"\n autofocus\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 624327\"\n required\n />\n <p *ngIf=\"!twoFactorForm.form.valid || isLoading\" class=\"help-block\" translate>\n Insert the code received via SMS.\n </p>\n </c8y-form-group>\n\n <button\n title=\"{{ 'Verify' | translate }}\"\n [disabled]=\"!twoFactorForm.form.valid || isLoading\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Verify' | translate }}\n </button>\n\n <div class=\"d-flex m-t-8\">\n <button\n type=\"button\"\n title=\"{{ 'Send new code' | translate }}\"\n [ngClass]=\"{ disabled: isLoading }\"\n class=\"btn btn-link btn-sm\"\n (click)=\"resendTFASms()\"\n >\n {{ 'Send new code' | translate }}\n </button>\n <button\n type=\"button\"\n title=\"{{ 'Log in' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onCancel.emit()\"\n >\n {{ 'Log in' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
13859
13859
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SmsChallengeComponent, decorators: [{
13860
13860
  type: Component,
13861
13861
  args: [{ selector: 'c8y-sms-challenge', template: "<form #twoFactorForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"verifyTFACode()\" novalidate>\n <div class=\"legend form-block center\" translate>Two-factor authentication</div>\n\n <c8y-form-group>\n <label translate>Verification code</label>\n <input\n [(ngModel)]=\"model.smsToken\"\n #sms_token=\"ngModel\"\n type=\"text\"\n name=\"sms_token\"\n autofocus\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 624327\"\n required\n />\n <p *ngIf=\"!twoFactorForm.form.valid || isLoading\" class=\"help-block\" translate>\n Insert the code received via SMS.\n </p>\n </c8y-form-group>\n\n <button\n title=\"{{ 'Verify' | translate }}\"\n [disabled]=\"!twoFactorForm.form.valid || isLoading\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Verify' | translate }}\n </button>\n\n <div class=\"d-flex m-t-8\">\n <button\n type=\"button\"\n title=\"{{ 'Send new code' | translate }}\"\n [ngClass]=\"{ disabled: isLoading }\"\n class=\"btn btn-link btn-sm\"\n (click)=\"resendTFASms()\"\n >\n {{ 'Send new code' | translate }}\n </button>\n <button\n type=\"button\"\n title=\"{{ 'Log in' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onCancel.emit()\"\n >\n {{ 'Log in' | translate }}\n </button>\n </div>\n</form>\n" }]
@@ -13912,7 +13912,7 @@ class ProvidePhoneNumberComponent {
13912
13912
  }
13913
13913
  }
13914
13914
  ProvidePhoneNumberComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProvidePhoneNumberComponent, deps: [{ token: LoginService }, { token: AlertService }, { token: i1$2.UserService }], target: i0.ɵɵFactoryTarget.Component });
13915
- ProvidePhoneNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ProvidePhoneNumberComponent, selector: "c8y-provide-phone-number", inputs: { credentials: "credentials" }, outputs: { onCancel: "onCancel", onChangeView: "onChangeView" }, ngImport: i0, template: "<form #twoFactorForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"save()\" novalidate>\n <div class=\"legend form-block center\" translate>Two-factor authentication</div>\n\n <c8y-form-group [ngClass]=\"requestInProgress || twoFactorForm.invalid ? 'p-b-8' : ''\">\n <label translate>Provide your phone number</label>\n\n <input\n class=\"form-control\"\n [(ngModel)]=\"phoneNumber\"\n #contactPhone=\"ngModel\"\n type=\"text\"\n name=\"phone\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}\"\n c8yPhoneValidation\n required\n />\n </c8y-form-group>\n\n <button\n title=\"{{ 'Save and continue' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n [disabled]=\"requestInProgress || twoFactorForm.invalid\"\n >\n {{ 'Save and continue' | translate }}\n </button>\n\n <div class=\"d-flex m-t-8\">\n <a\n title=\"{{ 'Login' | translate }}\"\n class=\"small pointer m-l-auto\"\n href=\"#\"\n (click)=\"onCancel.emit()\"\n >\n {{ 'Login' | translate }}\n </a>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: PhoneValidationDirective, selector: "[c8yPhoneValidation]" }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
13915
+ ProvidePhoneNumberComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ProvidePhoneNumberComponent, selector: "c8y-provide-phone-number", inputs: { credentials: "credentials" }, outputs: { onCancel: "onCancel", onChangeView: "onChangeView" }, ngImport: i0, template: "<form #twoFactorForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"save()\" novalidate>\n <div class=\"legend form-block center\" translate>Two-factor authentication</div>\n\n <c8y-form-group [ngClass]=\"requestInProgress || twoFactorForm.invalid ? 'p-b-8' : ''\">\n <label translate>Provide your phone number</label>\n\n <input\n class=\"form-control\"\n [(ngModel)]=\"phoneNumber\"\n #contactPhone=\"ngModel\"\n type=\"text\"\n name=\"phone\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}\"\n c8yPhoneValidation\n required\n />\n </c8y-form-group>\n\n <button\n title=\"{{ 'Save and continue' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n [disabled]=\"requestInProgress || twoFactorForm.invalid\"\n >\n {{ 'Save and continue' | translate }}\n </button>\n\n <div class=\"d-flex m-t-8\">\n <a\n title=\"{{ 'Login' | translate }}\"\n class=\"small pointer m-l-auto\"\n href=\"#\"\n (click)=\"onCancel.emit()\"\n >\n {{ 'Login' | translate }}\n </a>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: PhoneValidationDirective, selector: "[c8yPhoneValidation]" }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
13916
13916
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProvidePhoneNumberComponent, decorators: [{
13917
13917
  type: Component,
13918
13918
  args: [{ selector: 'c8y-provide-phone-number', template: "<form #twoFactorForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"save()\" novalidate>\n <div class=\"legend form-block center\" translate>Two-factor authentication</div>\n\n <c8y-form-group [ngClass]=\"requestInProgress || twoFactorForm.invalid ? 'p-b-8' : ''\">\n <label translate>Provide your phone number</label>\n\n <input\n class=\"form-control\"\n [(ngModel)]=\"phoneNumber\"\n #contactPhone=\"ngModel\"\n type=\"text\"\n name=\"phone\"\n autocomplete=\"off\"\n placeholder=\"{{ 'e.g. +49 9 876 543 210`LOCALIZE`' | translate }}\"\n c8yPhoneValidation\n required\n />\n </c8y-form-group>\n\n <button\n title=\"{{ 'Save and continue' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n [disabled]=\"requestInProgress || twoFactorForm.invalid\"\n >\n {{ 'Save and continue' | translate }}\n </button>\n\n <div class=\"d-flex m-t-8\">\n <a\n title=\"{{ 'Login' | translate }}\"\n class=\"small pointer m-l-auto\"\n href=\"#\"\n (click)=\"onCancel.emit()\"\n >\n {{ 'Login' | translate }}\n </a>\n </div>\n</form>\n" }]
@@ -13956,7 +13956,7 @@ class RecoverPasswordComponent {
13956
13956
  }
13957
13957
  }
13958
13958
  RecoverPasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RecoverPasswordComponent, deps: [{ token: i1$2.UserService }, { token: LoginService }], target: i0.ɵɵFactoryTarget.Component });
13959
- RecoverPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RecoverPasswordComponent, selector: "c8y-recover-password", outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<form #resetForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"resetPassword()\" novalidate>\n <div class=\"legend form-block center\" translate>Forgot password?</div>\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"loginService.showTenant()\">\n <label translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenantId\"\n #tenantId=\"ngModel\"\n type=\"text\"\n name=\"tenantId\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Tenant ID' | translate }}\"\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Email address</label>\n <input\n [(ngModel)]=\"model.email\"\n #email=\"ngModel\"\n type=\"text\"\n name=\"email\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Email address' | translate }}\"\n email\n required\n />\n </c8y-form-group>\n\n <button\n title=\"{{ 'Reset password' | translate }}\"\n [disabled]=\"!resetForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Reset password' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n type=\"button\"\n title=\"{{ 'Login' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.Credentials })\"\n >\n {{ 'Login' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
13959
+ RecoverPasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RecoverPasswordComponent, selector: "c8y-recover-password", outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<form #resetForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"resetPassword()\" novalidate>\n <div class=\"legend form-block center\" translate>Forgot password?</div>\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"loginService.showTenant()\">\n <label translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenantId\"\n #tenantId=\"ngModel\"\n type=\"text\"\n name=\"tenantId\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Tenant ID' | translate }}\"\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Email address</label>\n <input\n [(ngModel)]=\"model.email\"\n #email=\"ngModel\"\n type=\"text\"\n name=\"email\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Email address' | translate }}\"\n email\n required\n />\n </c8y-form-group>\n\n <button\n title=\"{{ 'Reset password' | translate }}\"\n [disabled]=\"!resetForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Reset password' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n type=\"button\"\n title=\"{{ 'Login' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.Credentials })\"\n >\n {{ 'Login' | translate }}\n </button>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
13960
13960
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RecoverPasswordComponent, decorators: [{
13961
13961
  type: Component,
13962
13962
  args: [{ selector: 'c8y-recover-password', template: "<form #resetForm=\"ngForm\" class=\"loginForm\" (ngSubmit)=\"resetPassword()\" novalidate>\n <div class=\"legend form-block center\" translate>Forgot password?</div>\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"loginService.showTenant()\">\n <label translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenantId\"\n #tenantId=\"ngModel\"\n type=\"text\"\n name=\"tenantId\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Tenant ID' | translate }}\"\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Email address</label>\n <input\n [(ngModel)]=\"model.email\"\n #email=\"ngModel\"\n type=\"text\"\n name=\"email\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Email address' | translate }}\"\n email\n required\n />\n </c8y-form-group>\n\n <button\n title=\"{{ 'Reset password' | translate }}\"\n [disabled]=\"!resetForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Reset password' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n type=\"button\"\n title=\"{{ 'Login' | translate }}\"\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.Credentials })\"\n >\n {{ 'Login' | translate }}\n </button>\n </div>\n</form>\n" }]
@@ -14071,7 +14071,7 @@ class PopoverConfirmComponent {
14071
14071
  }
14072
14072
  }
14073
14073
  PopoverConfirmComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PopoverConfirmComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14074
- PopoverConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: PopoverConfirmComponent, selector: "c8y-popover-confirm", inputs: { buttons: "buttons", message: "message", title: "title", isOpen: "isOpen", containerClass: "containerClass", placement: "placement", outsideClick: "outsideClick" }, viewQueries: [{ propertyName: "popover", first: true, predicate: PopoverDirective, descendants: true }], ngImport: i0, template: "<span\n [popover]=\"popover\"\n container=\"body\"\n [isOpen]=\"isOpen\"\n [popoverTitle]=\"title | translate\"\n [placement]=\"placement\"\n [containerClass]=\"containerClass\"\n [outsideClick]=\"outsideClick\"\n (onHidden)=\"handleOutsideClick()\"\n></span>\n<ng-template #popover>\n <p class=\"m-b-8\">\n {{ message | translate }}\n </p>\n <div class=\"popover-footer\">\n <ng-container *ngFor=\"let button of buttons\">\n <button\n title=\"{{ button.label | translate }}\"\n [attr.data-cy]=\"'popover-confirm--' + (button.label | translate)\"\n class=\"btn btn-sm m-r-16\"\n [ngClass]=\"buttonStatus(button.status)\"\n (click)=\"click(button.action)\"\n >\n {{ button.label | translate }}\n </button>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
14074
+ PopoverConfirmComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: PopoverConfirmComponent, selector: "c8y-popover-confirm", inputs: { buttons: "buttons", message: "message", title: "title", isOpen: "isOpen", containerClass: "containerClass", placement: "placement", outsideClick: "outsideClick" }, viewQueries: [{ propertyName: "popover", first: true, predicate: PopoverDirective, descendants: true }], ngImport: i0, template: "<span\n [popover]=\"popover\"\n container=\"body\"\n [isOpen]=\"isOpen\"\n [popoverTitle]=\"title | translate\"\n [placement]=\"placement\"\n [containerClass]=\"containerClass\"\n [outsideClick]=\"outsideClick\"\n (onHidden)=\"handleOutsideClick()\"\n></span>\n<ng-template #popover>\n <p class=\"m-b-8\">\n {{ message | translate }}\n </p>\n <div class=\"popover-footer\">\n <ng-container *ngFor=\"let button of buttons\">\n <button\n title=\"{{ button.label | translate }}\"\n [attr.data-cy]=\"'popover-confirm--' + (button.label | translate)\"\n class=\"btn btn-sm m-r-16\"\n [ngClass]=\"buttonStatus(button.status)\"\n (click)=\"click(button.action)\"\n >\n {{ button.label | translate }}\n </button>\n </ng-container>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
14075
14075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PopoverConfirmComponent, decorators: [{
14076
14076
  type: Component,
14077
14077
  args: [{ selector: 'c8y-popover-confirm', template: "<span\n [popover]=\"popover\"\n container=\"body\"\n [isOpen]=\"isOpen\"\n [popoverTitle]=\"title | translate\"\n [placement]=\"placement\"\n [containerClass]=\"containerClass\"\n [outsideClick]=\"outsideClick\"\n (onHidden)=\"handleOutsideClick()\"\n></span>\n<ng-template #popover>\n <p class=\"m-b-8\">\n {{ message | translate }}\n </p>\n <div class=\"popover-footer\">\n <ng-container *ngFor=\"let button of buttons\">\n <button\n title=\"{{ button.label | translate }}\"\n [attr.data-cy]=\"'popover-confirm--' + (button.label | translate)\"\n class=\"btn btn-sm m-r-16\"\n [ngClass]=\"buttonStatus(button.status)\"\n (click)=\"click(button.action)\"\n >\n {{ button.label | translate }}\n </button>\n </ng-container>\n </div>\n</ng-template>\n" }]
@@ -14103,7 +14103,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
14103
14103
  class ModalModule {
14104
14104
  }
14105
14105
  ModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
14106
- ModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: ModalModule, declarations: [ConfirmModalComponent, ModalComponent, PopoverConfirmComponent], imports: [i1$9.ModalModule, CommonModule, i2$1.PopoverModule], exports: [ConfirmModalComponent, ModalComponent, PopoverConfirmComponent] });
14106
+ ModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: ModalModule, declarations: [ConfirmModalComponent, ModalComponent, PopoverConfirmComponent], imports: [i1$8.ModalModule, CommonModule, i2$2.PopoverModule], exports: [ConfirmModalComponent, ModalComponent, PopoverConfirmComponent] });
14107
14107
  ModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalModule, providers: [ModalService], imports: [ModalModule$1.forRoot(), CommonModule, PopoverModule.forRoot()] });
14108
14108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ModalModule, decorators: [{
14109
14109
  type: NgModule,
@@ -14227,7 +14227,7 @@ class InputGroupListComponent {
14227
14227
  }
14228
14228
  }
14229
14229
  InputGroupListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: InputGroupListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14230
- InputGroupListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: InputGroupListComponent, selector: "c8y-input-group-list", inputs: { plus: "plus", minus: "minus", index: "index" }, outputs: { onRemove: "onRemove", onAdd: "onAdd" }, ngImport: i0, template: "<ng-container>\n <div class=\"input-group\">\n <ng-content></ng-content>\n <div class=\"input-group-btn\">\n <button\n *ngIf=\"minus\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger text-primary\"\n (click)=\"remove()\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <button\n *ngIf=\"plus\"\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot text-primary\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n </button>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
14230
+ InputGroupListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: InputGroupListComponent, selector: "c8y-input-group-list", inputs: { plus: "plus", minus: "minus", index: "index" }, outputs: { onRemove: "onRemove", onAdd: "onAdd" }, ngImport: i0, template: "<ng-container>\n <div class=\"input-group\">\n <ng-content></ng-content>\n <div class=\"input-group-btn\">\n <button\n *ngIf=\"minus\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger text-primary\"\n (click)=\"remove()\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <button\n *ngIf=\"plus\"\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot text-primary\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n </button>\n </div>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
14231
14231
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: InputGroupListComponent, decorators: [{
14232
14232
  type: Component,
14233
14233
  args: [{ selector: 'c8y-input-group-list', template: "<ng-container>\n <div class=\"input-group\">\n <ng-content></ng-content>\n <div class=\"input-group-btn\">\n <button\n *ngIf=\"minus\"\n title=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger text-primary\"\n (click)=\"remove()\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n <button\n *ngIf=\"plus\"\n title=\"{{ 'Add' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot text-primary\"\n (click)=\"add()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n </button>\n </div>\n </div>\n</ng-container>\n" }]
@@ -14333,7 +14333,7 @@ class IpRangeInputListComponent {
14333
14333
  }
14334
14334
  }
14335
14335
  IpRangeInputListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: IpRangeInputListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14336
- IpRangeInputListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: IpRangeInputListComponent, selector: "c8y-ip-range-input-list", inputs: { data: "data" }, ngImport: i0, template: "<c8y-form-group class=\"m-t-8 m-b-8\">\n <ul c8yInputGroupListContainer class=\"list-unstyled\">\n <li class=\"m-b-8\" *ngFor=\"let item of data; let i = index\">\n <c8y-input-group-list [index]=\"i\" (onAdd)=\"add()\" (onRemove)=\"remove($event)\">\n <input\n type=\"text\"\n name=\"ipAddress\"\n class=\"form-control m-r-4\"\n placeholder=\"{{ 'IP range start, e.g.' | translate }} 192.168.0.1\"\n style=\"flex-grow: 2\"\n [(ngModel)]=\"item.ip\"\n [required]=\"true\"\n #ipAddress\n />\n <input\n type=\"number\"\n name=\"cidr\"\n [min]=\"0\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 20\"\n [(ngModel)]=\"item.cidr\"\n [required]=\"true\"\n #cidr\n />\n </c8y-input-group-list>\n </li>\n </ul>\n</c8y-form-group>\n", dependencies: [{ kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: InputGroupListComponent, selector: "c8y-input-group-list", inputs: ["plus", "minus", "index"], outputs: ["onRemove", "onAdd"] }, { kind: "directive", type: InputGroupListContainerDirective, selector: "[c8yInputGroupListContainer]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
14336
+ IpRangeInputListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: IpRangeInputListComponent, selector: "c8y-ip-range-input-list", inputs: { data: "data" }, ngImport: i0, template: "<c8y-form-group class=\"m-t-8 m-b-8\">\n <ul c8yInputGroupListContainer class=\"list-unstyled\">\n <li class=\"m-b-8\" *ngFor=\"let item of data; let i = index\">\n <c8y-input-group-list [index]=\"i\" (onAdd)=\"add()\" (onRemove)=\"remove($event)\">\n <input\n type=\"text\"\n name=\"ipAddress\"\n class=\"form-control m-r-4\"\n placeholder=\"{{ 'IP range start, e.g.' | translate }} 192.168.0.1\"\n style=\"flex-grow: 2\"\n [(ngModel)]=\"item.ip\"\n [required]=\"true\"\n #ipAddress\n />\n <input\n type=\"number\"\n name=\"cidr\"\n [min]=\"0\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 20\"\n [(ngModel)]=\"item.cidr\"\n [required]=\"true\"\n #cidr\n />\n </c8y-input-group-list>\n </li>\n </ul>\n</c8y-form-group>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: MinValidationDirective, selector: "[min]", inputs: ["min"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: InputGroupListComponent, selector: "c8y-input-group-list", inputs: ["plus", "minus", "index"], outputs: ["onRemove", "onAdd"] }, { kind: "directive", type: InputGroupListContainerDirective, selector: "[c8yInputGroupListContainer]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
14337
14337
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: IpRangeInputListComponent, decorators: [{
14338
14338
  type: Component,
14339
14339
  args: [{ selector: 'c8y-ip-range-input-list', template: "<c8y-form-group class=\"m-t-8 m-b-8\">\n <ul c8yInputGroupListContainer class=\"list-unstyled\">\n <li class=\"m-b-8\" *ngFor=\"let item of data; let i = index\">\n <c8y-input-group-list [index]=\"i\" (onAdd)=\"add()\" (onRemove)=\"remove($event)\">\n <input\n type=\"text\"\n name=\"ipAddress\"\n class=\"form-control m-r-4\"\n placeholder=\"{{ 'IP range start, e.g.' | translate }} 192.168.0.1\"\n style=\"flex-grow: 2\"\n [(ngModel)]=\"item.ip\"\n [required]=\"true\"\n #ipAddress\n />\n <input\n type=\"number\"\n name=\"cidr\"\n [min]=\"0\"\n class=\"form-control\"\n placeholder=\"{{ 'e.g.' | translate }} 20\"\n [(ngModel)]=\"item.cidr\"\n [required]=\"true\"\n #cidr\n />\n </c8y-input-group-list>\n </li>\n </ul>\n</c8y-form-group>\n" }]
@@ -14461,7 +14461,7 @@ class RangeComponent {
14461
14461
  }
14462
14462
  }
14463
14463
  RangeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RangeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14464
- RangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RangeComponent, selector: "c8y-range", queries: [{ propertyName: "range", first: true, predicate: RangeDirective, descendants: true, static: true }, { propertyName: "rangeValue", first: true, predicate: ["c8yRangeValue"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"range-wrap\" style=\"--track-width: {{left}}\">\n <div class=\"range-value\" [style.left]=\"left\">\n <span *ngIf=\"!rangeValue\">{{ value }}</span>\n <ng-container *ngTemplateOutlet=\"rangeValue\"></ng-container>\n </div>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
14464
+ RangeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RangeComponent, selector: "c8y-range", queries: [{ propertyName: "range", first: true, predicate: RangeDirective, descendants: true, static: true }, { propertyName: "rangeValue", first: true, predicate: ["c8yRangeValue"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"range-wrap\" style=\"--track-width: {{left}}\">\n <div class=\"range-value\" [style.left]=\"left\">\n <span *ngIf=\"!rangeValue\">{{ value }}</span>\n <ng-container *ngTemplateOutlet=\"rangeValue\"></ng-container>\n </div>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
14465
14465
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RangeComponent, decorators: [{
14466
14466
  type: Component,
14467
14467
  args: [{ selector: 'c8y-range', template: "<div class=\"range-wrap\" style=\"--track-width: {{left}}\">\n <div class=\"range-value\" [style.left]=\"left\">\n <span *ngIf=\"!rangeValue\">{{ value }}</span>\n <ng-container *ngTemplateOutlet=\"rangeValue\"></ng-container>\n </div>\n <ng-content></ng-content>\n</div>\n" }]
@@ -14865,7 +14865,7 @@ class ChangePasswordComponent {
14865
14865
  }
14866
14866
  }
14867
14867
  ChangePasswordComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ChangePasswordComponent, deps: [{ token: LoginService }, { token: i1$2.UserService }, { token: PasswordService }, { token: OptionsService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
14868
- ChangePasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ChangePasswordComponent, selector: "c8y-change-password", inputs: { credentials: "credentials" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<form class=\"loginForm\" (ngSubmit)=\"changePassword()\" #changePasswordForm=\"ngForm\" novalidate>\n <div class=\"legend form-block center\" translate>Change password</div>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"loginService.showTenant()\">\n <label translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenantId\"\n #tenantId=\"ngModel\"\n type=\"text\"\n name=\"tenantId\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Tenant ID' | translate }}\"\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Email address</label>\n <input\n [(ngModel)]=\"model.email\"\n #email=\"ngModel\"\n type=\"text\"\n name=\"email\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Email address' | translate }}\"\n email\n required\n [readonly]=\"emailReadOnly\"\n />\n </c8y-form-group>\n\n <div class=\"row content-flex-50\">\n <div class=\"col-7\">\n <c8y-form-group>\n <label translate>New password</label>\n <input\n [(ngModel)]=\"model.newPassword\"\n #newPassword=\"ngModel\"\n type=\"password\"\n name=\"newPassword\"\n class=\"form-control\"\n placeholder=\"{{ 'New password' | translate }}\"\n [pattern]=\"passwordPattern\"\n autocomplete=\"new-password\"\n [passwordStrengthEnforced]=\"passwordStrengthEnforced\"\n required\n />\n <c8y-messages>\n <c8y-message\n name=\"pattern\"\n [text]=\"loginService.ERROR_MESSAGES.pattern_newPassword\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Confirm password</label>\n <input\n [(ngModel)]=\"model.newPasswordConfirm\"\n #newPasswordConfirm=\"ngModel\"\n type=\"password\"\n name=\"newPasswordConfirm\"\n class=\"form-control\"\n placeholder=\"{{ 'Confirm password' | translate }}\"\n passwordConfirm=\"newPassword\"\n autocomplete=\"new-password\"\n required\n />\n <c8y-messages>\n <c8y-message\n name=\"passwordConfirm\"\n [text]=\"loginService.ERROR_MESSAGES.passwordConfirm\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-5\">\n <c8y-password-strength\n [password]=\"model.newPassword\"\n [hidden]=\"!model.newPassword\"\n ></c8y-password-strength>\n <c8y-password-check-list\n class=\"m-t-32\"\n [password]=\"model.newPassword\"\n [hidden]=\"!model.newPassword || !passwordStrengthEnforced\"\n ></c8y-password-check-list>\n </div>\n </div>\n\n <button\n title=\"{{ 'Set password' | translate }}\"\n [disabled]=\"!changePasswordForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Set password' | translate }}\n </button>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i5.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PasswordStrengthComponent, selector: "c8y-password-strength", inputs: ["password"], outputs: ["strength"] }, { kind: "component", type: PasswordCheckListComponent, selector: "c8y-password-check-list", inputs: ["password"] }, { kind: "directive", type: PasswordConfirm, selector: "[passwordConfirm]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: PasswordStrengthValidatorDirective, selector: "[passwordStrengthEnforced]", inputs: ["passwordStrengthEnforced"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
14868
+ ChangePasswordComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ChangePasswordComponent, selector: "c8y-change-password", inputs: { credentials: "credentials" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<form class=\"loginForm\" (ngSubmit)=\"changePassword()\" #changePasswordForm=\"ngForm\" novalidate>\n <div class=\"legend form-block center\" translate>Change password</div>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"loginService.showTenant()\">\n <label translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenantId\"\n #tenantId=\"ngModel\"\n type=\"text\"\n name=\"tenantId\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Tenant ID' | translate }}\"\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Email address</label>\n <input\n [(ngModel)]=\"model.email\"\n #email=\"ngModel\"\n type=\"text\"\n name=\"email\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Email address' | translate }}\"\n email\n required\n [readonly]=\"emailReadOnly\"\n />\n </c8y-form-group>\n\n <div class=\"row content-flex-50\">\n <div class=\"col-7\">\n <c8y-form-group>\n <label translate>New password</label>\n <input\n [(ngModel)]=\"model.newPassword\"\n #newPassword=\"ngModel\"\n type=\"password\"\n name=\"newPassword\"\n class=\"form-control\"\n placeholder=\"{{ 'New password' | translate }}\"\n [pattern]=\"passwordPattern\"\n autocomplete=\"new-password\"\n [passwordStrengthEnforced]=\"passwordStrengthEnforced\"\n required\n />\n <c8y-messages>\n <c8y-message\n name=\"pattern\"\n [text]=\"loginService.ERROR_MESSAGES.pattern_newPassword\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Confirm password</label>\n <input\n [(ngModel)]=\"model.newPasswordConfirm\"\n #newPasswordConfirm=\"ngModel\"\n type=\"password\"\n name=\"newPasswordConfirm\"\n class=\"form-control\"\n placeholder=\"{{ 'Confirm password' | translate }}\"\n passwordConfirm=\"newPassword\"\n autocomplete=\"new-password\"\n required\n />\n <c8y-messages>\n <c8y-message\n name=\"passwordConfirm\"\n [text]=\"loginService.ERROR_MESSAGES.passwordConfirm\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-5\">\n <c8y-password-strength\n [password]=\"model.newPassword\"\n [hidden]=\"!model.newPassword\"\n ></c8y-password-strength>\n <c8y-password-check-list\n class=\"m-t-32\"\n [password]=\"model.newPassword\"\n [hidden]=\"!model.newPassword || !passwordStrengthEnforced\"\n ></c8y-password-check-list>\n </div>\n </div>\n\n <button\n title=\"{{ 'Set password' | translate }}\"\n [disabled]=\"!changePasswordForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Set password' | translate }}\n </button>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i5.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: PasswordStrengthComponent, selector: "c8y-password-strength", inputs: ["password"], outputs: ["strength"] }, { kind: "component", type: PasswordCheckListComponent, selector: "c8y-password-check-list", inputs: ["password"] }, { kind: "directive", type: PasswordConfirm, selector: "[passwordConfirm]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: PasswordStrengthValidatorDirective, selector: "[passwordStrengthEnforced]", inputs: ["passwordStrengthEnforced"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
14869
14869
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ChangePasswordComponent, decorators: [{
14870
14870
  type: Component,
14871
14871
  args: [{ selector: 'c8y-change-password', template: "<form class=\"loginForm\" (ngSubmit)=\"changePassword()\" #changePasswordForm=\"ngForm\" novalidate>\n <div class=\"legend form-block center\" translate>Change password</div>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"loginService.showTenant()\">\n <label translate>Tenant ID</label>\n <input\n [(ngModel)]=\"model.tenantId\"\n #tenantId=\"ngModel\"\n type=\"text\"\n name=\"tenantId\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Tenant ID' | translate }}\"\n required\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Email address</label>\n <input\n [(ngModel)]=\"model.email\"\n #email=\"ngModel\"\n type=\"text\"\n name=\"email\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n class=\"form-control\"\n placeholder=\"{{ 'Email address' | translate }}\"\n email\n required\n [readonly]=\"emailReadOnly\"\n />\n </c8y-form-group>\n\n <div class=\"row content-flex-50\">\n <div class=\"col-7\">\n <c8y-form-group>\n <label translate>New password</label>\n <input\n [(ngModel)]=\"model.newPassword\"\n #newPassword=\"ngModel\"\n type=\"password\"\n name=\"newPassword\"\n class=\"form-control\"\n placeholder=\"{{ 'New password' | translate }}\"\n [pattern]=\"passwordPattern\"\n autocomplete=\"new-password\"\n [passwordStrengthEnforced]=\"passwordStrengthEnforced\"\n required\n />\n <c8y-messages>\n <c8y-message\n name=\"pattern\"\n [text]=\"loginService.ERROR_MESSAGES.pattern_newPassword\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Confirm password</label>\n <input\n [(ngModel)]=\"model.newPasswordConfirm\"\n #newPasswordConfirm=\"ngModel\"\n type=\"password\"\n name=\"newPasswordConfirm\"\n class=\"form-control\"\n placeholder=\"{{ 'Confirm password' | translate }}\"\n passwordConfirm=\"newPassword\"\n autocomplete=\"new-password\"\n required\n />\n <c8y-messages>\n <c8y-message\n name=\"passwordConfirm\"\n [text]=\"loginService.ERROR_MESSAGES.passwordConfirm\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n <div class=\"col-5\">\n <c8y-password-strength\n [password]=\"model.newPassword\"\n [hidden]=\"!model.newPassword\"\n ></c8y-password-strength>\n <c8y-password-check-list\n class=\"m-t-32\"\n [password]=\"model.newPassword\"\n [hidden]=\"!model.newPassword || !passwordStrengthEnforced\"\n ></c8y-password-check-list>\n </div>\n </div>\n\n <button\n title=\"{{ 'Set password' | translate }}\"\n [disabled]=\"!changePasswordForm.form.valid || isLoading\"\n type=\"submit\"\n class=\"btn btn-primary btn-lg btn-block form-group\"\n >\n {{ 'Set password' | translate }}\n </button>\n</form>\n" }]
@@ -14974,7 +14974,7 @@ class CredentialsComponent {
14974
14974
  }
14975
14975
  }
14976
14976
  CredentialsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CredentialsComponent, deps: [{ token: LoginService }, { token: AlertService }, { token: AppStateService }, { token: CredentialsFromQueryParamsService }], target: i0.ɵɵFactoryTarget.Component });
14977
- CredentialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CredentialsComponent, selector: "c8y-credentials", inputs: { loginViewParams: "loginViewParams" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<div id=\"oauth\" *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\">\n <button\n class=\"btn btn-block btn-lg form-group\"\n (click)=\"redirectToOauth()\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n >\n <i class=\"pull-left\" [c8yIcon]=\"'sign-in'\"></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form class=\"loginForm\" #loginForm=\"ngForm\" *ngIf=\"showLoginForm\" (ngSubmit)=\"login()\" novalidate>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n <ng-template #orLegend>\n <div class=\"legend form-block center\" translate>or</div>\n </ng-template>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"showTenant\">\n <label for=\"tenant\" translate>Tenant ID</label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n #tenant=\"ngModel\"\n [(ngModel)]=\"model.tenant\"\n [readonly]=\"loginViewParams.disableTenant\"\n type=\"text\"\n name=\"tenant\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"user\" translate>Username</label>\n <input\n class=\"form-control\"\n id=\"user\"\n #user=\"ngModel\"\n [(ngModel)]=\"model.user\"\n type=\"text\"\n name=\"user\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>Password</label>\n <input\n class=\"form-control\"\n id=\"password\"\n #password=\"ngModel\"\n [(ngModel)]=\"model.password\"\n type=\"password\"\n name=\"password\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <div class=\"form-group\" *ngIf=\"showBasicAuth\">\n <label class=\"c8y-checkbox\" title=\"{{ 'Remember me' | translate }}\">\n <input [(ngModel)]=\"loginService.rememberMe\" type=\"checkbox\" name=\"remember\" />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n type=\"button\"\n title=\"{{ 'Forgot password?' | translate }}\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n <div class=\"text-center m-t-8\" *ngIf=\"!!(ui.state$ | async).loginExtraLink\">\n <a\n class=\"small\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
14977
+ CredentialsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CredentialsComponent, selector: "c8y-credentials", inputs: { loginViewParams: "loginViewParams" }, outputs: { onChangeView: "onChangeView" }, ngImport: i0, template: "<div id=\"oauth\" *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\">\n <button\n class=\"btn btn-block btn-lg form-group\"\n (click)=\"redirectToOauth()\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n >\n <i class=\"pull-left\" [c8yIcon]=\"'sign-in'\"></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form class=\"loginForm\" #loginForm=\"ngForm\" *ngIf=\"showLoginForm\" (ngSubmit)=\"login()\" novalidate>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n <ng-template #orLegend>\n <div class=\"legend form-block center\" translate>or</div>\n </ng-template>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"showTenant\">\n <label for=\"tenant\" translate>Tenant ID</label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n #tenant=\"ngModel\"\n [(ngModel)]=\"model.tenant\"\n [readonly]=\"loginViewParams.disableTenant\"\n type=\"text\"\n name=\"tenant\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"user\" translate>Username</label>\n <input\n class=\"form-control\"\n id=\"user\"\n #user=\"ngModel\"\n [(ngModel)]=\"model.user\"\n type=\"text\"\n name=\"user\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>Password</label>\n <input\n class=\"form-control\"\n id=\"password\"\n #password=\"ngModel\"\n [(ngModel)]=\"model.password\"\n type=\"password\"\n name=\"password\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <div class=\"form-group\" *ngIf=\"showBasicAuth\">\n <label class=\"c8y-checkbox\" title=\"{{ 'Remember me' | translate }}\">\n <input [(ngModel)]=\"loginService.rememberMe\" type=\"checkbox\" name=\"remember\" />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n type=\"button\"\n title=\"{{ 'Forgot password?' | translate }}\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n <div class=\"text-center m-t-8\" *ngIf=\"!!(ui.state$ | async).loginExtraLink\">\n <a\n class=\"small\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
14978
14978
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CredentialsComponent, decorators: [{
14979
14979
  type: Component,
14980
14980
  args: [{ selector: 'c8y-credentials', template: "<div id=\"oauth\" *ngIf=\"oauthOptions.initRequest && oauthOptions.visibleOnLoginPage\">\n <button\n class=\"btn btn-block btn-lg form-group\"\n (click)=\"redirectToOauth()\"\n title=\"{{ oauthOptions.buttonName | translate }}\"\n type=\"button\"\n >\n <i class=\"pull-left\" [c8yIcon]=\"'sign-in'\"></i>\n {{ oauthOptions.buttonName | translate }}\n </button>\n</div>\n\n<form class=\"loginForm\" #loginForm=\"ngForm\" *ngIf=\"showLoginForm\" (ngSubmit)=\"login()\" novalidate>\n <span\n class=\"legend form-block center\"\n *ngIf=\"!(oauthOptions.initRequest && oauthOptions.visibleOnLoginPage); else orLegend\"\n translate\n >\n Login\n </span>\n <ng-template #orLegend>\n <div class=\"legend form-block center\" translate>or</div>\n </ng-template>\n\n <c8y-form-group class=\"tenantField\" id=\"tenantField\" *ngIf=\"showTenant\">\n <label for=\"tenant\" translate>Tenant ID</label>\n <input\n class=\"form-control\"\n id=\"tenant\"\n #tenant=\"ngModel\"\n [(ngModel)]=\"model.tenant\"\n [readonly]=\"loginViewParams.disableTenant\"\n type=\"text\"\n name=\"tenant\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder=\"{{ 'e.g.' | translate }} t12345\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"user\" translate>Username</label>\n <input\n class=\"form-control\"\n id=\"user\"\n #user=\"ngModel\"\n [(ngModel)]=\"model.user\"\n type=\"text\"\n name=\"user\"\n autocapitalize=\"off\"\n autocorrect=\"off\"\n placeholder=\"{{ 'e.g. joe or joe.doe@example.com`LOCALIZE`' | translate }}\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"password\" translate>Password</label>\n <input\n class=\"form-control\"\n id=\"password\"\n #password=\"ngModel\"\n [(ngModel)]=\"model.password\"\n type=\"password\"\n name=\"password\"\n placeholder-no-required-hint\n required\n />\n </c8y-form-group>\n <div class=\"form-group\" *ngIf=\"showBasicAuth\">\n <label class=\"c8y-checkbox\" title=\"{{ 'Remember me' | translate }}\">\n <input [(ngModel)]=\"loginService.rememberMe\" type=\"checkbox\" name=\"remember\" />\n <span></span>\n <span>{{ 'Remember me' | translate }}</span>\n </label>\n </div>\n <button\n class=\"btn btn-primary btn-lg btn-block form-group\"\n [disabled]=\"!loginForm.form.valid || isLoading\"\n title=\"{{ 'Log in' | translate }}\"\n type=\"submit\"\n >\n {{ 'Log in' | translate }}\n </button>\n <div class=\"text-center m-t-8\">\n <button\n class=\"btn btn-link btn-sm\"\n (click)=\"onChangeView.emit({ view: LOGIN_VIEWS.RecoverPassword })\"\n type=\"button\"\n title=\"{{ 'Forgot password?' | translate }}\"\n >\n {{ 'Forgot password?' | translate }}\n </button>\n </div>\n <div class=\"text-center m-t-8\" *ngIf=\"!!(ui.state$ | async).loginExtraLink\">\n <a\n class=\"small\"\n [href]=\"(ui.state$ | async).loginExtraLink.url\"\n title=\"{{ (ui.state$ | async).loginExtraLink.label }}\"\n >\n {{ (ui.state$ | async).loginExtraLink.label }}\n </a>\n </div>\n</form>\n" }]
@@ -15039,7 +15039,7 @@ class TotpAuthComponent {
15039
15039
  }
15040
15040
  }
15041
15041
  TotpAuthComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TotpAuthComponent, deps: [{ token: LoginService }, { token: i1$2.UserService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
15042
- TotpAuthComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TotpAuthComponent, selector: "c8y-totp-auth", inputs: { credentials: "credentials", view: "view" }, outputs: { onCancel: "onCancel" }, ngImport: i0, template: "<div\n class=\"legend form-block center\"\n translate\n>\n Two-factor authentication\n</div>\n\n<c8y-totp-setup *ngIf=\"isSetup\">\n</c8y-totp-setup>\n<c8y-totp-challenge\n [loading]=\"loading\"\n [hasError]=\"hasError\"\n [verify]=\"view === LOGIN_VIEWS.TotpSetup\"\n (onSuccess)=\"onTotpSuccess($event)\"\n (totpUnconfirmedEmitter)=\"onCancel.emit()\"\n></c8y-totp-challenge>\n\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TotpChallengeComponent, selector: "c8y-totp-challenge", inputs: ["verify", "loading", "hasError"], outputs: ["onSuccess", "totpUnconfirmedEmitter"] }, { kind: "component", type: TotpSetupComponent, selector: "c8y-totp-setup" }] });
15042
+ TotpAuthComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TotpAuthComponent, selector: "c8y-totp-auth", inputs: { credentials: "credentials", view: "view" }, outputs: { onCancel: "onCancel" }, ngImport: i0, template: "<div\n class=\"legend form-block center\"\n translate\n>\n Two-factor authentication\n</div>\n\n<c8y-totp-setup *ngIf=\"isSetup\">\n</c8y-totp-setup>\n<c8y-totp-challenge\n [loading]=\"loading\"\n [hasError]=\"hasError\"\n [verify]=\"view === LOGIN_VIEWS.TotpSetup\"\n (onSuccess)=\"onTotpSuccess($event)\"\n (totpUnconfirmedEmitter)=\"onCancel.emit()\"\n></c8y-totp-challenge>\n\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TotpChallengeComponent, selector: "c8y-totp-challenge", inputs: ["verify", "loading", "hasError"], outputs: ["onSuccess", "totpUnconfirmedEmitter"] }, { kind: "component", type: TotpSetupComponent, selector: "c8y-totp-setup" }] });
15043
15043
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TotpAuthComponent, decorators: [{
15044
15044
  type: Component,
15045
15045
  args: [{ selector: 'c8y-totp-auth', template: "<div\n class=\"legend form-block center\"\n translate\n>\n Two-factor authentication\n</div>\n\n<c8y-totp-setup *ngIf=\"isSetup\">\n</c8y-totp-setup>\n<c8y-totp-challenge\n [loading]=\"loading\"\n [hasError]=\"hasError\"\n [verify]=\"view === LOGIN_VIEWS.TotpSetup\"\n (onSuccess)=\"onTotpSuccess($event)\"\n (totpUnconfirmedEmitter)=\"onCancel.emit()\"\n></c8y-totp-challenge>\n\n" }]
@@ -15214,7 +15214,7 @@ class LoginComponent {
15214
15214
  }
15215
15215
  }
15216
15216
  LoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginComponent, deps: [{ token: LoginService }, { token: OptionsService }, { token: AlertService }, { token: CredentialsFromQueryParamsService }], target: i0.ɵɵFactoryTarget.Component });
15217
- LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoginComponent, selector: "c8y-login", inputs: { name: "name" }, host: { listeners: { "keyup": "onkeyup($event)" } }, ngImport: i0, template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: SmsChallengeComponent, selector: "c8y-sms-challenge", inputs: ["credentials"], outputs: ["onCancel"] }, { kind: "component", type: ProvidePhoneNumberComponent, selector: "c8y-provide-phone-number", inputs: ["credentials"], outputs: ["onCancel", "onChangeView"] }, { kind: "component", type: AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: RecoverPasswordComponent, selector: "c8y-recover-password", outputs: ["onChangeView"] }, { kind: "component", type: ChangePasswordComponent, selector: "c8y-change-password", inputs: ["credentials"], outputs: ["onChangeView"] }, { kind: "component", type: CredentialsComponent, selector: "c8y-credentials", inputs: ["loginViewParams"], outputs: ["onChangeView"] }, { kind: "component", type: TotpAuthComponent, selector: "c8y-totp-auth", inputs: ["credentials", "view"], outputs: ["onCancel"] }, { kind: "component", type: TenantIdSetupComponent, selector: "c8y-tenant-id-setup", outputs: ["onChangeView"] }] });
15217
+ LoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: LoginComponent, selector: "c8y-login", inputs: { name: "name" }, host: { listeners: { "keyup": "onkeyup($event)" } }, ngImport: i0, template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: SmsChallengeComponent, selector: "c8y-sms-challenge", inputs: ["credentials"], outputs: ["onCancel"] }, { kind: "component", type: ProvidePhoneNumberComponent, selector: "c8y-provide-phone-number", inputs: ["credentials"], outputs: ["onCancel", "onChangeView"] }, { kind: "component", type: AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: RecoverPasswordComponent, selector: "c8y-recover-password", outputs: ["onChangeView"] }, { kind: "component", type: ChangePasswordComponent, selector: "c8y-change-password", inputs: ["credentials"], outputs: ["onChangeView"] }, { kind: "component", type: CredentialsComponent, selector: "c8y-credentials", inputs: ["loginViewParams"], outputs: ["onChangeView"] }, { kind: "component", type: TotpAuthComponent, selector: "c8y-totp-auth", inputs: ["credentials", "view"], outputs: ["onCancel"] }, { kind: "component", type: TenantIdSetupComponent, selector: "c8y-tenant-id-setup", outputs: ["onChangeView"] }] });
15218
15218
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: LoginComponent, decorators: [{
15219
15219
  type: Component,
15220
15220
  args: [{ selector: 'c8y-login', template: "<div\n class=\"loading card fadeInUp animated shadow5\"\n *ngIf=\"currentView !== LOGIN_VIEWS.None\"\n [ngSwitch]=\"currentView\"\n>\n <main class=\"card-block p-b-0\">\n <span class=\"mainlogo\"></span>\n\n <c8y-credentials\n *ngSwitchCase=\"LOGIN_VIEWS.Credentials\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [loginViewParams]=\"loginViewParams\"\n ></c8y-credentials>\n <c8y-recover-password\n *ngSwitchCase=\"LOGIN_VIEWS.RecoverPassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-recover-password>\n <c8y-change-password\n *ngSwitchCase=\"LOGIN_VIEWS.ChangePassword\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-change-password>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpChallenge\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-totp-auth\n *ngSwitchCase=\"LOGIN_VIEWS.TotpSetup\"\n (onCancel)=\"reset()\"\n [view]=\"currentView\"\n [credentials]=\"credentials\"\n ></c8y-totp-auth>\n <c8y-sms-challenge\n *ngSwitchCase=\"LOGIN_VIEWS.SmsChallenge\"\n (onCancel)=\"reset()\"\n [credentials]=\"credentials\"\n ></c8y-sms-challenge>\n\n <c8y-provide-phone-number\n *ngSwitchCase=\"LOGIN_VIEWS.ProvidePhoneNumber\"\n (onCancel)=\"reset()\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n [credentials]=\"credentials\"\n ></c8y-provide-phone-number>\n <c8y-tenant-id-setup\n *ngSwitchCase=\"LOGIN_VIEWS.TenantIdSetup\"\n (onChangeView)=\"handleLoginTemplate($event)\"\n ></c8y-tenant-id-setup>\n\n <c8y-alert-outlet position=\"static\"></c8y-alert-outlet>\n </main>\n</div>\n" }]
@@ -15316,7 +15316,7 @@ class TabsOutletComponent {
15316
15316
  }
15317
15317
  }
15318
15318
  TabsOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TabsOutletComponent, deps: [{ token: i1.Router }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: HeaderService }], target: i0.ɵɵFactoryTarget.Component });
15319
- TabsOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen" }, host: { properties: { "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: "leftBtn", first: true, predicate: ["left"], descendants: true, read: ElementRef }, { propertyName: "rightBtn", first: true, predicate: ["right"], descendants: true, read: ElementRef }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"tabContainer hidden-xs\">\n <button\n type=\"button\"\n class=\"tabs-slider tabs-slider-left\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n type=\"button\"\n class=\"tabs-slider tabs-slider-right\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <div\n role=\"navigation\"\n [attr.aria-label]=\"'Secondary navigation' | translate\"\n class=\"nav nav-tabs nav-tabsc8y\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div role=\"listitem\" [ngClass]=\"{ active: rla?.isActive }\" *ngIf=\"!tab.component\">\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n title=\"{{ tab?.label | translate }}\"\n >\n <i [c8yIcon]=\"tab?.icon\" *ngIf=\"!tab.template && tab?.icon\"></i>\n <span *ngIf=\"!tab.template && !tab.component\">\n {{ tab?.label | translate }}\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</div>\n\n<div class=\"visible-xs mobile-tabs\">\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select (change)=\"navigateTo($event.target)\" #select>\n <ng-container *ngFor=\"let tab of tabs\">\n <option *ngIf=\"!tab.component\" [value]=\"tab.path\" [selected]=\"isActive(tab)\">\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 *ngComponentOutlet=\"tab.component; injector: tab.injector\"></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: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
15319
+ TabsOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen" }, host: { properties: { "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: "leftBtn", first: true, predicate: ["left"], descendants: true, read: ElementRef }, { propertyName: "rightBtn", first: true, predicate: ["right"], descendants: true, read: ElementRef }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div #container class=\"tabContainer hidden-xs\">\n <button\n type=\"button\"\n class=\"tabs-slider tabs-slider-left\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n type=\"button\"\n class=\"tabs-slider tabs-slider-right\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <div\n role=\"navigation\"\n [attr.aria-label]=\"'Secondary navigation' | translate\"\n class=\"nav nav-tabs nav-tabsc8y\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div role=\"listitem\" [ngClass]=\"{ active: rla?.isActive }\" *ngIf=\"!tab.component\">\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n title=\"{{ tab?.label | translate }}\"\n >\n <i [c8yIcon]=\"tab?.icon\" *ngIf=\"!tab.template && tab?.icon\"></i>\n <span *ngIf=\"!tab.template && !tab.component\">\n {{ tab?.label | translate }}\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</div>\n\n<div class=\"visible-xs mobile-tabs\">\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select (change)=\"navigateTo($event.target)\" #select>\n <ng-container *ngFor=\"let tab of tabs\">\n <option *ngIf=\"!tab.component\" [value]=\"tab.path\" [selected]=\"isActive(tab)\">\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 *ngComponentOutlet=\"tab.component; injector: tab.injector\"></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", "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: i1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
15320
15320
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TabsOutletComponent, decorators: [{
15321
15321
  type: Component,
15322
15322
  args: [{ selector: 'c8y-tabs-outlet,c8y-ui-tabs', template: "<div #container class=\"tabContainer hidden-xs\">\n <button\n type=\"button\"\n class=\"tabs-slider tabs-slider-left\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n type=\"button\"\n class=\"tabs-slider tabs-slider-right\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <div\n role=\"navigation\"\n [attr.aria-label]=\"'Secondary navigation' | translate\"\n class=\"nav nav-tabs nav-tabsc8y\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div role=\"listitem\" [ngClass]=\"{ active: rla?.isActive }\" *ngIf=\"!tab.component\">\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n #rla=\"routerLinkActive\"\n title=\"{{ tab?.label | translate }}\"\n >\n <i [c8yIcon]=\"tab?.icon\" *ngIf=\"!tab.template && tab?.icon\"></i>\n <span *ngIf=\"!tab.template && !tab.component\">\n {{ tab?.label | translate }}\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</div>\n\n<div class=\"visible-xs mobile-tabs\">\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select (change)=\"navigateTo($event.target)\" #select>\n <ng-container *ngFor=\"let tab of tabs\">\n <option *ngIf=\"!tab.component\" [value]=\"tab.path\" [selected]=\"isActive(tab)\">\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 *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
@@ -15516,7 +15516,7 @@ class NavigatorNodeComponent {
15516
15516
  }
15517
15517
  }
15518
15518
  NavigatorNodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigatorNodeComponent, deps: [{ token: i0.ComponentFactoryResolver }, { token: NavigatorService }], target: i0.ɵɵFactoryTarget.Component });
15519
- NavigatorNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: { node: "node", isRoot: "isRoot" }, outputs: { nodeClick: "nodeClick" }, viewQueries: [{ propertyName: "iconSlot", first: true, predicate: ["icon"], descendants: true, read: ViewContainerRef }, { propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }, { propertyName: "confirm", first: true, predicate: PopoverConfirmComponent, descendants: true }, { propertyName: "childrenNodes", predicate: NavigatorNodeComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"node.component\">\n <ng-container *ngComponentOutlet=\"node.component; injector: node.injector\"></ng-container>\n</ng-container>\n\n<div\n *ngIf=\"!node.component\"\n class=\"slot\"\n [hidden]=\"node.hidden\"\n (dragstart)=\"node.dragStart($event)\"\n (dragend)=\"node.dragEnd($event)\"\n (drop)=\"node.drop($event)\"\n [draggable]=\"node.draggable\"\n [ngClass]=\"{ dragged: node.dragged, disabled: node.loading }\"\n>\n <ng-container>\n <button\n class=\"btn-clean link\"\n draggable=\"false\"\n (dragover)=\"node.canDrop && $event.preventDefault()\"\n (dragenter)=\"node.canDrop && node.dragEnter($event)\"\n (dragleave)=\"node.canDrop && node.dragLeave($event)\"\n title=\"{{ node.label | translate }}\"\n [attr.data-cy]=\"node.label\"\n [attr.id]=\"isRoot ? node.id : undefined\"\n [routerLink]=\"node.canNavigate ? node.path : undefined\"\n [routerLinkActive]=\"node.canNavigate ? 'active' : ''\"\n [routerLinkActiveOptions]=\"{ exact: node.routerLinkExact }\"\n (click)=\"click(node.canNavigate ? 'link' : 'expander', $event)\"\n [ngClass]=\"{\n 'root-link': isRoot,\n open: node.open && node.hasChildren,\n parent: node.hasChildren,\n 'dragged-hover': node.draggedHover && !node.dragged\n }\"\n >\n <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n </button>\n </ng-container>\n\n <div\n class=\"children panel-expand expand\"\n *ngIf=\"node.children.length\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n >\n <c8y-navigator-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n (nodeClick)=\"nodeClick.emit($event)\"\n ></c8y-navigator-node>\n </div>\n</div>\n\n<ng-template #inner>\n <!-- loader -->\n <i\n class=\"icon-spin loadingIndicator\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"node.loading && !isRoot\"\n ></i>\n\n <!-- icon -->\n <div>\n <ng-container #icon></ng-container>\n </div>\n\n <!--title -->\n <span>{{ node.label | translate }}</span>\n\n <i\n class=\"expander\"\n [c8yIcon]=\"'chevron-down'\"\n *ngIf=\"node.hasChildren\"\n (click)=\"click('expander', $event)\"\n title=\"{{ expandTitle }}\"\n ></i>\n\n <c8y-popover-confirm\n [outsideClick]=\"true\"\n containerClass=\"navigator-popover\"\n ></c8y-popover-confirm>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i1$a.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: PopoverConfirmComponent, selector: "c8y-popover-confirm", inputs: ["buttons", "message", "title", "isOpen", "containerClass", "placement", "outsideClick"] }, { kind: "component", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: ["node", "isRoot"], outputs: ["nodeClick"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
15519
+ NavigatorNodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: { node: "node", isRoot: "isRoot" }, outputs: { nodeClick: "nodeClick" }, viewQueries: [{ propertyName: "iconSlot", first: true, predicate: ["icon"], descendants: true, read: ViewContainerRef }, { propertyName: "routerLinkActive", first: true, predicate: RouterLinkActive, descendants: true }, { propertyName: "confirm", first: true, predicate: PopoverConfirmComponent, descendants: true }, { propertyName: "childrenNodes", predicate: NavigatorNodeComponent, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"node.component\">\n <ng-container *ngComponentOutlet=\"node.component; injector: node.injector\"></ng-container>\n</ng-container>\n\n<div\n *ngIf=\"!node.component\"\n class=\"slot\"\n [hidden]=\"node.hidden\"\n (dragstart)=\"node.dragStart($event)\"\n (dragend)=\"node.dragEnd($event)\"\n (drop)=\"node.drop($event)\"\n [draggable]=\"node.draggable\"\n [ngClass]=\"{ dragged: node.dragged, disabled: node.loading }\"\n>\n <ng-container>\n <button\n class=\"btn-clean link\"\n draggable=\"false\"\n (dragover)=\"node.canDrop && $event.preventDefault()\"\n (dragenter)=\"node.canDrop && node.dragEnter($event)\"\n (dragleave)=\"node.canDrop && node.dragLeave($event)\"\n title=\"{{ node.label | translate }}\"\n [attr.data-cy]=\"node.label\"\n [attr.id]=\"isRoot ? node.id : undefined\"\n [routerLink]=\"node.canNavigate ? node.path : undefined\"\n [routerLinkActive]=\"node.canNavigate ? 'active' : ''\"\n [routerLinkActiveOptions]=\"{ exact: node.routerLinkExact }\"\n (click)=\"click(node.canNavigate ? 'link' : 'expander', $event)\"\n [ngClass]=\"{\n 'root-link': isRoot,\n open: node.open && node.hasChildren,\n parent: node.hasChildren,\n 'dragged-hover': node.draggedHover && !node.dragged\n }\"\n >\n <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n </button>\n </ng-container>\n\n <div\n class=\"children panel-expand expand\"\n *ngIf=\"node.children.length\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n >\n <c8y-navigator-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n (nodeClick)=\"nodeClick.emit($event)\"\n ></c8y-navigator-node>\n </div>\n</div>\n\n<ng-template #inner>\n <!-- loader -->\n <i\n class=\"icon-spin loadingIndicator\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"node.loading && !isRoot\"\n ></i>\n\n <!-- icon -->\n <div>\n <ng-container #icon></ng-container>\n </div>\n\n <!--title -->\n <span>{{ node.label | translate }}</span>\n\n <i\n class=\"expander\"\n [c8yIcon]=\"'chevron-down'\"\n *ngIf=\"node.hasChildren\"\n (click)=\"click('expander', $event)\"\n title=\"{{ expandTitle }}\"\n ></i>\n\n <c8y-popover-confirm\n [outsideClick]=\"true\"\n containerClass=\"navigator-popover\"\n ></c8y-popover-confirm>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i1$9.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { 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", "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: "component", type: PopoverConfirmComponent, selector: "c8y-popover-confirm", inputs: ["buttons", "message", "title", "isOpen", "containerClass", "placement", "outsideClick"] }, { kind: "component", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: ["node", "isRoot"], outputs: ["nodeClick"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
15520
15520
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigatorNodeComponent, decorators: [{
15521
15521
  type: Component,
15522
15522
  args: [{ selector: 'c8y-navigator-node', template: "<ng-container *ngIf=\"node.component\">\n <ng-container *ngComponentOutlet=\"node.component; injector: node.injector\"></ng-container>\n</ng-container>\n\n<div\n *ngIf=\"!node.component\"\n class=\"slot\"\n [hidden]=\"node.hidden\"\n (dragstart)=\"node.dragStart($event)\"\n (dragend)=\"node.dragEnd($event)\"\n (drop)=\"node.drop($event)\"\n [draggable]=\"node.draggable\"\n [ngClass]=\"{ dragged: node.dragged, disabled: node.loading }\"\n>\n <ng-container>\n <button\n class=\"btn-clean link\"\n draggable=\"false\"\n (dragover)=\"node.canDrop && $event.preventDefault()\"\n (dragenter)=\"node.canDrop && node.dragEnter($event)\"\n (dragleave)=\"node.canDrop && node.dragLeave($event)\"\n title=\"{{ node.label | translate }}\"\n [attr.data-cy]=\"node.label\"\n [attr.id]=\"isRoot ? node.id : undefined\"\n [routerLink]=\"node.canNavigate ? node.path : undefined\"\n [routerLinkActive]=\"node.canNavigate ? 'active' : ''\"\n [routerLinkActiveOptions]=\"{ exact: node.routerLinkExact }\"\n (click)=\"click(node.canNavigate ? 'link' : 'expander', $event)\"\n [ngClass]=\"{\n 'root-link': isRoot,\n open: node.open && node.hasChildren,\n parent: node.hasChildren,\n 'dragged-hover': node.draggedHover && !node.dragged\n }\"\n >\n <ng-container *ngTemplateOutlet=\"inner\"></ng-container>\n </button>\n </ng-container>\n\n <div\n class=\"children panel-expand expand\"\n *ngIf=\"node.children.length\"\n [collapse]=\"!node.open\"\n [isAnimated]=\"true\"\n >\n <c8y-navigator-node\n *ngFor=\"let childNode of node.children\"\n [node]=\"childNode\"\n (nodeClick)=\"nodeClick.emit($event)\"\n ></c8y-navigator-node>\n </div>\n</div>\n\n<ng-template #inner>\n <!-- loader -->\n <i\n class=\"icon-spin loadingIndicator\"\n [c8yIcon]=\"'circle-o-notch'\"\n *ngIf=\"node.loading && !isRoot\"\n ></i>\n\n <!-- icon -->\n <div>\n <ng-container #icon></ng-container>\n </div>\n\n <!--title -->\n <span>{{ node.label | translate }}</span>\n\n <i\n class=\"expander\"\n [c8yIcon]=\"'chevron-down'\"\n *ngIf=\"node.hasChildren\"\n (click)=\"click('expander', $event)\"\n title=\"{{ expandTitle }}\"\n ></i>\n\n <c8y-popover-confirm\n [outsideClick]=\"true\"\n containerClass=\"navigator-popover\"\n ></c8y-popover-confirm>\n</ng-template>\n" }]
@@ -15587,7 +15587,7 @@ class NavigatorOutletComponent {
15587
15587
  }
15588
15588
  }
15589
15589
  NavigatorOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigatorOutletComponent, deps: [{ token: HeaderService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
15590
- NavigatorOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: NavigatorOutletComponent, selector: "c8y-navigator-outlet, c8y-ui-navigator", inputs: { nodes: "nodes", open: "open" }, usesOnChanges: true, ngImport: i0, template: "<nav\n [attr.aria-label]=\"'Navigator' | translate\"\n class=\"navigator\"\n id=\"navigator\"\n *ngIf=\"isShown$ | async\"\n [ngClass]=\"{ open: open }\"\n>\n <ng-content select=\".navigator-slot-top\"></ng-content>\n <div class=\"navigatorContent\">\n <button class=\"sr-only\" tabindex=\"0\" [c8ySkipLink]=\"'main-content'\" translate>Skip to content</button>\n <c8y-navigator-node\n (nodeClick)=\"collapseNavigator($event)\"\n [node]=\"node\"\n *ngFor=\"let node of nodes; trackBy: trackByPathOrLabel\"\n [isRoot]=\"true\"\n ></c8y-navigator-node>\n </div>\n <ng-content select=\".navigator-slot-bottom\"></ng-content>\n</nav>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: SkipLinkDirective, selector: "[c8ySkipLink]", inputs: ["c8ySkipLink"] }, { kind: "component", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: ["node", "isRoot"], outputs: ["nodeClick"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
15590
+ NavigatorOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: NavigatorOutletComponent, selector: "c8y-navigator-outlet, c8y-ui-navigator", inputs: { nodes: "nodes", open: "open" }, usesOnChanges: true, ngImport: i0, template: "<nav\n [attr.aria-label]=\"'Navigator' | translate\"\n class=\"navigator\"\n id=\"navigator\"\n *ngIf=\"isShown$ | async\"\n [ngClass]=\"{ open: open }\"\n>\n <ng-content select=\".navigator-slot-top\"></ng-content>\n <div class=\"navigatorContent\">\n <button class=\"sr-only\" tabindex=\"0\" [c8ySkipLink]=\"'main-content'\" translate>Skip to content</button>\n <c8y-navigator-node\n (nodeClick)=\"collapseNavigator($event)\"\n [node]=\"node\"\n *ngFor=\"let node of nodes; trackBy: trackByPathOrLabel\"\n [isRoot]=\"true\"\n ></c8y-navigator-node>\n </div>\n <ng-content select=\".navigator-slot-bottom\"></ng-content>\n</nav>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: SkipLinkDirective, selector: "[c8ySkipLink]", inputs: ["c8ySkipLink"] }, { kind: "component", type: NavigatorNodeComponent, selector: "c8y-navigator-node", inputs: ["node", "isRoot"], outputs: ["nodeClick"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
15591
15591
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigatorOutletComponent, decorators: [{
15592
15592
  type: Component,
15593
15593
  args: [{ selector: 'c8y-navigator-outlet, c8y-ui-navigator', template: "<nav\n [attr.aria-label]=\"'Navigator' | translate\"\n class=\"navigator\"\n id=\"navigator\"\n *ngIf=\"isShown$ | async\"\n [ngClass]=\"{ open: open }\"\n>\n <ng-content select=\".navigator-slot-top\"></ng-content>\n <div class=\"navigatorContent\">\n <button class=\"sr-only\" tabindex=\"0\" [c8ySkipLink]=\"'main-content'\" translate>Skip to content</button>\n <c8y-navigator-node\n (nodeClick)=\"collapseNavigator($event)\"\n [node]=\"node\"\n *ngFor=\"let node of nodes; trackBy: trackByPathOrLabel\"\n [isRoot]=\"true\"\n ></c8y-navigator-node>\n </div>\n <ng-content select=\".navigator-slot-bottom\"></ng-content>\n</nav>\n" }]
@@ -15655,7 +15655,7 @@ class C8yStepperProgress {
15655
15655
  }
15656
15656
  }
15657
15657
  C8yStepperProgress.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: C8yStepperProgress, deps: [], target: i0.ɵɵFactoryTarget.Component });
15658
- C8yStepperProgress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: C8yStepperProgress, selector: "c8y-stepper-progress", inputs: { iconOverrides: "iconOverrides", index: "index", selected: "selected", state: "state", disabled: "disabled" }, outputs: { onStepClicked: "onStepClicked" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"c8y-step\"\n [ngClass]=\"{\n active: selected,\n 'step-done': state === 'done' || state === '_done',\n 'step-error': state === 'error',\n 'step-warning': state === 'warning'\n }\"\n [disabled]=\"disabled\"\n [ngSwitch]=\"!!(iconOverrides && iconOverrides[state])\"\n (click)=\"stepSelected()\"\n>\n <ng-container *ngSwitchCase=\"true\" [ngTemplateOutlet]=\"iconOverrides[state]\"></ng-container>\n <ng-container *ngSwitchDefault [ngSwitch]=\"state\">\n <span *ngSwitchCase=\"'edit'\">\n <span [c8yIcon]=\"'edit'\"></span>\n </span>\n <span *ngSwitchCase=\"'done'\">\n <span class=\"m-t-4\" [c8yIcon]=\"'check'\"></span>\n </span>\n <span *ngSwitchDefault>{{ index + 1 }}</span>\n </ng-container>\n</button>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$5.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
15658
+ C8yStepperProgress.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: C8yStepperProgress, selector: "c8y-stepper-progress", inputs: { iconOverrides: "iconOverrides", index: "index", selected: "selected", state: "state", disabled: "disabled" }, outputs: { onStepClicked: "onStepClicked" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"c8y-step\"\n [ngClass]=\"{\n active: selected,\n 'step-done': state === 'done' || state === '_done',\n 'step-error': state === 'error',\n 'step-warning': state === 'warning'\n }\"\n [disabled]=\"disabled\"\n [ngSwitch]=\"!!(iconOverrides && iconOverrides[state])\"\n (click)=\"stepSelected()\"\n>\n <ng-container *ngSwitchCase=\"true\" [ngTemplateOutlet]=\"iconOverrides[state]\"></ng-container>\n <ng-container *ngSwitchDefault [ngSwitch]=\"state\">\n <span *ngSwitchCase=\"'edit'\">\n <span [c8yIcon]=\"'edit'\"></span>\n </span>\n <span *ngSwitchCase=\"'done'\">\n <span class=\"m-t-4\" [c8yIcon]=\"'check'\"></span>\n </span>\n <span *ngSwitchDefault>{{ index + 1 }}</span>\n </ng-container>\n</button>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }] });
15659
15659
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: C8yStepperProgress, decorators: [{
15660
15660
  type: Component,
15661
15661
  args: [{ selector: 'c8y-stepper-progress', template: "<button\n type=\"button\"\n class=\"c8y-step\"\n [ngClass]=\"{\n active: selected,\n 'step-done': state === 'done' || state === '_done',\n 'step-error': state === 'error',\n 'step-warning': state === 'warning'\n }\"\n [disabled]=\"disabled\"\n [ngSwitch]=\"!!(iconOverrides && iconOverrides[state])\"\n (click)=\"stepSelected()\"\n>\n <ng-container *ngSwitchCase=\"true\" [ngTemplateOutlet]=\"iconOverrides[state]\"></ng-container>\n <ng-container *ngSwitchDefault [ngSwitch]=\"state\">\n <span *ngSwitchCase=\"'edit'\">\n <span [c8yIcon]=\"'edit'\"></span>\n </span>\n <span *ngSwitchCase=\"'done'\">\n <span class=\"m-t-4\" [c8yIcon]=\"'check'\"></span>\n </span>\n <span *ngSwitchDefault>{{ index + 1 }}</span>\n </ng-container>\n</button>\n" }]
@@ -15841,18 +15841,18 @@ class C8yStepper extends CdkStepper {
15841
15841
  }
15842
15842
  }
15843
15843
  }
15844
- C8yStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: C8yStepper, deps: [{ token: i1$b.Directionality }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
15844
+ C8yStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: C8yStepper, deps: [{ token: i1$a.Directionality }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
15845
15845
  C8yStepper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: C8yStepper, selector: "c8y-stepper", inputs: { disableDefaultIcons: "disableDefaultIcons", disableProgressButtons: "disableProgressButtons", customClasses: "customClasses", hideStepProgress: "hideStepProgress", useStepLabelsAsTitlesOnly: "useStepLabelsAsTitlesOnly" }, outputs: { onStepChange: "onStepChange" }, providers: [
15846
15846
  { provide: CdkStepper, useExisting: C8yStepper },
15847
15847
  { provide: PRODUCT_EXPERIENCE_EVENT_SOURCE, useExisting: forwardRef(() => C8yStepper) }
15848
- ], queries: [{ propertyName: "_icons", predicate: C8yStepperIcon, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ul *ngIf=\"!hideStepProgress\" class=\"c8y-stepper\" [ngClass]=\"customClasses\">\n <li *ngFor=\"let step of steps; let i = index\">\n <c8y-stepper-progress\n [iconOverrides]=\"_iconOverrides\"\n [state]=\"getIndicatorType(i, step.state)\"\n [index]=\"i\"\n [selected]=\"selectedIndex === i\"\n [disabled]=\"disableProgressButtons\"\n (onStepClicked)=\"setIndex($event)\"\n title=\"{{ step.label | translate }}\"\n [ngClass]=\"{'active': selectedIndex === i}\"\n >\n </c8y-stepper-progress>\n <div *ngIf=\"!useStepLabelsAsTitlesOnly\" class=\"c8y-step__label\" title=\"{{ step.label | translate }}\">\n {{ step.label | translate }}\n </div>\n </li>\n</ul>\n<ng-container [ngTemplateOutlet]=\"selected.content\"></ng-container>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: C8yStepperProgress, selector: "c8y-stepper-progress", inputs: ["iconOverrides", "index", "selected", "state", "disabled"], outputs: ["onStepClicked"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
15848
+ ], queries: [{ propertyName: "_icons", predicate: C8yStepperIcon, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ul *ngIf=\"!hideStepProgress\" class=\"c8y-stepper\" [ngClass]=\"customClasses\">\n <li *ngFor=\"let step of steps; let i = index\">\n <c8y-stepper-progress\n [iconOverrides]=\"_iconOverrides\"\n [state]=\"getIndicatorType(i, step.state)\"\n [index]=\"i\"\n [selected]=\"selectedIndex === i\"\n [disabled]=\"disableProgressButtons\"\n (onStepClicked)=\"setIndex($event)\"\n title=\"{{ step.label | translate }}\"\n [ngClass]=\"{'active': selectedIndex === i}\"\n >\n </c8y-stepper-progress>\n <div *ngIf=\"!useStepLabelsAsTitlesOnly\" class=\"c8y-step__label\" title=\"{{ step.label | translate }}\">\n {{ step.label | translate }}\n </div>\n </li>\n</ul>\n<ng-container [ngTemplateOutlet]=\"selected.content\"></ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "component", type: C8yStepperProgress, selector: "c8y-stepper-progress", inputs: ["iconOverrides", "index", "selected", "state", "disabled"], outputs: ["onStepClicked"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
15849
15849
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: C8yStepper, decorators: [{
15850
15850
  type: Component,
15851
15851
  args: [{ selector: 'c8y-stepper', providers: [
15852
15852
  { provide: CdkStepper, useExisting: C8yStepper },
15853
15853
  { provide: PRODUCT_EXPERIENCE_EVENT_SOURCE, useExisting: forwardRef(() => C8yStepper) }
15854
15854
  ], template: "<ul *ngIf=\"!hideStepProgress\" class=\"c8y-stepper\" [ngClass]=\"customClasses\">\n <li *ngFor=\"let step of steps; let i = index\">\n <c8y-stepper-progress\n [iconOverrides]=\"_iconOverrides\"\n [state]=\"getIndicatorType(i, step.state)\"\n [index]=\"i\"\n [selected]=\"selectedIndex === i\"\n [disabled]=\"disableProgressButtons\"\n (onStepClicked)=\"setIndex($event)\"\n title=\"{{ step.label | translate }}\"\n [ngClass]=\"{'active': selectedIndex === i}\"\n >\n </c8y-stepper-progress>\n <div *ngIf=\"!useStepLabelsAsTitlesOnly\" class=\"c8y-step__label\" title=\"{{ step.label | translate }}\">\n {{ step.label | translate }}\n </div>\n </li>\n</ul>\n<ng-container [ngTemplateOutlet]=\"selected.content\"></ng-container>\n" }]
15855
- }], ctorParameters: function () { return [{ type: i1$b.Directionality }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { disableDefaultIcons: [{
15855
+ }], ctorParameters: function () { return [{ type: i1$a.Directionality }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }]; }, propDecorators: { disableDefaultIcons: [{
15856
15856
  type: Input
15857
15857
  }], disableProgressButtons: [{
15858
15858
  type: Input
@@ -16071,15 +16071,15 @@ class C8yStepperButtons {
16071
16071
  this.gainsightService.triggerEvent(eventName, eventData);
16072
16072
  }
16073
16073
  }
16074
- C8yStepperButtons.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: C8yStepperButtons, deps: [{ token: C8yStepper, host: true }, { token: i2$2.CdkStep, host: true }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Component });
16075
- C8yStepperButtons.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: { labels: "labels", pending: "pending", disabled: "disabled", showButtons: "showButtons" }, outputs: { onCancel: "onCancel", onNext: "onNext", onBack: "onBack", onCustom: "onCustom" }, ngImport: i0, template: "<div class=\"text-center\">\n <button\n title=\"{{ labels?.cancel | translate }}\"\n *ngIf=\"showBtns.cancel\"\n (click)=\"cancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n >\n <span *ngIf=\"labels?.cancel; else cancelLabel\" title=\"{{ labels?.cancel | translate }}\">\n {{ labels?.cancel | translate }}\n </span>\n <ng-template #cancelLabel>\n <span title=\"{{ 'Cancel' | translate }}\">{{ 'Cancel' | translate }}</span>\n </ng-template>\n </button>\n <button\n title=\"{{ labels?.back | translate }}\"\n *ngIf=\"showBtns.back\"\n type=\"button\"\n (click)=\"back()\"\n class=\"btn btn-default\"\n [disabled]=\"pending\"\n title=\"{{ labels?.back || 'Back' | translate }}\"\n data-cy=\"back\"\n >\n <span *ngIf=\"labels?.back; else backLabel\" title=\"{{ labels?.back | translate }}\">\n {{ labels?.back | translate }}\n </span>\n <ng-template #backLabel>\n <span title=\"{{ 'Back' | translate }}\">{{ 'Back' | translate }}</span>\n </ng-template>\n </button>\n <button\n title=\"{{ labels?.custom | translate }}\"\n *ngIf=\"showBtns.custom\"\n (click)=\"custom()\"\n type=\"button\"\n class=\"btn\"\n [ngClass]=\"{\n 'btn-default': showBtns.next,\n 'btn-primary': !showBtns.next,\n 'btn-pending': pending\n }\"\n [disabled]=\"disabled\"\n title=\"{{ labels?.custom || 'Complete' | translate }}\"\n data-cy=\"custom\"\n >\n <span *ngIf=\"labels?.custom; else customLabel\" title=\"{{ labels?.custom | translate }}\">\n {{ labels?.custom | translate }}\n </span>\n <ng-template #customLabel>\n <span title=\"{{ 'Complete' | translate }}\">{{ 'Complete' | translate }}</span>\n </ng-template>\n </button>\n <button\n title=\"{{ labels?.next | translate }}\"\n (click)=\"next()\"\n *ngIf=\"showBtns.next\"\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'btn-pending': pending }\"\n [disabled]=\"disabled\"\n title=\"{{ labels?.next || 'Next' | translate }}\"\n data-cy=\"next\"\n >\n <span *ngIf=\"labels?.next; else nextLabel\" title=\"{{ labels?.next | translate }}\">\n {{ labels?.next | translate }}\n </span>\n <ng-template #nextLabel>\n <span title=\"{{ 'Next' | translate }}\">{{ 'Next' | translate }}</span>\n </ng-template>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
16074
+ C8yStepperButtons.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: C8yStepperButtons, deps: [{ token: C8yStepper, host: true }, { token: i2$3.CdkStep, host: true }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Component });
16075
+ C8yStepperButtons.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: { labels: "labels", pending: "pending", disabled: "disabled", showButtons: "showButtons" }, outputs: { onCancel: "onCancel", onNext: "onNext", onBack: "onBack", onCustom: "onCustom" }, ngImport: i0, template: "<div class=\"text-center\">\n <button\n title=\"{{ labels?.cancel | translate }}\"\n *ngIf=\"showBtns.cancel\"\n (click)=\"cancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n >\n <span *ngIf=\"labels?.cancel; else cancelLabel\" title=\"{{ labels?.cancel | translate }}\">\n {{ labels?.cancel | translate }}\n </span>\n <ng-template #cancelLabel>\n <span title=\"{{ 'Cancel' | translate }}\">{{ 'Cancel' | translate }}</span>\n </ng-template>\n </button>\n <button\n title=\"{{ labels?.back | translate }}\"\n *ngIf=\"showBtns.back\"\n type=\"button\"\n (click)=\"back()\"\n class=\"btn btn-default\"\n [disabled]=\"pending\"\n title=\"{{ labels?.back || 'Back' | translate }}\"\n data-cy=\"back\"\n >\n <span *ngIf=\"labels?.back; else backLabel\" title=\"{{ labels?.back | translate }}\">\n {{ labels?.back | translate }}\n </span>\n <ng-template #backLabel>\n <span title=\"{{ 'Back' | translate }}\">{{ 'Back' | translate }}</span>\n </ng-template>\n </button>\n <button\n title=\"{{ labels?.custom | translate }}\"\n *ngIf=\"showBtns.custom\"\n (click)=\"custom()\"\n type=\"button\"\n class=\"btn\"\n [ngClass]=\"{\n 'btn-default': showBtns.next,\n 'btn-primary': !showBtns.next,\n 'btn-pending': pending\n }\"\n [disabled]=\"disabled\"\n title=\"{{ labels?.custom || 'Complete' | translate }}\"\n data-cy=\"custom\"\n >\n <span *ngIf=\"labels?.custom; else customLabel\" title=\"{{ labels?.custom | translate }}\">\n {{ labels?.custom | translate }}\n </span>\n <ng-template #customLabel>\n <span title=\"{{ 'Complete' | translate }}\">{{ 'Complete' | translate }}</span>\n </ng-template>\n </button>\n <button\n title=\"{{ labels?.next | translate }}\"\n (click)=\"next()\"\n *ngIf=\"showBtns.next\"\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'btn-pending': pending }\"\n [disabled]=\"disabled\"\n title=\"{{ labels?.next || 'Next' | translate }}\"\n data-cy=\"next\"\n >\n <span *ngIf=\"labels?.next; else nextLabel\" title=\"{{ labels?.next | translate }}\">\n {{ labels?.next | translate }}\n </span>\n <ng-template #nextLabel>\n <span title=\"{{ 'Next' | translate }}\">{{ 'Next' | translate }}</span>\n </ng-template>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
16076
16076
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: C8yStepperButtons, decorators: [{
16077
16077
  type: Component,
16078
16078
  args: [{ selector: 'c8y-stepper-buttons', template: "<div class=\"text-center\">\n <button\n title=\"{{ labels?.cancel | translate }}\"\n *ngIf=\"showBtns.cancel\"\n (click)=\"cancel()\"\n type=\"button\"\n class=\"btn btn-default\"\n >\n <span *ngIf=\"labels?.cancel; else cancelLabel\" title=\"{{ labels?.cancel | translate }}\">\n {{ labels?.cancel | translate }}\n </span>\n <ng-template #cancelLabel>\n <span title=\"{{ 'Cancel' | translate }}\">{{ 'Cancel' | translate }}</span>\n </ng-template>\n </button>\n <button\n title=\"{{ labels?.back | translate }}\"\n *ngIf=\"showBtns.back\"\n type=\"button\"\n (click)=\"back()\"\n class=\"btn btn-default\"\n [disabled]=\"pending\"\n title=\"{{ labels?.back || 'Back' | translate }}\"\n data-cy=\"back\"\n >\n <span *ngIf=\"labels?.back; else backLabel\" title=\"{{ labels?.back | translate }}\">\n {{ labels?.back | translate }}\n </span>\n <ng-template #backLabel>\n <span title=\"{{ 'Back' | translate }}\">{{ 'Back' | translate }}</span>\n </ng-template>\n </button>\n <button\n title=\"{{ labels?.custom | translate }}\"\n *ngIf=\"showBtns.custom\"\n (click)=\"custom()\"\n type=\"button\"\n class=\"btn\"\n [ngClass]=\"{\n 'btn-default': showBtns.next,\n 'btn-primary': !showBtns.next,\n 'btn-pending': pending\n }\"\n [disabled]=\"disabled\"\n title=\"{{ labels?.custom || 'Complete' | translate }}\"\n data-cy=\"custom\"\n >\n <span *ngIf=\"labels?.custom; else customLabel\" title=\"{{ labels?.custom | translate }}\">\n {{ labels?.custom | translate }}\n </span>\n <ng-template #customLabel>\n <span title=\"{{ 'Complete' | translate }}\">{{ 'Complete' | translate }}</span>\n </ng-template>\n </button>\n <button\n title=\"{{ labels?.next | translate }}\"\n (click)=\"next()\"\n *ngIf=\"showBtns.next\"\n type=\"button\"\n class=\"btn btn-primary\"\n [ngClass]=\"{ 'btn-pending': pending }\"\n [disabled]=\"disabled\"\n title=\"{{ labels?.next || 'Next' | translate }}\"\n data-cy=\"next\"\n >\n <span *ngIf=\"labels?.next; else nextLabel\" title=\"{{ labels?.next | translate }}\">\n {{ labels?.next | translate }}\n </span>\n <ng-template #nextLabel>\n <span title=\"{{ 'Next' | translate }}\">{{ 'Next' | translate }}</span>\n </ng-template>\n </button>\n</div>\n" }]
16079
16079
  }], ctorParameters: function () {
16080
16080
  return [{ type: C8yStepper, decorators: [{
16081
16081
  type: Host
16082
- }] }, { type: i2$2.CdkStep, decorators: [{
16082
+ }] }, { type: i2$3.CdkStep, decorators: [{
16083
16083
  type: Host
16084
16084
  }] }, { type: GainsightService }];
16085
16085
  }, propDecorators: { labels: [{
@@ -16106,7 +16106,7 @@ class StepperOutletComponent {
16106
16106
  }
16107
16107
  }
16108
16108
  StepperOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: StepperOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16109
- StepperOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: StepperOutletComponent, selector: "c8y-stepper-outlet", inputs: { steps: "steps", showDefaultButtons: "showDefaultButtons" }, ngImport: i0, template: "<c8y-stepper \n [customClasses]=\"['p-t-32', 'p-b-32', 'm-l-48', 'm-r-48']\" \n class=\"d-flex d-col fit-h\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n>\n <cdk-step\n *ngFor=\"let step of steps\"\n [label]=\"step.label\"\n [state]=\"step.state\"\n [completed]=\"step.completed\"\n [optional]=\"!step.required\"\n >\n <ng-container *ngComponentOutlet=\"step.component; injector: step.injector\"></ng-container>\n <c8y-stepper-buttons *ngIf=\"showDefaultButtons\"></c8y-stepper-buttons>\n <ng-template c8yStepperIcon=\"error\">\n <span c8yIcon=\"error\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"warning\">\n <span c8yIcon=\"warning\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"done\">\n <span c8yIcon=\"check\"></span>\n </ng-template>\n </cdk-step>\n</c8y-stepper>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$2.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "directive", type: C8yStepperIcon, selector: "ng-template[c8yStepperIcon]", inputs: ["c8yStepperIcon"] }, { kind: "component", type: C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }] });
16109
+ StepperOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: StepperOutletComponent, selector: "c8y-stepper-outlet", inputs: { steps: "steps", showDefaultButtons: "showDefaultButtons" }, ngImport: i0, template: "<c8y-stepper \n [customClasses]=\"['p-t-32', 'p-b-32', 'm-l-48', 'm-r-48']\" \n class=\"d-flex d-col fit-h\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n>\n <cdk-step\n *ngFor=\"let step of steps\"\n [label]=\"step.label\"\n [state]=\"step.state\"\n [completed]=\"step.completed\"\n [optional]=\"!step.required\"\n >\n <ng-container *ngComponentOutlet=\"step.component; injector: step.injector\"></ng-container>\n <c8y-stepper-buttons *ngIf=\"showDefaultButtons\"></c8y-stepper-buttons>\n <ng-template c8yStepperIcon=\"error\">\n <span c8yIcon=\"error\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"warning\">\n <span c8yIcon=\"warning\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"done\">\n <span c8yIcon=\"check\"></span>\n </ng-template>\n </cdk-step>\n</c8y-stepper>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "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: "component", type: i2$3.CdkStep, selector: "cdk-step", inputs: ["stepControl", "label", "errorMessage", "aria-label", "aria-labelledby", "state", "editable", "optional", "completed", "hasError"], outputs: ["interacted"], exportAs: ["cdkStep"] }, { kind: "component", type: C8yStepper, selector: "c8y-stepper", inputs: ["disableDefaultIcons", "disableProgressButtons", "customClasses", "hideStepProgress", "useStepLabelsAsTitlesOnly"], outputs: ["onStepChange"] }, { kind: "directive", type: C8yStepperIcon, selector: "ng-template[c8yStepperIcon]", inputs: ["c8yStepperIcon"] }, { kind: "component", type: C8yStepperButtons, selector: "c8y-stepper-buttons", inputs: ["labels", "pending", "disabled", "showButtons"], outputs: ["onCancel", "onNext", "onBack", "onCustom"] }] });
16110
16110
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: StepperOutletComponent, decorators: [{
16111
16111
  type: Component,
16112
16112
  args: [{ selector: 'c8y-stepper-outlet', template: "<c8y-stepper \n [customClasses]=\"['p-t-32', 'p-b-32', 'm-l-48', 'm-r-48']\" \n class=\"d-flex d-col fit-h\"\n [disableDefaultIcons]=\"{ edit: true, done: false }\"\n>\n <cdk-step\n *ngFor=\"let step of steps\"\n [label]=\"step.label\"\n [state]=\"step.state\"\n [completed]=\"step.completed\"\n [optional]=\"!step.required\"\n >\n <ng-container *ngComponentOutlet=\"step.component; injector: step.injector\"></ng-container>\n <c8y-stepper-buttons *ngIf=\"showDefaultButtons\"></c8y-stepper-buttons>\n <ng-template c8yStepperIcon=\"error\">\n <span c8yIcon=\"error\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"warning\">\n <span c8yIcon=\"warning\"></span>\n </ng-template>\n <ng-template c8yStepperIcon=\"done\">\n <span c8yIcon=\"check\"></span>\n </ng-template>\n </cdk-step>\n</c8y-stepper>\n" }]
@@ -16240,7 +16240,7 @@ class PropertiesListComponent {
16240
16240
  }
16241
16241
  }
16242
16242
  PropertiesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PropertiesListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16243
- PropertiesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: PropertiesListComponent, selector: "c8y-properties-list", inputs: { properties: "properties", title: "title", icon: "icon", data: "data", groups: "groups", noParse: "noParse", emptyLabel: "emptyLabel" }, ngImport: i0, template: "<p class=\"m-b-8\" *ngIf=\"title\">\n <i *ngIf=\"icon\" [c8yIcon]=\"icon\" class=\"text-info m-r-8\"></i>\n <span class=\"text-label-small\">{{ title | translate }}</span>\n</p>\n<ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex\"\n *ngFor=\"let prop of properties; let i = index; trackBy: identity\"\n [ngClass]=\"{'separator-top-bottom': i === 0,\n 'separator-bottom': i > 0}\"\n >\n <div\n [ngClass]=\"{\n 'm-l-16': hasGroup(prop),\n legend: prop.type === 'group',\n 'form-block': prop.type === 'group',\n 'm-b-0': prop.type === 'group',\n 'm-t-4': prop.type === 'group'\n }\"\n class=\"small text-medium text-nowrap m-r-4\"\n >\n {{ prop.label | translate }}\n </div>\n <span [ngSwitch]=\"prop.type\" class=\"m-l-auto\">\n <span *ngSwitchCase=\"'string'\" class=\"m-l-auto\">{{ prop.value }}</span>\n <a\n *ngSwitchCase=\"'link'\"\n (click)=\"prop.action($event, prop.value)\"\n class=\"m-l-auto pointer text-truncate m-l-4\"\n >{{ prop.value }}</a>\n <span *ngSwitchCase=\"'array'\">\n <span\n class=\"label label-info m-l-4\"\n *ngFor=\"let propTag of prop.value\"\n (click)=\"prop.action && prop.action($event, propTag)\"\n [ngClass]=\"{\n pointer: prop.action\n }\"\n >{{ propTag }}</span>\n </span>\n </span>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
16243
+ PropertiesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: PropertiesListComponent, selector: "c8y-properties-list", inputs: { properties: "properties", title: "title", icon: "icon", data: "data", groups: "groups", noParse: "noParse", emptyLabel: "emptyLabel" }, ngImport: i0, template: "<p class=\"m-b-8\" *ngIf=\"title\">\n <i *ngIf=\"icon\" [c8yIcon]=\"icon\" class=\"text-info m-r-8\"></i>\n <span class=\"text-label-small\">{{ title | translate }}</span>\n</p>\n<ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex\"\n *ngFor=\"let prop of properties; let i = index; trackBy: identity\"\n [ngClass]=\"{'separator-top-bottom': i === 0,\n 'separator-bottom': i > 0}\"\n >\n <div\n [ngClass]=\"{\n 'm-l-16': hasGroup(prop),\n legend: prop.type === 'group',\n 'form-block': prop.type === 'group',\n 'm-b-0': prop.type === 'group',\n 'm-t-4': prop.type === 'group'\n }\"\n class=\"small text-medium text-nowrap m-r-4\"\n >\n {{ prop.label | translate }}\n </div>\n <span [ngSwitch]=\"prop.type\" class=\"m-l-auto\">\n <span *ngSwitchCase=\"'string'\" class=\"m-l-auto\">{{ prop.value }}</span>\n <a\n *ngSwitchCase=\"'link'\"\n (click)=\"prop.action($event, prop.value)\"\n class=\"m-l-auto pointer text-truncate m-l-4\"\n >{{ prop.value }}</a>\n <span *ngSwitchCase=\"'array'\">\n <span\n class=\"label label-info m-l-4\"\n *ngFor=\"let propTag of prop.value\"\n (click)=\"prop.action && prop.action($event, propTag)\"\n [ngClass]=\"{\n pointer: prop.action\n }\"\n >{{ propTag }}</span>\n </span>\n </span>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
16244
16244
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: PropertiesListComponent, decorators: [{
16245
16245
  type: Component,
16246
16246
  args: [{ selector: 'c8y-properties-list', template: "<p class=\"m-b-8\" *ngIf=\"title\">\n <i *ngIf=\"icon\" [c8yIcon]=\"icon\" class=\"text-info m-r-8\"></i>\n <span class=\"text-label-small\">{{ title | translate }}</span>\n</p>\n<ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex\"\n *ngFor=\"let prop of properties; let i = index; trackBy: identity\"\n [ngClass]=\"{'separator-top-bottom': i === 0,\n 'separator-bottom': i > 0}\"\n >\n <div\n [ngClass]=\"{\n 'm-l-16': hasGroup(prop),\n legend: prop.type === 'group',\n 'form-block': prop.type === 'group',\n 'm-b-0': prop.type === 'group',\n 'm-t-4': prop.type === 'group'\n }\"\n class=\"small text-medium text-nowrap m-r-4\"\n >\n {{ prop.label | translate }}\n </div>\n <span [ngSwitch]=\"prop.type\" class=\"m-l-auto\">\n <span *ngSwitchCase=\"'string'\" class=\"m-l-auto\">{{ prop.value }}</span>\n <a\n *ngSwitchCase=\"'link'\"\n (click)=\"prop.action($event, prop.value)\"\n class=\"m-l-auto pointer text-truncate m-l-4\"\n >{{ prop.value }}</a>\n <span *ngSwitchCase=\"'array'\">\n <span\n class=\"label label-info m-l-4\"\n *ngFor=\"let propTag of prop.value\"\n (click)=\"prop.action && prop.action($event, propTag)\"\n [ngClass]=\"{\n pointer: prop.action\n }\"\n >{{ propTag }}</span>\n </span>\n </span>\n </li>\n</ul>\n" }]
@@ -16461,7 +16461,7 @@ class SetupComponent {
16461
16461
  }
16462
16462
  }
16463
16463
  SetupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SetupComponent, deps: [{ token: OptionsService }, { token: StepperService }, { token: AppStateService }, { token: AlertService }, { token: Permissions }, { token: SetupService }], target: i0.ɵɵFactoryTarget.Component });
16464
- SetupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SetupComponent, selector: "c8y-setup", ngImport: i0, template: "<c8y-title>\n {{ options.name | humanizeAppName | async }}\n</c8y-title>\n\n<div\n class=\"card content-fullpage fadeInRightBig animated\"\n *ngIf=\"currentSetupState !== setupState.START\"\n>\n <c8y-stepper-outlet\n [showDefaultButtons]=\"false\"\n [steps]=\"steps\"\n class=\"d-contents\"\n ></c8y-stepper-outlet>\n</div>\n\n<div\n class=\"card content-fullpage d-flex d-col fadeInUpBig animated\"\n *ngIf=\"currentSetupState === setupState.START\"\n>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"card-block\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24\">\n <svg class=\"p-t-32\" viewBox=\"0 0 360 190\" style=\"max-width: 450px; margin: auto\">\n <g\n id=\"ecosystem-welcome-illustration\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g id=\"medium-img\">\n <g id=\"M---Nothing-found---illustration\" transform=\"translate(27.000000, 0.000000)\">\n <path\n d=\"M41.9882163,184.153177 C24.3512964,165.028818 14.796713,138.637202 18.0717117,113.128248 C21.3467105,87.6192947 38.0071399,63.7138452 61.8485298,52.9453596 C71.0829585,49.0513414 80.8096047,46.3893689 90.76767,45.0308169 C98.489456,43.8098001 118.605159,43.8098001 134.379236,43.8098001 C145.406066,43.8098001 181.235754,38.969866 207.015103,16.5355211 C213.745375,10.6511027 239.269332,-7.69357146 271.478495,5.11974949 C293.036399,13.6962892 308.780431,29.0693321 312.911736,38.3078689 C331.314825,79.4105311 320.017582,129.634042 291.233648,164.558065 C285.720232,171.251591 279.470694,177.592051 271.70384,181.608167 C268.726702,182.834918 265.624451,183.747258 262.449715,184.32971 L41.9882163,184.153177 Z\"\n id=\"Path\"\n fill=\"#CDE6F9\"\n fill-rule=\"nonzero\"\n ></path>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"28.1633729\"\n cy=\"162.880435\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"65.7145367\"\n cy=\"65.6884059\"\n rx=\"4.02333899\"\n ry=\"3.35144928\"\n ></ellipse>\n <g\n id=\"Group\"\n opacity=\"0.8\"\n transform=\"translate(8.046677, 16.757247)\"\n fill=\"#7BCAEF\"\n fill-rule=\"nonzero\"\n >\n <path\n d=\"M12.8344513,8.04347826 L2.50788129,8.04347826 C1.90488763,8.22105727 1.25665804,7.99364432 0.892621563,7.47681021 C0.528585083,6.95997611 0.528585083,6.26707703 0.892621563,5.75024293 C1.25665804,5.23340882 1.90488763,5.00599587 2.50788129,5.18357488 L12.8344513,5.18357488 C13.437445,5.00599587 14.0856746,5.23340882 14.4497111,5.75024293 C14.8137476,6.26707703 14.8137476,6.95997611 14.4497111,7.47681021 C14.0856746,7.99364432 13.437445,8.22105727 12.8344513,8.04347826 Z\"\n id=\"Path\"\n ></path>\n <path\n d=\"M7.64166184,13.2866345 C6.82691795,13.2866345 6.16643754,12.6197478 6.16643754,11.7971014 L6.16643754,1.37037037 C6.35002101,0.734836286 6.92699763,0.297906603 7.58265287,0.297906603 C8.2383081,0.297906603 8.81528471,0.734836286 8.99888356,1.37037037 L8.99888356,11.7971014 C9.00133839,12.5753731 8.40999101,13.2243764 7.64166184,13.2866345 Z\"\n id=\"Path\"\n ></path>\n </g>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"2.68222598\"\n cy=\"90.4891305\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"257.493695\"\n cy=\"157.518116\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#14629F\"\n fill-rule=\"nonzero\"\n cx=\"299.738754\"\n cy=\"155.507247\"\n rx=\"2.01166949\"\n ry=\"2.01086957\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#96CAF3\"\n fill-rule=\"nonzero\"\n cx=\"260.175921\"\n cy=\"59.6557971\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n cx=\"329.913796\"\n cy=\"111.938406\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n stroke=\"#96CAF3\"\n cx=\"95.2190226\"\n cy=\"144.782609\"\n rx=\"4.02333899\"\n ry=\"3.35144928\"\n ></ellipse>\n <g\n id=\"Group\"\n opacity=\"0.6\"\n transform=\"translate(273.587050, 121.322464)\"\n fill=\"#14629F\"\n fill-rule=\"nonzero\"\n >\n <path\n d=\"M12.1263437,8.01368761 L1.79977363,8.01368761 C1.17034461,7.82832349 0.737612147,7.24575058 0.737612147,6.5837359 C0.737612147,5.92172124 1.17034461,5.33914833 1.79977363,5.15378421 L12.1263437,5.15378421 C12.7293374,4.97620521 13.3775669,5.20361817 13.7416034,5.72045226 C14.1056399,6.23728637 14.1056399,6.93018545 13.7416034,7.44701956 C13.3775669,7.96385365 12.7293374,8.19126661 12.1263437,8.01368761 L12.1263437,8.01368761 Z\"\n id=\"Path\"\n ></path>\n <path\n d=\"M6.94830642,13.2419485 C6.13356254,13.2419485 5.47308212,12.5750618 5.47308212,11.7524155 L5.47308212,1.32568438 C5.6566656,0.690150295 6.23364221,0.253220612 6.88929744,0.253220612 C7.54495269,0.253220612 8.1219293,0.690150295 8.30552815,1.32568438 L8.30552815,11.7524155 C8.30798297,12.5306871 7.71663558,13.1796904 6.94830642,13.2419485 Z\"\n id=\"Path\"\n ></path>\n </g>\n <rect\n id=\"Rectangle\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n x=\"107.28904\"\n y=\"128.025362\"\n width=\"109.971265\"\n height=\"48.2608695\"\n ></rect>\n <polygon\n id=\"Path\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n points=\"205.744516 91.8297102 121.555988 91.8297102 107.28904 129.365942 217.260306 129.365942\"\n ></polygon>\n <polygon\n id=\"Path\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n points=\"93.8779095 114.917472 103.478057 98.5326086 118.017943 121.471417 107.035845 128.025362\"\n ></polygon>\n <polygon\n id=\"Path\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n points=\"209.213627 123.316736 216.813268 129.365942 232.012548 114.683402 221.373051 98.5326086\"\n ></polygon>\n <polygon\n id=\"Path\"\n fill=\"#96CAF3\"\n fill-rule=\"nonzero\"\n points=\"214.884986 105.235507 111.648803 105.235507 107.28904 129.365942 217.260306 129.365942\"\n ></polygon>\n <path\n d=\"M91.6761446,30.3423163 C92.3222173,30.3423163 92.8459628,30.8537275 92.8459628,31.4845853 C92.8459628,32.1154431 92.3222173,32.6268545 91.6761446,32.6268545 C91.0300718,32.6268545 90.5063264,32.1154431 90.5063264,31.4845853 C90.5289441,30.8631053 91.0396757,30.3644014 91.6761446,30.3423163 Z M91.8662401,24.6309708 C92.4940745,24.6065819 93.1037929,24.8394323 93.5480901,25.2732662 C93.9923872,25.7071004 94.2308535,26.30246 94.2058764,26.9155089 L94.2058764,27.5152002 L89.5266036,27.5152002 L89.5266036,26.9155089 C89.4960305,26.2895723 89.7404154,25.6806341 90.1983788,25.2416359 C90.6563421,24.8026375 91.2843716,24.5752894 91.924731,24.6166924 L91.8662401,24.6309708 Z M91.8662401,23.4744232 C90.9292048,23.466734 90.0282593,23.8268063 89.3656519,24.4738094 C88.7030445,25.1208125 88.3342881,26.0005407 88.3421627,26.9155089 L88.3421627,27.5152002 L87.1723446,27.5152002 L87.1723446,35.5253623 L96.5601355,35.5253623 L96.5601355,27.5009219 L95.3903173,27.5009219 L95.3903173,26.9012306 C95.3981063,25.9961621 95.037351,25.1251451 94.3874206,24.4798095 C93.7374901,23.8344738 92.8516283,23.4676871 91.924731,23.460145 L91.8662401,23.4744232 Z\"\n id=\"Shape\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n d=\"M254.811469,24.8007247 L248.113249,12.7355072 L241.400339,24.8007247 L254.811469,24.8007247 Z M248.7155,22.7874058 L247.466929,22.7874058 L247.466929,21.6411367 L248.671434,21.6411367 L248.7155,22.7874058 Z M248.7155,20.5095632 L247.466929,20.5095632 L247.466929,17.5704117 L248.671434,17.5704117 L248.7155,20.5095632 Z\"\n id=\"Shape\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n ></path>\n <line\n x1=\"201.166949\"\n y1=\"40.8876812\"\n x2=\"187.755818\"\n y2=\"60.9963769\"\n id=\"Path\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></line>\n <line\n x1=\"165.969438\"\n y1=\"31.5036231\"\n x2=\"165.285471\"\n y2=\"55.6340579\"\n id=\"Path\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></line>\n <line\n x1=\"130.08796\"\n y1=\"44.9094203\"\n x2=\"146.181316\"\n y2=\"63.6775362\"\n id=\"Path\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></line>\n </g>\n <polygon\n id=\"Fill-56\"\n fill=\"#A5D1FE\"\n fill-rule=\"nonzero\"\n points=\"0 185 335 185 335 175 0 175\"\n ></polygon>\n </g>\n </g>\n </svg>\n <h1\n class=\"p-t-16 p-b-16 text-center text-medium\"\n ngNonBindable\n translate\n [translateParams]=\"{ appName: options.name | humanizeAppName | async }\"\n >\n Welcome to {{ appName }}\n </h1>\n <p class=\"lead text-normal\" translate *ngIf=\"hasRole\">\n This application (or any plugin that you added recently) has pre-requirements that needs\n to be configured first. This wizard will guide you through the steps that are necessary\n to get your customized application up and running.\n </p>\n <div class=\"flex-grow\" *ngIf=\"properties.length > 0\">\n <c8y-properties-list\n icon=\"info\"\n [properties]=\"properties\"\n [data]=\"options\"\n [title]=\"'Application properties' | translate\"\n ></c8y-properties-list>\n </div>\n <div class=\"alert alert-danger m-32\" *ngIf=\"!hasRole\">\n <strong translate>No permission</strong>\n <div translate>\n You don't have sufficient rights to setup this application. Contact an application\n administrator to setup the required steps.\n </div>\n </div>\n <div class=\"alert alert-danger m-32\" *ngIf=\"!isOwner\">\n <strong translate>Not the owner</strong>\n <div translate>\n The current application is not owned by this tenant. Clone the application before\n running the setup.\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer separator d-flex j-c-center\">\n <button\n class=\"btn\"\n (click)=\"skip()\"\n translate\n *ngIf=\"canSkip\"\n [title]=\"\n 'You can skip the setup now. It will be shown again as soon as you restart the application.'\n | translate\n \"\n >\n Skip\n </button>\n\n <button\n class=\"btn btn-primary\"\n (click)=\"start()\"\n translate\n [disabled]=\"!hasRole || !isOwner\"\n [title]=\"'Start the setup wizard.' | translate\"\n >\n Start\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: StepperOutletComponent, selector: "c8y-stepper-outlet", inputs: ["steps", "showDefaultButtons"] }, { kind: "component", type: PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizeAppNamePipe, name: "humanizeAppName" }] });
16464
+ SetupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SetupComponent, selector: "c8y-setup", ngImport: i0, template: "<c8y-title>\n {{ options.name | humanizeAppName | async }}\n</c8y-title>\n\n<div\n class=\"card content-fullpage fadeInRightBig animated\"\n *ngIf=\"currentSetupState !== setupState.START\"\n>\n <c8y-stepper-outlet\n [showDefaultButtons]=\"false\"\n [steps]=\"steps\"\n class=\"d-contents\"\n ></c8y-stepper-outlet>\n</div>\n\n<div\n class=\"card content-fullpage d-flex d-col fadeInUpBig animated\"\n *ngIf=\"currentSetupState === setupState.START\"\n>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"card-block\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24\">\n <svg class=\"p-t-32\" viewBox=\"0 0 360 190\" style=\"max-width: 450px; margin: auto\">\n <g\n id=\"ecosystem-welcome-illustration\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g id=\"medium-img\">\n <g id=\"M---Nothing-found---illustration\" transform=\"translate(27.000000, 0.000000)\">\n <path\n d=\"M41.9882163,184.153177 C24.3512964,165.028818 14.796713,138.637202 18.0717117,113.128248 C21.3467105,87.6192947 38.0071399,63.7138452 61.8485298,52.9453596 C71.0829585,49.0513414 80.8096047,46.3893689 90.76767,45.0308169 C98.489456,43.8098001 118.605159,43.8098001 134.379236,43.8098001 C145.406066,43.8098001 181.235754,38.969866 207.015103,16.5355211 C213.745375,10.6511027 239.269332,-7.69357146 271.478495,5.11974949 C293.036399,13.6962892 308.780431,29.0693321 312.911736,38.3078689 C331.314825,79.4105311 320.017582,129.634042 291.233648,164.558065 C285.720232,171.251591 279.470694,177.592051 271.70384,181.608167 C268.726702,182.834918 265.624451,183.747258 262.449715,184.32971 L41.9882163,184.153177 Z\"\n id=\"Path\"\n fill=\"#CDE6F9\"\n fill-rule=\"nonzero\"\n ></path>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"28.1633729\"\n cy=\"162.880435\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"65.7145367\"\n cy=\"65.6884059\"\n rx=\"4.02333899\"\n ry=\"3.35144928\"\n ></ellipse>\n <g\n id=\"Group\"\n opacity=\"0.8\"\n transform=\"translate(8.046677, 16.757247)\"\n fill=\"#7BCAEF\"\n fill-rule=\"nonzero\"\n >\n <path\n d=\"M12.8344513,8.04347826 L2.50788129,8.04347826 C1.90488763,8.22105727 1.25665804,7.99364432 0.892621563,7.47681021 C0.528585083,6.95997611 0.528585083,6.26707703 0.892621563,5.75024293 C1.25665804,5.23340882 1.90488763,5.00599587 2.50788129,5.18357488 L12.8344513,5.18357488 C13.437445,5.00599587 14.0856746,5.23340882 14.4497111,5.75024293 C14.8137476,6.26707703 14.8137476,6.95997611 14.4497111,7.47681021 C14.0856746,7.99364432 13.437445,8.22105727 12.8344513,8.04347826 Z\"\n id=\"Path\"\n ></path>\n <path\n d=\"M7.64166184,13.2866345 C6.82691795,13.2866345 6.16643754,12.6197478 6.16643754,11.7971014 L6.16643754,1.37037037 C6.35002101,0.734836286 6.92699763,0.297906603 7.58265287,0.297906603 C8.2383081,0.297906603 8.81528471,0.734836286 8.99888356,1.37037037 L8.99888356,11.7971014 C9.00133839,12.5753731 8.40999101,13.2243764 7.64166184,13.2866345 Z\"\n id=\"Path\"\n ></path>\n </g>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"2.68222598\"\n cy=\"90.4891305\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"257.493695\"\n cy=\"157.518116\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#14629F\"\n fill-rule=\"nonzero\"\n cx=\"299.738754\"\n cy=\"155.507247\"\n rx=\"2.01166949\"\n ry=\"2.01086957\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#96CAF3\"\n fill-rule=\"nonzero\"\n cx=\"260.175921\"\n cy=\"59.6557971\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n cx=\"329.913796\"\n cy=\"111.938406\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n stroke=\"#96CAF3\"\n cx=\"95.2190226\"\n cy=\"144.782609\"\n rx=\"4.02333899\"\n ry=\"3.35144928\"\n ></ellipse>\n <g\n id=\"Group\"\n opacity=\"0.6\"\n transform=\"translate(273.587050, 121.322464)\"\n fill=\"#14629F\"\n fill-rule=\"nonzero\"\n >\n <path\n d=\"M12.1263437,8.01368761 L1.79977363,8.01368761 C1.17034461,7.82832349 0.737612147,7.24575058 0.737612147,6.5837359 C0.737612147,5.92172124 1.17034461,5.33914833 1.79977363,5.15378421 L12.1263437,5.15378421 C12.7293374,4.97620521 13.3775669,5.20361817 13.7416034,5.72045226 C14.1056399,6.23728637 14.1056399,6.93018545 13.7416034,7.44701956 C13.3775669,7.96385365 12.7293374,8.19126661 12.1263437,8.01368761 L12.1263437,8.01368761 Z\"\n id=\"Path\"\n ></path>\n <path\n d=\"M6.94830642,13.2419485 C6.13356254,13.2419485 5.47308212,12.5750618 5.47308212,11.7524155 L5.47308212,1.32568438 C5.6566656,0.690150295 6.23364221,0.253220612 6.88929744,0.253220612 C7.54495269,0.253220612 8.1219293,0.690150295 8.30552815,1.32568438 L8.30552815,11.7524155 C8.30798297,12.5306871 7.71663558,13.1796904 6.94830642,13.2419485 Z\"\n id=\"Path\"\n ></path>\n </g>\n <rect\n id=\"Rectangle\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n x=\"107.28904\"\n y=\"128.025362\"\n width=\"109.971265\"\n height=\"48.2608695\"\n ></rect>\n <polygon\n id=\"Path\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n points=\"205.744516 91.8297102 121.555988 91.8297102 107.28904 129.365942 217.260306 129.365942\"\n ></polygon>\n <polygon\n id=\"Path\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n points=\"93.8779095 114.917472 103.478057 98.5326086 118.017943 121.471417 107.035845 128.025362\"\n ></polygon>\n <polygon\n id=\"Path\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n points=\"209.213627 123.316736 216.813268 129.365942 232.012548 114.683402 221.373051 98.5326086\"\n ></polygon>\n <polygon\n id=\"Path\"\n fill=\"#96CAF3\"\n fill-rule=\"nonzero\"\n points=\"214.884986 105.235507 111.648803 105.235507 107.28904 129.365942 217.260306 129.365942\"\n ></polygon>\n <path\n d=\"M91.6761446,30.3423163 C92.3222173,30.3423163 92.8459628,30.8537275 92.8459628,31.4845853 C92.8459628,32.1154431 92.3222173,32.6268545 91.6761446,32.6268545 C91.0300718,32.6268545 90.5063264,32.1154431 90.5063264,31.4845853 C90.5289441,30.8631053 91.0396757,30.3644014 91.6761446,30.3423163 Z M91.8662401,24.6309708 C92.4940745,24.6065819 93.1037929,24.8394323 93.5480901,25.2732662 C93.9923872,25.7071004 94.2308535,26.30246 94.2058764,26.9155089 L94.2058764,27.5152002 L89.5266036,27.5152002 L89.5266036,26.9155089 C89.4960305,26.2895723 89.7404154,25.6806341 90.1983788,25.2416359 C90.6563421,24.8026375 91.2843716,24.5752894 91.924731,24.6166924 L91.8662401,24.6309708 Z M91.8662401,23.4744232 C90.9292048,23.466734 90.0282593,23.8268063 89.3656519,24.4738094 C88.7030445,25.1208125 88.3342881,26.0005407 88.3421627,26.9155089 L88.3421627,27.5152002 L87.1723446,27.5152002 L87.1723446,35.5253623 L96.5601355,35.5253623 L96.5601355,27.5009219 L95.3903173,27.5009219 L95.3903173,26.9012306 C95.3981063,25.9961621 95.037351,25.1251451 94.3874206,24.4798095 C93.7374901,23.8344738 92.8516283,23.4676871 91.924731,23.460145 L91.8662401,23.4744232 Z\"\n id=\"Shape\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n d=\"M254.811469,24.8007247 L248.113249,12.7355072 L241.400339,24.8007247 L254.811469,24.8007247 Z M248.7155,22.7874058 L247.466929,22.7874058 L247.466929,21.6411367 L248.671434,21.6411367 L248.7155,22.7874058 Z M248.7155,20.5095632 L247.466929,20.5095632 L247.466929,17.5704117 L248.671434,17.5704117 L248.7155,20.5095632 Z\"\n id=\"Shape\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n ></path>\n <line\n x1=\"201.166949\"\n y1=\"40.8876812\"\n x2=\"187.755818\"\n y2=\"60.9963769\"\n id=\"Path\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></line>\n <line\n x1=\"165.969438\"\n y1=\"31.5036231\"\n x2=\"165.285471\"\n y2=\"55.6340579\"\n id=\"Path\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></line>\n <line\n x1=\"130.08796\"\n y1=\"44.9094203\"\n x2=\"146.181316\"\n y2=\"63.6775362\"\n id=\"Path\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></line>\n </g>\n <polygon\n id=\"Fill-56\"\n fill=\"#A5D1FE\"\n fill-rule=\"nonzero\"\n points=\"0 185 335 185 335 175 0 175\"\n ></polygon>\n </g>\n </g>\n </svg>\n <h1\n class=\"p-t-16 p-b-16 text-center text-medium\"\n ngNonBindable\n translate\n [translateParams]=\"{ appName: options.name | humanizeAppName | async }\"\n >\n Welcome to {{ appName }}\n </h1>\n <p class=\"lead text-normal\" translate *ngIf=\"hasRole\">\n This application (or any plugin that you added recently) has pre-requirements that needs\n to be configured first. This wizard will guide you through the steps that are necessary\n to get your customized application up and running.\n </p>\n <div class=\"flex-grow\" *ngIf=\"properties.length > 0\">\n <c8y-properties-list\n icon=\"info\"\n [properties]=\"properties\"\n [data]=\"options\"\n [title]=\"'Application properties' | translate\"\n ></c8y-properties-list>\n </div>\n <div class=\"alert alert-danger m-32\" *ngIf=\"!hasRole\">\n <strong translate>No permission</strong>\n <div translate>\n You don't have sufficient rights to setup this application. Contact an application\n administrator to setup the required steps.\n </div>\n </div>\n <div class=\"alert alert-danger m-32\" *ngIf=\"!isOwner\">\n <strong translate>Not the owner</strong>\n <div translate>\n The current application is not owned by this tenant. Clone the application before\n running the setup.\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer separator d-flex j-c-center\">\n <button\n class=\"btn\"\n (click)=\"skip()\"\n translate\n *ngIf=\"canSkip\"\n [title]=\"\n 'You can skip the setup now. It will be shown again as soon as you restart the application.'\n | translate\n \"\n >\n Skip\n </button>\n\n <button\n class=\"btn btn-primary\"\n (click)=\"start()\"\n translate\n [disabled]=\"!hasRole || !isOwner\"\n [title]=\"'Start the setup wizard.' | translate\"\n >\n Start\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: StepperOutletComponent, selector: "c8y-stepper-outlet", inputs: ["steps", "showDefaultButtons"] }, { kind: "component", type: PropertiesListComponent, selector: "c8y-properties-list", inputs: ["properties", "title", "icon", "data", "groups", "noParse", "emptyLabel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizeAppNamePipe, name: "humanizeAppName" }] });
16465
16465
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SetupComponent, decorators: [{
16466
16466
  type: Component,
16467
16467
  args: [{ selector: 'c8y-setup', template: "<c8y-title>\n {{ options.name | humanizeAppName | async }}\n</c8y-title>\n\n<div\n class=\"card content-fullpage fadeInRightBig animated\"\n *ngIf=\"currentSetupState !== setupState.START\"\n>\n <c8y-stepper-outlet\n [showDefaultButtons]=\"false\"\n [steps]=\"steps\"\n class=\"d-contents\"\n ></c8y-stepper-outlet>\n</div>\n\n<div\n class=\"card content-fullpage d-flex d-col fadeInUpBig animated\"\n *ngIf=\"currentSetupState === setupState.START\"\n>\n <div class=\"inner-scroll flex-grow\">\n <div class=\"card-block\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24\">\n <svg class=\"p-t-32\" viewBox=\"0 0 360 190\" style=\"max-width: 450px; margin: auto\">\n <g\n id=\"ecosystem-welcome-illustration\"\n stroke=\"none\"\n stroke-width=\"1\"\n fill=\"none\"\n fill-rule=\"evenodd\"\n >\n <g id=\"medium-img\">\n <g id=\"M---Nothing-found---illustration\" transform=\"translate(27.000000, 0.000000)\">\n <path\n d=\"M41.9882163,184.153177 C24.3512964,165.028818 14.796713,138.637202 18.0717117,113.128248 C21.3467105,87.6192947 38.0071399,63.7138452 61.8485298,52.9453596 C71.0829585,49.0513414 80.8096047,46.3893689 90.76767,45.0308169 C98.489456,43.8098001 118.605159,43.8098001 134.379236,43.8098001 C145.406066,43.8098001 181.235754,38.969866 207.015103,16.5355211 C213.745375,10.6511027 239.269332,-7.69357146 271.478495,5.11974949 C293.036399,13.6962892 308.780431,29.0693321 312.911736,38.3078689 C331.314825,79.4105311 320.017582,129.634042 291.233648,164.558065 C285.720232,171.251591 279.470694,177.592051 271.70384,181.608167 C268.726702,182.834918 265.624451,183.747258 262.449715,184.32971 L41.9882163,184.153177 Z\"\n id=\"Path\"\n fill=\"#CDE6F9\"\n fill-rule=\"nonzero\"\n ></path>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"28.1633729\"\n cy=\"162.880435\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"65.7145367\"\n cy=\"65.6884059\"\n rx=\"4.02333899\"\n ry=\"3.35144928\"\n ></ellipse>\n <g\n id=\"Group\"\n opacity=\"0.8\"\n transform=\"translate(8.046677, 16.757247)\"\n fill=\"#7BCAEF\"\n fill-rule=\"nonzero\"\n >\n <path\n d=\"M12.8344513,8.04347826 L2.50788129,8.04347826 C1.90488763,8.22105727 1.25665804,7.99364432 0.892621563,7.47681021 C0.528585083,6.95997611 0.528585083,6.26707703 0.892621563,5.75024293 C1.25665804,5.23340882 1.90488763,5.00599587 2.50788129,5.18357488 L12.8344513,5.18357488 C13.437445,5.00599587 14.0856746,5.23340882 14.4497111,5.75024293 C14.8137476,6.26707703 14.8137476,6.95997611 14.4497111,7.47681021 C14.0856746,7.99364432 13.437445,8.22105727 12.8344513,8.04347826 Z\"\n id=\"Path\"\n ></path>\n <path\n d=\"M7.64166184,13.2866345 C6.82691795,13.2866345 6.16643754,12.6197478 6.16643754,11.7971014 L6.16643754,1.37037037 C6.35002101,0.734836286 6.92699763,0.297906603 7.58265287,0.297906603 C8.2383081,0.297906603 8.81528471,0.734836286 8.99888356,1.37037037 L8.99888356,11.7971014 C9.00133839,12.5753731 8.40999101,13.2243764 7.64166184,13.2866345 Z\"\n id=\"Path\"\n ></path>\n </g>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"2.68222598\"\n cy=\"90.4891305\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n cx=\"257.493695\"\n cy=\"157.518116\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#14629F\"\n fill-rule=\"nonzero\"\n cx=\"299.738754\"\n cy=\"155.507247\"\n rx=\"2.01166949\"\n ry=\"2.01086957\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n fill=\"#96CAF3\"\n fill-rule=\"nonzero\"\n cx=\"260.175921\"\n cy=\"59.6557971\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n cx=\"329.913796\"\n cy=\"111.938406\"\n rx=\"2.68222598\"\n ry=\"2.68115941\"\n ></ellipse>\n <ellipse\n id=\"Oval\"\n stroke=\"#96CAF3\"\n cx=\"95.2190226\"\n cy=\"144.782609\"\n rx=\"4.02333899\"\n ry=\"3.35144928\"\n ></ellipse>\n <g\n id=\"Group\"\n opacity=\"0.6\"\n transform=\"translate(273.587050, 121.322464)\"\n fill=\"#14629F\"\n fill-rule=\"nonzero\"\n >\n <path\n d=\"M12.1263437,8.01368761 L1.79977363,8.01368761 C1.17034461,7.82832349 0.737612147,7.24575058 0.737612147,6.5837359 C0.737612147,5.92172124 1.17034461,5.33914833 1.79977363,5.15378421 L12.1263437,5.15378421 C12.7293374,4.97620521 13.3775669,5.20361817 13.7416034,5.72045226 C14.1056399,6.23728637 14.1056399,6.93018545 13.7416034,7.44701956 C13.3775669,7.96385365 12.7293374,8.19126661 12.1263437,8.01368761 L12.1263437,8.01368761 Z\"\n id=\"Path\"\n ></path>\n <path\n d=\"M6.94830642,13.2419485 C6.13356254,13.2419485 5.47308212,12.5750618 5.47308212,11.7524155 L5.47308212,1.32568438 C5.6566656,0.690150295 6.23364221,0.253220612 6.88929744,0.253220612 C7.54495269,0.253220612 8.1219293,0.690150295 8.30552815,1.32568438 L8.30552815,11.7524155 C8.30798297,12.5306871 7.71663558,13.1796904 6.94830642,13.2419485 Z\"\n id=\"Path\"\n ></path>\n </g>\n <rect\n id=\"Rectangle\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n x=\"107.28904\"\n y=\"128.025362\"\n width=\"109.971265\"\n height=\"48.2608695\"\n ></rect>\n <polygon\n id=\"Path\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n points=\"205.744516 91.8297102 121.555988 91.8297102 107.28904 129.365942 217.260306 129.365942\"\n ></polygon>\n <polygon\n id=\"Path\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n points=\"93.8779095 114.917472 103.478057 98.5326086 118.017943 121.471417 107.035845 128.025362\"\n ></polygon>\n <polygon\n id=\"Path\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n points=\"209.213627 123.316736 216.813268 129.365942 232.012548 114.683402 221.373051 98.5326086\"\n ></polygon>\n <polygon\n id=\"Path\"\n fill=\"#96CAF3\"\n fill-rule=\"nonzero\"\n points=\"214.884986 105.235507 111.648803 105.235507 107.28904 129.365942 217.260306 129.365942\"\n ></polygon>\n <path\n d=\"M91.6761446,30.3423163 C92.3222173,30.3423163 92.8459628,30.8537275 92.8459628,31.4845853 C92.8459628,32.1154431 92.3222173,32.6268545 91.6761446,32.6268545 C91.0300718,32.6268545 90.5063264,32.1154431 90.5063264,31.4845853 C90.5289441,30.8631053 91.0396757,30.3644014 91.6761446,30.3423163 Z M91.8662401,24.6309708 C92.4940745,24.6065819 93.1037929,24.8394323 93.5480901,25.2732662 C93.9923872,25.7071004 94.2308535,26.30246 94.2058764,26.9155089 L94.2058764,27.5152002 L89.5266036,27.5152002 L89.5266036,26.9155089 C89.4960305,26.2895723 89.7404154,25.6806341 90.1983788,25.2416359 C90.6563421,24.8026375 91.2843716,24.5752894 91.924731,24.6166924 L91.8662401,24.6309708 Z M91.8662401,23.4744232 C90.9292048,23.466734 90.0282593,23.8268063 89.3656519,24.4738094 C88.7030445,25.1208125 88.3342881,26.0005407 88.3421627,26.9155089 L88.3421627,27.5152002 L87.1723446,27.5152002 L87.1723446,35.5253623 L96.5601355,35.5253623 L96.5601355,27.5009219 L95.3903173,27.5009219 L95.3903173,26.9012306 C95.3981063,25.9961621 95.037351,25.1251451 94.3874206,24.4798095 C93.7374901,23.8344738 92.8516283,23.4676871 91.924731,23.460145 L91.8662401,23.4744232 Z\"\n id=\"Shape\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n ></path>\n <path\n d=\"M254.811469,24.8007247 L248.113249,12.7355072 L241.400339,24.8007247 L254.811469,24.8007247 Z M248.7155,22.7874058 L247.466929,22.7874058 L247.466929,21.6411367 L248.671434,21.6411367 L248.7155,22.7874058 Z M248.7155,20.5095632 L247.466929,20.5095632 L247.466929,17.5704117 L248.671434,17.5704117 L248.7155,20.5095632 Z\"\n id=\"Shape\"\n fill=\"#5FAEEC\"\n fill-rule=\"nonzero\"\n ></path>\n <line\n x1=\"201.166949\"\n y1=\"40.8876812\"\n x2=\"187.755818\"\n y2=\"60.9963769\"\n id=\"Path\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></line>\n <line\n x1=\"165.969438\"\n y1=\"31.5036231\"\n x2=\"165.285471\"\n y2=\"55.6340579\"\n id=\"Path\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></line>\n <line\n x1=\"130.08796\"\n y1=\"44.9094203\"\n x2=\"146.181316\"\n y2=\"63.6775362\"\n id=\"Path\"\n stroke=\"#5FAEEC\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n ></line>\n </g>\n <polygon\n id=\"Fill-56\"\n fill=\"#A5D1FE\"\n fill-rule=\"nonzero\"\n points=\"0 185 335 185 335 175 0 175\"\n ></polygon>\n </g>\n </g>\n </svg>\n <h1\n class=\"p-t-16 p-b-16 text-center text-medium\"\n ngNonBindable\n translate\n [translateParams]=\"{ appName: options.name | humanizeAppName | async }\"\n >\n Welcome to {{ appName }}\n </h1>\n <p class=\"lead text-normal\" translate *ngIf=\"hasRole\">\n This application (or any plugin that you added recently) has pre-requirements that needs\n to be configured first. This wizard will guide you through the steps that are necessary\n to get your customized application up and running.\n </p>\n <div class=\"flex-grow\" *ngIf=\"properties.length > 0\">\n <c8y-properties-list\n icon=\"info\"\n [properties]=\"properties\"\n [data]=\"options\"\n [title]=\"'Application properties' | translate\"\n ></c8y-properties-list>\n </div>\n <div class=\"alert alert-danger m-32\" *ngIf=\"!hasRole\">\n <strong translate>No permission</strong>\n <div translate>\n You don't have sufficient rights to setup this application. Contact an application\n administrator to setup the required steps.\n </div>\n </div>\n <div class=\"alert alert-danger m-32\" *ngIf=\"!isOwner\">\n <strong translate>Not the owner</strong>\n <div translate>\n The current application is not owned by this tenant. Clone the application before\n running the setup.\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer separator d-flex j-c-center\">\n <button\n class=\"btn\"\n (click)=\"skip()\"\n translate\n *ngIf=\"canSkip\"\n [title]=\"\n 'You can skip the setup now. It will be shown again as soon as you restart the application.'\n | translate\n \"\n >\n Skip\n </button>\n\n <button\n class=\"btn btn-primary\"\n (click)=\"start()\"\n translate\n [disabled]=\"!hasRole || !isOwner\"\n [title]=\"'Start the setup wizard.' | translate\"\n >\n Start\n </button>\n </div>\n</div>\n" }]
@@ -16503,7 +16503,7 @@ class CookieBannerPreferencesModalComponent {
16503
16503
  }
16504
16504
  }
16505
16505
  CookieBannerPreferencesModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CookieBannerPreferencesModalComponent, deps: [{ token: CookieBannerService }], target: i0.ɵɵFactoryTarget.Component });
16506
- CookieBannerPreferencesModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CookieBannerPreferencesModalComponent, selector: "c8y-cookie-banner-preferences-modal", viewQueries: [{ propertyName: "modalRef", first: true, predicate: ["modalRef"], descendants: true }], ngImport: i0, template: "<c8y-confirm-modal [title]=\"title\" [status]=\"status\" [labels]=\"labels\" #modalRef>\n\n <div *ngFor=\"let item of configCookiePreferencesList\" class=\"row p-t-8 p-b-8 separator-top\">\n <div class=\"col-xs-2\">\n <div class=\"text-center\">\n <label class=\"c8y-switch\">\n <input\n name=\"{{ item.name }}\"\n type=\"checkbox\"\n [(ngModel)]=\"item.value\"\n [disabled]=\"item.isReadonly\"\n />\n <span></span>\n </label>\n </div>\n </div>\n <div class=\"col-xs-10\">\n <h4 class=\"text-medium\">\n {{ item.name | translate | humanize }}\n </h4>\n <p>\n {{ getCookieDescription(item.name) | translate }}\n </p>\n </div>\n </div>\n</c8y-confirm-modal>\n", dependencies: [{ kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ConfirmModalComponent, selector: "c8y-confirm-modal", inputs: ["title", "body", "confirmOptions", "status", "labels"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }] });
16506
+ CookieBannerPreferencesModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CookieBannerPreferencesModalComponent, selector: "c8y-cookie-banner-preferences-modal", viewQueries: [{ propertyName: "modalRef", first: true, predicate: ["modalRef"], descendants: true }], ngImport: i0, template: "<c8y-confirm-modal [title]=\"title\" [status]=\"status\" [labels]=\"labels\" #modalRef>\n\n <div *ngFor=\"let item of configCookiePreferencesList\" class=\"row p-t-8 p-b-8 separator-top\">\n <div class=\"col-xs-2\">\n <div class=\"text-center\">\n <label class=\"c8y-switch\">\n <input\n name=\"{{ item.name }}\"\n type=\"checkbox\"\n [(ngModel)]=\"item.value\"\n [disabled]=\"item.isReadonly\"\n />\n <span></span>\n </label>\n </div>\n </div>\n <div class=\"col-xs-10\">\n <h4 class=\"text-medium\">\n {{ item.name | translate | humanize }}\n </h4>\n <p>\n {{ getCookieDescription(item.name) | translate }}\n </p>\n </div>\n </div>\n</c8y-confirm-modal>\n", dependencies: [{ kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ConfirmModalComponent, selector: "c8y-confirm-modal", inputs: ["title", "body", "confirmOptions", "status", "labels"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }] });
16507
16507
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CookieBannerPreferencesModalComponent, decorators: [{
16508
16508
  type: Component,
16509
16509
  args: [{ selector: 'c8y-cookie-banner-preferences-modal', template: "<c8y-confirm-modal [title]=\"title\" [status]=\"status\" [labels]=\"labels\" #modalRef>\n\n <div *ngFor=\"let item of configCookiePreferencesList\" class=\"row p-t-8 p-b-8 separator-top\">\n <div class=\"col-xs-2\">\n <div class=\"text-center\">\n <label class=\"c8y-switch\">\n <input\n name=\"{{ item.name }}\"\n type=\"checkbox\"\n [(ngModel)]=\"item.value\"\n [disabled]=\"item.isReadonly\"\n />\n <span></span>\n </label>\n </div>\n </div>\n <div class=\"col-xs-10\">\n <h4 class=\"text-medium\">\n {{ item.name | translate | humanize }}\n </h4>\n <p>\n {{ getCookieDescription(item.name) | translate }}\n </p>\n </div>\n </div>\n</c8y-confirm-modal>\n" }]
@@ -16562,12 +16562,12 @@ class CookieBannerComponent {
16562
16562
  this.cookieBannerService.isCookieBannerShowed$.next(shouldShow);
16563
16563
  }
16564
16564
  }
16565
- CookieBannerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CookieBannerComponent, deps: [{ token: i1$9.BsModalService }, { token: CookieBannerService }], target: i0.ɵɵFactoryTarget.Component });
16566
- CookieBannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CookieBannerComponent, selector: "c8y-cookie-banner", ngImport: i0, template: "<div class=\"c8y-cookie-banner\">\n <div class=\"container\">\n <div class=\"row p-t-16 p-b-16\" *ngIf=\"showBanner\">\n <div class=\"col-md-2\" *ngIf=\"settings.cookieBannerTitle\">\n <h3>{{ settings.cookieBannerTitle | translate }}</h3>\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n </div>\n <div class=\"col-md-7\">\n <div class=\"cookie-banner-content text-pre-line\">\n {{ settings.cookieBannerText | translate }}\n <a\n href=\"{{ settings.policyUrl }}\"\n target=\"_blank\"\n *ngIf=\"settings.policyUrl\"\n class=\"text-primary\"\n >\n {{ 'See also our Privacy Notice.' | translate }}\n </a>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"row\">\n <div class=\"col-sm-6 col-md-12\">\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"acceptCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Agree and proceed' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"rejectCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Reject all`cookies`' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-default btn-block\"\n (click)=\"onConfigurePreferences()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Configure preferences' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
16565
+ CookieBannerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CookieBannerComponent, deps: [{ token: i1$8.BsModalService }, { token: CookieBannerService }], target: i0.ɵɵFactoryTarget.Component });
16566
+ CookieBannerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CookieBannerComponent, selector: "c8y-cookie-banner", ngImport: i0, template: "<div class=\"c8y-cookie-banner\">\n <div class=\"container\">\n <div class=\"row p-t-16 p-b-16\" *ngIf=\"showBanner\">\n <div class=\"col-md-2\" *ngIf=\"settings.cookieBannerTitle\">\n <h3>{{ settings.cookieBannerTitle | translate }}</h3>\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n </div>\n <div class=\"col-md-7\">\n <div class=\"cookie-banner-content text-pre-line\">\n {{ settings.cookieBannerText | translate }}\n <a\n href=\"{{ settings.policyUrl }}\"\n target=\"_blank\"\n *ngIf=\"settings.policyUrl\"\n class=\"text-primary\"\n >\n {{ 'See also our Privacy Notice.' | translate }}\n </a>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"row\">\n <div class=\"col-sm-6 col-md-12\">\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"acceptCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Agree and proceed' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"rejectCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Reject all`cookies`' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-default btn-block\"\n (click)=\"onConfigurePreferences()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Configure preferences' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
16567
16567
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CookieBannerComponent, decorators: [{
16568
16568
  type: Component,
16569
16569
  args: [{ selector: 'c8y-cookie-banner', template: "<div class=\"c8y-cookie-banner\">\n <div class=\"container\">\n <div class=\"row p-t-16 p-b-16\" *ngIf=\"showBanner\">\n <div class=\"col-md-2\" *ngIf=\"settings.cookieBannerTitle\">\n <h3>{{ settings.cookieBannerTitle | translate }}</h3>\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n </div>\n <div class=\"col-md-7\">\n <div class=\"cookie-banner-content text-pre-line\">\n {{ settings.cookieBannerText | translate }}\n <a\n href=\"{{ settings.policyUrl }}\"\n target=\"_blank\"\n *ngIf=\"settings.policyUrl\"\n class=\"text-primary\"\n >\n {{ 'See also our Privacy Notice.' | translate }}\n </a>\n </div>\n </div>\n <div class=\"col-md-3\">\n <div class=\"row\">\n <div class=\"col-sm-6 col-md-12\">\n <div class=\"p-b-16 visible-sm visible-xs\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"acceptCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Agree and proceed' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-primary btn-block\"\n (click)=\"rejectCookies()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Reject all`cookies`' | translate }}\n </button>\n </div>\n <div class=\"col-sm-6 col-md-12\" *ngIf=\"!!cookiePreferences\">\n <div class=\"p-b-16\"></div>\n <button\n class=\"btn btn-default btn-block\"\n (click)=\"onConfigurePreferences()\"\n [disabled]=\"shouldDisable\"\n >\n {{ 'Configure preferences' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
16570
- }], ctorParameters: function () { return [{ type: i1$9.BsModalService }, { type: CookieBannerService }]; } });
16570
+ }], ctorParameters: function () { return [{ type: i1$8.BsModalService }, { type: CookieBannerService }]; } });
16571
16571
 
16572
16572
  class BootstrapComponent {
16573
16573
  constructor(tabs, ui, navigator, actionBar, headerService, options, pluginsResolve, setupService) {
@@ -16660,7 +16660,7 @@ class BootstrapComponent {
16660
16660
  }
16661
16661
  }
16662
16662
  BootstrapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BootstrapComponent, deps: [{ token: TabsService }, { token: AppStateService }, { token: NavigatorService }, { token: ActionBarService }, { token: HeaderService }, { token: OptionsService }, { token: PluginsResolveService }, { token: SetupService }], target: i0.ɵɵFactoryTarget.Component });
16663
- BootstrapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: BootstrapComponent, selector: "c8y-bootstrap", ngImport: i0, template: "<c8y-login *ngIf=\"!noLogin && !(ui.currentUser | async)\"></c8y-login>\n\n<div\n *ngIf=\"noLogin || ((ui.currentUser | async) && !(setupService.isSetupNeeded$ | async))\"\n [class.head-open]=\"headerService.headerOpen\"\n>\n <c8y-header-bar #header></c8y-header-bar>\n <c8y-navigator-outlet\n [nodes]=\"navigator.items$ | async\"\n [open]=\"headerService.navigatorOpen$ | async\"\n role=\"region\"\n title=\"{{ 'Navigator menu' | translate }}\"\n >\n <header class=\"title navigator-slot-top\">\n <div class=\"tenant-brand\"></div>\n <c8y-app-icon\n [name]=\"(ui.state$ | async).app.name\"\n [contextPath]=\"(ui.state$ | async).app.contextPath\"\n ></c8y-app-icon>\n <span>{{ (ui.state$ | async).app | humanizeAppName | async }}</span>\n </header>\n <div class=\"powered-by navigator-slot-bottom\" *ngIf=\"showPoweredBy\">\n <p translate>powered by Cumulocity</p>\n </div>\n </c8y-navigator-outlet>\n\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <c8y-tabs-outlet\n #tabsComponent\n [tabs]=\"tabs.items$ | async\"\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [orientation]=\"tabs.orientation$ | async\"\n role=\"navigation\"\n ></c8y-tabs-outlet>\n <c8y-action-bar\n #actionBarComponent\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [hasTabs]=\"tabsComponent.hasTabs\"\n [isTabsHorizontal]=\"tabsComponent?.isHorizontal\"\n [items$]=\"actionBar.items$\"\n role=\"group\"\n ></c8y-action-bar>\n\n <div\n class=\"mcontainer\"\n [ngClass]=\"{\n open: headerService.navigatorOpen$ | async,\n 'no-apps-margin': noAppsMargin$ | async,\n 'horizontal-tabs': tabsComponent.isHorizontal,\n 'vertical-tabs': !tabsComponent.isHorizontal,\n 'has-tabs': tabsComponent.hasTabs,\n 'has-action-bar': !actionBarComponent?.hidden\n }\"\n >\n <main id=\"main-content\" class=\"container-fluid\" tabindex=\"-1\">\n <router-outlet></router-outlet>\n <ng-content select=\"#c8y-legacy-view\"></ng-content>\n <!-- legacy ng-view, will not be migrated atm -->\n </main>\n </div>\n</div>\n\n<div *ngIf=\"(ui.currentUser | async) && (setupService.isSetupNeeded$ | async)\">\n <c8y-header-bar [simple]=\"true\"></c8y-header-bar>\n <div class=\"mcontainer\" role=\"main\">\n <div class=\"container-fluid\">\n <c8y-setup></c8y-setup>\n </div>\n </div>\n</div>\n\n<c8y-cookie-banner></c8y-cookie-banner>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: HeaderBarComponent, selector: "c8y-header-bar", inputs: ["simple"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "component", type: LoginComponent, selector: "c8y-login", inputs: ["name"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen"] }, { kind: "component", type: ActionBarComponent, selector: "c8y-action-bar", inputs: ["navigatorOpen", "hasTabs", "isTabsHorizontal", "items$"] }, { kind: "component", type: AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: NavigatorOutletComponent, selector: "c8y-navigator-outlet, c8y-ui-navigator", inputs: ["nodes", "open"] }, { kind: "component", type: SetupComponent, selector: "c8y-setup" }, { kind: "component", type: CookieBannerComponent, selector: "c8y-cookie-banner" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizeAppNamePipe, name: "humanizeAppName" }] });
16663
+ BootstrapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: BootstrapComponent, selector: "c8y-bootstrap", ngImport: i0, template: "<c8y-login *ngIf=\"!noLogin && !(ui.currentUser | async)\"></c8y-login>\n\n<div\n *ngIf=\"noLogin || ((ui.currentUser | async) && !(setupService.isSetupNeeded$ | async))\"\n [class.head-open]=\"headerService.headerOpen\"\n>\n <c8y-header-bar #header></c8y-header-bar>\n <c8y-navigator-outlet\n [nodes]=\"navigator.items$ | async\"\n [open]=\"headerService.navigatorOpen$ | async\"\n role=\"region\"\n title=\"{{ 'Navigator menu' | translate }}\"\n >\n <header class=\"title navigator-slot-top\">\n <div class=\"tenant-brand\"></div>\n <c8y-app-icon\n [name]=\"(ui.state$ | async).app.name\"\n [contextPath]=\"(ui.state$ | async).app.contextPath\"\n ></c8y-app-icon>\n <span>{{ (ui.state$ | async).app | humanizeAppName | async }}</span>\n </header>\n <div class=\"powered-by navigator-slot-bottom\" *ngIf=\"showPoweredBy\">\n <p translate>powered by Cumulocity</p>\n </div>\n </c8y-navigator-outlet>\n\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <c8y-tabs-outlet\n #tabsComponent\n [tabs]=\"tabs.items$ | async\"\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [orientation]=\"tabs.orientation$ | async\"\n role=\"navigation\"\n ></c8y-tabs-outlet>\n <c8y-action-bar\n #actionBarComponent\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [hasTabs]=\"tabsComponent.hasTabs\"\n [isTabsHorizontal]=\"tabsComponent?.isHorizontal\"\n [items$]=\"actionBar.items$\"\n role=\"group\"\n ></c8y-action-bar>\n\n <div\n class=\"mcontainer\"\n [ngClass]=\"{\n open: headerService.navigatorOpen$ | async,\n 'no-apps-margin': noAppsMargin$ | async,\n 'horizontal-tabs': tabsComponent.isHorizontal,\n 'vertical-tabs': !tabsComponent.isHorizontal,\n 'has-tabs': tabsComponent.hasTabs,\n 'has-action-bar': !actionBarComponent?.hidden\n }\"\n >\n <main id=\"main-content\" class=\"container-fluid\" tabindex=\"-1\">\n <router-outlet></router-outlet>\n <ng-content select=\"#c8y-legacy-view\"></ng-content>\n <!-- legacy ng-view, will not be migrated atm -->\n </main>\n </div>\n</div>\n\n<div *ngIf=\"(ui.currentUser | async) && (setupService.isSetupNeeded$ | async)\">\n <c8y-header-bar [simple]=\"true\"></c8y-header-bar>\n <div class=\"mcontainer\" role=\"main\">\n <div class=\"container-fluid\">\n <c8y-setup></c8y-setup>\n </div>\n </div>\n</div>\n\n<c8y-cookie-banner></c8y-cookie-banner>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: HeaderBarComponent, selector: "c8y-header-bar", inputs: ["simple"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "component", type: LoginComponent, selector: "c8y-login", inputs: ["name"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen"] }, { kind: "component", type: ActionBarComponent, selector: "c8y-action-bar", inputs: ["navigatorOpen", "hasTabs", "isTabsHorizontal", "items$"] }, { kind: "component", type: AlertOutletComponent, selector: "c8y-alert-outlet" }, { kind: "component", type: NavigatorOutletComponent, selector: "c8y-navigator-outlet, c8y-ui-navigator", inputs: ["nodes", "open"] }, { kind: "component", type: SetupComponent, selector: "c8y-setup" }, { kind: "component", type: CookieBannerComponent, selector: "c8y-cookie-banner" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizeAppNamePipe, name: "humanizeAppName" }] });
16664
16664
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BootstrapComponent, decorators: [{
16665
16665
  type: Component,
16666
16666
  args: [{ selector: 'c8y-bootstrap', template: "<c8y-login *ngIf=\"!noLogin && !(ui.currentUser | async)\"></c8y-login>\n\n<div\n *ngIf=\"noLogin || ((ui.currentUser | async) && !(setupService.isSetupNeeded$ | async))\"\n [class.head-open]=\"headerService.headerOpen\"\n>\n <c8y-header-bar #header></c8y-header-bar>\n <c8y-navigator-outlet\n [nodes]=\"navigator.items$ | async\"\n [open]=\"headerService.navigatorOpen$ | async\"\n role=\"region\"\n title=\"{{ 'Navigator menu' | translate }}\"\n >\n <header class=\"title navigator-slot-top\">\n <div class=\"tenant-brand\"></div>\n <c8y-app-icon\n [name]=\"(ui.state$ | async).app.name\"\n [contextPath]=\"(ui.state$ | async).app.contextPath\"\n ></c8y-app-icon>\n <span>{{ (ui.state$ | async).app | humanizeAppName | async }}</span>\n </header>\n <div class=\"powered-by navigator-slot-bottom\" *ngIf=\"showPoweredBy\">\n <p translate>powered by Cumulocity</p>\n </div>\n </c8y-navigator-outlet>\n\n <div class=\"alerts\">\n <c8y-alert-outlet></c8y-alert-outlet>\n </div>\n <c8y-tabs-outlet\n #tabsComponent\n [tabs]=\"tabs.items$ | async\"\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [orientation]=\"tabs.orientation$ | async\"\n role=\"navigation\"\n ></c8y-tabs-outlet>\n <c8y-action-bar\n #actionBarComponent\n [navigatorOpen]=\"headerService.navigatorOpen$ | async\"\n [hasTabs]=\"tabsComponent.hasTabs\"\n [isTabsHorizontal]=\"tabsComponent?.isHorizontal\"\n [items$]=\"actionBar.items$\"\n role=\"group\"\n ></c8y-action-bar>\n\n <div\n class=\"mcontainer\"\n [ngClass]=\"{\n open: headerService.navigatorOpen$ | async,\n 'no-apps-margin': noAppsMargin$ | async,\n 'horizontal-tabs': tabsComponent.isHorizontal,\n 'vertical-tabs': !tabsComponent.isHorizontal,\n 'has-tabs': tabsComponent.hasTabs,\n 'has-action-bar': !actionBarComponent?.hidden\n }\"\n >\n <main id=\"main-content\" class=\"container-fluid\" tabindex=\"-1\">\n <router-outlet></router-outlet>\n <ng-content select=\"#c8y-legacy-view\"></ng-content>\n <!-- legacy ng-view, will not be migrated atm -->\n </main>\n </div>\n</div>\n\n<div *ngIf=\"(ui.currentUser | async) && (setupService.isSetupNeeded$ | async)\">\n <c8y-header-bar [simple]=\"true\"></c8y-header-bar>\n <div class=\"mcontainer\" role=\"main\">\n <div class=\"container-fluid\">\n <c8y-setup></c8y-setup>\n </div>\n </div>\n</div>\n\n<c8y-cookie-banner></c8y-cookie-banner>\n" }]
@@ -16723,7 +16723,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
16723
16723
  class BreadcrumbModule {
16724
16724
  }
16725
16725
  BreadcrumbModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16726
- BreadcrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: BreadcrumbModule, declarations: [BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbOutletComponent], imports: [i1.RouterModule, CommonModule, i1$8.TooltipModule], exports: [BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbOutletComponent] });
16726
+ BreadcrumbModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: BreadcrumbModule, declarations: [BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbOutletComponent], imports: [i1.RouterModule, CommonModule, i1$7.TooltipModule], exports: [BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbOutletComponent] });
16727
16727
  BreadcrumbModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BreadcrumbModule, imports: [RouterModule$1.forChild([]), CommonModule, TooltipModule.forRoot()] });
16728
16728
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BreadcrumbModule, decorators: [{
16729
16729
  type: NgModule,
@@ -16742,7 +16742,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
16742
16742
  class NavigatorModule {
16743
16743
  }
16744
16744
  NavigatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16745
- NavigatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: NavigatorModule, declarations: [NavigatorOutletComponent, NavigatorNodeComponent, NavigatorIconComponent], imports: [RouterModule$1, i1$a.CollapseModule, CommonModule, ModalModule], exports: [NavigatorOutletComponent, NavigatorNodeComponent] });
16745
+ NavigatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: NavigatorModule, declarations: [NavigatorOutletComponent, NavigatorNodeComponent, NavigatorIconComponent], imports: [RouterModule$1, i1$9.CollapseModule, CommonModule, ModalModule], exports: [NavigatorOutletComponent, NavigatorNodeComponent] });
16746
16746
  NavigatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigatorModule, imports: [RouterModule$1, CollapseModule.forRoot(), CommonModule, ModalModule] });
16747
16747
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: NavigatorModule, decorators: [{
16748
16748
  type: NgModule,
@@ -16956,7 +16956,7 @@ ListItemActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0"
16956
16956
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
16957
16957
  useExisting: forwardRef(() => ListItemActionComponent)
16958
16958
  }
16959
- ], viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li>\n <button title=\"{{ label | translate }}\" (click)=\"click.emit($event)\">\n <i [c8yIcon]=\"icon\" *ngIf=\"icon\"></i>&nbsp;\n <span *ngIf=\"label\">{{ label | translate }}</span>\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
16959
+ ], viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li>\n <button title=\"{{ label | translate }}\" (click)=\"click.emit($event)\">\n <i [c8yIcon]=\"icon\" *ngIf=\"icon\"></i>&nbsp;\n <span *ngIf=\"label\">{{ label | translate }}</span>\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
16960
16960
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemActionComponent, decorators: [{
16961
16961
  type: Component,
16962
16962
  args: [{ selector: 'c8y-list-item-action, c8y-li-action', providers: [
@@ -17027,7 +17027,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
17027
17027
  class ListItemFooterComponent {
17028
17028
  }
17029
17029
  ListItemFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17030
- ListItemFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListItemFooterComponent, selector: "c8y-list-item-footer, c8y-li-footer", inputs: { footer: "footer" }, ngImport: i0, template: "<span *ngIf=\"footer\">{{footer}}</span>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
17030
+ ListItemFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListItemFooterComponent, selector: "c8y-list-item-footer, c8y-li-footer", inputs: { footer: "footer" }, ngImport: i0, template: "<span *ngIf=\"footer\">{{footer}}</span>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
17031
17031
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemFooterComponent, decorators: [{
17032
17032
  type: Component,
17033
17033
  args: [{ selector: 'c8y-list-item-footer, c8y-li-footer', template: "<span *ngIf=\"footer\">{{footer}}</span>\n<ng-content></ng-content>\n" }]
@@ -17189,7 +17189,7 @@ class ListItemComponent {
17189
17189
  }
17190
17190
  }
17191
17191
  ListItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
17192
- ListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: { active: "active", emptyActions: "emptyActions", collapsed: "collapsed", selectable: "selectable" }, outputs: { collapsedChange: "collapsedChange" }, host: { properties: { "class.active": "this.active", "class.c8y-list__item--empty-actions": "this.emptyActions" }, classAttribute: "c8y-list__item" }, queries: [{ propertyName: "itemFooter", first: true, predicate: ListItemFooterComponent, descendants: true }, { propertyName: "itemCollapse", first: true, predicate: ListItemCollapseComponent, descendants: true }, { propertyName: "itemActions", predicate: ListItemActionComponent }], ngImport: i0, template: "<div [ngClass]=\"{ 'expanded': !collapsed, interact: (itemCollapse && itemCollapse.collapseWay === 'row')}\">\n <div class=\"c8y-list__item__block\">\n <ng-content select=\"c8y-list-item-drag-handle, c8y-li-drag-handle\"></ng-content>\n <ng-content select=\"c8y-list-item-radio, c8y-li-radio\"></ng-content>\n <ng-content select=\"c8y-list-item-checkbox, c8y-li-checkbox\"></ng-content>\n\n <ng-content select=\"c8y-list-item-icon, c8y-li-icon\"></ng-content>\n\n <div class=\"c8y-list__item__body text-truncate-wrap\" (click)=\"(itemCollapse && itemCollapse.collapseWay === 'row') && toggleCollapsed()\">\n <ng-content select=\"c8y-list-item-body, c8y-li-body\"></ng-content>\n <ng-content></ng-content>\n <div class=\"c8y-list__item__footer\" *ngIf=\"showFooter\">\n <ng-content select=\"c8y-list-item-footer, c8y-li-footer\"></ng-content>\n </div>\n </div>\n\n <div class=\"c8y-list__item__actions\" *ngIf=\"(showCollapse && (itemCollapse && itemCollapse.collapseWay === 'button')) || showActions\">\n <button\n class=\"collapse-btn\"\n title=\"{{ 'Expand' | translate }}\"\n type=\"button\"\n (click)=\"toggleCollapsed($event)\"\n [attr.aria-expanded]=\"!collapsed\"\n *ngIf=\"showCollapse && itemCollapse.collapseWay === 'button'\"\n >\n <i [c8yIcon]=\"'chevron-down'\"></i>\n </button>\n <div\n class=\"dropdown\"\n dropdown\n [dropup]=\"dropdownUp\"\n *ngIf=\"showActions\"\n (onShown)=\"showDropdownUp()\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n title=\"{{ 'Actions' | translate }}\"\n type=\"button\"\n >\n <i [c8yIcon]=\"'ellipsis-v'\"></i>\n </button>\n <ul class=\"dropdown-menu dropdown-menu-right\" *dropdownMenu>\n <ng-content select=\"c8y-list-item-action, c8y-li-action\"></ng-content>\n <ng-container *ngFor=\"let action of actions\">\n <ng-container *ngTemplateOutlet=\"action.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n\n <ng-content select=\"c8y-list-item-action, c8y-li-action\" *ngIf=\"showActions\"></ng-content>\n </div>\n </div>\n\n <div *ngIf=\"showCollapse\" [collapse]=\"collapsed\" [isAnimated]=\"true\">\n <div class=\"c8y-list__item__collapse--container\">\n <ng-content select=\"c8y-list-item-collapse, c8y-li-collapse\"></ng-content>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$a.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
17192
+ ListItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: { active: "active", emptyActions: "emptyActions", collapsed: "collapsed", selectable: "selectable" }, outputs: { collapsedChange: "collapsedChange" }, host: { properties: { "class.active": "this.active", "class.c8y-list__item--empty-actions": "this.emptyActions" }, classAttribute: "c8y-list__item" }, queries: [{ propertyName: "itemFooter", first: true, predicate: ListItemFooterComponent, descendants: true }, { propertyName: "itemCollapse", first: true, predicate: ListItemCollapseComponent, descendants: true }, { propertyName: "itemActions", predicate: ListItemActionComponent }], ngImport: i0, template: "<div [ngClass]=\"{ 'expanded': !collapsed, interact: (itemCollapse && itemCollapse.collapseWay === 'row')}\">\n <div class=\"c8y-list__item__block\">\n <ng-content select=\"c8y-list-item-drag-handle, c8y-li-drag-handle\"></ng-content>\n <ng-content select=\"c8y-list-item-radio, c8y-li-radio\"></ng-content>\n <ng-content select=\"c8y-list-item-checkbox, c8y-li-checkbox\"></ng-content>\n\n <ng-content select=\"c8y-list-item-icon, c8y-li-icon\"></ng-content>\n\n <div class=\"c8y-list__item__body text-truncate-wrap\" (click)=\"(itemCollapse && itemCollapse.collapseWay === 'row') && toggleCollapsed()\">\n <ng-content select=\"c8y-list-item-body, c8y-li-body\"></ng-content>\n <ng-content></ng-content>\n <div class=\"c8y-list__item__footer\" *ngIf=\"showFooter\">\n <ng-content select=\"c8y-list-item-footer, c8y-li-footer\"></ng-content>\n </div>\n </div>\n\n <div class=\"c8y-list__item__actions\" *ngIf=\"(showCollapse && (itemCollapse && itemCollapse.collapseWay === 'button')) || showActions\">\n <button\n class=\"collapse-btn\"\n title=\"{{ 'Expand' | translate }}\"\n type=\"button\"\n (click)=\"toggleCollapsed($event)\"\n [attr.aria-expanded]=\"!collapsed\"\n *ngIf=\"showCollapse && itemCollapse.collapseWay === 'button'\"\n >\n <i [c8yIcon]=\"'chevron-down'\"></i>\n </button>\n <div\n class=\"dropdown\"\n dropdown\n [dropup]=\"dropdownUp\"\n *ngIf=\"showActions\"\n (onShown)=\"showDropdownUp()\"\n >\n <button\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n title=\"{{ 'Actions' | translate }}\"\n type=\"button\"\n >\n <i [c8yIcon]=\"'ellipsis-v'\"></i>\n </button>\n <ul class=\"dropdown-menu dropdown-menu-right\" *dropdownMenu>\n <ng-content select=\"c8y-list-item-action, c8y-li-action\"></ng-content>\n <ng-container *ngFor=\"let action of actions\">\n <ng-container *ngTemplateOutlet=\"action.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n\n <ng-content select=\"c8y-list-item-action, c8y-li-action\" *ngIf=\"showActions\"></ng-content>\n </div>\n </div>\n\n <div *ngIf=\"showCollapse\" [collapse]=\"collapsed\" [isAnimated]=\"true\">\n <div class=\"c8y-list__item__collapse--container\">\n <ng-content select=\"c8y-list-item-collapse, c8y-li-collapse\"></ng-content>\n </div>\n </div>\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.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: i1$9.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
17193
17193
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemComponent, decorators: [{
17194
17194
  type: Component,
17195
17195
  args: [{ selector: 'c8y-list-item, c8y-li', host: {
@@ -17472,7 +17472,7 @@ TypeaheadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", ver
17472
17472
  useExisting: forwardRef(() => TypeaheadComponent),
17473
17473
  multi: true
17474
17474
  }
17475
- ], queries: [{ propertyName: "list", predicate: ListItemComponent }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "searchControlModel", first: true, predicate: ["searchControlModel"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n dropdown\n [container]=\"container\"\n placement=\"bottom left\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n>\n <div role=\"button\" class=\"input-group input-group-dropdown\">\n <input\n #searchControl\n #searchControlModel=\"ngModel\"\n type=\"text\"\n class=\"form-control text-truncate\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event });\"\n dropdownToggle\n data-cy=\"typeahead-button\"\n >\n <i [c8yIcon]=\"icon\" class=\"text-primary\"></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n role=\"menu\"\n *dropdownMenu\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
17475
+ ], queries: [{ propertyName: "list", predicate: ListItemComponent }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "searchControlModel", first: true, predicate: ["searchControlModel"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n dropdown\n [container]=\"container\"\n placement=\"bottom left\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n>\n <div role=\"button\" class=\"input-group input-group-dropdown\">\n <input\n #searchControl\n #searchControlModel=\"ngModel\"\n type=\"text\"\n class=\"form-control text-truncate\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event });\"\n dropdownToggle\n data-cy=\"typeahead-button\"\n >\n <i [c8yIcon]=\"icon\" class=\"text-primary\"></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n role=\"menu\"\n *dropdownMenu\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
17476
17476
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TypeaheadComponent, decorators: [{
17477
17477
  type: Component,
17478
17478
  args: [{ selector: 'c8y-typeahead', providers: [
@@ -17609,7 +17609,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
17609
17609
  class ListItemIconComponent {
17610
17610
  }
17611
17611
  ListItemIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17612
- ListItemIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: { icon: "icon", status: "status" }, host: { classAttribute: "c8y-list__item__icon" }, ngImport: i0, template: "<i [c8yIcon]=\"icon\" [ngClass]=\"status\" *ngIf=\"icon\"></i>\n<ng-content></ng-content>", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
17612
+ ListItemIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: { icon: "icon", status: "status" }, host: { classAttribute: "c8y-list__item__icon" }, ngImport: i0, template: "<i [c8yIcon]=\"icon\" [ngClass]=\"status\" *ngIf=\"icon\"></i>\n<ng-content></ng-content>", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
17613
17613
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemIconComponent, decorators: [{
17614
17614
  type: Component,
17615
17615
  args: [{ selector: 'c8y-list-item-icon, c8y-li-icon', host: {
@@ -17783,7 +17783,7 @@ class DeviceStatusComponent {
17783
17783
  }
17784
17784
  }
17785
17785
  DeviceStatusComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceStatusComponent, deps: [{ token: i1$3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
17786
- DeviceStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceStatusComponent, selector: "device-status", inputs: { node: ["mo", "node"] }, usesOnChanges: true, ngImport: i0, template: "<!-- ATTENTION: keep text format in `tooltip` attribute -->\n<div class=\"d-contents\">\n <button\n class=\"btn-clean statusContainer\"\n [attr.aria-label]=\"'Status' | translate\"\n *ngIf=\"!!status().sendStatus || !!status().pushStatus\"\n tooltip=\"{{ status().sendStatus.tooltip | translate }}\n {{ status().pushStatus.tooltip | translate }}\"\n container=\"body\"\n placement=\"right\"\n [delay]=\"500\"\n >\n <div\n *ngIf=\"!!status().sendStatus\"\n class=\"sendStatus\"\n [c8yIcon]=\"status().sendStatus.icon\"\n [ngClass]=\"status().sendStatus.class\"\n ></div>\n <div\n *ngIf=\"!!status().pushStatus\"\n class=\"pushStatus\"\n [c8yIcon]=\"status().pushStatus.icon\"\n [ngClass]=\"status().pushStatus.class\"\n ></div>\n </button>\n <button\n class=\"btn-clean statusContainer\"\n [attr.aria-label]=\"'Status' | translate\"\n *ngIf=\"!!status().maintenanceStatus\"\n tooltip=\"{{ status().maintenanceStatus.tooltip | translate }}\"\n container=\"body\"\n placement=\"right\"\n [delay]=\"500\"\n >\n <div\n class=\"maintenanceStatus\"\n [c8yIcon]=\"status().maintenanceStatus.icon\"\n [ngClass]=\"status().maintenanceStatus.class\"\n ></div>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$8.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" }] });
17786
+ DeviceStatusComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DeviceStatusComponent, selector: "device-status", inputs: { node: ["mo", "node"] }, usesOnChanges: true, ngImport: i0, template: "<!-- ATTENTION: keep text format in `tooltip` attribute -->\n<div class=\"d-contents\">\n <button\n class=\"btn-clean statusContainer\"\n [attr.aria-label]=\"'Status' | translate\"\n *ngIf=\"!!status().sendStatus || !!status().pushStatus\"\n tooltip=\"{{ status().sendStatus.tooltip | translate }}\n {{ status().pushStatus.tooltip | translate }}\"\n container=\"body\"\n placement=\"right\"\n [delay]=\"500\"\n >\n <div\n *ngIf=\"!!status().sendStatus\"\n class=\"sendStatus\"\n [c8yIcon]=\"status().sendStatus.icon\"\n [ngClass]=\"status().sendStatus.class\"\n ></div>\n <div\n *ngIf=\"!!status().pushStatus\"\n class=\"pushStatus\"\n [c8yIcon]=\"status().pushStatus.icon\"\n [ngClass]=\"status().pushStatus.class\"\n ></div>\n </button>\n <button\n class=\"btn-clean statusContainer\"\n [attr.aria-label]=\"'Status' | translate\"\n *ngIf=\"!!status().maintenanceStatus\"\n tooltip=\"{{ status().maintenanceStatus.tooltip | translate }}\"\n container=\"body\"\n placement=\"right\"\n [delay]=\"500\"\n >\n <div\n class=\"maintenanceStatus\"\n [c8yIcon]=\"status().maintenanceStatus.icon\"\n [ngClass]=\"status().maintenanceStatus.class\"\n ></div>\n </button>\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.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$7.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" }] });
17787
17787
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DeviceStatusComponent, decorators: [{
17788
17788
  type: Component,
17789
17789
  args: [{ selector: 'device-status', template: "<!-- ATTENTION: keep text format in `tooltip` attribute -->\n<div class=\"d-contents\">\n <button\n class=\"btn-clean statusContainer\"\n [attr.aria-label]=\"'Status' | translate\"\n *ngIf=\"!!status().sendStatus || !!status().pushStatus\"\n tooltip=\"{{ status().sendStatus.tooltip | translate }}\n {{ status().pushStatus.tooltip | translate }}\"\n container=\"body\"\n placement=\"right\"\n [delay]=\"500\"\n >\n <div\n *ngIf=\"!!status().sendStatus\"\n class=\"sendStatus\"\n [c8yIcon]=\"status().sendStatus.icon\"\n [ngClass]=\"status().sendStatus.class\"\n ></div>\n <div\n *ngIf=\"!!status().pushStatus\"\n class=\"pushStatus\"\n [c8yIcon]=\"status().pushStatus.icon\"\n [ngClass]=\"status().pushStatus.class\"\n ></div>\n </button>\n <button\n class=\"btn-clean statusContainer\"\n [attr.aria-label]=\"'Status' | translate\"\n *ngIf=\"!!status().maintenanceStatus\"\n tooltip=\"{{ status().maintenanceStatus.tooltip | translate }}\"\n container=\"body\"\n placement=\"right\"\n [delay]=\"500\"\n >\n <div\n class=\"maintenanceStatus\"\n [c8yIcon]=\"status().maintenanceStatus.icon\"\n [ngClass]=\"status().maintenanceStatus.class\"\n ></div>\n </button>\n</div>\n" }]
@@ -17965,7 +17965,7 @@ class SearchInputComponent {
17965
17965
  }
17966
17966
  }
17967
17967
  SearchInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SearchInputComponent, deps: [{ token: i1.Router }, { token: i1$2.InventoryService }, { token: InventorySearchService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
17968
- SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div \n class=\"search-header-inline\" \n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form \n [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" \n novalidate \n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ 'Search for groups or assets\u2026' | translate }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-16 p-r-16\">\n <div class=\"d-flex\" *ngIf=\"mode === 'search'\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of (term.length === 0 && !groupsOnly) ? recentlyRegisteredResults$ : { data: [] };\n loadMore: 'none';\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\" \n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-li *ngIf=\"noMatch\" class=\"p-16 c8y-empty-state\" data-cy=\"search-input--empty-state\" [selectable]=\"false\">\n <c8y-li-icon [icon]=\"'search'\"></c8y-li-icon>\n <p><strong translate>No match found.</strong></p>\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-li>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\" class=\"p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n data-cy=\"search-input--asset-table-btn\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: GetGroupIconPipe, name: "getGroupIcon" }] });
17968
+ SearchInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SearchInputComponent, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div \n class=\"search-header-inline\" \n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form \n [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" \n novalidate \n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ 'Search for groups or assets\u2026' | translate }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-16 p-r-16\">\n <div class=\"d-flex\" *ngIf=\"mode === 'search'\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of (term.length === 0 && !groupsOnly) ? recentlyRegisteredResults$ : { data: [] };\n loadMore: 'none';\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\" \n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-li *ngIf=\"noMatch\" class=\"p-16 c8y-empty-state\" data-cy=\"search-input--empty-state\" [selectable]=\"false\">\n <c8y-li-icon [icon]=\"'search'\"></c8y-li-icon>\n <p><strong translate>No match found.</strong></p>\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-li>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\" class=\"p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n data-cy=\"search-input--asset-table-btn\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: DeviceStatusComponent, selector: "device-status", inputs: ["mo"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: GetGroupIconPipe, name: "getGroupIcon" }] });
17969
17969
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SearchInputComponent, decorators: [{
17970
17970
  type: Component,
17971
17971
  args: [{ selector: 'c8y-search-input', template: "<div\n class=\"dropdown\"\n dropdown\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n *ngIf=\"mode === 'search'\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div \n class=\"search-header-inline\" \n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form \n [ngClass]=\"{ 'c8y-search-form': mode === 'search' }\" \n novalidate \n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n [(ngModel)]=\"selected\"\n placeholder=\"{{ 'Search for groups or assets\u2026' | translate }}\"\n (keydown)=\"keyDown($event)\"\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n name=\"selected\"\n title=\"Search\"\n >\n <div\n class=\"c8y-list__item p-l-24 p-r-24 p-b-8 separator-bottom sticky-top p-t-4\"\n *ngIf=\"enableCustomTemplatePlaceholder && mode === 'search'\"\n >\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-16 p-r-16\">\n <div class=\"d-flex\" *ngIf=\"mode === 'search'\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Starts with' | translate }}\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Contains' | translate }}\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Ends with' | translate }}\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"p-l-24 p-r-24\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recent search views</span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n *ngIf=\"term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\"\n class=\"p-l-24 p-r-24\"\n [selectable]=\"false\"\n >\n <div class=\"legend form-block\">\n <span translate>Recently registered devices</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of (term.length === 0 && !groupsOnly) ? recentlyRegisteredResults$ : { data: [] };\n loadMore: 'none';\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\" \n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li *ngIf=\"term.length !== 0\" class=\"p-l-24 p-r-24\" [selectable]=\"false\">\n <div class=\"legend form-block\">\n <span translate>Search results</span>\n </div>\n </c8y-li>\n <c8y-li\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n class=\"c8y-list__item--link m-l-16 m-r-16\"\n (click)=\"open($event, result, result.name)\"\n [title]=\"result.name\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i \n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n >\n </i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-li *ngIf=\"noMatch\" class=\"p-16 c8y-empty-state\" data-cy=\"search-input--empty-state\" [selectable]=\"false\">\n <c8y-li-icon [icon]=\"'search'\"></c8y-li-icon>\n <p><strong translate>No match found.</strong></p>\n <small translate *ngIf=\"mode === 'search'\">\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small translate *ngIf=\"mode === 'select'\">Try to rephrase your search word.</small>\n </c8y-li>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\" class=\"p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-32 p-b-0\" style=\"position: relative\">\n <div class=\"spinner\" style=\"right: 0\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search'\"\n >\n <div class=\"d-flex a-i-center\">\n <i c8yIcon=\"info-circle\" class=\"text-info m-r-4\"></i>\n <p translate class=\"m-r-8\">Need more filter possibilities?</p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n data-cy=\"search-input--asset-table-btn\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n" }]
@@ -18150,7 +18150,7 @@ class SelectComponent$1 {
18150
18150
  }
18151
18151
  }
18152
18152
  SelectComponent$1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectComponent$1, deps: [], target: i0.ɵɵFactoryTarget.Component });
18153
- SelectComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SelectComponent$1, selector: "c8y-select", inputs: { placeholder: "placeholder", selectedLabel: "selectedLabel", applyLabel: "applyLabel", items: "items", selected: "selected", updateItems: "updateItems", disableApplyOnNoSelection: "disableApplyOnNoSelection" }, outputs: { onChange: "onChange" }, host: { listeners: { "click": "preventClick($event)" } }, queries: [{ propertyName: "liChildren", predicate: ListItemComponent }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"c8y-child-assets-selector dropdown fit-w\"\n (isOpenChange)=\"isOpenChange($event)\"\n dropdown\n #dropdown\n c8yDropdownDirection\n px-event=\"Select type\"\n>\n <button\n type=\"button\"\n class=\"btn dropdown-toggle c8y-dropdown\"\n title=\"{{ labelText || placeholder | translate }}\"\n aria-haspopup=\"true\"\n dropdownToggle\n >\n <span class=\"text-truncate\" *ngIf=\"labelText\">\n <ng-container *ngIf=\"showAllLabel\">{{ 'All' | translate }}</ng-container>\n <ng-container *ngIf=\"!showAllLabel\">{{ labelText | translate }}</ng-container>\n </span>\n <span class=\"text-truncate text-muted\" *ngIf=\"!labelText\">\n {{ placeholder | translate }}\n </span>\n </button>\n\n <ul class=\"dropdown-menu multiselect-container\" *dropdownMenu>\n <ng-content select=\"c8y-li\"></ng-content>\n <ng-container *ngIf=\"liChildren.length === 0\">\n <li *ngIf=\"items.length > sizeToShowFilter\" class=\"multiselect-item\">\n <div class=\"input-group input-group-search\">\n <input\n type=\"search\"\n class=\"form-control\"\n placeholder=\"{{ 'Filter' | translate }}\u2026\"\n (keyup)=\"updateFiltered($event.target.value)\"\n [(ngModel)]=\"searchFilter\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!textFilter\"></i>\n <i c8yIcon=\"times\" class=\"text-muted\" *ngIf=\"textFilter\" (click)=\"textFilter = ''\"></i>\n </span>\n </div>\n </li>\n\n <li class=\"multiselect-item\">\n <label\n [title]=\"getSelectAllToggleStatus().label | translate\"\n class=\"c8y-checkbox input-sm\"\n ng-click=\"vm.toggleSelectAll(); $event.preventDefault()\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"getSelectAllToggleStatus().checked\"\n (change)=\"selectAll($event.target.checked)\"\n [indeterminate]=\"getSelectAllToggleStatus().indeterminate\"\n class=\"m-t-0\"\n />\n <span></span>\n <span class=\"label-text\">\n {{ getSelectAllToggleStatus().label | translate }}\n </span>\n </label>\n </li>\n\n <li>\n <ul class=\"list-unstyled\">\n <li class=\"multiselect-item\" *ngFor=\"let item of filteredItems\">\n <label title=\"{{ item.name | translate }}\" class=\"c8y-checkbox input-sm text-truncate\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(item)\"\n (change)=\"onChangeItem($event.target.checked, item)\"\n class=\"m-t-0\"\n />\n <span></span>\n <span class=\"label-text\">\n {{ item.name | translate }}\n </span>\n </label>\n </li>\n </ul>\n </li>\n <li class=\"divider\"></li>\n <li class=\"sticky-bottom bg-level-0\">\n <button\n title=\"{{ applyLabel | translate }}\"\n class=\"btn btn-primary btn-block\"\n [disabled]=\"disableApplyOnNoSelection && isNoItemSelected()\"\n (click)=\"applyChanges()\"\n >\n {{ applyLabel | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: DropdownDirectionDirective, selector: "[dropdown][c8yBsDropdownDirection],[dropdown][c8yDropdownDirection]" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
18153
+ SelectComponent$1.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SelectComponent$1, selector: "c8y-select", inputs: { placeholder: "placeholder", selectedLabel: "selectedLabel", applyLabel: "applyLabel", items: "items", selected: "selected", updateItems: "updateItems", disableApplyOnNoSelection: "disableApplyOnNoSelection" }, outputs: { onChange: "onChange" }, host: { listeners: { "click": "preventClick($event)" } }, queries: [{ propertyName: "liChildren", predicate: ListItemComponent }], viewQueries: [{ propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"c8y-child-assets-selector dropdown fit-w\"\n (isOpenChange)=\"isOpenChange($event)\"\n dropdown\n #dropdown\n c8yDropdownDirection\n px-event=\"Select type\"\n>\n <button\n type=\"button\"\n class=\"btn dropdown-toggle c8y-dropdown\"\n title=\"{{ labelText || placeholder | translate }}\"\n aria-haspopup=\"true\"\n dropdownToggle\n >\n <span class=\"text-truncate\" *ngIf=\"labelText\">\n <ng-container *ngIf=\"showAllLabel\">{{ 'All' | translate }}</ng-container>\n <ng-container *ngIf=\"!showAllLabel\">{{ labelText | translate }}</ng-container>\n </span>\n <span class=\"text-truncate text-muted\" *ngIf=\"!labelText\">\n {{ placeholder | translate }}\n </span>\n </button>\n\n <ul class=\"dropdown-menu multiselect-container\" *dropdownMenu>\n <ng-content select=\"c8y-li\"></ng-content>\n <ng-container *ngIf=\"liChildren.length === 0\">\n <li *ngIf=\"items.length > sizeToShowFilter\" class=\"multiselect-item\">\n <div class=\"input-group input-group-search\">\n <input\n type=\"search\"\n class=\"form-control\"\n placeholder=\"{{ 'Filter' | translate }}\u2026\"\n (keyup)=\"updateFiltered($event.target.value)\"\n [(ngModel)]=\"searchFilter\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!textFilter\"></i>\n <i c8yIcon=\"times\" class=\"text-muted\" *ngIf=\"textFilter\" (click)=\"textFilter = ''\"></i>\n </span>\n </div>\n </li>\n\n <li class=\"multiselect-item\">\n <label\n [title]=\"getSelectAllToggleStatus().label | translate\"\n class=\"c8y-checkbox input-sm\"\n ng-click=\"vm.toggleSelectAll(); $event.preventDefault()\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"getSelectAllToggleStatus().checked\"\n (change)=\"selectAll($event.target.checked)\"\n [indeterminate]=\"getSelectAllToggleStatus().indeterminate\"\n class=\"m-t-0\"\n />\n <span></span>\n <span class=\"label-text\">\n {{ getSelectAllToggleStatus().label | translate }}\n </span>\n </label>\n </li>\n\n <li>\n <ul class=\"list-unstyled\">\n <li class=\"multiselect-item\" *ngFor=\"let item of filteredItems\">\n <label title=\"{{ item.name | translate }}\" class=\"c8y-checkbox input-sm text-truncate\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(item)\"\n (change)=\"onChangeItem($event.target.checked, item)\"\n class=\"m-t-0\"\n />\n <span></span>\n <span class=\"label-text\">\n {{ item.name | translate }}\n </span>\n </label>\n </li>\n </ul>\n </li>\n <li class=\"divider\"></li>\n <li class=\"sticky-bottom bg-level-0\">\n <button\n title=\"{{ applyLabel | translate }}\"\n class=\"btn btn-primary btn-block\"\n [disabled]=\"disableApplyOnNoSelection && isNoItemSelected()\"\n (click)=\"applyChanges()\"\n >\n {{ applyLabel | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { 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: DropdownDirectionDirective, selector: "[dropdown][c8yBsDropdownDirection],[dropdown][c8yDropdownDirection]" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
18154
18154
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectComponent$1, decorators: [{
18155
18155
  type: Component,
18156
18156
  args: [{ selector: 'c8y-select', template: "<div\n class=\"c8y-child-assets-selector dropdown fit-w\"\n (isOpenChange)=\"isOpenChange($event)\"\n dropdown\n #dropdown\n c8yDropdownDirection\n px-event=\"Select type\"\n>\n <button\n type=\"button\"\n class=\"btn dropdown-toggle c8y-dropdown\"\n title=\"{{ labelText || placeholder | translate }}\"\n aria-haspopup=\"true\"\n dropdownToggle\n >\n <span class=\"text-truncate\" *ngIf=\"labelText\">\n <ng-container *ngIf=\"showAllLabel\">{{ 'All' | translate }}</ng-container>\n <ng-container *ngIf=\"!showAllLabel\">{{ labelText | translate }}</ng-container>\n </span>\n <span class=\"text-truncate text-muted\" *ngIf=\"!labelText\">\n {{ placeholder | translate }}\n </span>\n </button>\n\n <ul class=\"dropdown-menu multiselect-container\" *dropdownMenu>\n <ng-content select=\"c8y-li\"></ng-content>\n <ng-container *ngIf=\"liChildren.length === 0\">\n <li *ngIf=\"items.length > sizeToShowFilter\" class=\"multiselect-item\">\n <div class=\"input-group input-group-search\">\n <input\n type=\"search\"\n class=\"form-control\"\n placeholder=\"{{ 'Filter' | translate }}\u2026\"\n (keyup)=\"updateFiltered($event.target.value)\"\n [(ngModel)]=\"searchFilter\"\n />\n <span class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"!textFilter\"></i>\n <i c8yIcon=\"times\" class=\"text-muted\" *ngIf=\"textFilter\" (click)=\"textFilter = ''\"></i>\n </span>\n </div>\n </li>\n\n <li class=\"multiselect-item\">\n <label\n [title]=\"getSelectAllToggleStatus().label | translate\"\n class=\"c8y-checkbox input-sm\"\n ng-click=\"vm.toggleSelectAll(); $event.preventDefault()\"\n >\n <input\n type=\"checkbox\"\n [checked]=\"getSelectAllToggleStatus().checked\"\n (change)=\"selectAll($event.target.checked)\"\n [indeterminate]=\"getSelectAllToggleStatus().indeterminate\"\n class=\"m-t-0\"\n />\n <span></span>\n <span class=\"label-text\">\n {{ getSelectAllToggleStatus().label | translate }}\n </span>\n </label>\n </li>\n\n <li>\n <ul class=\"list-unstyled\">\n <li class=\"multiselect-item\" *ngFor=\"let item of filteredItems\">\n <label title=\"{{ item.name | translate }}\" class=\"c8y-checkbox input-sm text-truncate\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelected(item)\"\n (change)=\"onChangeItem($event.target.checked, item)\"\n class=\"m-t-0\"\n />\n <span></span>\n <span class=\"label-text\">\n {{ item.name | translate }}\n </span>\n </label>\n </li>\n </ul>\n </li>\n <li class=\"divider\"></li>\n <li class=\"sticky-bottom bg-level-0\">\n <button\n title=\"{{ applyLabel | translate }}\"\n class=\"btn btn-primary btn-block\"\n [disabled]=\"disableApplyOnNoSelection && isNoItemSelected()\"\n (click)=\"applyChanges()\"\n >\n {{ applyLabel | translate }}\n </button>\n </li>\n </ng-container>\n </ul>\n</div>\n" }]
@@ -18189,7 +18189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
18189
18189
  class ListItemBodyComponent {
18190
18190
  }
18191
18191
  ListItemBodyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemBodyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18192
- ListItemBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: { body: "body" }, ngImport: i0, template: "<span *ngIf=\"body\">{{body}}</span>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
18192
+ ListItemBodyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: { body: "body" }, ngImport: i0, template: "<span *ngIf=\"body\">{{body}}</span>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
18193
18193
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemBodyComponent, decorators: [{
18194
18194
  type: Component,
18195
18195
  args: [{ selector: 'c8y-list-item-body, c8y-li-body', template: "<span *ngIf=\"body\">{{body}}</span>\n<ng-content></ng-content>\n" }]
@@ -18260,7 +18260,7 @@ ListItemCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.
18260
18260
  multi: true,
18261
18261
  useExisting: forwardRef(() => ListItemCheckboxComponent)
18262
18262
  }
18263
- ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label [ngClass]=\"displayAsSwitch ? 'c8y-switch c8y-switch--inline' : 'c8y-checkbox'\">\n <input\n id=\"event\"\n type=\"checkbox\"\n class=\"form-control\"\n [disabled]=\"disabled\"\n [checked]=\"selected\"\n (change)=\"select($event.target.checked); (false)\"\n />\n <span></span>\n <span for=\"event\" class=\"sr-only\" translate>event</span>\n</label>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18263
+ ], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<label [ngClass]=\"displayAsSwitch ? 'c8y-switch c8y-switch--inline' : 'c8y-checkbox'\">\n <input\n id=\"event\"\n type=\"checkbox\"\n class=\"form-control\"\n [disabled]=\"disabled\"\n [checked]=\"selected\"\n (change)=\"select($event.target.checked); (false)\"\n />\n <span></span>\n <span for=\"event\" class=\"sr-only\" translate>event</span>\n</label>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
18264
18264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListItemCheckboxComponent, decorators: [{
18265
18265
  type: Component,
18266
18266
  args: [{ selector: 'c8y-list-item-checkbox, c8y-li-checkbox', host: {
@@ -18431,7 +18431,7 @@ ListGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
18431
18431
  ListItemCheckboxComponent,
18432
18432
  ListItemRadioComponent,
18433
18433
  ListItemTimelineComponent,
18434
- ListItemDragHandleComponent], imports: [CommonModule, i1$a.CollapseModule, BsDropdownModule], exports: [ListGroupComponent,
18434
+ ListItemDragHandleComponent], imports: [CommonModule, i1$9.CollapseModule, BsDropdownModule], exports: [ListGroupComponent,
18435
18435
  ListItemComponent,
18436
18436
  ListItemIconComponent,
18437
18437
  ListItemBodyComponent,
@@ -18483,7 +18483,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
18483
18483
  class SelectModule {
18484
18484
  }
18485
18485
  SelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
18486
- SelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: SelectModule, declarations: [SelectComponent$1, TypeaheadComponent], imports: [i1$7.BsDropdownModule, CommonModule, ListGroupModule, FormsModule], exports: [SelectComponent$1, TypeaheadComponent] });
18486
+ SelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: SelectModule, declarations: [SelectComponent$1, TypeaheadComponent], imports: [i1$6.BsDropdownModule, CommonModule, ListGroupModule, FormsModule], exports: [SelectComponent$1, TypeaheadComponent] });
18487
18487
  SelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectModule, imports: [BsDropdownModule.forRoot(), CommonModule, ListGroupModule, FormsModule] });
18488
18488
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectModule, decorators: [{
18489
18489
  type: NgModule,
@@ -18595,7 +18595,7 @@ class UserTotpRevokeComponent {
18595
18595
  }
18596
18596
  }
18597
18597
  UserTotpRevokeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserTotpRevokeComponent, deps: [{ token: i1$2.UserService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
18598
- UserTotpRevokeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserTotpRevokeComponent, selector: "c8y-user-totp-revoke", inputs: { user: "user" }, outputs: { revokeEmitter: "revoke" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"btn btn-default\"\n [popover]=\"confirm\"\n [popoverTitle]=\"'Revoke TOTP secret' | translate\"\n #popover=\"bs-popover\"\n placement=\"bottom\"\n \n\n>\n <i c8yIcon=\"key\"></i> {{ 'Revoke TOTP secret' | translate }}\n</button>\n\n<ng-template #confirm>\n <p class=\"m-b-16\" translate>\n This action will revoke the user's stored TOTP secret which will require a new setup.\n </p>\n <button\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"popover.hide()\"\n translate\n >\n Cancel\n </button>\n <button\n title=\"{{ 'Revoke' | translate }}\"\n type=\"button\"\n class=\"btn btn-danger\"\n (click)=\"revoke(); popover.hide()\"\n translate\n >\n Revoke\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
18598
+ UserTotpRevokeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserTotpRevokeComponent, selector: "c8y-user-totp-revoke", inputs: { user: "user" }, outputs: { revokeEmitter: "revoke" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"btn btn-default\"\n [popover]=\"confirm\"\n [popoverTitle]=\"'Revoke TOTP secret' | translate\"\n #popover=\"bs-popover\"\n placement=\"bottom\"\n \n\n>\n <i c8yIcon=\"key\"></i> {{ 'Revoke TOTP secret' | translate }}\n</button>\n\n<ng-template #confirm>\n <p class=\"m-b-16\" translate>\n This action will revoke the user's stored TOTP secret which will require a new setup.\n </p>\n <button\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"popover.hide()\"\n translate\n >\n Cancel\n </button>\n <button\n title=\"{{ 'Revoke' | translate }}\"\n type=\"button\"\n class=\"btn btn-danger\"\n (click)=\"revoke(); popover.hide()\"\n translate\n >\n Revoke\n </button>\n</ng-template>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
18599
18599
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserTotpRevokeComponent, decorators: [{
18600
18600
  type: Component,
18601
18601
  args: [{ selector: 'c8y-user-totp-revoke', template: "<button\n type=\"button\"\n class=\"btn btn-default\"\n [popover]=\"confirm\"\n [popoverTitle]=\"'Revoke TOTP secret' | translate\"\n #popover=\"bs-popover\"\n placement=\"bottom\"\n \n\n>\n <i c8yIcon=\"key\"></i> {{ 'Revoke TOTP secret' | translate }}\n</button>\n\n<ng-template #confirm>\n <p class=\"m-b-16\" translate>\n This action will revoke the user's stored TOTP secret which will require a new setup.\n </p>\n <button\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n (click)=\"popover.hide()\"\n translate\n >\n Cancel\n </button>\n <button\n title=\"{{ 'Revoke' | translate }}\"\n type=\"button\"\n class=\"btn btn-danger\"\n (click)=\"revoke(); popover.hide()\"\n translate\n >\n Revoke\n </button>\n</ng-template>\n" }]
@@ -18628,7 +18628,7 @@ UserModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14
18628
18628
  BsDropdownModule,
18629
18629
  AuthenticationModule,
18630
18630
  AlertModule,
18631
- RouterModule$1, i1$8.TooltipModule, PopoverModule,
18631
+ RouterModule$1, i1$7.TooltipModule, PopoverModule,
18632
18632
  ClipboardModule], exports: [UserMenuOutletComponent,
18633
18633
  UserMenuItemComponent,
18634
18634
  UserEditComponent,
@@ -19206,7 +19206,7 @@ HeaderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
19206
19206
  ActionModule,
19207
19207
  BreadcrumbModule,
19208
19208
  NavigatorModule,
19209
- VersionModule, i1$8.TooltipModule, i1$a.CollapseModule, ProductExperienceModule], exports: [HeaderBarComponent,
19209
+ VersionModule, i1$7.TooltipModule, i1$9.CollapseModule, ProductExperienceModule], exports: [HeaderBarComponent,
19210
19210
  TitleComponent,
19211
19211
  TitleOutletComponent,
19212
19212
  AppIconComponent,
@@ -19437,12 +19437,12 @@ class SetupCompletedComponent {
19437
19437
  this.step.state = this.status;
19438
19438
  }
19439
19439
  }
19440
- SetupCompletedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SetupCompletedComponent, deps: [{ token: C8yStepper }, { token: i2$2.CdkStep }, { token: SetupComponent }], target: i0.ɵɵFactoryTarget.Component });
19441
- SetupCompletedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SetupCompletedComponent, selector: "c8y-setup-completed", host: { classAttribute: "d-contents" }, ngImport: i0, template: "<div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Summary</h3>\n <p translate class=\"lead text-normal p-t-8 p-b-8\">\n Verify the setup result. If any step is not finished but required, you need to ensure that\n you have finished the step.\n </p>\n </div>\n </div>\n</div>\n<div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w p-t-16\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <div class=\"text-center\" [ngSwitch]=\"status\">\n <c8y-operation-result\n *ngSwitchCase=\"'done'\"\n text=\"{{ 'Setup completed' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n type=\"success\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngSwitchCase=\"'warning'\"\n text=\"{{ 'Setup completed with warnings' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n type=\"warning\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngSwitchCase=\"'error'\"\n text=\"{{ 'Setup not completed' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n type=\"error\"\n ></c8y-operation-result>\n </div>\n <ul class=\"list-unstyled m-t-16 separator-top\">\n <li\n class=\"p-t-4 p-b-4 d-flex a-i-center separator-bottom text-nowrap l-h-1\"\n *ngFor=\"let step of setup.steps.slice(0, setup.steps.length - 1)\"\n (click)=\"gotoStep(step.index)\"\n style=\"cursor: pointer\"\n >\n <span *ngIf=\"step.label\">\n <span\n class=\"dot small m-r-4 l-h-1\"\n [ngClass]=\"{\n 'dot-success': step.completed,\n 'dot-error': !step.completed && step.required,\n 'dot-warning': !step.completed && !step.required\n }\"\n >\n {{ step.index + 1 }}\n </span>\n {{ step.label || (STEP_LABEL | translate) + ' ' }}\n </span>\n <span *ngIf=\"!step.label\">\n <span translate>Step</span>\n {{ ' ' + (step.index + 1) }}\n </span>\n <span class=\"m-l-auto icon-20 l-h-1\">\n <i\n *ngIf=\"step.completed\"\n [c8yIcon]=\"'success'\"\n class=\"text-success\"\n [title]=\"'Completed' | translate\"\n ></i>\n <i\n *ngIf=\"!step.completed && step.required\"\n [c8yIcon]=\"'error'\"\n class=\"text-danger\"\n [title]=\"\n 'Not completed and required. Go to the step and fulfill the setup.' | translate\n \"\n ></i>\n <i\n *ngIf=\"!step.completed && !step.required\"\n [c8yIcon]=\"'warning'\"\n class=\"text-warning\"\n [title]=\"'This step was not completed but it is also not required.' | translate\"\n ></i>\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</div>\n<div class=\"card-footer separator d-flex j-c-center\">\n <button\n translate\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"back()\"\n *ngIf=\"stepper.selectedIndex !== 0\"\n [disabled]=\"\n setup.currentSetupState === setup.setupState.FINALIZING ||\n setup.currentSetupState === setup.setupState.RELOADING\n \"\n >\n Back\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n (click)=\"start()\"\n [disabled]=\"\n status === 'error' ||\n setup.currentSetupState === setup.setupState.FINALIZING ||\n setup.currentSetupState === setup.setupState.RELOADING\n \"\n [ngClass]=\"{\n 'btn-pending':\n setup.currentSetupState === setup.setupState.FINALIZING ||\n setup.currentSetupState === setup.setupState.RELOADING\n }\"\n >\n <span *ngIf=\"setup.currentSetupState === setup.setupState.WIZARD\" translate>\n Save and reload\n </span>\n <span *ngIf=\"setup.currentSetupState === setup.setupState.FINALIZING\" translate>\n Getting things ready\u2026\n </span>\n <span *ngIf=\"setup.currentSetupState === setup.setupState.RELOADING\" translate>\n Done. Reloading the application.\n </span>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
19440
+ SetupCompletedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SetupCompletedComponent, deps: [{ token: C8yStepper }, { token: i2$3.CdkStep }, { token: SetupComponent }], target: i0.ɵɵFactoryTarget.Component });
19441
+ SetupCompletedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SetupCompletedComponent, selector: "c8y-setup-completed", host: { classAttribute: "d-contents" }, ngImport: i0, template: "<div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Summary</h3>\n <p translate class=\"lead text-normal p-t-8 p-b-8\">\n Verify the setup result. If any step is not finished but required, you need to ensure that\n you have finished the step.\n </p>\n </div>\n </div>\n</div>\n<div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w p-t-16\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <div class=\"text-center\" [ngSwitch]=\"status\">\n <c8y-operation-result\n *ngSwitchCase=\"'done'\"\n text=\"{{ 'Setup completed' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n type=\"success\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngSwitchCase=\"'warning'\"\n text=\"{{ 'Setup completed with warnings' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n type=\"warning\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngSwitchCase=\"'error'\"\n text=\"{{ 'Setup not completed' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n type=\"error\"\n ></c8y-operation-result>\n </div>\n <ul class=\"list-unstyled m-t-16 separator-top\">\n <li\n class=\"p-t-4 p-b-4 d-flex a-i-center separator-bottom text-nowrap l-h-1\"\n *ngFor=\"let step of setup.steps.slice(0, setup.steps.length - 1)\"\n (click)=\"gotoStep(step.index)\"\n style=\"cursor: pointer\"\n >\n <span *ngIf=\"step.label\">\n <span\n class=\"dot small m-r-4 l-h-1\"\n [ngClass]=\"{\n 'dot-success': step.completed,\n 'dot-error': !step.completed && step.required,\n 'dot-warning': !step.completed && !step.required\n }\"\n >\n {{ step.index + 1 }}\n </span>\n {{ step.label || (STEP_LABEL | translate) + ' ' }}\n </span>\n <span *ngIf=\"!step.label\">\n <span translate>Step</span>\n {{ ' ' + (step.index + 1) }}\n </span>\n <span class=\"m-l-auto icon-20 l-h-1\">\n <i\n *ngIf=\"step.completed\"\n [c8yIcon]=\"'success'\"\n class=\"text-success\"\n [title]=\"'Completed' | translate\"\n ></i>\n <i\n *ngIf=\"!step.completed && step.required\"\n [c8yIcon]=\"'error'\"\n class=\"text-danger\"\n [title]=\"\n 'Not completed and required. Go to the step and fulfill the setup.' | translate\n \"\n ></i>\n <i\n *ngIf=\"!step.completed && !step.required\"\n [c8yIcon]=\"'warning'\"\n class=\"text-warning\"\n [title]=\"'This step was not completed but it is also not required.' | translate\"\n ></i>\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</div>\n<div class=\"card-footer separator d-flex j-c-center\">\n <button\n translate\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"back()\"\n *ngIf=\"stepper.selectedIndex !== 0\"\n [disabled]=\"\n setup.currentSetupState === setup.setupState.FINALIZING ||\n setup.currentSetupState === setup.setupState.RELOADING\n \"\n >\n Back\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n (click)=\"start()\"\n [disabled]=\"\n status === 'error' ||\n setup.currentSetupState === setup.setupState.FINALIZING ||\n setup.currentSetupState === setup.setupState.RELOADING\n \"\n [ngClass]=\"{\n 'btn-pending':\n setup.currentSetupState === setup.setupState.FINALIZING ||\n setup.currentSetupState === setup.setupState.RELOADING\n }\"\n >\n <span *ngIf=\"setup.currentSetupState === setup.setupState.WIZARD\" translate>\n Save and reload\n </span>\n <span *ngIf=\"setup.currentSetupState === setup.setupState.FINALIZING\" translate>\n Getting things ready\u2026\n </span>\n <span *ngIf=\"setup.currentSetupState === setup.setupState.RELOADING\" translate>\n Done. Reloading the application.\n </span>\n </button>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
19442
19442
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SetupCompletedComponent, decorators: [{
19443
19443
  type: Component,
19444
19444
  args: [{ selector: 'c8y-setup-completed', host: { class: 'd-contents' }, template: "<div class=\"container-fluid flex-no-shrink fit-w\">\n <div class=\"row separator-bottom\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3 p-t-24 p-l-16 p-r-16\">\n <h3 translate class=\"text-medium l-h-base\">Summary</h3>\n <p translate class=\"lead text-normal p-t-8 p-b-8\">\n Verify the setup result. If any step is not finished but required, you need to ensure that\n you have finished the step.\n </p>\n </div>\n </div>\n</div>\n<div class=\"inner-scroll flex-grow\">\n <div class=\"container-fluid fit-w p-t-16\">\n <div class=\"row\">\n <div class=\"col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\">\n <div class=\"text-center\" [ngSwitch]=\"status\">\n <c8y-operation-result\n *ngSwitchCase=\"'done'\"\n text=\"{{ 'Setup completed' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n type=\"success\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngSwitchCase=\"'warning'\"\n text=\"{{ 'Setup completed with warnings' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n type=\"warning\"\n ></c8y-operation-result>\n <c8y-operation-result\n *ngSwitchCase=\"'error'\"\n text=\"{{ 'Setup not completed' | translate }}\"\n [size]=\"120\"\n [vertical]=\"true\"\n type=\"error\"\n ></c8y-operation-result>\n </div>\n <ul class=\"list-unstyled m-t-16 separator-top\">\n <li\n class=\"p-t-4 p-b-4 d-flex a-i-center separator-bottom text-nowrap l-h-1\"\n *ngFor=\"let step of setup.steps.slice(0, setup.steps.length - 1)\"\n (click)=\"gotoStep(step.index)\"\n style=\"cursor: pointer\"\n >\n <span *ngIf=\"step.label\">\n <span\n class=\"dot small m-r-4 l-h-1\"\n [ngClass]=\"{\n 'dot-success': step.completed,\n 'dot-error': !step.completed && step.required,\n 'dot-warning': !step.completed && !step.required\n }\"\n >\n {{ step.index + 1 }}\n </span>\n {{ step.label || (STEP_LABEL | translate) + ' ' }}\n </span>\n <span *ngIf=\"!step.label\">\n <span translate>Step</span>\n {{ ' ' + (step.index + 1) }}\n </span>\n <span class=\"m-l-auto icon-20 l-h-1\">\n <i\n *ngIf=\"step.completed\"\n [c8yIcon]=\"'success'\"\n class=\"text-success\"\n [title]=\"'Completed' | translate\"\n ></i>\n <i\n *ngIf=\"!step.completed && step.required\"\n [c8yIcon]=\"'error'\"\n class=\"text-danger\"\n [title]=\"\n 'Not completed and required. Go to the step and fulfill the setup.' | translate\n \"\n ></i>\n <i\n *ngIf=\"!step.completed && !step.required\"\n [c8yIcon]=\"'warning'\"\n class=\"text-warning\"\n [title]=\"'This step was not completed but it is also not required.' | translate\"\n ></i>\n </span>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</div>\n<div class=\"card-footer separator d-flex j-c-center\">\n <button\n translate\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"back()\"\n *ngIf=\"stepper.selectedIndex !== 0\"\n [disabled]=\"\n setup.currentSetupState === setup.setupState.FINALIZING ||\n setup.currentSetupState === setup.setupState.RELOADING\n \"\n >\n Back\n </button>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n (click)=\"start()\"\n [disabled]=\"\n status === 'error' ||\n setup.currentSetupState === setup.setupState.FINALIZING ||\n setup.currentSetupState === setup.setupState.RELOADING\n \"\n [ngClass]=\"{\n 'btn-pending':\n setup.currentSetupState === setup.setupState.FINALIZING ||\n setup.currentSetupState === setup.setupState.RELOADING\n }\"\n >\n <span *ngIf=\"setup.currentSetupState === setup.setupState.WIZARD\" translate>\n Save and reload\n </span>\n <span *ngIf=\"setup.currentSetupState === setup.setupState.FINALIZING\" translate>\n Getting things ready\u2026\n </span>\n <span *ngIf=\"setup.currentSetupState === setup.setupState.RELOADING\" translate>\n Done. Reloading the application.\n </span>\n </button>\n</div>\n" }]
19445
- }], ctorParameters: function () { return [{ type: C8yStepper }, { type: i2$2.CdkStep }, { type: SetupComponent }]; } });
19445
+ }], ctorParameters: function () { return [{ type: C8yStepper }, { type: i2$3.CdkStep }, { type: SetupComponent }]; } });
19446
19446
 
19447
19447
  /**
19448
19448
  * A factory providing the 'Summary' step to the setup stepper.
@@ -19981,7 +19981,7 @@ class DropAreaComponent {
19981
19981
  }
19982
19982
  }
19983
19983
  DropAreaComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DropAreaComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: FilesService }, { token: i1$3.TranslateService }, { token: BytesPipe }], target: i0.ɵɵFactoryTarget.Component });
19984
- DropAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DropAreaComponent, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n aria-label=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n<label for=\"file\" class=\"sr-only\">{{ 'Select file' | translate }}</label>\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
19984
+ DropAreaComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DropAreaComponent, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n aria-label=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n<label for=\"file\" class=\"sr-only\">{{ 'Select file' | translate }}</label>\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
19985
19985
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DropAreaComponent, decorators: [{
19986
19986
  type: Component,
19987
19987
  args: [{ selector: 'c8y-drop-area', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], template: "<div\n class=\"drop-zone\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors }\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n (click)=\"showPicker($event)\"\n tabindex=\"0\"\n>\n <div class=\"file-placeholder\" [ngClass]=\"{ 'drag-over': isOver }\">\n <div *ngIf=\"loading\" class=\"d-flex p-4 flex-center\">\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 50%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner-snake\" *ngIf=\"progress === -1\"></div>\n <p class=\"m-t-auto m-b-auto m-r-8\">\n {{ loadingMessage | translate }}\n </p>\n </div>\n\n <div *ngIf=\"!loading\" class=\"hint-placeholder pointer\">\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\">\n <b>{{ message | translate }}</b>\n <br />\n <span *ngIf=\"alwaysShow && clickToOpen\" translate></span>\n </p>\n <div *ngIf=\"errors\" class=\"has-errors\">\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n *ngIf=\"shouldShowFilesList()\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n>\n <div *ngIf=\"loading\" class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\">\n <p class=\"m-b-8\">\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n <div\n class=\"progress progress-striped active m-0\"\n *ngIf=\"progress !== -1\"\n style=\"min-width: 80%\"\n >\n <div\n [attr.aria-label]=\"progress + '%'\"\n class=\"progress-bar\"\n role=\"progressbar\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n [style.width]=\"progress + '%'\"\n ></div>\n </div>\n <div class=\"spinner p-relative m-0\" *ngIf=\"progress === -1\">\n <div class=\"rect1\"></div>\n <div class=\"rect2\"></div>\n <div class=\"rect3\"></div>\n <div class=\"rect4\"></div>\n <div class=\"rect5\"></div>\n </div>\n </div>\n <div *ngIf=\"!loading\" class=\"file-placeholder p-4\">\n <div class=\"d-flex p-4\">\n <i c8yIcon=\"file-o\" class=\"m-r-8\"></i>\n <span title=\"{{ filesNameString }}\" class=\"text-truncate\">\n {{ filesNameString }}\n </span>\n <button\n title=\"{{ 'Remove' | translate }}\"\n aria-label=\"{{ 'Remove' | translate }}\"\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n >\n <i c8yIcon=\"minus-circle\" (click)=\"onDelete()\"></i>\n </button>\n </div>\n </div>\n</div>\n<label for=\"file\" class=\"sr-only\">{{ 'Select file' | translate }}</label>\n<input\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n type=\"file\"\n class=\"hidden\"\n id=\"file\"\n/>\n<div #area [hidden]=\"isOver || loading\" (dragover)=\"toggle()\">\n <ng-content></ng-content>\n</div>\n" }]
@@ -20124,7 +20124,7 @@ class FilePickerComponent {
20124
20124
  }
20125
20125
  }
20126
20126
  FilePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20127
- FilePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FilePickerComponent, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "accept"], outputs: ["dropped"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2$1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
20127
+ FilePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FilePickerComponent, selector: "c8y-file-picker", inputs: { maxAllowedFiles: "maxAllowedFiles", uploadChoice: "uploadChoice", fileUrl: "fileUrl", fileBinary: "fileBinary", config: "config", fileUrlPopover: "fileUrlPopover" }, outputs: { onFilesPicked: "onFilesPicked" }, viewQueries: [{ propertyName: "dropArea", first: true, predicate: DropAreaComponent, descendants: true, static: true }], ngImport: i0, template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n", dependencies: [{ kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "accept"], outputs: ["dropped"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
20128
20128
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilePickerComponent, decorators: [{
20129
20129
  type: Component,
20130
20130
  args: [{ selector: 'c8y-file-picker', template: "<div class=\"form-group\">\n <label title=\"{{ 'Upload a binary' | translate }}\" class=\"c8y-radio radio-inline\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadBinary\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearInputFromUrl()\"\n />\n <span></span>\n <span>{{ 'Upload a binary' | translate }}</span>\n </label>\n <label title=\"{{ 'Provide a file path' | translate }}\" class=\"c8y-radio radio-inline m-l-8\">\n <input\n #radio\n type=\"radio\"\n value=\"uploadUrl\"\n name=\"uploadChoice\"\n [(ngModel)]=\"uploadChoice\"\n (click)=\"clearSelectedFiles()\"\n />\n <span></span>\n <span>\n {{ 'Provide a file path' | translate }}\n </span>\n <button\n *ngIf=\"isPopoverUsed()\"\n class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n type=\"button\"\n popover=\"{{ fileUrlPopover | translate }}\"\n triggers=\"focus\"\n container=\"body\"\n placement=\"top\"\n >\n <i [c8yIcon]=\"'question-circle-o'\"></i>\n </button>\n </label>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadBinary'\">\n <c8y-form-group class=\"m-0\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n (dropped)=\"onFileDropped($event)\"\n [title]=\"'Drop file or click to browse' | translate\"\n [attr.aria-label]=\"'Drop file or click to browse' | translate\"\n [maxAllowedFiles]=\"maxAllowedFiles\"\n [files]=\"droppedFiles\"\n ></c8y-drop-area>\n </c8y-form-group>\n</div>\n\n<div [hidden]=\"uploadChoice !== 'uploadUrl'\">\n <c8y-form-group class=\"m-0\">\n <div class=\"m-b-4 p-b-8\">\n <div class=\"input-group\">\n <span class=\"input-group-addon\">\n <i c8yIcon=\"globe\"></i>\n </span>\n <input\n type=\"text\"\n class=\"form-control\"\n name=\"fileUrl\"\n [(ngModel)]=\"fileUrl\"\n (ngModelChange)=\"onFileUrlChange($event)\"\n placeholder=\"{{ 'e.g.' | translate }} http://example.com/binary.zip\"\n maxlength=\"{{ config.maxlength }}\"\n required\n />\n </div>\n </div>\n </c8y-form-group>\n</div>\n" }]
@@ -20208,7 +20208,7 @@ class DatePickerComponent {
20208
20208
  }
20209
20209
  }
20210
20210
  DatePickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
20211
- DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatePickerComponent, selector: "c8y-date-picker", outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: i1$5.DatePipe, name: "date" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
20211
+ DatePickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DatePickerComponent, selector: "c8y-date-picker", outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
20212
20212
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePickerComponent, decorators: [{
20213
20213
  type: Component,
20214
20214
  args: [{ selector: 'c8y-date-picker', template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n placement=\"bottom left\"\n [insideClick]=\"true\"\n>\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <span *ngIf=\"!dateFrom && !dateTo\">\n {{ 'Filter by date' | translate }}\n </span>\n </span>\n </button>\n <div\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"date-range\"\n >\n <form [formGroup]=\"fgDatePicker\" class=\"dropdown-form\">\n <span for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</span>\n <c8y-form-group class=\"datepicker d-block m-b-16\" style=\"max-height: 32px\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <span for=\"dateTo\" class=\"text-medium m-b-4\" translate>Date to</span>\n <c8y-form-group class=\"datepicker m-l-0 d-block\" style=\"max-height: 32px\">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true }\"\n />\n </c8y-form-group>\n <div class=\"p-t-24\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
@@ -20422,7 +20422,7 @@ DatePickerModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version
20422
20422
  DatePickerModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: DatePickerModule, declarations: [DatePickerComponent], imports: [FormsModule,
20423
20423
  CommonModule$1,
20424
20424
  FormsModule$1,
20425
- ReactiveFormsModule, i1$7.BsDropdownModule, i6.BsDatepickerModule, CommonModule], exports: [DatePickerComponent] });
20425
+ ReactiveFormsModule, i1$6.BsDropdownModule, i6.BsDatepickerModule, CommonModule], exports: [DatePickerComponent] });
20426
20426
  DatePickerModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DatePickerModule, imports: [FormsModule,
20427
20427
  CommonModule$1,
20428
20428
  FormsModule$1,
@@ -20705,7 +20705,7 @@ class GuideDocsComponent {
20705
20705
  }
20706
20706
  }
20707
20707
  GuideDocsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: GuideDocsComponent, deps: [{ token: DocsService }, { token: i0.ElementRef }, { token: i0.Renderer2 }, { token: C8yTranslateDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
20708
- GuideDocsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: GuideDocsComponent, selector: "[c8y-guide-docs]", queries: [{ propertyName: "translateDirective", first: true, predicate: C8yTranslateDirective, descendants: true, static: true }, { propertyName: "links", predicate: GuideHrefDirective, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"!!baseUrl\">\n <ng-content></ng-content>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
20708
+ GuideDocsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: GuideDocsComponent, selector: "[c8y-guide-docs]", queries: [{ propertyName: "translateDirective", first: true, predicate: C8yTranslateDirective, descendants: true, static: true }, { propertyName: "links", predicate: GuideHrefDirective, descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"!!baseUrl\">\n <ng-content></ng-content>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
20709
20709
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: GuideDocsComponent, decorators: [{
20710
20710
  type: Component,
20711
20711
  args: [{ selector: '[c8y-guide-docs]', template: "<ng-container *ngIf=\"!!baseUrl\">\n <ng-content></ng-content>\n</ng-container>\n" }]
@@ -20773,7 +20773,7 @@ ArrayTypeComponent.CONFIG = {
20773
20773
  types: [{ name: 'array', component: ArrayTypeComponent }]
20774
20774
  };
20775
20775
  ArrayTypeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ArrayTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
20776
- ArrayTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ArrayTypeComponent, selector: "c8y-array-type", usesInheritance: true, ngImport: i0, template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <div id=\"{{ id + '-fieldset' }}\" class=\"legend form-block\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n *ngIf=\"to.description\"\n class=\"btn-help btn-help--sm text-14 m-l-4 m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </div>\n\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n\n <div *ngFor=\"let ifield of field.fieldGroup; let i = index\" class=\"input-group-array\">\n <formly-field [field]=\"(ifield | c8yArrayTypeInjectTemplate:customTemplate)\"> </formly-field>\n <ng-container *ngIf=\"ifield.type === 'formly-group' || ifield.type === 'array'\" [ngTemplateOutlet]=\"customTemplate\"></ng-container>\n <ng-template #customTemplate>\n <div class=\"input-group-btn delete-row\">\n <button\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger flex-item-right\"\n tooltip=\"{{ 'Delete' | translate }}\"\n [attr.aria-label]=\"'Delete' | translate\"\n [delay]=\"500\"\n [disabled]=\"to.disabled || field.fieldGroup.length === 1\"\n (click)=\"remove(i)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </ng-template>\n </div>\n\n <div class=\"p-t-8\">\n <button\n title=\"{{\n (field.templateOptions?.addText | translate) || 'Add \\{\\{ label \\}\\}'\n | translate: field?.fieldArray?.templateOptions\n }}\"\n type=\"button\"\n class=\"btn btn-sm btn-default\"\n [disabled]=\"to.disabled\"\n (click)=\"add()\"\n [attr.data-cy]=\"field.templateOptions?.addTextDataCy || 'add-array-item'\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span\n *ngIf=\"!field.templateOptions?.addText\"\n ngNonBindable\n translate\n [translateParams]=\"field?.fieldArray?.templateOptions\"\n >\n Add {{ label }}\n </span>\n <span *ngIf=\"field.templateOptions?.addText\">\n {{ field.templateOptions?.addText | translate }}\n </span>\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i1$8.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: "component", type: i4$1.FormlyField, selector: "formly-field", inputs: ["model", "form", "options", "field"], outputs: ["modelChange"] }, { kind: "component", type: i4$1.ɵc, selector: "formly-validation-message", inputs: ["field"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }, { kind: "pipe", type: C8yArrayTypeInjectTemplatePipe, name: "c8yArrayTypeInjectTemplate" }] });
20776
+ ArrayTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ArrayTypeComponent, selector: "c8y-array-type", usesInheritance: true, ngImport: i0, template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <div id=\"{{ id + '-fieldset' }}\" class=\"legend form-block\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n *ngIf=\"to.description\"\n class=\"btn-help btn-help--sm text-14 m-l-4 m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </div>\n\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n\n <div *ngFor=\"let ifield of field.fieldGroup; let i = index\" class=\"input-group-array\">\n <formly-field [field]=\"(ifield | c8yArrayTypeInjectTemplate:customTemplate)\"> </formly-field>\n <ng-container *ngIf=\"ifield.type === 'formly-group' || ifield.type === 'array'\" [ngTemplateOutlet]=\"customTemplate\"></ng-container>\n <ng-template #customTemplate>\n <div class=\"input-group-btn delete-row\">\n <button\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger flex-item-right\"\n tooltip=\"{{ 'Delete' | translate }}\"\n [attr.aria-label]=\"'Delete' | translate\"\n [delay]=\"500\"\n [disabled]=\"to.disabled || field.fieldGroup.length === 1\"\n (click)=\"remove(i)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </ng-template>\n </div>\n\n <div class=\"p-t-8\">\n <button\n title=\"{{\n (field.templateOptions?.addText | translate) || 'Add \\{\\{ label \\}\\}'\n | translate: field?.fieldArray?.templateOptions\n }}\"\n type=\"button\"\n class=\"btn btn-sm btn-default\"\n [disabled]=\"to.disabled\"\n (click)=\"add()\"\n [attr.data-cy]=\"field.templateOptions?.addTextDataCy || 'add-array-item'\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span\n *ngIf=\"!field.templateOptions?.addText\"\n ngNonBindable\n translate\n [translateParams]=\"field?.fieldArray?.templateOptions\"\n >\n Add {{ label }}\n </span>\n <span *ngIf=\"field.templateOptions?.addText\">\n {{ field.templateOptions?.addText | translate }}\n </span>\n </button>\n </div>\n</div>\n", dependencies: [{ 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: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i1$7.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: "component", type: i4$1.FormlyField, selector: "formly-field", inputs: ["model", "form", "options", "field"], outputs: ["modelChange"] }, { kind: "component", type: i4$1.ɵc, selector: "formly-validation-message", inputs: ["field"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }, { kind: "pipe", type: C8yArrayTypeInjectTemplatePipe, name: "c8yArrayTypeInjectTemplate" }] });
20777
20777
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ArrayTypeComponent, decorators: [{
20778
20778
  type: Component,
20779
20779
  args: [{ selector: 'c8y-array-type', template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <div id=\"{{ id + '-fieldset' }}\" class=\"legend form-block\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n *ngIf=\"to.description\"\n class=\"btn-help btn-help--sm text-14 m-l-4 m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </div>\n\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n\n <div *ngFor=\"let ifield of field.fieldGroup; let i = index\" class=\"input-group-array\">\n <formly-field [field]=\"(ifield | c8yArrayTypeInjectTemplate:customTemplate)\"> </formly-field>\n <ng-container *ngIf=\"ifield.type === 'formly-group' || ifield.type === 'array'\" [ngTemplateOutlet]=\"customTemplate\"></ng-container>\n <ng-template #customTemplate>\n <div class=\"input-group-btn delete-row\">\n <button\n type=\"button\"\n class=\"btn btn-dot btn-dot--danger flex-item-right\"\n tooltip=\"{{ 'Delete' | translate }}\"\n [attr.aria-label]=\"'Delete' | translate\"\n [delay]=\"500\"\n [disabled]=\"to.disabled || field.fieldGroup.length === 1\"\n (click)=\"remove(i)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </ng-template>\n </div>\n\n <div class=\"p-t-8\">\n <button\n title=\"{{\n (field.templateOptions?.addText | translate) || 'Add \\{\\{ label \\}\\}'\n | translate: field?.fieldArray?.templateOptions\n }}\"\n type=\"button\"\n class=\"btn btn-sm btn-default\"\n [disabled]=\"to.disabled\"\n (click)=\"add()\"\n [attr.data-cy]=\"field.templateOptions?.addTextDataCy || 'add-array-item'\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span\n *ngIf=\"!field.templateOptions?.addText\"\n ngNonBindable\n translate\n [translateParams]=\"field?.fieldArray?.templateOptions\"\n >\n Add {{ label }}\n </span>\n <span *ngIf=\"field.templateOptions?.addText\">\n {{ field.templateOptions?.addText | translate }}\n </span>\n </button>\n </div>\n</div>\n" }]
@@ -20813,7 +20813,7 @@ FieldCheckbox.CONFIG = {
20813
20813
  ]
20814
20814
  };
20815
20815
  FieldCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldCheckbox, deps: null, target: i0.ɵɵFactoryTarget.Component });
20816
- FieldCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldCheckbox, selector: "c8y-field-checkbox", usesInheritance: true, ngImport: i0, template: "<label\n [class.c8y-checkbox]=\"!to.switchMode\"\n [class.c8y-switch]=\"to.switchMode\"\n [class.has-error]=\"showError\"\n>\n <input\n type=\"checkbox\"\n [class.is-invalid]=\"showError\"\n [class.form-check-input]=\"to.formCheck.indexOf('custom') === -1\"\n [class.position-static]=\"to.formCheck === 'nolabel'\"\n [class.custom-control-input]=\"to.formCheck.indexOf('custom') === 0\"\n [indeterminate]=\"to.indeterminate && formControl.value == null\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n />\n <span></span>\n <span class=\"text-truncate\" title=\"{{ to.label | humanize }}\">{{ to.label | humanize }}</span>\n <span *ngIf=\"to.required && to.hideRequiredMarker !== true\">\n <em class=\"m-l-4\" translate>(required)</em>\n </span>\n <button\n *ngIf=\"!!to.description\"\n class=\"btn-help btn-help--sm m-l-4 m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n</label>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20816
+ FieldCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldCheckbox, selector: "c8y-field-checkbox", usesInheritance: true, ngImport: i0, template: "<label\n [class.c8y-checkbox]=\"!to.switchMode\"\n [class.c8y-switch]=\"to.switchMode\"\n [class.has-error]=\"showError\"\n>\n <input\n type=\"checkbox\"\n [class.is-invalid]=\"showError\"\n [class.form-check-input]=\"to.formCheck.indexOf('custom') === -1\"\n [class.position-static]=\"to.formCheck === 'nolabel'\"\n [class.custom-control-input]=\"to.formCheck.indexOf('custom') === 0\"\n [indeterminate]=\"to.indeterminate && formControl.value == null\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n />\n <span></span>\n <span class=\"text-truncate\" title=\"{{ to.label | humanize }}\">{{ to.label | humanize }}</span>\n <span *ngIf=\"to.required && to.hideRequiredMarker !== true\">\n <em class=\"m-l-4\" translate>(required)</em>\n </span>\n <button\n *ngIf=\"!!to.description\"\n class=\"btn-help btn-help--sm m-l-4 m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n</label>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20817
20817
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldCheckbox, decorators: [{
20818
20818
  type: Component,
20819
20819
  args: [{ selector: 'c8y-field-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\n [class.c8y-checkbox]=\"!to.switchMode\"\n [class.c8y-switch]=\"to.switchMode\"\n [class.has-error]=\"showError\"\n>\n <input\n type=\"checkbox\"\n [class.is-invalid]=\"showError\"\n [class.form-check-input]=\"to.formCheck.indexOf('custom') === -1\"\n [class.position-static]=\"to.formCheck === 'nolabel'\"\n [class.custom-control-input]=\"to.formCheck.indexOf('custom') === 0\"\n [indeterminate]=\"to.indeterminate && formControl.value == null\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n />\n <span></span>\n <span class=\"text-truncate\" title=\"{{ to.label | humanize }}\">{{ to.label | humanize }}</span>\n <span *ngIf=\"to.required && to.hideRequiredMarker !== true\">\n <em class=\"m-l-4\" translate>(required)</em>\n </span>\n <button\n *ngIf=\"!!to.description\"\n class=\"btn-help btn-help--sm m-l-4 m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n</label>\n" }]
@@ -20830,7 +20830,7 @@ FieldDate.CONFIG = {
20830
20830
  ]
20831
20831
  };
20832
20832
  FieldDate.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldDate, deps: null, target: i0.ɵɵFactoryTarget.Component });
20833
- FieldDate.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldDate, selector: "c8y-field-date", usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <label id=\"{{ id + '-fieldset' }}\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n *ngIf=\"to.description\"\n class=\"btn-help btn-help--sm text-14 m-l-4\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </label>\n <div class=\"form-group datepicker\">\n <input\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n class=\"form-control\"\n placeholder=\"Date\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: 'YYYY-MM-DD' }\"\n [placeholder]=\"'Select a date\u2026' | translate\"\n placement=\"top\"\n bsDatepicker\n [required]=\"to.required\"\n />\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20833
+ FieldDate.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldDate, selector: "c8y-field-date", usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <label id=\"{{ id + '-fieldset' }}\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n *ngIf=\"to.description\"\n class=\"btn-help btn-help--sm text-14 m-l-4\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </label>\n <div class=\"form-group datepicker\">\n <input\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n class=\"form-control\"\n placeholder=\"Date\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: 'YYYY-MM-DD' }\"\n [placeholder]=\"'Select a date\u2026' | translate\"\n placement=\"top\"\n bsDatepicker\n [required]=\"to.required\"\n />\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "directive", type: i6.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i6.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20834
20834
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldDate, decorators: [{
20835
20835
  type: Component,
20836
20836
  args: [{ selector: 'c8y-field-date', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <label id=\"{{ id + '-fieldset' }}\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n *ngIf=\"to.description\"\n class=\"btn-help btn-help--sm text-14 m-l-4\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </label>\n <div class=\"form-group datepicker\">\n <input\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n class=\"form-control\"\n placeholder=\"Date\"\n [bsConfig]=\"{ customTodayClass: 'today', dateInputFormat: 'YYYY-MM-DD' }\"\n [placeholder]=\"'Select a date\u2026' | translate\"\n placement=\"top\"\n bsDatepicker\n [required]=\"to.required\"\n />\n </div>\n</div>\n" }]
@@ -20871,7 +20871,7 @@ FieldFile.CONFIG = {
20871
20871
  ]
20872
20872
  };
20873
20873
  FieldFile.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldFile, deps: null, target: i0.ɵɵFactoryTarget.Component });
20874
- FieldFile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldFile, selector: "c8y-field-file", viewQueries: [{ propertyName: "dropArea", first: true, predicate: ["dropArea"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\" role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <label id=\"{{ id + '-fieldset' }}\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n *ngIf=\"to.description\"\n class=\"btn-help btn-help--sm text-14 m-l-4\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </label>\n\n <c8y-drop-area #dropArea class=\"drop-area-sm\" [formControl]=\"formControl\"> </c8y-drop-area>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "accept"], outputs: ["dropped"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20874
+ FieldFile.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldFile, selector: "c8y-field-file", viewQueries: [{ propertyName: "dropArea", first: true, predicate: ["dropArea"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\" role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <label id=\"{{ id + '-fieldset' }}\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n *ngIf=\"to.description\"\n class=\"btn-help btn-help--sm text-14 m-l-4\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </label>\n\n <c8y-drop-area #dropArea class=\"drop-area-sm\" [formControl]=\"formControl\"> </c8y-drop-area>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "accept"], outputs: ["dropped"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20875
20875
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldFile, decorators: [{
20876
20876
  type: Component,
20877
20877
  args: [{ selector: 'c8y-field-file', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\" role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <label id=\"{{ id + '-fieldset' }}\" *ngIf=\"to.label || to.description\">\n {{ to.label | humanize }}\n <button\n *ngIf=\"to.description\"\n class=\"btn-help btn-help--sm text-14 m-l-4\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </label>\n\n <c8y-drop-area #dropArea class=\"drop-area-sm\" [formControl]=\"formControl\"> </c8y-drop-area>\n</div>\n" }]
@@ -20896,7 +20896,7 @@ WrapperFormField.CONFIG = {
20896
20896
  wrappers: [{ name: 'c8y-form-field', component: WrapperFormField }]
20897
20897
  };
20898
20898
  WrapperFormField.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WrapperFormField, deps: null, target: i0.ɵɵFactoryTarget.Component });
20899
- WrapperFormField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WrapperFormField, selector: "c8y-wrapper-form-field", usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\" [class.has-error]=\"showError\">\n <label *ngIf=\"to.label && to.hideLabel !== true\" [attr.for]=\"id\" class=\"text-pre-wrap\">\n {{ to.label | humanize }}\n <i\n *ngIf=\"to.tooltip\"\n class=\"text-info\"\n c8yIcon=\"info-circle\"\n title=\"{{ to.tooltip | translate }}\"\n ></i>\n <button\n *ngIf=\"to.description && showDescriptionAsPopup\"\n class=\"btn-help btn-help--sm m-l-4 m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description | translate\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </label>\n <div class=\"d-flex\">\n <div class=\"flex-grow\">\n <ng-template #fieldComponent></ng-template>\n </div>\n <ng-container *ngIf=\"to.customTemplateRef\">\n <ng-container *ngTemplateOutlet=\"to.customTemplateRef\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"showError\" class=\"c8y-messages\">\n <formly-validation-message\n class=\"form-control-feedback-message\"\n [field]=\"field\"\n ></formly-validation-message>\n </div>\n\n <div\n class=\"help-block has-info text-muted\"\n *ngIf=\"!showError && to.description && !showDescriptionAsPopup\"\n >\n {{ to.description | translate }}\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2$1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i4$1.ɵc, selector: "formly-validation-message", inputs: ["field"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20899
+ WrapperFormField.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WrapperFormField, selector: "c8y-wrapper-form-field", usesInheritance: true, ngImport: i0, template: "<div class=\"form-group\" [class.has-error]=\"showError\">\n <label *ngIf=\"to.label && to.hideLabel !== true\" [attr.for]=\"id\" class=\"text-pre-wrap\">\n {{ to.label | humanize }}\n <i\n *ngIf=\"to.tooltip\"\n class=\"text-info\"\n c8yIcon=\"info-circle\"\n title=\"{{ to.tooltip | translate }}\"\n ></i>\n <button\n *ngIf=\"to.description && showDescriptionAsPopup\"\n class=\"btn-help btn-help--sm m-l-4 m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description | translate\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </label>\n <div class=\"d-flex\">\n <div class=\"flex-grow\">\n <ng-template #fieldComponent></ng-template>\n </div>\n <ng-container *ngIf=\"to.customTemplateRef\">\n <ng-container *ngTemplateOutlet=\"to.customTemplateRef\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"showError\" class=\"c8y-messages\">\n <formly-validation-message\n class=\"form-control-feedback-message\"\n [field]=\"field\"\n ></formly-validation-message>\n </div>\n\n <div\n class=\"help-block has-info text-muted\"\n *ngIf=\"!showError && to.description && !showDescriptionAsPopup\"\n >\n {{ to.description | translate }}\n </div>\n</div>\n", dependencies: [{ 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: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: i4$1.ɵc, selector: "formly-validation-message", inputs: ["field"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20900
20900
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WrapperFormField, decorators: [{
20901
20901
  type: Component,
20902
20902
  args: [{ selector: 'c8y-wrapper-form-field', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"form-group\" [class.has-error]=\"showError\">\n <label *ngIf=\"to.label && to.hideLabel !== true\" [attr.for]=\"id\" class=\"text-pre-wrap\">\n {{ to.label | humanize }}\n <i\n *ngIf=\"to.tooltip\"\n class=\"text-info\"\n c8yIcon=\"info-circle\"\n title=\"{{ to.tooltip | translate }}\"\n ></i>\n <button\n *ngIf=\"to.description && showDescriptionAsPopup\"\n class=\"btn-help btn-help--sm m-l-4 m-t-auto m-b-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"to.description | translate\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n </label>\n <div class=\"d-flex\">\n <div class=\"flex-grow\">\n <ng-template #fieldComponent></ng-template>\n </div>\n <ng-container *ngIf=\"to.customTemplateRef\">\n <ng-container *ngTemplateOutlet=\"to.customTemplateRef\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"showError\" class=\"c8y-messages\">\n <formly-validation-message\n class=\"form-control-feedback-message\"\n [field]=\"field\"\n ></formly-validation-message>\n </div>\n\n <div\n class=\"help-block has-info text-muted\"\n *ngIf=\"!showError && to.description && !showDescriptionAsPopup\"\n >\n {{ to.description | translate }}\n </div>\n</div>\n" }]
@@ -20937,7 +20937,7 @@ FieldInput.CONFIG = {
20937
20937
  ]
20938
20938
  };
20939
20939
  FieldInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldInput, deps: null, target: i0.ɵɵFactoryTarget.Component });
20940
- FieldInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldInput, selector: "c8y-field-input", usesInheritance: true, ngImport: i0, template: "<input\n *ngIf=\"type !== 'number'; else numberTmp\"\n [type]=\"type\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n/>\n<ng-template #numberTmp>\n <input\n type=\"number\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20940
+ FieldInput.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldInput, selector: "c8y-field-input", usesInheritance: true, ngImport: i0, template: "<input\n *ngIf=\"type !== 'number'; else numberTmp\"\n [type]=\"type\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n/>\n<ng-template #numberTmp>\n <input\n type=\"number\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n />\n</ng-template>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20941
20941
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldInput, decorators: [{
20942
20942
  type: Component,
20943
20943
  args: [{ selector: 'c8y-field-input', changeDetection: ChangeDetectionStrategy.OnPush, template: "<input\n *ngIf=\"type !== 'number'; else numberTmp\"\n [type]=\"type\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n/>\n<ng-template #numberTmp>\n <input\n type=\"number\"\n [formControl]=\"formControl\"\n class=\"form-control\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n [attr.autocomplete]=\"to.autocomplete ? to.autocomplete : null\"\n [class.is-invalid]=\"showError\"\n />\n</ng-template>\n" }]
@@ -20949,7 +20949,7 @@ ObjectTypeComponent.CONFIG = {
20949
20949
  types: [{ name: 'object', component: ObjectTypeComponent }]
20950
20950
  };
20951
20951
  ObjectTypeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ObjectTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
20952
- ObjectTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ObjectTypeComponent, selector: "c8y-object-type", usesInheritance: true, ngImport: i0, template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <p *ngIf=\"to.label\" class=\"text-medium\" id=\"{{ id + '-fieldset' }}\">\n {{ to.label | humanize }}\n </p>\n <p *ngIf=\"to.description\" class=\"m-b-8 small\">\n {{ to.description }}\n </p>\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.FormlyField, selector: "formly-field", inputs: ["model", "form", "options", "field"], outputs: ["modelChange"] }, { kind: "component", type: i4$1.ɵc, selector: "formly-validation-message", inputs: ["field"] }, { kind: "pipe", type: HumanizePipe, name: "humanize" }] });
20952
+ ObjectTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ObjectTypeComponent, selector: "c8y-object-type", usesInheritance: true, ngImport: i0, template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <p *ngIf=\"to.label\" class=\"text-medium\" id=\"{{ id + '-fieldset' }}\">\n {{ to.label | humanize }}\n </p>\n <p *ngIf=\"to.description\" class=\"m-b-8 small\">\n {{ to.description }}\n </p>\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4$1.FormlyField, selector: "formly-field", inputs: ["model", "form", "options", "field"], outputs: ["modelChange"] }, { kind: "component", type: i4$1.ɵc, selector: "formly-validation-message", inputs: ["field"] }, { kind: "pipe", type: HumanizePipe, name: "humanize" }] });
20953
20953
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ObjectTypeComponent, decorators: [{
20954
20954
  type: Component,
20955
20955
  args: [{ selector: 'c8y-object-type', template: "<div role=\"group\" [attr.aria-labelledby]=\"id + '-fieldset'\">\n <p *ngIf=\"to.label\" class=\"text-medium\" id=\"{{ id + '-fieldset' }}\">\n {{ to.label | humanize }}\n </p>\n <p *ngIf=\"to.description\" class=\"m-b-8 small\">\n {{ to.description }}\n </p>\n <div\n class=\"form-control-feedback-message has-error\"\n role=\"alert\"\n *ngIf=\"showError && formControl.errors\"\n >\n <formly-validation-message [field]=\"field\"></formly-validation-message>\n </div>\n <formly-field *ngFor=\"let f of field.fieldGroup\" [field]=\"f\"></formly-field>\n</div>\n" }]
@@ -20976,7 +20976,7 @@ FieldRadio.CONFIG = {
20976
20976
  ]
20977
20977
  };
20978
20978
  FieldRadio.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldRadio, deps: null, target: i0.ɵɵFactoryTarget.Component });
20979
- FieldRadio.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldRadio, selector: "c8y-field-radio", usesInheritance: true, ngImport: i0, template: "<label\n *ngFor=\"let option of to.options | formlySelectOptions: field | async; let i = index\"\n [title]=\"option.label\"\n class=\"c8y-radio\"\n>\n <input\n type=\"radio\"\n [id]=\"id + '_' + i\"\n [name]=\"field.name || id\"\n [attr.value]=\"option.value\"\n [value]=\"option.value\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [attr.disabled]=\"option.disabled || formControl.disabled ? true : null\"\n />\n <span></span>\n <span>{{ option.label | humanize }}</span>\n</label>\n", dependencies: [{ kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }, { kind: "pipe", type: i5$2.ɵa, name: "formlySelectOptions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20979
+ FieldRadio.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FieldRadio, selector: "c8y-field-radio", usesInheritance: true, ngImport: i0, template: "<label\n *ngFor=\"let option of to.options | formlySelectOptions: field | async; let i = index\"\n [title]=\"option.label\"\n class=\"c8y-radio\"\n>\n <input\n type=\"radio\"\n [id]=\"id + '_' + i\"\n [name]=\"field.name || id\"\n [attr.value]=\"option.value\"\n [value]=\"option.value\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [attr.disabled]=\"option.disabled || formControl.disabled ? true : null\"\n />\n <span></span>\n <span>{{ option.label | humanize }}</span>\n</label>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }, { kind: "pipe", type: i5$2.ɵa, name: "formlySelectOptions" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
20980
20980
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FieldRadio, decorators: [{
20981
20981
  type: Component,
20982
20982
  args: [{ selector: 'c8y-field-radio', changeDetection: ChangeDetectionStrategy.OnPush, template: "<label\n *ngFor=\"let option of to.options | formlySelectOptions: field | async; let i = index\"\n [title]=\"option.label\"\n class=\"c8y-radio\"\n>\n <input\n type=\"radio\"\n [id]=\"id + '_' + i\"\n [name]=\"field.name || id\"\n [attr.value]=\"option.value\"\n [value]=\"option.value\"\n [formControl]=\"formControl\"\n [formlyAttributes]=\"field\"\n [attr.disabled]=\"option.disabled || formControl.disabled ? true : null\"\n />\n <span></span>\n <span>{{ option.label | humanize }}</span>\n</label>\n" }]
@@ -21438,7 +21438,7 @@ TypeaheadTypeComponent.CONFIG = {
21438
21438
  types: [{ name: 'typeahead', component: TypeaheadTypeComponent }]
21439
21439
  };
21440
21440
  TypeaheadTypeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TypeaheadTypeComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
21441
- TypeaheadTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TypeaheadTypeComponent, selector: "c8y-typeahead-type", usesInheritance: true, ngImport: i0, template: "<c8y-typeahead\n [required]=\"to?.required || false\"\n [placeholder]=\"placeholder$ | async\"\n [displayProperty]=\"to?.displayProperty\"\n [selected]=\"selected\"\n [allowFreeEntries]=\"to?.allowFreeEntries || false\"\n [container]=\"to?.container || ''\"\n [disabled]=\"to?.disabled\"\n (onSearch)=\"setPipe($event)\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\">\n\n <c8y-li *c8yFor=\"let opt of to?.c8yForOptions; loadMore: to?.loadMore || 'auto'; pipe: filterPipe; notFound: notFoundTemplate; loadingTemplate: loading;\"\n (click)=\"selectOption(opt); setPipe('')\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\">\n <c8y-highlight [text]=\"opt[labelProp]\" [pattern]=\"pattern\"></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0 && !match\">\n <p><strong translate>No match found.</strong></p>\n </c8y-li>\n </ng-template>\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-8 p-relative\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n</c8y-typeahead>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21441
+ TypeaheadTypeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TypeaheadTypeComponent, selector: "c8y-typeahead-type", usesInheritance: true, ngImport: i0, template: "<c8y-typeahead\n [required]=\"to?.required || false\"\n [placeholder]=\"placeholder$ | async\"\n [displayProperty]=\"to?.displayProperty\"\n [selected]=\"selected\"\n [allowFreeEntries]=\"to?.allowFreeEntries || false\"\n [container]=\"to?.container || ''\"\n [disabled]=\"to?.disabled\"\n (onSearch)=\"setPipe($event)\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\">\n\n <c8y-li *c8yFor=\"let opt of to?.c8yForOptions; loadMore: to?.loadMore || 'auto'; pipe: filterPipe; notFound: notFoundTemplate; loadingTemplate: loading;\"\n (click)=\"selectOption(opt); setPipe('')\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\">\n <c8y-highlight [text]=\"opt[labelProp]\" [pattern]=\"pattern\"></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0 && !match\">\n <p><strong translate>No match found.</strong></p>\n </c8y-li>\n </ng-template>\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-8 p-relative\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n</c8y-typeahead>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21442
21442
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TypeaheadTypeComponent, decorators: [{
21443
21443
  type: Component,
21444
21444
  args: [{ selector: 'c8y-typeahead-type', changeDetection: ChangeDetectionStrategy.OnPush, template: "<c8y-typeahead\n [required]=\"to?.required || false\"\n [placeholder]=\"placeholder$ | async\"\n [displayProperty]=\"to?.displayProperty\"\n [selected]=\"selected\"\n [allowFreeEntries]=\"to?.allowFreeEntries || false\"\n [container]=\"to?.container || ''\"\n [disabled]=\"to?.disabled\"\n (onSearch)=\"setPipe($event)\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\">\n\n <c8y-li *c8yFor=\"let opt of to?.c8yForOptions; loadMore: to?.loadMore || 'auto'; pipe: filterPipe; notFound: notFoundTemplate; loadingTemplate: loading;\"\n (click)=\"selectOption(opt); setPipe('')\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\">\n <c8y-highlight [text]=\"opt[labelProp]\" [pattern]=\"pattern\"></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"pattern.length > 0 && !match\">\n <p><strong translate>No match found.</strong></p>\n </c8y-li>\n </ng-template>\n <ng-template #loading>\n <c8y-li class=\"text-center p-t-8 p-relative\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n</c8y-typeahead>\n" }]
@@ -21472,7 +21472,7 @@ SelectComponent.CONFIG = {
21472
21472
  ]
21473
21473
  };
21474
21474
  SelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectComponent, deps: [{ token: i1$3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
21475
- SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SelectComponent, selector: "c8y-select-type", usesInheritance: true, ngImport: i0, template: "<div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n >\n <option [ngValue]=\"undefined\" selected disabled>{{ placeholder$ | async | translate }}</option>\n <ng-container *ngFor=\"let opt of to.options\">\n <option [ngValue]=\"opt[valueProp]\" [disabled]=\"opt.disabled || false\">\n {{ opt[labelProp] | translate }}\n </option>\n </ng-container>\n </select>\n</div>\n ", dependencies: [{ kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21475
+ SelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SelectComponent, selector: "c8y-select-type", usesInheritance: true, ngImport: i0, template: "<div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n >\n <option [ngValue]=\"undefined\" selected disabled>{{ placeholder$ | async | translate }}</option>\n <ng-container *ngFor=\"let opt of to.options\">\n <option [ngValue]=\"opt[valueProp]\" [disabled]=\"opt.disabled || false\">\n {{ opt[labelProp] | translate }}\n </option>\n </ng-container>\n </select>\n</div>\n ", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
21476
21476
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectComponent, decorators: [{
21477
21477
  type: Component,
21478
21478
  args: [{ selector: 'c8y-select-type', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [formControl]=\"formControl\"\n [class.is-invalid]=\"showError\"\n [formlyAttributes]=\"field\"\n [required]=\"to.required\"\n >\n <option [ngValue]=\"undefined\" selected disabled>{{ placeholder$ | async | translate }}</option>\n <ng-container *ngFor=\"let opt of to.options\">\n <option [ngValue]=\"opt[valueProp]\" [disabled]=\"opt.disabled || false\">\n {{ opt[labelProp] | translate }}\n </option>\n </ng-container>\n </select>\n</div>\n " }]
@@ -21515,7 +21515,7 @@ DynamicFormsUIThemeModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0
21515
21515
  TypeaheadTypeComponent,
21516
21516
  SelectComponent, C8yArrayTypeInjectTemplatePipe], imports: [CommonModule$1,
21517
21517
  CommonModule,
21518
- PopoverModule, i1$8.TooltipModule, ReactiveFormsModule,
21518
+ PopoverModule, i1$7.TooltipModule, ReactiveFormsModule,
21519
21519
  C8yTranslateModule,
21520
21520
  DropAreaModule,
21521
21521
  FormsModule,
@@ -22000,7 +22000,7 @@ class DynamicComponentAlertsComponent extends AlertOutletBase {
22000
22000
  }
22001
22001
  }
22002
22002
  DynamicComponentAlertsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DynamicComponentAlertsComponent, deps: [{ token: AlertService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
22003
- DynamicComponentAlertsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: { alerts: "alerts" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let alertGroup of alerts.alertGroups\">\n <div\n *ngIf=\"alertGroup?.value?.alerts?.length\"\n class=\"alert\"\n role=\"alert\"\n [ngClass]=\"'alert-' + alertGroup.type\"\n >\n <button\n class=\"close\"\n type=\"button\"\n *ngIf=\"\n alertGroup.value.alertDismissal.dismissStrategy === dismissAlertStrategy.TEMPORARY ||\n alertGroup.value.alertDismissal.dismissStrategy ===\n dismissAlertStrategy.TEMPORARY_OR_PERMANENT\n \"\n (click)=\"alerts.dismissAlertGroup(alertGroup.type, dismissPermanently.checked)\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <div *ngFor=\"let alertItem of alertGroup.value.alerts; let i = index\" class=\"m-t-8\">\n <ng-container *ngIf=\"!isTemplateRef(alertItem.text); else template(alertItem.text)\">\n <p\n *ngIf=\"!alertItem.allowHtml\"\n [textContent]=\"alertItem.text | translate\"\n class=\"message\"\n ></p>\n <p *ngIf=\"alertItem.allowHtml\" [innerHTML]=\"alertItem.text | translate\" class=\"message\"></p>\n </ng-container>\n\n <p *ngIf=\"hasDetails(alertItem) && !isDetailsShow(alertItem)\" class=\"text-muted m-t-8\">\n <button\n title=\"{{ 'Show details' | translate }}\"\n class=\"btn btn-clean\"\n (click)=\"showDetails(alertItem)\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n {{ 'Show details' | translate }}\n </button>\n </p>\n <p *ngIf=\"hasDetails(alertItem) && isDetailsShow(alertItem)\" class=\"text-muted m-t-8\">\n <button\n title=\"{{ 'Hide details' | translate }}\"\n class=\"btn btn-clean\"\n (click)=\"closeDetails()\"\n >\n <i c8yIcon=\"chevron-up\"></i>\n {{ 'Hide details' | translate }}\n </button>\n </p>\n <div *ngIf=\"isDetailsShow(alertItem)\">\n <div\n *ngIf=\"\n !isTemplateRef(detailDisplayedAlert.contents);\n else template(alertItem.detailedData)\n \"\n >\n <pre><code [textContent]=\"detailDisplayedAlert.contents | translate\"></code></pre>\n </div>\n </div>\n <hr *ngIf=\"i !== alertGroup.value.alerts.length - 1\" />\n </div>\n\n <label\n title=\"{{ 'Don\\'t show again' | translate }}\"\n class=\"c8y-checkbox m-t-16\"\n [class.hidden]=\"\n alertGroup.value.alertDismissal.dismissStrategy !==\n dismissAlertStrategy.TEMPORARY_OR_PERMANENT\n \"\n >\n <input type=\"checkbox\" #dismissPermanently />\n <span></span>\n <span>{{ \"Don't show again\" | translate }}</span>\n </label>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22003
+ DynamicComponentAlertsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: { alerts: "alerts" }, usesInheritance: true, ngImport: i0, template: "<ng-container *ngFor=\"let alertGroup of alerts.alertGroups\">\n <div\n *ngIf=\"alertGroup?.value?.alerts?.length\"\n class=\"alert\"\n role=\"alert\"\n [ngClass]=\"'alert-' + alertGroup.type\"\n >\n <button\n class=\"close\"\n type=\"button\"\n *ngIf=\"\n alertGroup.value.alertDismissal.dismissStrategy === dismissAlertStrategy.TEMPORARY ||\n alertGroup.value.alertDismissal.dismissStrategy ===\n dismissAlertStrategy.TEMPORARY_OR_PERMANENT\n \"\n (click)=\"alerts.dismissAlertGroup(alertGroup.type, dismissPermanently.checked)\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <div *ngFor=\"let alertItem of alertGroup.value.alerts; let i = index\" class=\"m-t-8\">\n <ng-container *ngIf=\"!isTemplateRef(alertItem.text); else template(alertItem.text)\">\n <p\n *ngIf=\"!alertItem.allowHtml\"\n [textContent]=\"alertItem.text | translate\"\n class=\"message\"\n ></p>\n <p *ngIf=\"alertItem.allowHtml\" [innerHTML]=\"alertItem.text | translate\" class=\"message\"></p>\n </ng-container>\n\n <p *ngIf=\"hasDetails(alertItem) && !isDetailsShow(alertItem)\" class=\"text-muted m-t-8\">\n <button\n title=\"{{ 'Show details' | translate }}\"\n class=\"btn btn-clean\"\n (click)=\"showDetails(alertItem)\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n {{ 'Show details' | translate }}\n </button>\n </p>\n <p *ngIf=\"hasDetails(alertItem) && isDetailsShow(alertItem)\" class=\"text-muted m-t-8\">\n <button\n title=\"{{ 'Hide details' | translate }}\"\n class=\"btn btn-clean\"\n (click)=\"closeDetails()\"\n >\n <i c8yIcon=\"chevron-up\"></i>\n {{ 'Hide details' | translate }}\n </button>\n </p>\n <div *ngIf=\"isDetailsShow(alertItem)\">\n <div\n *ngIf=\"\n !isTemplateRef(detailDisplayedAlert.contents);\n else template(alertItem.detailedData)\n \"\n >\n <pre><code [textContent]=\"detailDisplayedAlert.contents | translate\"></code></pre>\n </div>\n </div>\n <hr *ngIf=\"i !== alertGroup.value.alerts.length - 1\" />\n </div>\n\n <label\n title=\"{{ 'Don\\'t show again' | translate }}\"\n class=\"c8y-checkbox m-t-16\"\n [class.hidden]=\"\n alertGroup.value.alertDismissal.dismissStrategy !==\n dismissAlertStrategy.TEMPORARY_OR_PERMANENT\n \"\n >\n <input type=\"checkbox\" #dismissPermanently />\n <span></span>\n <span>{{ \"Don't show again\" | translate }}</span>\n </label>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22004
22004
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DynamicComponentAlertsComponent, decorators: [{
22005
22005
  type: Component,
22006
22006
  args: [{ selector: 'c8y-dynamic-component-alerts', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngFor=\"let alertGroup of alerts.alertGroups\">\n <div\n *ngIf=\"alertGroup?.value?.alerts?.length\"\n class=\"alert\"\n role=\"alert\"\n [ngClass]=\"'alert-' + alertGroup.type\"\n >\n <button\n class=\"close\"\n type=\"button\"\n *ngIf=\"\n alertGroup.value.alertDismissal.dismissStrategy === dismissAlertStrategy.TEMPORARY ||\n alertGroup.value.alertDismissal.dismissStrategy ===\n dismissAlertStrategy.TEMPORARY_OR_PERMANENT\n \"\n (click)=\"alerts.dismissAlertGroup(alertGroup.type, dismissPermanently.checked)\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <div *ngFor=\"let alertItem of alertGroup.value.alerts; let i = index\" class=\"m-t-8\">\n <ng-container *ngIf=\"!isTemplateRef(alertItem.text); else template(alertItem.text)\">\n <p\n *ngIf=\"!alertItem.allowHtml\"\n [textContent]=\"alertItem.text | translate\"\n class=\"message\"\n ></p>\n <p *ngIf=\"alertItem.allowHtml\" [innerHTML]=\"alertItem.text | translate\" class=\"message\"></p>\n </ng-container>\n\n <p *ngIf=\"hasDetails(alertItem) && !isDetailsShow(alertItem)\" class=\"text-muted m-t-8\">\n <button\n title=\"{{ 'Show details' | translate }}\"\n class=\"btn btn-clean\"\n (click)=\"showDetails(alertItem)\"\n >\n <i c8yIcon=\"chevron-down\"></i>\n {{ 'Show details' | translate }}\n </button>\n </p>\n <p *ngIf=\"hasDetails(alertItem) && isDetailsShow(alertItem)\" class=\"text-muted m-t-8\">\n <button\n title=\"{{ 'Hide details' | translate }}\"\n class=\"btn btn-clean\"\n (click)=\"closeDetails()\"\n >\n <i c8yIcon=\"chevron-up\"></i>\n {{ 'Hide details' | translate }}\n </button>\n </p>\n <div *ngIf=\"isDetailsShow(alertItem)\">\n <div\n *ngIf=\"\n !isTemplateRef(detailDisplayedAlert.contents);\n else template(alertItem.detailedData)\n \"\n >\n <pre><code [textContent]=\"detailDisplayedAlert.contents | translate\"></code></pre>\n </div>\n </div>\n <hr *ngIf=\"i !== alertGroup.value.alerts.length - 1\" />\n </div>\n\n <label\n title=\"{{ 'Don\\'t show again' | translate }}\"\n class=\"c8y-checkbox m-t-16\"\n [class.hidden]=\"\n alertGroup.value.alertDismissal.dismissStrategy !==\n dismissAlertStrategy.TEMPORARY_OR_PERMANENT\n \"\n >\n <input type=\"checkbox\" #dismissPermanently />\n <span></span>\n <span>{{ \"Don't show again\" | translate }}</span>\n </label>\n </div>\n</ng-container>\n" }]
@@ -22169,7 +22169,7 @@ class DynamicComponentComponent {
22169
22169
  }
22170
22170
  }
22171
22171
  DynamicComponentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DynamicComponentComponent, deps: [{ token: DynamicComponentService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
22172
- DynamicComponentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: { componentId: "componentId", config: "config", mode: "mode", notFoundError: "notFoundError", executeResolvers: "executeResolvers" }, outputs: { updateWidgetClasses: "updateWidgetClasses" }, viewQueries: [{ propertyName: "host", first: true, predicate: ["host"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #host></ng-template>\n\n<div class=\"alert alert-warning m-8\" role=\"alert\" *ngIf=\"error && notFoundError\">\n <strong class=\"message\">\n {{\n 'This widget cannot be rendered because the current application does not support the following component:'\n | translate\n }}\n {{ componentId }}.\n </strong>\n <p class=\"text-muted m-t-8\">\n <button class=\"btn btn-clean\" (click)=\"expandErrorDetails = !expandErrorDetails\">\n <i c8yIcon=\"chevron-down\"></i>\n <span *ngIf=\"!expandErrorDetails\" translate>Show details</span>\n <span *ngIf=\"expandErrorDetails\" translate>Hide details</span>\n </button>\n </p>\n <div [collapse]=\"!expandErrorDetails\" [isAnimated]=\"true\">\n <pre>\n {{ error }}\n </pre>\n </div>\n</div>\n\n<div\n class=\"overlay-center-vertically d-flex d-col a-i-stretch j-c-start p-16 p-r-24 p-l-24\"\n *ngIf=\"\n errorStrategy === dynamicComponentErrorStrategy.OVERLAY_ERROR &&\n componentInstance?.alerts?.anyAlertExists$ | async\n \"\n>\n <c8y-dynamic-component-alerts [alerts]=\"componentInstance.alerts\"></c8y-dynamic-component-alerts>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$a.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
22172
+ DynamicComponentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: { componentId: "componentId", config: "config", mode: "mode", notFoundError: "notFoundError", executeResolvers: "executeResolvers" }, outputs: { updateWidgetClasses: "updateWidgetClasses" }, viewQueries: [{ propertyName: "host", first: true, predicate: ["host"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: "<ng-template #host></ng-template>\n\n<div class=\"alert alert-warning m-8\" role=\"alert\" *ngIf=\"error && notFoundError\">\n <strong class=\"message\">\n {{\n 'This widget cannot be rendered because the current application does not support the following component:'\n | translate\n }}\n {{ componentId }}.\n </strong>\n <p class=\"text-muted m-t-8\">\n <button class=\"btn btn-clean\" (click)=\"expandErrorDetails = !expandErrorDetails\">\n <i c8yIcon=\"chevron-down\"></i>\n <span *ngIf=\"!expandErrorDetails\" translate>Show details</span>\n <span *ngIf=\"expandErrorDetails\" translate>Hide details</span>\n </button>\n </p>\n <div [collapse]=\"!expandErrorDetails\" [isAnimated]=\"true\">\n <pre>\n {{ error }}\n </pre>\n </div>\n</div>\n\n<div\n class=\"overlay-center-vertically d-flex d-col a-i-stretch j-c-start p-16 p-r-24 p-l-24\"\n *ngIf=\"\n errorStrategy === dynamicComponentErrorStrategy.OVERLAY_ERROR &&\n componentInstance?.alerts?.anyAlertExists$ | async\n \"\n>\n <c8y-dynamic-component-alerts [alerts]=\"componentInstance.alerts\"></c8y-dynamic-component-alerts>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$9.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "component", type: DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
22173
22173
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DynamicComponentComponent, decorators: [{
22174
22174
  type: Component,
22175
22175
  args: [{ selector: 'c8y-dynamic-component', template: "<ng-template #host></ng-template>\n\n<div class=\"alert alert-warning m-8\" role=\"alert\" *ngIf=\"error && notFoundError\">\n <strong class=\"message\">\n {{\n 'This widget cannot be rendered because the current application does not support the following component:'\n | translate\n }}\n {{ componentId }}.\n </strong>\n <p class=\"text-muted m-t-8\">\n <button class=\"btn btn-clean\" (click)=\"expandErrorDetails = !expandErrorDetails\">\n <i c8yIcon=\"chevron-down\"></i>\n <span *ngIf=\"!expandErrorDetails\" translate>Show details</span>\n <span *ngIf=\"expandErrorDetails\" translate>Hide details</span>\n </button>\n </p>\n <div [collapse]=\"!expandErrorDetails\" [isAnimated]=\"true\">\n <pre>\n {{ error }}\n </pre>\n </div>\n</div>\n\n<div\n class=\"overlay-center-vertically d-flex d-col a-i-stretch j-c-start p-16 p-r-24 p-l-24\"\n *ngIf=\"\n errorStrategy === dynamicComponentErrorStrategy.OVERLAY_ERROR &&\n componentInstance?.alerts?.anyAlertExists$ | async\n \"\n>\n <c8y-dynamic-component-alerts [alerts]=\"componentInstance.alerts\"></c8y-dynamic-component-alerts>\n</div>\n" }]
@@ -22837,14 +22837,14 @@ class DashboardComponent {
22837
22837
  return this.dashboardRect.height / this.rows;
22838
22838
  }
22839
22839
  }
22840
- DashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardComponent, deps: [{ token: i0.ElementRef }, { token: i1$6.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
22840
+ DashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardComponent, deps: [{ token: i0.ElementRef }, { token: i1$5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
22841
22841
  DashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DashboardComponent, selector: "c8y-dashboard", inputs: { columns: "columns", gap: "gap", rows: "rows" }, outputs: { dashboardChange: "dashboardChange" }, host: { listeners: { "window:resize": "onResize()" }, properties: { "attr.style": "this.inlineStyle" }, classAttribute: "c8y-grid-dashboard dashboard-grid" }, ngImport: i0, template: "<ng-content></ng-content>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush });
22842
22842
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardComponent, decorators: [{
22843
22843
  type: Component,
22844
22844
  args: [{ selector: 'c8y-dashboard', host: {
22845
22845
  class: 'c8y-grid-dashboard dashboard-grid'
22846
22846
  }, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n" }]
22847
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$6.DomSanitizer }]; }, propDecorators: { columns: [{
22847
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1$5.DomSanitizer }]; }, propDecorators: { columns: [{
22848
22848
  type: Input
22849
22849
  }], gap: [{
22850
22850
  type: Input
@@ -23072,14 +23072,14 @@ class DashboardChildComponent {
23072
23072
  return false;
23073
23073
  }
23074
23074
  }
23075
- DashboardChildComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardChildComponent, deps: [{ token: DashboardComponent }, { token: i1$6.DomSanitizer }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
23076
- DashboardChildComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DashboardChildComponent, selector: "c8y-dashboard-child", inputs: { x: "x", y: "y", width: "width", height: "height", data: "data", margin: "margin", isFrozen: "isFrozen", useIntersection: "useIntersection", class: "class" }, outputs: { changeStart: "changeStart", changeEnd: "changeEnd" }, host: { properties: { "attr.style": "this.inlineStyle" }, classAttribute: "dashboard-grid-child" }, queries: [{ propertyName: "templateActions", predicate: DashboardChildActionComponent }], usesOnChanges: true, ngImport: i0, template: "<div cdkDropList>\n <div *ngIf=\"isResize\" class=\"card-placeholder\"></div>\n <div\n [ngClass]=\"klasses\"\n cdkDrag\n [ngStyle]=\"{ width: _pxWidth, height: _pxHeight }\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n [cdkDragDisabled]=\"isFrozen\"\n >\n <div\n class=\"card-header-actions card-header-grid\"\n [ngClass]=\"{ 'drag-handle': !isFrozen, draggableCursor: !isFrozen }\"\n cdkDragHandle\n >\n <ng-content select=\"c8y-dashboard-child-title\"></ng-content>\n <div class=\"header-actions\" *ngIf=\"!isFrozen && actions.length > 0\">\n <div class=\"optionsBtn dropdown\" dropdown placement=\"bottom right\">\n <button\n title=\"{{ 'Settings' | translate }}\"\n class=\"btnIcon c8y-dropdown\"\n (click)=\"(false)\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <i [c8yIcon]=\"'cog'\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n style=\"right:-1px;\"\n *dropdownMenu\n >\n <ng-container *ngFor=\"let action of actions\">\n <ng-container *ngTemplateOutlet=\"action.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll\">\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"!isFrozen && !isDragging\"\n class=\"resize-handle hidden-xs\"\n cdkDrag\n [cdkDragDisabled]=\"isFrozen\"\n (cdkDragStarted)=\"resizeStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n ></div>\n <div class=\"resize-icon hidden-xs\" *ngIf=\"!isFrozen && !isDragging\"></div>\n\n <div *cdkDragPlaceholder class=\"card-placeholder\"></div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$5.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5$3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i5$3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
23075
+ DashboardChildComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardChildComponent, deps: [{ token: DashboardComponent }, { token: i1$5.DomSanitizer }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
23076
+ DashboardChildComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DashboardChildComponent, selector: "c8y-dashboard-child", inputs: { x: "x", y: "y", width: "width", height: "height", data: "data", margin: "margin", isFrozen: "isFrozen", useIntersection: "useIntersection", class: "class" }, outputs: { changeStart: "changeStart", changeEnd: "changeEnd" }, host: { properties: { "attr.style": "this.inlineStyle" }, classAttribute: "dashboard-grid-child" }, queries: [{ propertyName: "templateActions", predicate: DashboardChildActionComponent }], usesOnChanges: true, ngImport: i0, template: "<div cdkDropList>\n <div *ngIf=\"isResize\" class=\"card-placeholder\"></div>\n <div\n [ngClass]=\"klasses\"\n cdkDrag\n [ngStyle]=\"{ width: _pxWidth, height: _pxHeight }\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n [cdkDragDisabled]=\"isFrozen\"\n >\n <div\n class=\"card-header-actions card-header-grid\"\n [ngClass]=\"{ 'drag-handle': !isFrozen, draggableCursor: !isFrozen }\"\n cdkDragHandle\n >\n <ng-content select=\"c8y-dashboard-child-title\"></ng-content>\n <div class=\"header-actions\" *ngIf=\"!isFrozen && actions.length > 0\">\n <div class=\"optionsBtn dropdown\" dropdown placement=\"bottom right\">\n <button\n title=\"{{ 'Settings' | translate }}\"\n class=\"btnIcon c8y-dropdown\"\n (click)=\"(false)\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <i [c8yIcon]=\"'cog'\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n style=\"right:-1px;\"\n *dropdownMenu\n >\n <ng-container *ngFor=\"let action of actions\">\n <ng-container *ngTemplateOutlet=\"action.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll\">\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"!isFrozen && !isDragging\"\n class=\"resize-handle hidden-xs\"\n cdkDrag\n [cdkDragDisabled]=\"isFrozen\"\n (cdkDragStarted)=\"resizeStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n ></div>\n <div class=\"resize-icon hidden-xs\" *ngIf=\"!isFrozen && !isDragging\"></div>\n\n <div *cdkDragPlaceholder class=\"card-placeholder\"></div>\n </div>\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.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: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i5$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5$3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: i5$3.CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
23077
23077
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DashboardChildComponent, decorators: [{
23078
23078
  type: Component,
23079
23079
  args: [{ selector: 'c8y-dashboard-child', host: {
23080
23080
  class: 'dashboard-grid-child'
23081
23081
  }, template: "<div cdkDropList>\n <div *ngIf=\"isResize\" class=\"card-placeholder\"></div>\n <div\n [ngClass]=\"klasses\"\n cdkDrag\n [ngStyle]=\"{ width: _pxWidth, height: _pxHeight }\"\n (cdkDragStarted)=\"dragStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n [cdkDragDisabled]=\"isFrozen\"\n >\n <div\n class=\"card-header-actions card-header-grid\"\n [ngClass]=\"{ 'drag-handle': !isFrozen, draggableCursor: !isFrozen }\"\n cdkDragHandle\n >\n <ng-content select=\"c8y-dashboard-child-title\"></ng-content>\n <div class=\"header-actions\" *ngIf=\"!isFrozen && actions.length > 0\">\n <div class=\"optionsBtn dropdown\" dropdown placement=\"bottom right\">\n <button\n title=\"{{ 'Settings' | translate }}\"\n class=\"btnIcon c8y-dropdown\"\n (click)=\"(false)\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <i [c8yIcon]=\"'cog'\"></i>\n </button>\n <ul\n class=\"dropdown-menu dropdown-menu-right\"\n style=\"right:-1px;\"\n *dropdownMenu\n >\n <ng-container *ngFor=\"let action of actions\">\n <ng-container *ngTemplateOutlet=\"action.template\"></ng-container>\n </ng-container>\n </ul>\n </div>\n </div>\n </div>\n <div class=\"card-inner-scroll\">\n <ng-content></ng-content>\n </div>\n <div\n *ngIf=\"!isFrozen && !isDragging\"\n class=\"resize-handle hidden-xs\"\n cdkDrag\n [cdkDragDisabled]=\"isFrozen\"\n (cdkDragStarted)=\"resizeStarted($event)\"\n (cdkDragEnded)=\"reset($event)\"\n ></div>\n <div class=\"resize-icon hidden-xs\" *ngIf=\"!isFrozen && !isDragging\"></div>\n\n <div *cdkDragPlaceholder class=\"card-placeholder\"></div>\n </div>\n</div>\n" }]
23082
- }], ctorParameters: function () { return [{ type: DashboardComponent }, { type: i1$6.DomSanitizer }, { type: i0.ElementRef }]; }, propDecorators: { templateActions: [{
23082
+ }], ctorParameters: function () { return [{ type: DashboardComponent }, { type: i1$5.DomSanitizer }, { type: i0.ElementRef }]; }, propDecorators: { templateActions: [{
23083
23083
  type: ContentChildren,
23084
23084
  args: [DashboardChildActionComponent]
23085
23085
  }], x: [{
@@ -23402,7 +23402,7 @@ class WidgetTimeContextComponent {
23402
23402
  }
23403
23403
  }
23404
23404
  WidgetTimeContextComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetTimeContextComponent, deps: [{ token: WidgetsDashboardEventService }, { token: DashboardChildComponent }, { token: i1.Router }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
23405
- WidgetTimeContextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: { canDecouple: "canDecouple" }, outputs: { dateContextChange: "dateContextChange" }, host: { classAttribute: "d-flex a-i-center gap-4" }, viewQueries: [{ propertyName: "action", first: true, predicate: DashboardChildActionComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled\"\n [groupId]=\"'timecontext'\"\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: globalDate }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: localDate }\"\n></ng-container>\n\n<ng-template #dateTimePicker let-date=\"date\">\n <label>{{ 'Time range' | translate }}</label>\n <div\n class=\"dropdown m-r-4\"\n dropdown\n #dropdown=\"bs-dropdown\"\n container=\"body\"\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-1 d-flex a-i-center\"\n dropdownToggle\n title=\"{{ date[0] | c8yDate: 'short' }} \u2014 {{ date[1] | c8yDate: 'short' }}\"\n aria-haspopup=\"true\"\n >\n <span>{{ date[0] | c8yDate: 'shortDate' }} \u2014 {{ date[1] | c8yDate: 'shortDate' }}</span>\n <span class=\"caret m-r-8 m-l-4\"></span>\n </button>\n\n <div *dropdownMenu class=\"dropdown-menu dropdown-menu--date-range\">\n <div class=\"p-16\">\n <formly-form [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"reset(); dropdown.isOpen = false\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n translate\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Range' | translate\"\n [ngModel]=\"currentPredefinedTimeSpan\"\n (ngModelChange)=\"predefinedDateFromSelected($event)\"\n >\n <option value=\"undefined\" disabled=\"true\">{{ 'Custom range`time`' | translate }}</option>\n <option *ngFor=\"let dateFrom of predefinedTimeSpanList\" [ngValue]=\"dateFrom\">\n {{ dateFrom.title }}\n </option>\n </select>\n <span></span>\n </div>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button (click)=\"toggleDecoupling();\" type=\"button\">\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.FormlyForm, selector: "formly-form", inputs: ["model", "fields", "options", "form"], outputs: ["modelChange"] }, { kind: "component", type: DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] });
23405
+ WidgetTimeContextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: { canDecouple: "canDecouple" }, outputs: { dateContextChange: "dateContextChange" }, host: { classAttribute: "d-flex a-i-center gap-4" }, viewQueries: [{ propertyName: "action", first: true, predicate: DashboardChildActionComponent, descendants: true }], ngImport: i0, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled\"\n [groupId]=\"'timecontext'\"\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: globalDate }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: localDate }\"\n></ng-container>\n\n<ng-template #dateTimePicker let-date=\"date\">\n <label>{{ 'Time range' | translate }}</label>\n <div\n class=\"dropdown m-r-4\"\n dropdown\n #dropdown=\"bs-dropdown\"\n container=\"body\"\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-1 d-flex a-i-center\"\n dropdownToggle\n title=\"{{ date[0] | c8yDate: 'short' }} \u2014 {{ date[1] | c8yDate: 'short' }}\"\n aria-haspopup=\"true\"\n >\n <span>{{ date[0] | c8yDate: 'shortDate' }} \u2014 {{ date[1] | c8yDate: 'shortDate' }}</span>\n <span class=\"caret m-r-8 m-l-4\"></span>\n </button>\n\n <div *dropdownMenu class=\"dropdown-menu dropdown-menu--date-range\">\n <div class=\"p-16\">\n <formly-form [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"reset(); dropdown.isOpen = false\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n translate\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Range' | translate\"\n [ngModel]=\"currentPredefinedTimeSpan\"\n (ngModelChange)=\"predefinedDateFromSelected($event)\"\n >\n <option value=\"undefined\" disabled=\"true\">{{ 'Custom range`time`' | translate }}</option>\n <option *ngFor=\"let dateFrom of predefinedTimeSpanList\" [ngValue]=\"dateFrom\">\n {{ dateFrom.title }}\n </option>\n </select>\n <span></span>\n </div>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button (click)=\"toggleDecoupling();\" type=\"button\">\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { 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: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4$1.FormlyForm, selector: "formly-form", inputs: ["model", "fields", "options", "form"], outputs: ["modelChange"] }, { kind: "component", type: DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] });
23406
23406
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetTimeContextComponent, decorators: [{
23407
23407
  type: Component,
23408
23408
  args: [{ selector: 'c8y-widget-time-context', host: { class: 'd-flex a-i-center gap-4' }, template: "<c8y-action-bar-item\n *ngIf=\"isCoupled\"\n [groupId]=\"'timecontext'\"\n [placement]=\"'left'\"\n itemClass=\"navbar-form\"\n>\n <ng-container\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: globalDate }\"\n ></ng-container>\n</c8y-action-bar-item>\n\n<ng-container\n *ngIf=\"!isCoupled\"\n [ngTemplateOutlet]=\"dateTimePicker\"\n [ngTemplateOutletContext]=\"{ date: localDate }\"\n></ng-container>\n\n<ng-template #dateTimePicker let-date=\"date\">\n <label>{{ 'Time range' | translate }}</label>\n <div\n class=\"dropdown m-r-4\"\n dropdown\n #dropdown=\"bs-dropdown\"\n container=\"body\"\n [insideClick]=\"true\"\n >\n <button\n class=\"dropdown-toggle form-control l-h-1 d-flex a-i-center\"\n dropdownToggle\n title=\"{{ date[0] | c8yDate: 'short' }} \u2014 {{ date[1] | c8yDate: 'short' }}\"\n aria-haspopup=\"true\"\n >\n <span>{{ date[0] | c8yDate: 'shortDate' }} \u2014 {{ date[1] | c8yDate: 'shortDate' }}</span>\n <span class=\"caret m-r-8 m-l-4\"></span>\n </button>\n\n <div *dropdownMenu class=\"dropdown-menu dropdown-menu--date-range\">\n <div class=\"p-16\">\n <formly-form [form]=\"form\" [fields]=\"fields\" [model]=\"model\"></formly-form>\n </div>\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"reset(); dropdown.isOpen = false\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"applyDatetimeContext(); dropdown.isOpen = false\"\n [disabled]=\"(form.pristine && form.untouched) || form.invalid\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n translate\n >\n Apply\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [attr.aria-label]=\"'Range' | translate\"\n [ngModel]=\"currentPredefinedTimeSpan\"\n (ngModelChange)=\"predefinedDateFromSelected($event)\"\n >\n <option value=\"undefined\" disabled=\"true\">{{ 'Custom range`time`' | translate }}</option>\n <option *ngFor=\"let dateFrom of predefinedTimeSpanList\" [ngValue]=\"dateFrom\">\n {{ dateFrom.title }}\n </option>\n </select>\n <span></span>\n </div>\n</ng-template>\n\n<c8y-dashboard-child-action>\n <button (click)=\"toggleDecoupling();\" type=\"button\">\n <i [c8yIcon]=\"isCoupled ? 'schedule1' : 'today'\"></i>\n <span class=\"m-l-4\">\n {{ (isCoupled ? decoupleTimeContextLabel : coupleTimeContextLabel) | translate }}\n </span>\n </button>\n</c8y-dashboard-child-action>\n" }]
@@ -23532,7 +23532,7 @@ class WidgetsDashboardComponent {
23532
23532
  }
23533
23533
  }
23534
23534
  WidgetsDashboardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetsDashboardComponent, deps: [{ token: DynamicComponentService }, { token: i1$3.TranslateService }, { token: i1.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component });
23535
- WidgetsDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: { widgets: "widgets", context: "context", contextDashboard: "contextDashboard", _settings: ["settings", "_settings"], breadcrumb: "breadcrumb" }, outputs: { onAddWidget: "onAddWidget", onEditWidget: "onEditWidget", onDeleteWidget: "onDeleteWidget", onChangeDashboard: "onChangeDashboard", onEditDashboard: "onEditDashboard", onCopyDashboard: "onCopyDashboard", onDeleteDashboard: "onDeleteDashboard", onFreeze: "onFreeze", onChangeStart: "onChangeStart", onChangeEnd: "onChangeEnd" }, host: { styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, providers: [WidgetsDashboardEventService], ngImport: i0, template: "<c8y-title *ngIf=\"!!settings.title\">\n {{ settings.title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!!breadcrumb\">\n <c8y-breadcrumb-item\n [icon]=\"breadcrumb.icon\"\n [label]=\"breadcrumb.label\"\n [path]=\"breadcrumb.path\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"onAddWidget.observers.length\">\n <button\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"onEditDashboard.observers.length\">\n <button\n title=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onEditDashboard.emit()\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"settings.allowFullscreen\">\n <button\n title=\"{{ 'Full screen' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"toggleFullscreen()\"\n >\n <i [c8yIcon]=\"fullScreen() ? 'compress' : 'expand'\"></i>\n {{ 'Full screen' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"navbar-form\"\n *ngIf=\"onFreeze.observers.length\"\n>\n <button\n title=\"{{ 'Lock/unlock this dashboard' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n [ngClass]=\"{ active: settings.isFrozen }\"\n (click)=\"onFreeze.emit(settings)\"\n [disabled]=\"settings.isDisabled\"\n uib-btn-checkbox\n >\n <i [c8yIcon]=\"settings.isFrozen ? 'lock' : 'unlock'\"></i>\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{\n settings.isCopyDisabled ? copyDashboardWarningMessage : ('Copy dashboard' | translate)\n }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"settings.isCopyDisabled\"\n >\n <i c8yIcon=\"clone\"></i>\n <span class=\"m-l-4\" translate>Copy dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-3000\"\n *ngIf=\"settings.canDelete && onDeleteDashboard.observers.length\"\n>\n <button\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n >\n <i c8yIcon=\"delete\"></i>\n <span class=\"m-l-4\" translate>Delete dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading class=\"col-xs-12 text-center\" *ngIf=\"isLoadingWidgets$ | async\"></c8y-loading>\n</ng-template>\n\n<ng-container *ngIf=\"!(isLoadingWidgets$ | async); else loadingIndicator\">\n <ng-container *ngIf=\"resolvedWidgets$ | async as widgetsToDisplay\">\n <!-- empty state -->\n <c8y-ui-empty-state\n *ngIf=\"widgetsToDisplay?.length === 0\"\n [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n >\n <div *ngIf=\"!settings.isFrozen && onAddWidget.observers.length\">\n <p translate>Add widgets to this dashboard.</p>\n <div>\n <button\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n class=\"btn btn-primary m-t-16\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small translate ngNonBindable>\n Find out more in the\n <a c8y-guide-href=\"users-guide/cockpit/#dashboards\">User guide`KEEP_ORIGINAL`</a>\n .\n </small>\n </p>\n </div>\n </c8y-ui-empty-state>\n\n <c8y-dashboard\n [columns]=\"settings.columns\"\n (dashboardChange)=\"onChangeDashboard.emit($event)\"\n #dashboard\n >\n <c8y-dashboard-child\n *ngFor=\"let widget of widgetsToDisplay\"\n [x]=\"widget._x\"\n [y]=\"widget._y\"\n [width]=\"widget._width || settings.defaultWidth\"\n [height]=\"widget._height || settings.defaultHeight\"\n [margin]=\"settings.widgetMargin\"\n [isFrozen]=\"settings.isFrozen || settings.isDisabled\"\n [class]=\"widget.classes\"\n [data]=\"widget\"\n [useIntersection]=\"true\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n #child\n >\n <c8y-dashboard-child-title>\n <span *ngIf=\"settings.translateWidgetTitle\">\n {{ widget.title | translate }}\n </span>\n <span *ngIf=\"!settings.translateWidgetTitle\">\n {{ widget.title }}\n </span>\n </c8y-dashboard-child-title>\n <c8y-dashboard-child-action *ngIf=\"onEditWidget.observers.length\">\n <button\n title=\"{{ 'Edit widget' | translate }}\"\n type=\"button\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span class=\"m-l-4\" translate>Edit</span>\n </button>\n </c8y-dashboard-child-action>\n <c8y-dashboard-child-action *ngIf=\"onDeleteWidget.observers.length\">\n <button\n title=\"{{ 'Remove widget' | translate }}\"\n type=\"button\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span class=\"m-l-4\" translate>Remove</span>\n </button>\n </c8y-dashboard-child-action>\n\n <c8y-widget-time-context\n *ngIf=\"\n widget.config?.displaySettings?.globalTimeContext &&\n widget.config?.widgetInstanceGlobalTimeContext\n \"\n (dateContextChange)=\"updateWidgetConfig({ date: $event }, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n ></c8y-widget-time-context>\n\n <c8y-dynamic-component\n [componentId]=\"widget.componentId || widget.name\"\n [config]=\"\n widget.templateUrl || widget.widgetComponent\n ? { child: widget, dashboard: contextDashboard, context: context }\n : widget.config\n \"\n *ngIf=\"child.intersected\"\n (updateWidgetClasses)=\"updateWidgetClasses(widget, $event)\"\n ></c8y-dynamic-component>\n </c8y-dashboard-child>\n </c8y-dashboard>\n </ng-container>\n</ng-container>\n\n", dependencies: [{ kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: DashboardChildComponent, selector: "c8y-dashboard-child", inputs: ["x", "y", "width", "height", "data", "margin", "isFrozen", "useIntersection", "class"], outputs: ["changeStart", "changeEnd"] }, { kind: "component", type: DashboardComponent, selector: "c8y-dashboard", inputs: ["columns", "gap", "rows"], outputs: ["dashboardChange"] }, { kind: "component", type: DashboardChildTitleComponent, selector: "c8y-dashboard-child-title" }, { kind: "component", type: DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: ["canDecouple"], outputs: ["dateContextChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
23535
+ WidgetsDashboardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: { widgets: "widgets", context: "context", contextDashboard: "contextDashboard", _settings: ["settings", "_settings"], breadcrumb: "breadcrumb" }, outputs: { onAddWidget: "onAddWidget", onEditWidget: "onEditWidget", onDeleteWidget: "onDeleteWidget", onChangeDashboard: "onChangeDashboard", onEditDashboard: "onEditDashboard", onCopyDashboard: "onCopyDashboard", onDeleteDashboard: "onDeleteDashboard", onFreeze: "onFreeze", onChangeStart: "onChangeStart", onChangeEnd: "onChangeEnd" }, host: { styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, providers: [WidgetsDashboardEventService], ngImport: i0, template: "<c8y-title *ngIf=\"!!settings.title\">\n {{ settings.title | translate }}\n</c8y-title>\n\n<c8y-breadcrumb *ngIf=\"!!breadcrumb\">\n <c8y-breadcrumb-item\n [icon]=\"breadcrumb.icon\"\n [label]=\"breadcrumb.label\"\n [path]=\"breadcrumb.path\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"onAddWidget.observers.length\">\n <button\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"onEditDashboard.observers.length\">\n <button\n title=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onEditDashboard.emit()\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\" *ngIf=\"settings.allowFullscreen\">\n <button\n title=\"{{ 'Full screen' | translate }}\"\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"toggleFullscreen()\"\n >\n <i [c8yIcon]=\"fullScreen() ? 'compress' : 'expand'\"></i>\n {{ 'Full screen' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"navbar-form\"\n *ngIf=\"onFreeze.observers.length\"\n>\n <button\n title=\"{{ 'Lock/unlock this dashboard' | translate }}\"\n type=\"button\"\n class=\"btn btn-default\"\n [ngClass]=\"{ active: settings.isFrozen }\"\n (click)=\"onFreeze.emit(settings)\"\n [disabled]=\"settings.isDisabled\"\n uib-btn-checkbox\n >\n <i [c8yIcon]=\"settings.isFrozen ? 'lock' : 'unlock'\"></i>\n </button>\n</c8y-action-bar-item>\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{\n settings.isCopyDisabled ? copyDashboardWarningMessage : ('Copy dashboard' | translate)\n }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"settings.isCopyDisabled\"\n >\n <i c8yIcon=\"clone\"></i>\n <span class=\"m-l-4\" translate>Copy dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-3000\"\n *ngIf=\"settings.canDelete && onDeleteDashboard.observers.length\"\n>\n <button\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n >\n <i c8yIcon=\"delete\"></i>\n <span class=\"m-l-4\" translate>Delete dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading class=\"col-xs-12 text-center\" *ngIf=\"isLoadingWidgets$ | async\"></c8y-loading>\n</ng-template>\n\n<ng-container *ngIf=\"!(isLoadingWidgets$ | async); else loadingIndicator\">\n <ng-container *ngIf=\"resolvedWidgets$ | async as widgetsToDisplay\">\n <!-- empty state -->\n <c8y-ui-empty-state\n *ngIf=\"widgetsToDisplay?.length === 0\"\n [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n >\n <div *ngIf=\"!settings.isFrozen && onAddWidget.observers.length\">\n <p translate>Add widgets to this dashboard.</p>\n <div>\n <button\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isFrozen || settings.isDisabled\"\n (click)=\"onAddWidget.emit()\"\n class=\"btn btn-primary m-t-16\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small translate ngNonBindable>\n Find out more in the\n <a c8y-guide-href=\"users-guide/cockpit/#dashboards\">User guide`KEEP_ORIGINAL`</a>\n .\n </small>\n </p>\n </div>\n </c8y-ui-empty-state>\n\n <c8y-dashboard\n [columns]=\"settings.columns\"\n (dashboardChange)=\"onChangeDashboard.emit($event)\"\n #dashboard\n >\n <c8y-dashboard-child\n *ngFor=\"let widget of widgetsToDisplay\"\n [x]=\"widget._x\"\n [y]=\"widget._y\"\n [width]=\"widget._width || settings.defaultWidth\"\n [height]=\"widget._height || settings.defaultHeight\"\n [margin]=\"settings.widgetMargin\"\n [isFrozen]=\"settings.isFrozen || settings.isDisabled\"\n [class]=\"widget.classes\"\n [data]=\"widget\"\n [useIntersection]=\"true\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n #child\n >\n <c8y-dashboard-child-title>\n <span *ngIf=\"settings.translateWidgetTitle\">\n {{ widget.title | translate }}\n </span>\n <span *ngIf=\"!settings.translateWidgetTitle\">\n {{ widget.title }}\n </span>\n </c8y-dashboard-child-title>\n <c8y-dashboard-child-action *ngIf=\"onEditWidget.observers.length\">\n <button\n title=\"{{ 'Edit widget' | translate }}\"\n type=\"button\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span class=\"m-l-4\" translate>Edit</span>\n </button>\n </c8y-dashboard-child-action>\n <c8y-dashboard-child-action *ngIf=\"onDeleteWidget.observers.length\">\n <button\n title=\"{{ 'Remove widget' | translate }}\"\n type=\"button\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span class=\"m-l-4\" translate>Remove</span>\n </button>\n </c8y-dashboard-child-action>\n\n <c8y-widget-time-context\n *ngIf=\"\n widget.config?.displaySettings?.globalTimeContext &&\n widget.config?.widgetInstanceGlobalTimeContext\n \"\n (dateContextChange)=\"updateWidgetConfig({ date: $event }, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n ></c8y-widget-time-context>\n\n <c8y-dynamic-component\n [componentId]=\"widget.componentId || widget.name\"\n [config]=\"\n widget.templateUrl || widget.widgetComponent\n ? { child: widget, dashboard: contextDashboard, context: context }\n : widget.config\n \"\n *ngIf=\"child.intersected\"\n (updateWidgetClasses)=\"updateWidgetClasses(widget, $event)\"\n ></c8y-dynamic-component>\n </c8y-dashboard-child>\n </c8y-dashboard>\n </ng-container>\n</ng-container>\n\n", dependencies: [{ kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading" }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "component", type: DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "directive", type: GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: DashboardChildComponent, selector: "c8y-dashboard-child", inputs: ["x", "y", "width", "height", "data", "margin", "isFrozen", "useIntersection", "class"], outputs: ["changeStart", "changeEnd"] }, { kind: "component", type: DashboardComponent, selector: "c8y-dashboard", inputs: ["columns", "gap", "rows"], outputs: ["dashboardChange"] }, { kind: "component", type: DashboardChildTitleComponent, selector: "c8y-dashboard-child-title" }, { kind: "component", type: DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: ["canDecouple"], outputs: ["dateContextChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
23536
23536
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WidgetsDashboardComponent, decorators: [{
23537
23537
  type: Component,
23538
23538
  args: [{ selector: 'c8y-widgets-dashboard', host: {
@@ -23585,7 +23585,7 @@ DashboardModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
23585
23585
  WidgetTimeContextComponent], imports: [CommonModule,
23586
23586
  ActionBarModule,
23587
23587
  DynamicComponentModule,
23588
- DragDropModule, i1$7.BsDropdownModule, HeaderModule,
23588
+ DragDropModule, i1$6.BsDropdownModule, HeaderModule,
23589
23589
  DocsModule,
23590
23590
  BreadcrumbModule,
23591
23591
  FormsModule$1,
@@ -23820,7 +23820,7 @@ class CellRendererComponent {
23820
23820
  }
23821
23821
  }
23822
23822
  CellRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CellRendererComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
23823
- CellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CellRendererComponent, selector: "c8y-cell-renderer", inputs: { _spec: ["spec", "_spec"] }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"spec.renderer\">\n <ng-container\n *ngIf=\"rendererType === 'TEMPLATE'\"\n [ngTemplateOutlet]=\"spec.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: spec.context }\"\n ></ng-container>\n\n <ng-container\n *ngIf=\"rendererType === 'COMPONENT'\"\n [ngComponentOutlet]=\"spec.renderer\"\n [ngComponentOutletInjector]=\"rendererInjector\"\n ></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!spec.renderer\">\n <span title=\"{{ spec.context.value | stringifyObject }}\">\n {{ spec.context.value | stringifyObject }}\n </span>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1$5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: StringifyObjectPipe, name: "stringifyObject" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23823
+ CellRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CellRendererComponent, selector: "c8y-cell-renderer", inputs: { _spec: ["spec", "_spec"] }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"spec.renderer\">\n <ng-container\n *ngIf=\"rendererType === 'TEMPLATE'\"\n [ngTemplateOutlet]=\"spec.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: spec.context }\"\n ></ng-container>\n\n <ng-container\n *ngIf=\"rendererType === 'COMPONENT'\"\n [ngComponentOutlet]=\"spec.renderer\"\n [ngComponentOutletInjector]=\"rendererInjector\"\n ></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!spec.renderer\">\n <span title=\"{{ spec.context.value | stringifyObject }}\">\n {{ spec.context.value | stringifyObject }}\n </span>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: StringifyObjectPipe, name: "stringifyObject" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23824
23824
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CellRendererComponent, decorators: [{
23825
23825
  type: Component,
23826
23826
  args: [{ selector: 'c8y-cell-renderer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"spec.renderer\">\n <ng-container\n *ngIf=\"rendererType === 'TEMPLATE'\"\n [ngTemplateOutlet]=\"spec.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: spec.context }\"\n ></ng-container>\n\n <ng-container\n *ngIf=\"rendererType === 'COMPONENT'\"\n [ngComponentOutlet]=\"spec.renderer\"\n [ngComponentOutletInjector]=\"rendererInjector\"\n ></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!spec.renderer\">\n <span title=\"{{ spec.context.value | stringifyObject }}\">\n {{ spec.context.value | stringifyObject }}\n </span>\n</ng-container>\n" }]
@@ -23877,7 +23877,7 @@ class FilteringFormRendererComponent {
23877
23877
  }
23878
23878
  }
23879
23879
  FilteringFormRendererComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilteringFormRendererComponent, deps: [{ token: i0.Injector }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
23880
- FilteringFormRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FilteringFormRendererComponent, selector: "c8y-filtering-form-renderer", inputs: { _spec: ["spec", "_spec"] }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"spec.renderer\">\n <ng-container\n *ngIf=\"rendererType === 'TEMPLATE'\"\n [ngTemplateOutlet]=\"spec.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: spec.context }\"\n ></ng-container>\n\n <ng-container\n *ngIf=\"rendererType === 'COMPONENT'\"\n [ngComponentOutlet]=\"spec.renderer\"\n [ngComponentOutletInjector]=\"rendererInjector\"\n ></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!spec.renderer\">\n <div class=\"form-group p-t-8\">\n <label>{{ 'Filter text' | translate }}</label>\n <input\n class=\"form-control\"\n [(ngModel)]=\"defaultRendererFilterText\"\n (keyup.enter)=\"\n spec.context.applyFilter({\n filterPredicate: defaultRendererFilterText\n })\n \"\n />\n </div>\n\n <div class=\"data-grid__dropdown__footer d-flex separator-top\">\n <button\n title=\"{{ 'Reset' | translate }}\"\n class=\"btn btn-default btn-sm flex-grow m-r-8\"\n (click)=\"defaultRendererFilterText = ''; spec.context.resetFilter()\"\n >\n {{ 'Reset' | translate }}\n </button>\n <button\n title=\"{{ 'Apply' | translate }}\"\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"\n spec.context.applyFilter({\n filterPredicate: defaultRendererFilterText\n })\n \"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1$5.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23880
+ FilteringFormRendererComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FilteringFormRendererComponent, selector: "c8y-filtering-form-renderer", inputs: { _spec: ["spec", "_spec"] }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"spec.renderer\">\n <ng-container\n *ngIf=\"rendererType === 'TEMPLATE'\"\n [ngTemplateOutlet]=\"spec.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: spec.context }\"\n ></ng-container>\n\n <ng-container\n *ngIf=\"rendererType === 'COMPONENT'\"\n [ngComponentOutlet]=\"spec.renderer\"\n [ngComponentOutletInjector]=\"rendererInjector\"\n ></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!spec.renderer\">\n <div class=\"form-group p-t-8\">\n <label>{{ 'Filter text' | translate }}</label>\n <input\n class=\"form-control\"\n [(ngModel)]=\"defaultRendererFilterText\"\n (keyup.enter)=\"\n spec.context.applyFilter({\n filterPredicate: defaultRendererFilterText\n })\n \"\n />\n </div>\n\n <div class=\"data-grid__dropdown__footer d-flex separator-top\">\n <button\n title=\"{{ 'Reset' | translate }}\"\n class=\"btn btn-default btn-sm flex-grow m-r-8\"\n (click)=\"defaultRendererFilterText = ''; spec.context.resetFilter()\"\n >\n {{ 'Reset' | translate }}\n </button>\n <button\n title=\"{{ 'Apply' | translate }}\"\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"\n spec.context.applyFilter({\n filterPredicate: defaultRendererFilterText\n })\n \"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i2.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { 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: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
23881
23881
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FilteringFormRendererComponent, decorators: [{
23882
23882
  type: Component,
23883
23883
  args: [{ selector: 'c8y-filtering-form-renderer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"spec.renderer\">\n <ng-container\n *ngIf=\"rendererType === 'TEMPLATE'\"\n [ngTemplateOutlet]=\"spec.renderer\"\n [ngTemplateOutletContext]=\"{ $implicit: spec.context }\"\n ></ng-container>\n\n <ng-container\n *ngIf=\"rendererType === 'COMPONENT'\"\n [ngComponentOutlet]=\"spec.renderer\"\n [ngComponentOutletInjector]=\"rendererInjector\"\n ></ng-container>\n</ng-container>\n\n<ng-container *ngIf=\"!spec.renderer\">\n <div class=\"form-group p-t-8\">\n <label>{{ 'Filter text' | translate }}</label>\n <input\n class=\"form-control\"\n [(ngModel)]=\"defaultRendererFilterText\"\n (keyup.enter)=\"\n spec.context.applyFilter({\n filterPredicate: defaultRendererFilterText\n })\n \"\n />\n </div>\n\n <div class=\"data-grid__dropdown__footer d-flex separator-top\">\n <button\n title=\"{{ 'Reset' | translate }}\"\n class=\"btn btn-default btn-sm flex-grow m-r-8\"\n (click)=\"defaultRendererFilterText = ''; spec.context.resetFilter()\"\n >\n {{ 'Reset' | translate }}\n </button>\n <button\n title=\"{{ 'Apply' | translate }}\"\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"\n spec.context.applyFilter({\n filterPredicate: defaultRendererFilterText\n })\n \"\n >\n {{ 'Apply' | translate }}\n </button>\n </div>\n</ng-container>\n" }]
@@ -23923,12 +23923,12 @@ class ConfigureCustomColumnComponent {
23923
23923
  }
23924
23924
  }
23925
23925
  }
23926
- ConfigureCustomColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ConfigureCustomColumnComponent, deps: [{ token: i5.FormBuilder }, { token: i1$9.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
23926
+ ConfigureCustomColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ConfigureCustomColumnComponent, deps: [{ token: i5.FormBuilder }, { token: i1$8.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
23927
23927
  ConfigureCustomColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ConfigureCustomColumnComponent, selector: "c8y-configure-custom-column", outputs: { onAddCustomColumn: "onAddCustomColumn" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["columnConfigForm"], descendants: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\" translate>Configure custom column</h3>\n </div>\n\n <form class=\"d-contents\" #columnConfigForm=\"ngForm\" [formGroup]=\"formGroup\">\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"modal-body\">\n <c8y-form-group>\n <label for=\"header\" translate>Header</label>\n <input\n id=\"header\"\n data-cy=\"configure-custom-column--header\"\n formControlName=\"header\"\n class=\"form-control\"\n autocomplete=\"off\"\n [placeholder]=\"'e.g. Agent name' | translate\"\n [required]=\"true\"\n uniqueByPath\n [collection]=\"columns\"\n path=\"header\"\n [comparator]=\"comparator\"\n />\n <c8y-messages>\n <c8y-message\n name=\"uniqueByPath\"\n [text]=\"uniqueHeaderMsg\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"fragmentPath\" translate>Fragment path</label>\n <input\n id=\"fragmentPath\"\n data-cy=\"configure-custom-column--fragmentPath\"\n formControlName=\"path\"\n class=\"form-control\"\n autocomplete=\"off\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y_Agent.name' }\"\n />\n </c8y-form-group>\n <label class=\"c8y-switch\" [title]=\"'Add another column after saving this one' | translate\">\n <input type=\"checkbox\" formControlName=\"addAnother\" class=\"form-control\" />\n <span></span>\n <span translate>Add another column after saving this one</span>\n </label>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button title=\"{{ 'Cancel' | translate }}\" class=\"btn btn-default\" (click)=\"modalRef.hide()\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n [disabled]=\"columnConfigForm.form.pristine || !columnConfigForm.form.valid\"\n (click)=\"addColumn()\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: UniqueInCollectionByPathValidationDirective, selector: "[uniqueByPath]", inputs: ["collection", "path", "comparator"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
23928
23928
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ConfigureCustomColumnComponent, decorators: [{
23929
23929
  type: Component,
23930
23930
  args: [{ selector: 'c8y-configure-custom-column', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header separator-bottom\">\n <h3 id=\"modal-title\" translate>Configure custom column</h3>\n </div>\n\n <form class=\"d-contents\" #columnConfigForm=\"ngForm\" [formGroup]=\"formGroup\">\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"modal-body\">\n <c8y-form-group>\n <label for=\"header\" translate>Header</label>\n <input\n id=\"header\"\n data-cy=\"configure-custom-column--header\"\n formControlName=\"header\"\n class=\"form-control\"\n autocomplete=\"off\"\n [placeholder]=\"'e.g. Agent name' | translate\"\n [required]=\"true\"\n uniqueByPath\n [collection]=\"columns\"\n path=\"header\"\n [comparator]=\"comparator\"\n />\n <c8y-messages>\n <c8y-message\n name=\"uniqueByPath\"\n [text]=\"uniqueHeaderMsg\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <c8y-form-group>\n <label for=\"fragmentPath\" translate>Fragment path</label>\n <input\n id=\"fragmentPath\"\n data-cy=\"configure-custom-column--fragmentPath\"\n formControlName=\"path\"\n class=\"form-control\"\n autocomplete=\"off\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y_Agent.name' }\"\n />\n </c8y-form-group>\n <label class=\"c8y-switch\" [title]=\"'Add another column after saving this one' | translate\">\n <input type=\"checkbox\" formControlName=\"addAnother\" class=\"form-control\" />\n <span></span>\n <span translate>Add another column after saving this one</span>\n </label>\n </div>\n </div>\n\n <div class=\"modal-footer\">\n <button title=\"{{ 'Cancel' | translate }}\" class=\"btn btn-default\" (click)=\"modalRef.hide()\">\n {{ 'Cancel' | translate }}\n </button>\n <button\n title=\"{{ 'Save' | translate }}\"\n class=\"btn btn-primary\"\n [disabled]=\"columnConfigForm.form.pristine || !columnConfigForm.form.valid\"\n (click)=\"addColumn()\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </form>\n</div>\n" }]
23931
- }], ctorParameters: function () { return [{ type: i5.FormBuilder }, { type: i1$9.BsModalRef }]; }, propDecorators: { form: [{
23931
+ }], ctorParameters: function () { return [{ type: i5.FormBuilder }, { type: i1$8.BsModalRef }]; }, propDecorators: { form: [{
23932
23932
  type: ViewChild,
23933
23933
  args: ['columnConfigForm', { static: false }]
23934
23934
  }], onAddCustomColumn: [{
@@ -25181,13 +25181,13 @@ class DataGridComponent {
25181
25181
  : (_f = (_e = this.configurationStrategy.getContext()) === null || _e === void 0 ? void 0 : _e.configFilter) === null || _f === void 0 ? void 0 : _f[configPart])) !== null && _g !== void 0 ? _g : true);
25182
25182
  }
25183
25183
  }
25184
- DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DataGridComponent, deps: [{ token: DATA_GRID_CONFIGURATION_STRATEGY, optional: true }, { token: DataGridService }, { token: i1$6.DomSanitizer }, { token: i0.ComponentFactoryResolver }, { token: GainsightService }, { token: i1$9.BsModalService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
25184
+ DataGridComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DataGridComponent, deps: [{ token: DATA_GRID_CONFIGURATION_STRATEGY, optional: true }, { token: DataGridService }, { token: i1$5.DomSanitizer }, { token: i0.ComponentFactoryResolver }, { token: GainsightService }, { token: i1$8.BsModalService }, { token: AlertService }], target: i0.ɵɵFactoryTarget.Component });
25185
25185
  DataGridComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: DataGridComponent, selector: "c8y-data-grid", inputs: { title: "title", loadMoreItemsLabel: "loadMoreItemsLabel", loadingItemsLabel: "loadingItemsLabel", showSearch: "showSearch", refresh: "refresh", _columns: ["columns", "_columns"], _rows: ["rows", "_rows"], _pagination: ["pagination", "_pagination"], _infiniteScroll: ["infiniteScroll", "_infiniteScroll"], _serverSideDataCallback: ["serverSideDataCallback", "_serverSideDataCallback"], _selectable: ["selectable", "_selectable"], _selectionPrimaryKey: ["selectionPrimaryKey", "_selectionPrimaryKey"], _displayOptions: ["displayOptions", "_displayOptions"], _actionControls: ["actionControls", "_actionControls"], _bulkActionControls: ["bulkActionControls", "_bulkActionControls"], _headerActionControls: ["headerActionControls", "_headerActionControls"], searchText: "searchText", configureColumnsEnabled: "configureColumnsEnabled", showCounterWarning: "showCounterWarning" }, outputs: { rowMouseOver: "rowMouseOver", rowMouseLeave: "rowMouseLeave", rowClick: "rowClick", onConfigChange: "onConfigChange", onBeforeFilter: "onBeforeFilter", onBeforeSearch: "onBeforeSearch", onFilter: "onFilter", itemsSelect: "itemsSelect", onReload: "onReload", onAddCustomColumn: "onAddCustomColumn", onRemoveCustomColumn: "onRemoveCustomColumn", onColumnFilterReset: "onColumnFilterReset", onSort: "onSort", onPageSizeChange: "onPageSizeChange", onColumnReordered: "onColumnReordered", onColumnVisibilityChange: "onColumnVisibilityChange" }, host: { classAttribute: "d-contents" }, providers: [
25186
25186
  {
25187
25187
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
25188
25188
  useExisting: forwardRef(() => DataGridComponent)
25189
25189
  }
25190
- ], queries: [{ propertyName: "columnRenderers", predicate: ColumnDirective }], viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scroll"], descendants: true, static: true }, { propertyName: "infiniteScrollContainer", first: true, predicate: ["infiniteScrollContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "thRefs", predicate: CdkHeaderCell, descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n #scroll\n class=\"table-data-grid-scroll\"\n [ngClass]=\"{ 'table-data-grid__overlay': (dataSource.loading$ | async) && !loadMoreComponent }\"\n>\n <div\n class=\"table-data-grid__loading--wrapper\"\n *ngIf=\"(dataSource.loading$ | async) && !loadMoreComponent\"\n >\n <div class=\"table-data-grid__loading--loader\">\n <c8y-progress-bar [message]=\"loadingItemsLabel\"></c8y-progress-bar>\n </div>\n </div>\n\n <div *ngIf=\"displayOptions.gridHeader\" class=\"table-data-grid-header separator large-padding\">\n <div class=\"h4\" [ngClass]=\"{ 'm-r-16': !!title }\">{{ title | translate }}</div>\n\n <ng-container *ngIf=\"displayOptions.filter\">\n <span *ngIf=\"!filteringApplied\">\n <span class=\"label label-default m-r-4\" translate>No filters</span>\n <small\n *ngIf=\"!!filteringLabelsParams.allItemsCount\"\n class=\"m-r-4\"\n ngNonBindable\n translate\n [translateParams]=\"filteringLabelsParams\"\n >\n {{ filteredItemsCount }} of {{ allItemsCount }} items\n </small>\n </span>\n <span *ngIf=\"filteringApplied\">\n <ng-container *ngIf=\"!!filteringLabelsParams.allItemsCount\">\n <span class=\"badge badge-info m-r-4\">\n {{ (dataSource.stats$ | async).filteredSize }}\n </span>\n <small ngNonBindable translate [translateParams]=\"filteringLabelsParams\">\n of {{ allItemsCount }} items\n </small>\n </ng-container>\n <button\n title=\"{{ 'Clear filters' | translate }}\"\n class=\"btn btn-sm btn-default m-l-8 m-r-4\"\n (click)=\"clearFilters()\"\n >\n {{ 'Clear filters' | translate }}\n </button>\n </span>\n\n <span class=\"hidden-xs hidden-sm\" *ngIf=\"displayOptions.filter\">\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{ 'Click the column headers to apply filters.' | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Click the column headers to apply filters.' | translate\"\n data-cy=\"data-grid--help-filters\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </span>\n\n <span class=\"hidden-xs hidden-sm\" *ngIf=\"showCounterWarning\">\n <button\n class=\"btn-clean text-primary\"\n popover=\"{{\n 'The counter for the total number of items might be inaccurate.' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n aria-label=\"{{\n 'The counter for the total number of items might be inaccurate.' | translate\n }}\"\n >\n <i c8yIcon=\"warning\"></i>\n </button>\n </span>\n </ng-container>\n\n <div class=\"m-l-auto\">\n <div class=\"btnbar d-flex a-i-center\">\n <ng-container *ngFor=\"let headerActionControl of headerActionControls\">\n <ng-container *ngIf=\"headerActionControl | isControlVisible\">\n <ng-container *ngIf=\"!headerActionControl.template; else customTemplate\">\n <button\n title=\"{{ headerActionControl.text | translate }}\"\n class=\"btnbar-btn btn-link\"\n (click)=\"headerActionControl.callback()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.CUSTOM_ACTION,\n customActionName: headerActionControl.text,\n type: headerActionControl.type\n }\"\n >\n <i [c8yIcon]=\"headerActionControl.icon\" class=\"m-r-4\"></i>\n <span>{{ headerActionControl.text | translate }}</span>\n </button>\n </ng-container>\n <ng-template #customTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n headerActionControl.template;\n context: { headerActionControl: headerActionControl }\n \"\n ></ng-container>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <div\n *ngIf=\"configureColumnsEnabled\"\n class=\"dropdown\"\n dropdown\n #ddConfigureColumns=\"bs-dropdown\"\n [cdkTrapFocus]=\"ddConfigureColumns.isOpen\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n >\n <button\n title=\"{{ 'Configure columns' | translate }}\"\n data-cy=\"data-grid--custom-column-btn\"\n class=\"btnbar-btn\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"columns\" class=\"m-r-4\"></i>\n <span>{{ 'Configure columns' | translate }}</span>\n </button>\n\n <ul\n class=\"dropdown-menu data-grid__dropdown\"\n *dropdownMenu\n (click)=\"$event.stopPropagation()\"\n >\n <li class=\"bg-level-0\">\n <div\n class=\"list-group m-0\"\n cdkDropList\n (cdkDropListDropped)=\"onColumnDrop($event)\"\n >\n <div\n *ngFor=\"let column of columns\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n >\n <ng-container *ngIf=\"!column.positionFixed\">\n <div class=\"list-group-item draggable-after p-0 a-i-center\">\n <label\n title=\"{{ (column.header | translate) || column.name }}\"\n [attr.data-cy]=\"'data-grid--custom-column-header-' + column.header\"\n class=\"c8y-checkbox p-l-16\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"column.visible\"\n (change)=\"\n updateGridColumnsSize(); emitConfigChange('changeColumnVisibility')\n \"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.CHANGE_VISIBILITY,\n column: column.name,\n visible: !column.visible\n }\"\n />\n <span></span>\n <span>{{ (column.header | translate) || column.name }}</span>\n </label>\n <button\n *ngIf=\"column.custom\"\n class=\"btn btn-dot showOnHover max-width-fit a-i-center\"\n tooltip=\"{{ 'Remove`column,verb`' | translate }}\"\n [attr.aria-label]=\"'Remove`column,verb`' | translate\"\n placement=\"left\"\n container=\"body\"\n (click)=\"removeCustomColumn(poConfirm, column, ddConfigureColumns)\"\n >\n <c8y-popover-confirm\n [placement]=\"'left'\"\n [title]=\"'Confirm removal' | translate\"\n triggers=\"focus\"\n #poConfirm\n ></c8y-popover-confirm>\n <i c8yIcon=\"minus-circle\" data-cy=\"data-grid--custom-column-remove-btn\"></i>\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </li>\n <li *ngIf=\"isConfigContextKnown\" class=\"p-8 sticky-bottom separator-top\">\n <button\n title=\"{{ 'Add custom column' | translate }}\"\n class=\"btn btn-default btn-block\"\n data-cy=\"data-grid--add-custom-column\"\n (click)=\"openCustomColumnModal(); ddConfigureColumns.hide()\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span>{{ 'Add custom column' | translate }}</span>\n </button>\n </li>\n </ul>\n </div>\n\n <button\n title=\"{{ 'Reload' | translate }}\"\n data-cy=\"data-grid--reload-btn\"\n class=\"btnbar-btn btn-link\"\n [disabled]=\"dataSource.loading$ | async\"\n (click)=\"clickReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"m-r-4\"></i>\n <span>{{ 'Reload' | translate }}</span>\n </button>\n\n <div\n *ngIf=\"!serverSideDataCallback || showSearch\"\n class=\"input-group input-group-search m-l-sm-16\"\n >\n <input\n type=\"search\"\n class=\"form-control\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n [ngModel]=\"searchText\"\n (input)=\"searchText$.emit($event.target.value)\"\n />\n <div class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"searchText.length === 0\"></i>\n <i\n c8yIcon=\"times\"\n class=\"pointer\"\n *ngIf=\"searchText.length > 0\"\n (click)=\"searchText = ''; searchText$.emit('')\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.CLEAR_SEARCH }\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"table-data-grid-header-bulk-actions animated slideInDown fast\"\n *ngIf=\"selectedItemIds.length !== 0\"\n >\n <h4>\n <span ngNonBindable translate [translateParams]=\"{ count: selectedItemIds.length }\">\n {{ count }} selected item(s).\n </span>\n <br class=\"visible-xs\" />\n <small *ngIf=\"!serverSideDataCallback && selectedItemIds.length >= pagination.pageSize\">\n <a\n (click)=\"setAllItemsSelected(true)\"\n class=\"interact\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.SELECT_ALL_ITEMS }\"\n >\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ count: (dataSource.stats$ | async).filteredSize }\"\n >\n Select all {{ count }} items\n </span>\n </a>\n </small>\n </h4>\n <div class=\"m-l-auto\">\n <div class=\"btnbar d-flex\">\n <ng-container *ngFor=\"let bulkActionControl of bulkActionControls\">\n <ng-container\n *ngIf=\"bulkActionControl | isControlVisible: selectedItemIds\"\n [ngSwitch]=\"bulkActionControl.type\"\n >\n <button\n title=\"{{ 'Export' | translate }}\"\n *ngSwitchCase=\"builtInActionType.Export\"\n class=\"btnbar-btn\"\n (click)=\"bulkActionControl.callback(selectedItemIds, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.BULK_EXPORT }\"\n >\n <i c8yIcon=\"sign-out\"></i>\n <span>{{ 'Export' | translate }}</span>\n </button>\n\n <button\n title=\"{{ 'Delete' | translate }}\"\n *ngSwitchCase=\"builtInActionType.Delete\"\n class=\"btnbar-btn\"\n (click)=\"bulkActionControl.callback(selectedItemIds, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.BULK_DELETE }\"\n >\n <i c8yIcon=\"delete\"></i>\n <span>{{ 'Delete' | translate }}</span>\n </button>\n\n <button\n title=\"{{ bulkActionControl.text | translate }}\"\n *ngSwitchDefault\n class=\"btnbar-btn\"\n (click)=\"bulkActionControl.callback(selectedItemIds, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.BULK_CUSTOM_ACTION,\n customActionName: bulkActionControl.text\n }\"\n >\n <i c8yIcon=\"{{ bulkActionControl.icon }}\"></i>\n <span>{{ bulkActionControl.text | translate }}</span>\n </button>\n </ng-container>\n </ng-container>\n\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btnbar-btn\"\n (click)=\"cancel()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.BULK_CANCEL\n }\"\n >\n <i c8yIcon=\"times\"></i>\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <table\n class=\"table table-hover table-filtered-sorted table-data-grid large-padding\"\n cdk-table\n [dataSource]=\"dataSource\"\n [trackBy]=\"trackByName\"\n [class.table-striped]=\"displayOptions.striped\"\n [class.table-bordered]=\"displayOptions.bordered\"\n [class.table-data-grid-with-checkboxes]=\"selectable\"\n [class.table-data-grid-with-actions]=\"actionControls.length > 0\"\n [style.grid-template-columns]=\"styles.gridTemplateColumns\"\n (mousemove)=\"resizeHandleContainerMouseMove$.emit($event)\"\n (mouseup)=\"resizeHandleContainerMouseUp$.emit($event)\"\n >\n <ng-container\n *ngFor=\"let column of columns; let i = index; trackBy: trackByName\"\n [cdkColumnDef]=\"column.name\"\n >\n <ng-container [ngSwitch]=\"column.name\">\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <th cdk-header-cell *cdkHeaderCellDef data-type=\"icon\">\n <div>\n <label class=\"c8y-checkbox\">\n <input\n [attr.aria-label]=\"'Selected' | translate\"\n type=\"checkbox\"\n [checked]=\"currentPageSelectionState.allSelected\"\n [indeterminate]=\"\n !(\n currentPageSelectionState.allSelected ||\n currentPageSelectionState.allDeselected\n )\n \"\n (change)=\"setAllItemsInCurrentPageSelected($event.target.checked)\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.SELECT_ALL_ITEMS }\"\n />\n <span></span>\n </label>\n </div>\n </th>\n\n <td cdk-cell *cdkCellDef=\"let row\" data-type=\"icon\">\n <label class=\"c8y-checkbox\">\n <input\n [attr.aria-label]=\"'Selected' | translate\"\n type=\"checkbox\"\n [checked]=\"isItemSelected(row)\"\n (change)=\"setItemsSelected([row], $event.target.checked)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.SELECT_ITEM,\n id: row.id\n }\"\n />\n <span></span>\n </label>\n </td>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'actions'\">\n <th cdk-header-cell *cdkHeaderCellDef data-type=\"icon\">\n <p class=\"text-medium sr-only\">{{ 'Actions' | translate }}</p>\n </th>\n\n <td cdk-cell *cdkCellDef=\"let row\" data-type=\"icon\">\n <ng-container *ngIf=\"actionControls.length <= 2\">\n <ng-container *ngFor=\"let actionControl of actionControls\">\n <ng-container\n *ngIf=\"actionControl | isControlVisible: row\"\n [ngSwitch]=\"actionControl.type\"\n >\n <button\n *ngSwitchCase=\"builtInActionType.Edit\"\n class=\"btn btn-dot\"\n tooltip=\"{{ 'Edit' | translate }}\"\n [attr.aria-label]=\"'Edit' | translate\"\n [delay]=\"500\"\n container=\"body\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.EDIT_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"pencil\"></i>\n </button>\n\n <button\n type=\"button\"\n *ngSwitchCase=\"builtInActionType.Delete\"\n class=\"btn btn-dot btn-dot--danger showOnHover\"\n tooltip=\"{{ 'Delete' | translate }}\"\n data-cy=\"c8y-data-grid--remove-button-in-row\"\n [attr.aria-label]=\"'Delete' | translate\"\n [delay]=\"500\"\n container=\"body\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.DELETE_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"delete\"></i>\n </button>\n\n <button\n type=\"button\"\n *ngSwitchDefault\n class=\"btn btn-dot\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.CUSTOM_ACTION_ITEM,\n customActionName: actionControl.text,\n id: row.id\n }\"\n tooltip=\"{{ (actionControl.icon ? actionControl.text : '') | translate }}\"\n [attr.aria-label]=\"(actionControl.icon ? actionControl.text : '') | translate\"\n container=\"body\"\n [delay]=\"500\"\n >\n <i *ngIf=\"actionControl.icon\" c8yIcon=\"{{ actionControl.icon }}\"></i>\n <span *ngIf=\"!actionControl.icon\">{{ actionControl.text | translate }}</span>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div [ngClass]=\"{ 'm-l-auto overflow-visible': actionControls.length > 2 }\">\n <div\n *ngIf=\"actionControls.length > 2\"\n class=\"dropdown\"\n dropdown\n container=\"body\"\n placement=\"bottom right\"\n >\n <button\n title=\"{{ 'Actions' | translate }}\"\n type=\"button\"\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul class=\"dropdown-menu dropdown-menu-right\" *dropdownMenu>\n <li *ngFor=\"let actionControl of actionControls\">\n <ng-container\n *ngIf=\"actionControl | isControlVisible: row\"\n [ngSwitch]=\"actionControl.type\"\n >\n <button\n title=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n *ngSwitchCase=\"builtInActionType.Edit\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.EDIT_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n <button\n title=\"{{ 'Delete' | translate }}\"\n type=\"button\"\n *ngSwitchCase=\"builtInActionType.Delete\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.DELETE_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Delete' | translate }}\n </button>\n <button\n title=\"{{ 'Export' | translate }}\"\n type=\"button\"\n *ngSwitchCase=\"builtInActionType.Export\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.EXPORT_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"download\"></i>\n {{ 'Export' | translate }}\n </button>\n <button\n title=\"{{ actionControl.text | translate }}\"\n type=\"button\"\n *ngSwitchDefault\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.CUSTOM_ACTION_ITEM,\n customActionName: actionControl.text,\n id: row.id\n }\"\n >\n <i c8yIcon=\"{{ actionControl.icon }}\"></i>\n {{ actionControl.text | translate }}\n </button>\n </ng-container>\n </li>\n </ul>\n </div>\n </div>\n </td>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <th\n cdk-header-cell\n *cdkHeaderCellDef\n [ngClass]=\"column.headerCSSClassName\"\n [attr.data-type]=\"column.dataType\"\n [class.sorted]=\"column.sortOrder\"\n [class.filtered]=\"column | map: isColumnFilteringApplied\"\n [class.hidden]=\"!column.visible\"\n >\n <div *ngIf=\"!column.filterable\" [title]=\"(column.header | translate) || column.name\">\n <ng-container\n *ngIf=\"\n [\n {\n columnName: column.name,\n value: (column.header | translate) || column.name\n }\n ] | map: getHeaderCellRendererSpec:this as cellRendererSpec\n \"\n >\n <c8y-cell-renderer [spec]=\"cellRendererSpec\"></c8y-cell-renderer>\n </ng-container>\n </div>\n\n <!-- isDropDownPlacedRight to be removed when columns are transformed to observables. -->\n <div\n *ngIf=\"column.filterable\"\n class=\"dropdown\"\n dropdown\n #gridHeaderDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"gridHeaderDropdown.isOpen\"\n placement=\"bottom {{ isDropDownPlacedRight(column) ? 'right' : 'left' }}\"\n [insideClick]=\"true\"\n >\n <button\n type=\"button\"\n class=\"btn-header\"\n dropdownToggle\n [title]=\"(column.header | translate) || column.name\"\n [attr.data-cy]=\"'data-grid--header-btn--' + column.header\"\n aria-haspopup=\"true\"\n >\n <ng-container\n *ngIf=\"\n [\n {\n columnName: column.name,\n value: (column.header | translate) || column.name\n }\n ] | map: getHeaderCellRendererSpec:this as cellRendererSpec\n \"\n >\n <c8y-cell-renderer [spec]=\"cellRendererSpec\"></c8y-cell-renderer>\n </ng-container>\n <i c8yIcon=\"filter\" title=\"{{ 'Filter' | translate }}\"></i>\n </button>\n\n <!-- isDropDownPlacedRight to be removed when columns are transformed to observables. -->\n <ul\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{ 'dropdown-menu-right-grid': isDropDownPlacedRight(column) }\"\n (click)=\"$event.stopPropagation()\"\n >\n <li class=\"data-grid__dropdown\">\n <ng-container\n *ngIf=\"\n [\n {\n column: column,\n dropdown: gridHeaderDropdown\n }\n ] | map: getFilteringFormRendererSpec:this as filteringFormRendererSpec\n \"\n >\n <c8y-filtering-form-renderer\n [spec]=\"filteringFormRendererSpec\"\n ></c8y-filtering-form-renderer>\n </ng-container>\n </li>\n </ul>\n </div>\n\n <button\n *ngIf=\"column.sortable\"\n class=\"btn-sort\"\n [title]=\"sortColumnTitle | translate: { name: column.header | translate }\"\n type=\"button\"\n (click)=\"changeSortOrder(column.name)\"\n data-cy=\"change-sort-order\"\n >\n <ng-container [ngSwitch]=\"column.sortOrder\">\n <i *ngSwitchCase=\"'asc'\" c8yIcon=\"long-arrow-up\"></i>\n <i *ngSwitchCase=\"'desc'\" c8yIcon=\"long-arrow-down\"></i>\n <i *ngSwitchDefault c8yIcon=\"exchange\"></i>\n </ng-container>\n </button>\n\n <span\n *ngIf=\"column.resizable\"\n class=\"resize-handle\"\n (mousedown)=\"\n resizeHandleMouseDown$.emit({ event: $event, targetColumnName: column.name })\n \"\n ></span>\n </th>\n\n <td\n cdk-cell\n *cdkCellDef=\"let row\"\n [ngClass]=\"column.cellCSSClassName\"\n [attr.data-cell-title]=\"column.header | translate\"\n [attr.data-cy]=\"'data-grid--' + column.header\"\n [attr.data-type]=\"column.dataType\"\n [class.hidden]=\"!column.visible\"\n >\n <ng-container\n *ngIf=\"\n [\n {\n value: resolveCellValue(row, column.path),\n row: row,\n columnName: column.name\n }\n ] | map: getCellRendererSpec:this as cellRendererSpec\n \"\n >\n <c8y-cell-renderer [spec]=\"cellRendererSpec\"></c8y-cell-renderer>\n </ng-container>\n </td>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container cdkColumnDef=\"infiniteScrollFooter\">\n <td cdk-footer-cell *cdkFooterCellDef [style.grid-column]=\"styles.gridInfiniteScrollColumn\">\n <template #infiniteScrollContainer></template>\n </td>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"columnNames\"></tr>\n\n <tr\n data-cy=\"c8y-data-grid--row-in-data-grid\"\n cdk-row\n *cdkRowDef=\"let row; columns: columnNames\"\n (mouseover)=\"rowMouseOver.emit(row)\"\n (mouseleave)=\"rowMouseLeave.emit(row)\"\n (click)=\"rowClick.emit(row)\"\n ></tr>\n\n <ng-container>\n <tr\n [ngClass]=\"{ hidden: !infiniteScroll }\"\n cdk-footer-row\n *cdkFooterRowDef=\"['infiniteScrollFooter']\"\n ></tr>\n </ng-container>\n </table>\n\n <div\n class=\"d-flex m-0 p-t-40 p-b-40\"\n *ngIf=\"!(dataSource.loading$ | async) && (dataSource.stats$ | async).filteredSize === 0\"\n >\n <div class=\"col-lg-3 col-sm-4 m-l-auto m-r-auto\">\n <ng-content select=\"c8y-ui-empty-state, .c8y-empty-state\"></ng-content>\n </div>\n </div>\n\n <div *ngIf=\"pagination && !infiniteScroll\" class=\"table-data-grid-footer separator large-padding\">\n <div class=\"col-sm-4 no-gutter\">\n <div\n *ngIf=\"(dataSource.stats$ | async).currentPageSize > 0\"\n class=\"counter p-t-8 p-b-8\"\n data-cy=\"data-grid--counter\"\n >\n <span class=\"text-muted\" ngNonBindable translate [translateParams]=\"paginationLabelParams\">\n {{ pageFirstItemIdx }} - {{ pageLastItemIdx }} of {{ itemsTotal }}\n </span>\n </div>\n </div>\n\n <div class=\"col-sm-4 no-gutter text-center\">\n <div\n *ngIf=\"(dataSource.stats$ | async).filteredSize > minPossiblePageSize\"\n class=\"form-group form-inline p-t-8 p-b-8\"\n >\n <label class=\"m-r-4\" for=\"filteredSize\">{{ 'Items per page' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"filteredSize\"\n data-cy=\"data-grid--pagesize-options\"\n [ngModel]=\"pagination.pageSize\"\n (ngModelChange)=\"\n updatePagination({ itemsPerPage: $event, page: pagination.currentPage })\n \"\n >\n <option *ngFor=\"let pageSize of possiblePageSizes\" [ngValue]=\"pageSize\">\n {{ pageSize }}\n </option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-4 no-gutter text-right\">\n <pagination\n *ngIf=\"(dataSource.stats$ | async).filteredSize > 0\"\n [class.hidden]=\"hidePagination$ | async\"\n [ngModel]=\"pagination.currentPage\"\n (pageChanged)=\"updatePagination($event)\"\n [totalItems]=\"(dataSource.stats$ | async).filteredSize\"\n [itemsPerPage]=\"pagination.pageSize\"\n (numPages)=\"totalPagesCount$.next($event)\"\n [maxSize]=\"5\"\n [boundaryLinks]=\"false\"\n previousText=\"Previous\"\n nextText=\"Next\"\n class=\"p-t-8 p-b-8\"\n ></pagination>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1$5.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1$5.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1$5.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i7.CdkTable, selector: "cdk-table, table[cdk-table]", inputs: ["trackBy", "dataSource", "multiTemplateDataRows", "fixedLayout"], outputs: ["contentChanged"], exportAs: ["cdkTable"] }, { kind: "directive", type: i7.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "directive", type: i7.CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: i7.CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: i7.CdkFooterCellDef, selector: "[cdkFooterCellDef]" }, { kind: "directive", type: i7.CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["sticky", "cdkColumnDef", "stickyEnd"] }, { kind: "directive", type: i7.CdkCell, selector: "cdk-cell, td[cdk-cell]" }, { kind: "component", type: i7.CdkRow, selector: "cdk-row, tr[cdk-row]" }, { kind: "directive", type: i7.CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "directive", type: i7.CdkFooterCell, selector: "cdk-footer-cell, td[cdk-footer-cell]" }, { kind: "component", type: i7.CdkHeaderRow, selector: "cdk-header-row, tr[cdk-header-row]" }, { kind: "directive", type: i7.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "component", type: i7.CdkFooterRow, selector: "cdk-footer-row, tr[cdk-footer-row]" }, { kind: "directive", type: i7.CdkFooterRowDef, selector: "[cdkFooterRowDef]", inputs: ["cdkFooterRowDef", "cdkFooterRowDefSticky"] }, { kind: "directive", type: i5$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: ProgressBarComponent, selector: "c8y-progress-bar", inputs: ["message", "progress"] }, { kind: "component", type: PopoverConfirmComponent, selector: "c8y-popover-confirm", inputs: ["buttons", "message", "title", "isOpen", "containerClass", "placement", "outsideClick"] }, { kind: "directive", type: i1$7.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$7.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$7.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i2$1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i1$8.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: "component", type: i17.PaginationComponent, selector: "pagination", inputs: ["align", "maxSize", "boundaryLinks", "directionLinks", "firstText", "previousText", "nextText", "lastText", "rotate", "pageBtnClass", "disabled", "customPageTemplate", "customNextTemplate", "customPreviousTemplate", "customFirstTemplate", "customLastTemplate", "itemsPerPage", "totalItems"], outputs: ["numPages", "pageChanged"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: CellRendererComponent, selector: "c8y-cell-renderer", inputs: ["spec"] }, { kind: "component", type: FilteringFormRendererComponent, selector: "c8y-filtering-form-renderer", inputs: ["spec"] }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: MapFunctionPipe, name: "map" }, { kind: "pipe", type: IsControlVisiblePipe, name: "isControlVisible" }] });
25190
+ ], queries: [{ propertyName: "columnRenderers", predicate: ColumnDirective }], viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scroll"], descendants: true, static: true }, { propertyName: "infiniteScrollContainer", first: true, predicate: ["infiniteScrollContainer"], descendants: true, read: ViewContainerRef }, { propertyName: "thRefs", predicate: CdkHeaderCell, descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n #scroll\n class=\"table-data-grid-scroll\"\n [ngClass]=\"{ 'table-data-grid__overlay': (dataSource.loading$ | async) && !loadMoreComponent }\"\n>\n <div\n class=\"table-data-grid__loading--wrapper\"\n *ngIf=\"(dataSource.loading$ | async) && !loadMoreComponent\"\n >\n <div class=\"table-data-grid__loading--loader\">\n <c8y-progress-bar [message]=\"loadingItemsLabel\"></c8y-progress-bar>\n </div>\n </div>\n\n <div *ngIf=\"displayOptions.gridHeader\" class=\"table-data-grid-header separator large-padding\">\n <div class=\"h4\" [ngClass]=\"{ 'm-r-16': !!title }\">{{ title | translate }}</div>\n\n <ng-container *ngIf=\"displayOptions.filter\">\n <span *ngIf=\"!filteringApplied\">\n <span class=\"label label-default m-r-4\" translate>No filters</span>\n <small\n *ngIf=\"!!filteringLabelsParams.allItemsCount\"\n class=\"m-r-4\"\n ngNonBindable\n translate\n [translateParams]=\"filteringLabelsParams\"\n >\n {{ filteredItemsCount }} of {{ allItemsCount }} items\n </small>\n </span>\n <span *ngIf=\"filteringApplied\">\n <ng-container *ngIf=\"!!filteringLabelsParams.allItemsCount\">\n <span class=\"badge badge-info m-r-4\">\n {{ (dataSource.stats$ | async).filteredSize }}\n </span>\n <small ngNonBindable translate [translateParams]=\"filteringLabelsParams\">\n of {{ allItemsCount }} items\n </small>\n </ng-container>\n <button\n title=\"{{ 'Clear filters' | translate }}\"\n class=\"btn btn-sm btn-default m-l-8 m-r-4\"\n (click)=\"clearFilters()\"\n >\n {{ 'Clear filters' | translate }}\n </button>\n </span>\n\n <span class=\"hidden-xs hidden-sm\" *ngIf=\"displayOptions.filter\">\n <button\n class=\"btn-help btn-help--sm\"\n type=\"button\"\n popover=\"{{ 'Click the column headers to apply filters.' | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n [attr.aria-label]=\"'Click the column headers to apply filters.' | translate\"\n data-cy=\"data-grid--help-filters\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </span>\n\n <span class=\"hidden-xs hidden-sm\" *ngIf=\"showCounterWarning\">\n <button\n class=\"btn-clean text-primary\"\n popover=\"{{\n 'The counter for the total number of items might be inaccurate.' | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n aria-label=\"{{\n 'The counter for the total number of items might be inaccurate.' | translate\n }}\"\n >\n <i c8yIcon=\"warning\"></i>\n </button>\n </span>\n </ng-container>\n\n <div class=\"m-l-auto\">\n <div class=\"btnbar d-flex a-i-center\">\n <ng-container *ngFor=\"let headerActionControl of headerActionControls\">\n <ng-container *ngIf=\"headerActionControl | isControlVisible\">\n <ng-container *ngIf=\"!headerActionControl.template; else customTemplate\">\n <button\n title=\"{{ headerActionControl.text | translate }}\"\n class=\"btnbar-btn btn-link\"\n (click)=\"headerActionControl.callback()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.CUSTOM_ACTION,\n customActionName: headerActionControl.text,\n type: headerActionControl.type\n }\"\n >\n <i [c8yIcon]=\"headerActionControl.icon\" class=\"m-r-4\"></i>\n <span>{{ headerActionControl.text | translate }}</span>\n </button>\n </ng-container>\n <ng-template #customTemplate>\n <ng-container\n *ngTemplateOutlet=\"\n headerActionControl.template;\n context: { headerActionControl: headerActionControl }\n \"\n ></ng-container>\n </ng-template>\n </ng-container>\n </ng-container>\n\n <div\n *ngIf=\"configureColumnsEnabled\"\n class=\"dropdown\"\n dropdown\n #ddConfigureColumns=\"bs-dropdown\"\n [cdkTrapFocus]=\"ddConfigureColumns.isOpen\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n >\n <button\n title=\"{{ 'Configure columns' | translate }}\"\n data-cy=\"data-grid--custom-column-btn\"\n class=\"btnbar-btn\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"columns\" class=\"m-r-4\"></i>\n <span>{{ 'Configure columns' | translate }}</span>\n </button>\n\n <ul\n class=\"dropdown-menu data-grid__dropdown\"\n *dropdownMenu\n (click)=\"$event.stopPropagation()\"\n >\n <li class=\"bg-level-0\">\n <div\n class=\"list-group m-0\"\n cdkDropList\n (cdkDropListDropped)=\"onColumnDrop($event)\"\n >\n <div\n *ngFor=\"let column of columns\"\n cdkDrag\n cdkDragLockAxis=\"y\"\n >\n <ng-container *ngIf=\"!column.positionFixed\">\n <div class=\"list-group-item draggable-after p-0 a-i-center\">\n <label\n title=\"{{ (column.header | translate) || column.name }}\"\n [attr.data-cy]=\"'data-grid--custom-column-header-' + column.header\"\n class=\"c8y-checkbox p-l-16\"\n >\n <input\n type=\"checkbox\"\n [(ngModel)]=\"column.visible\"\n (change)=\"\n updateGridColumnsSize(); emitConfigChange('changeColumnVisibility')\n \"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.CHANGE_VISIBILITY,\n column: column.name,\n visible: !column.visible\n }\"\n />\n <span></span>\n <span>{{ (column.header | translate) || column.name }}</span>\n </label>\n <button\n *ngIf=\"column.custom\"\n class=\"btn btn-dot showOnHover max-width-fit a-i-center\"\n tooltip=\"{{ 'Remove`column,verb`' | translate }}\"\n [attr.aria-label]=\"'Remove`column,verb`' | translate\"\n placement=\"left\"\n container=\"body\"\n (click)=\"removeCustomColumn(poConfirm, column, ddConfigureColumns)\"\n >\n <c8y-popover-confirm\n [placement]=\"'left'\"\n [title]=\"'Confirm removal' | translate\"\n triggers=\"focus\"\n #poConfirm\n ></c8y-popover-confirm>\n <i c8yIcon=\"minus-circle\" data-cy=\"data-grid--custom-column-remove-btn\"></i>\n </button>\n </div>\n </ng-container>\n </div>\n </div>\n </li>\n <li *ngIf=\"isConfigContextKnown\" class=\"p-8 sticky-bottom separator-top\">\n <button\n title=\"{{ 'Add custom column' | translate }}\"\n class=\"btn btn-default btn-block\"\n data-cy=\"data-grid--add-custom-column\"\n (click)=\"openCustomColumnModal(); ddConfigureColumns.hide()\"\n >\n <i c8yIcon=\"plus-circle\" class=\"m-r-4\"></i>\n <span>{{ 'Add custom column' | translate }}</span>\n </button>\n </li>\n </ul>\n </div>\n\n <button\n title=\"{{ 'Reload' | translate }}\"\n data-cy=\"data-grid--reload-btn\"\n class=\"btnbar-btn btn-link\"\n [disabled]=\"dataSource.loading$ | async\"\n (click)=\"clickReload()\"\n >\n <i c8yIcon=\"refresh\" class=\"m-r-4\"></i>\n <span>{{ 'Reload' | translate }}</span>\n </button>\n\n <div\n *ngIf=\"!serverSideDataCallback || showSearch\"\n class=\"input-group input-group-search m-l-sm-16\"\n >\n <input\n type=\"search\"\n class=\"form-control\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n [ngModel]=\"searchText\"\n (input)=\"searchText$.emit($event.target.value)\"\n />\n <div class=\"input-group-addon\">\n <i c8yIcon=\"search\" *ngIf=\"searchText.length === 0\"></i>\n <i\n c8yIcon=\"times\"\n class=\"pointer\"\n *ngIf=\"searchText.length > 0\"\n (click)=\"searchText = ''; searchText$.emit('')\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.CLEAR_SEARCH }\"\n ></i>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"table-data-grid-header-bulk-actions animated slideInDown fast\"\n *ngIf=\"selectedItemIds.length !== 0\"\n >\n <h4>\n <span ngNonBindable translate [translateParams]=\"{ count: selectedItemIds.length }\">\n {{ count }} selected item(s).\n </span>\n <br class=\"visible-xs\" />\n <small *ngIf=\"!serverSideDataCallback && selectedItemIds.length >= pagination.pageSize\">\n <a\n (click)=\"setAllItemsSelected(true)\"\n class=\"interact\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.SELECT_ALL_ITEMS }\"\n >\n <span\n ngNonBindable\n translate\n [translateParams]=\"{ count: (dataSource.stats$ | async).filteredSize }\"\n >\n Select all {{ count }} items\n </span>\n </a>\n </small>\n </h4>\n <div class=\"m-l-auto\">\n <div class=\"btnbar d-flex\">\n <ng-container *ngFor=\"let bulkActionControl of bulkActionControls\">\n <ng-container\n *ngIf=\"bulkActionControl | isControlVisible: selectedItemIds\"\n [ngSwitch]=\"bulkActionControl.type\"\n >\n <button\n title=\"{{ 'Export' | translate }}\"\n *ngSwitchCase=\"builtInActionType.Export\"\n class=\"btnbar-btn\"\n (click)=\"bulkActionControl.callback(selectedItemIds, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.BULK_EXPORT }\"\n >\n <i c8yIcon=\"sign-out\"></i>\n <span>{{ 'Export' | translate }}</span>\n </button>\n\n <button\n title=\"{{ 'Delete' | translate }}\"\n *ngSwitchCase=\"builtInActionType.Delete\"\n class=\"btnbar-btn\"\n (click)=\"bulkActionControl.callback(selectedItemIds, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.BULK_DELETE }\"\n >\n <i c8yIcon=\"delete\"></i>\n <span>{{ 'Delete' | translate }}</span>\n </button>\n\n <button\n title=\"{{ bulkActionControl.text | translate }}\"\n *ngSwitchDefault\n class=\"btnbar-btn\"\n (click)=\"bulkActionControl.callback(selectedItemIds, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.BULK_CUSTOM_ACTION,\n customActionName: bulkActionControl.text\n }\"\n >\n <i c8yIcon=\"{{ bulkActionControl.icon }}\"></i>\n <span>{{ bulkActionControl.text | translate }}</span>\n </button>\n </ng-container>\n </ng-container>\n\n <button\n title=\"{{ 'Cancel' | translate }}\"\n class=\"btnbar-btn\"\n (click)=\"cancel()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.BULK_CANCEL\n }\"\n >\n <i c8yIcon=\"times\"></i>\n <span>{{ 'Cancel' | translate }}</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <table\n class=\"table table-hover table-filtered-sorted table-data-grid large-padding\"\n cdk-table\n [dataSource]=\"dataSource\"\n [trackBy]=\"trackByName\"\n [class.table-striped]=\"displayOptions.striped\"\n [class.table-bordered]=\"displayOptions.bordered\"\n [class.table-data-grid-with-checkboxes]=\"selectable\"\n [class.table-data-grid-with-actions]=\"actionControls.length > 0\"\n [style.grid-template-columns]=\"styles.gridTemplateColumns\"\n (mousemove)=\"resizeHandleContainerMouseMove$.emit($event)\"\n (mouseup)=\"resizeHandleContainerMouseUp$.emit($event)\"\n >\n <ng-container\n *ngFor=\"let column of columns; let i = index; trackBy: trackByName\"\n [cdkColumnDef]=\"column.name\"\n >\n <ng-container [ngSwitch]=\"column.name\">\n <ng-container *ngSwitchCase=\"'checkbox'\">\n <th cdk-header-cell *cdkHeaderCellDef data-type=\"icon\">\n <div>\n <label class=\"c8y-checkbox\">\n <input\n [attr.aria-label]=\"'Selected' | translate\"\n type=\"checkbox\"\n [checked]=\"currentPageSelectionState.allSelected\"\n [indeterminate]=\"\n !(\n currentPageSelectionState.allSelected ||\n currentPageSelectionState.allDeselected\n )\n \"\n (change)=\"setAllItemsInCurrentPageSelected($event.target.checked)\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PX_ACTIONS.SELECT_ALL_ITEMS }\"\n />\n <span></span>\n </label>\n </div>\n </th>\n\n <td cdk-cell *cdkCellDef=\"let row\" data-type=\"icon\">\n <label class=\"c8y-checkbox\">\n <input\n [attr.aria-label]=\"'Selected' | translate\"\n type=\"checkbox\"\n [checked]=\"isItemSelected(row)\"\n (change)=\"setItemsSelected([row], $event.target.checked)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.SELECT_ITEM,\n id: row.id\n }\"\n />\n <span></span>\n </label>\n </td>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'actions'\">\n <th cdk-header-cell *cdkHeaderCellDef data-type=\"icon\">\n <p class=\"text-medium sr-only\">{{ 'Actions' | translate }}</p>\n </th>\n\n <td cdk-cell *cdkCellDef=\"let row\" data-type=\"icon\">\n <ng-container *ngIf=\"actionControls.length <= 2\">\n <ng-container *ngFor=\"let actionControl of actionControls\">\n <ng-container\n *ngIf=\"actionControl | isControlVisible: row\"\n [ngSwitch]=\"actionControl.type\"\n >\n <button\n *ngSwitchCase=\"builtInActionType.Edit\"\n class=\"btn btn-dot\"\n tooltip=\"{{ 'Edit' | translate }}\"\n [attr.aria-label]=\"'Edit' | translate\"\n [delay]=\"500\"\n container=\"body\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.EDIT_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"pencil\"></i>\n </button>\n\n <button\n type=\"button\"\n *ngSwitchCase=\"builtInActionType.Delete\"\n class=\"btn btn-dot btn-dot--danger showOnHover\"\n tooltip=\"{{ 'Delete' | translate }}\"\n data-cy=\"c8y-data-grid--remove-button-in-row\"\n [attr.aria-label]=\"'Delete' | translate\"\n [delay]=\"500\"\n container=\"body\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.DELETE_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"delete\"></i>\n </button>\n\n <button\n type=\"button\"\n *ngSwitchDefault\n class=\"btn btn-dot\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.CUSTOM_ACTION_ITEM,\n customActionName: actionControl.text,\n id: row.id\n }\"\n tooltip=\"{{ (actionControl.icon ? actionControl.text : '') | translate }}\"\n [attr.aria-label]=\"(actionControl.icon ? actionControl.text : '') | translate\"\n container=\"body\"\n [delay]=\"500\"\n >\n <i *ngIf=\"actionControl.icon\" c8yIcon=\"{{ actionControl.icon }}\"></i>\n <span *ngIf=\"!actionControl.icon\">{{ actionControl.text | translate }}</span>\n </button>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <div [ngClass]=\"{ 'm-l-auto overflow-visible': actionControls.length > 2 }\">\n <div\n *ngIf=\"actionControls.length > 2\"\n class=\"dropdown\"\n dropdown\n container=\"body\"\n placement=\"bottom right\"\n >\n <button\n title=\"{{ 'Actions' | translate }}\"\n type=\"button\"\n class=\"dropdown-toggle c8y-dropdown\"\n dropdownToggle\n aria-haspopup=\"true\"\n >\n <i c8yIcon=\"ellipsis-v\"></i>\n </button>\n <ul class=\"dropdown-menu dropdown-menu-right\" *dropdownMenu>\n <li *ngFor=\"let actionControl of actionControls\">\n <ng-container\n *ngIf=\"actionControl | isControlVisible: row\"\n [ngSwitch]=\"actionControl.type\"\n >\n <button\n title=\"{{ 'Edit' | translate }}\"\n type=\"button\"\n *ngSwitchCase=\"builtInActionType.Edit\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.EDIT_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"pencil\"></i>\n {{ 'Edit' | translate }}\n </button>\n <button\n title=\"{{ 'Delete' | translate }}\"\n type=\"button\"\n *ngSwitchCase=\"builtInActionType.Delete\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.DELETE_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Delete' | translate }}\n </button>\n <button\n title=\"{{ 'Export' | translate }}\"\n type=\"button\"\n *ngSwitchCase=\"builtInActionType.Export\"\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.EXPORT_ITEM,\n id: row.id\n }\"\n >\n <i c8yIcon=\"download\"></i>\n {{ 'Export' | translate }}\n </button>\n <button\n title=\"{{ actionControl.text | translate }}\"\n type=\"button\"\n *ngSwitchDefault\n (click)=\"actionControl.callback(row, reload.bind(this))\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PX_ACTIONS.CUSTOM_ACTION_ITEM,\n customActionName: actionControl.text,\n id: row.id\n }\"\n >\n <i c8yIcon=\"{{ actionControl.icon }}\"></i>\n {{ actionControl.text | translate }}\n </button>\n </ng-container>\n </li>\n </ul>\n </div>\n </div>\n </td>\n </ng-container>\n\n <ng-container *ngSwitchDefault>\n <th\n cdk-header-cell\n *cdkHeaderCellDef\n [ngClass]=\"column.headerCSSClassName\"\n [attr.data-type]=\"column.dataType\"\n [class.sorted]=\"column.sortOrder\"\n [class.filtered]=\"column | map: isColumnFilteringApplied\"\n [class.hidden]=\"!column.visible\"\n >\n <div *ngIf=\"!column.filterable\" [title]=\"(column.header | translate) || column.name\">\n <ng-container\n *ngIf=\"\n [\n {\n columnName: column.name,\n value: (column.header | translate) || column.name\n }\n ] | map: getHeaderCellRendererSpec:this as cellRendererSpec\n \"\n >\n <c8y-cell-renderer [spec]=\"cellRendererSpec\"></c8y-cell-renderer>\n </ng-container>\n </div>\n\n <!-- isDropDownPlacedRight to be removed when columns are transformed to observables. -->\n <div\n *ngIf=\"column.filterable\"\n class=\"dropdown\"\n dropdown\n #gridHeaderDropdown=\"bs-dropdown\"\n [cdkTrapFocus]=\"gridHeaderDropdown.isOpen\"\n placement=\"bottom {{ isDropDownPlacedRight(column) ? 'right' : 'left' }}\"\n [insideClick]=\"true\"\n >\n <button\n type=\"button\"\n class=\"btn-header\"\n dropdownToggle\n [title]=\"(column.header | translate) || column.name\"\n [attr.data-cy]=\"'data-grid--header-btn--' + column.header\"\n aria-haspopup=\"true\"\n >\n <ng-container\n *ngIf=\"\n [\n {\n columnName: column.name,\n value: (column.header | translate) || column.name\n }\n ] | map: getHeaderCellRendererSpec:this as cellRendererSpec\n \"\n >\n <c8y-cell-renderer [spec]=\"cellRendererSpec\"></c8y-cell-renderer>\n </ng-container>\n <i c8yIcon=\"filter\" title=\"{{ 'Filter' | translate }}\"></i>\n </button>\n\n <!-- isDropDownPlacedRight to be removed when columns are transformed to observables. -->\n <ul\n *dropdownMenu\n class=\"dropdown-menu\"\n [ngClass]=\"{ 'dropdown-menu-right-grid': isDropDownPlacedRight(column) }\"\n (click)=\"$event.stopPropagation()\"\n >\n <li class=\"data-grid__dropdown\">\n <ng-container\n *ngIf=\"\n [\n {\n column: column,\n dropdown: gridHeaderDropdown\n }\n ] | map: getFilteringFormRendererSpec:this as filteringFormRendererSpec\n \"\n >\n <c8y-filtering-form-renderer\n [spec]=\"filteringFormRendererSpec\"\n ></c8y-filtering-form-renderer>\n </ng-container>\n </li>\n </ul>\n </div>\n\n <button\n *ngIf=\"column.sortable\"\n class=\"btn-sort\"\n [title]=\"sortColumnTitle | translate: { name: column.header | translate }\"\n type=\"button\"\n (click)=\"changeSortOrder(column.name)\"\n data-cy=\"change-sort-order\"\n >\n <ng-container [ngSwitch]=\"column.sortOrder\">\n <i *ngSwitchCase=\"'asc'\" c8yIcon=\"long-arrow-up\"></i>\n <i *ngSwitchCase=\"'desc'\" c8yIcon=\"long-arrow-down\"></i>\n <i *ngSwitchDefault c8yIcon=\"exchange\"></i>\n </ng-container>\n </button>\n\n <span\n *ngIf=\"column.resizable\"\n class=\"resize-handle\"\n (mousedown)=\"\n resizeHandleMouseDown$.emit({ event: $event, targetColumnName: column.name })\n \"\n ></span>\n </th>\n\n <td\n cdk-cell\n *cdkCellDef=\"let row\"\n [ngClass]=\"column.cellCSSClassName\"\n [attr.data-cell-title]=\"column.header | translate\"\n [attr.data-cy]=\"'data-grid--' + column.header\"\n [attr.data-type]=\"column.dataType\"\n [class.hidden]=\"!column.visible\"\n >\n <ng-container\n *ngIf=\"\n [\n {\n value: resolveCellValue(row, column.path),\n row: row,\n columnName: column.name\n }\n ] | map: getCellRendererSpec:this as cellRendererSpec\n \"\n >\n <c8y-cell-renderer [spec]=\"cellRendererSpec\"></c8y-cell-renderer>\n </ng-container>\n </td>\n </ng-container>\n </ng-container>\n </ng-container>\n\n <ng-container cdkColumnDef=\"infiniteScrollFooter\">\n <td cdk-footer-cell *cdkFooterCellDef [style.grid-column]=\"styles.gridInfiniteScrollColumn\">\n <template #infiniteScrollContainer></template>\n </td>\n </ng-container>\n\n <tr cdk-header-row *cdkHeaderRowDef=\"columnNames\"></tr>\n\n <tr\n data-cy=\"c8y-data-grid--row-in-data-grid\"\n cdk-row\n *cdkRowDef=\"let row; columns: columnNames\"\n (mouseover)=\"rowMouseOver.emit(row)\"\n (mouseleave)=\"rowMouseLeave.emit(row)\"\n (click)=\"rowClick.emit(row)\"\n ></tr>\n\n <ng-container>\n <tr\n [ngClass]=\"{ hidden: !infiniteScroll }\"\n cdk-footer-row\n *cdkFooterRowDef=\"['infiniteScrollFooter']\"\n ></tr>\n </ng-container>\n </table>\n\n <div\n class=\"d-flex m-0 p-t-40 p-b-40\"\n *ngIf=\"!(dataSource.loading$ | async) && (dataSource.stats$ | async).filteredSize === 0\"\n >\n <div class=\"col-lg-3 col-sm-4 m-l-auto m-r-auto\">\n <ng-content select=\"c8y-ui-empty-state, .c8y-empty-state\"></ng-content>\n </div>\n </div>\n\n <div *ngIf=\"pagination && !infiniteScroll\" class=\"table-data-grid-footer separator large-padding\">\n <div class=\"col-sm-4 no-gutter\">\n <div\n *ngIf=\"(dataSource.stats$ | async).currentPageSize > 0\"\n class=\"counter p-t-8 p-b-8\"\n data-cy=\"data-grid--counter\"\n >\n <span class=\"text-muted\" ngNonBindable translate [translateParams]=\"paginationLabelParams\">\n {{ pageFirstItemIdx }} - {{ pageLastItemIdx }} of {{ itemsTotal }}\n </span>\n </div>\n </div>\n\n <div class=\"col-sm-4 no-gutter text-center\">\n <div\n *ngIf=\"(dataSource.stats$ | async).filteredSize > minPossiblePageSize\"\n class=\"form-group form-inline p-t-8 p-b-8\"\n >\n <label class=\"m-r-4\" for=\"filteredSize\">{{ 'Items per page' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n id=\"filteredSize\"\n data-cy=\"data-grid--pagesize-options\"\n [ngModel]=\"pagination.pageSize\"\n (ngModelChange)=\"\n updatePagination({ itemsPerPage: $event, page: pagination.currentPage })\n \"\n >\n <option *ngFor=\"let pageSize of possiblePageSizes\" [ngValue]=\"pageSize\">\n {{ pageSize }}\n </option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"col-sm-4 no-gutter text-right\">\n <pagination\n *ngIf=\"(dataSource.stats$ | async).filteredSize > 0\"\n [class.hidden]=\"hidePagination$ | async\"\n [ngModel]=\"pagination.currentPage\"\n (pageChanged)=\"updatePagination($event)\"\n [totalItems]=\"(dataSource.stats$ | async).filteredSize\"\n [itemsPerPage]=\"pagination.pageSize\"\n (numPages)=\"totalPagesCount$.next($event)\"\n [maxSize]=\"5\"\n [boundaryLinks]=\"false\"\n previousText=\"Previous\"\n nextText=\"Next\"\n class=\"p-t-8 p-b-8\"\n ></pagination>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i7.CdkTable, selector: "cdk-table, table[cdk-table]", inputs: ["trackBy", "dataSource", "multiTemplateDataRows", "fixedLayout"], outputs: ["contentChanged"], exportAs: ["cdkTable"] }, { kind: "directive", type: i7.CdkRowDef, selector: "[cdkRowDef]", inputs: ["cdkRowDefColumns", "cdkRowDefWhen"] }, { kind: "directive", type: i7.CdkCellDef, selector: "[cdkCellDef]" }, { kind: "directive", type: i7.CdkHeaderCellDef, selector: "[cdkHeaderCellDef]" }, { kind: "directive", type: i7.CdkFooterCellDef, selector: "[cdkFooterCellDef]" }, { kind: "directive", type: i7.CdkColumnDef, selector: "[cdkColumnDef]", inputs: ["sticky", "cdkColumnDef", "stickyEnd"] }, { kind: "directive", type: i7.CdkCell, selector: "cdk-cell, td[cdk-cell]" }, { kind: "component", type: i7.CdkRow, selector: "cdk-row, tr[cdk-row]" }, { kind: "directive", type: i7.CdkHeaderCell, selector: "cdk-header-cell, th[cdk-header-cell]" }, { kind: "directive", type: i7.CdkFooterCell, selector: "cdk-footer-cell, td[cdk-footer-cell]" }, { kind: "component", type: i7.CdkHeaderRow, selector: "cdk-header-row, tr[cdk-header-row]" }, { kind: "directive", type: i7.CdkHeaderRowDef, selector: "[cdkHeaderRowDef]", inputs: ["cdkHeaderRowDef", "cdkHeaderRowDefSticky"] }, { kind: "component", type: i7.CdkFooterRow, selector: "cdk-footer-row, tr[cdk-footer-row]" }, { kind: "directive", type: i7.CdkFooterRowDef, selector: "[cdkFooterRowDef]", inputs: ["cdkFooterRowDef", "cdkFooterRowDefSticky"] }, { kind: "directive", type: i5$3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i5$3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: ProgressBarComponent, selector: "c8y-progress-bar", inputs: ["message", "progress"] }, { kind: "component", type: PopoverConfirmComponent, selector: "c8y-popover-confirm", inputs: ["buttons", "message", "title", "isOpen", "containerClass", "placement", "outsideClick"] }, { kind: "directive", type: i1$6.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$6.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$6.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: i1$7.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: "component", type: i17.PaginationComponent, selector: "pagination", inputs: ["align", "maxSize", "boundaryLinks", "directionLinks", "firstText", "previousText", "nextText", "lastText", "rotate", "pageBtnClass", "disabled", "customPageTemplate", "customNextTemplate", "customPreviousTemplate", "customFirstTemplate", "customLastTemplate", "itemsPerPage", "totalItems"], outputs: ["numPages", "pageChanged"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "directive", type: i4.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: CellRendererComponent, selector: "c8y-cell-renderer", inputs: ["spec"] }, { kind: "component", type: FilteringFormRendererComponent, selector: "c8y-filtering-form-renderer", inputs: ["spec"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: MapFunctionPipe, name: "map" }, { kind: "pipe", type: IsControlVisiblePipe, name: "isControlVisible" }] });
25191
25191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: DataGridComponent, decorators: [{
25192
25192
  type: Component,
25193
25193
  args: [{ selector: 'c8y-data-grid', host: { class: 'd-contents' }, providers: [
@@ -25202,7 +25202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
25202
25202
  }, {
25203
25203
  type: Inject,
25204
25204
  args: [DATA_GRID_CONFIGURATION_STRATEGY]
25205
- }] }, { type: DataGridService }, { type: i1$6.DomSanitizer }, { type: i0.ComponentFactoryResolver }, { type: GainsightService }, { type: i1$9.BsModalService }, { type: AlertService }];
25205
+ }] }, { type: DataGridService }, { type: i1$5.DomSanitizer }, { type: i0.ComponentFactoryResolver }, { type: GainsightService }, { type: i1$8.BsModalService }, { type: AlertService }];
25206
25206
  }, propDecorators: { title: [{
25207
25207
  type: Input
25208
25208
  }], loadMoreItemsLabel: [{
@@ -25318,7 +25318,7 @@ DataGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
25318
25318
  DynamicFormsModule,
25319
25319
  CommonModule,
25320
25320
  FormsModule,
25321
- ModalModule, i1$7.BsDropdownModule, i2$1.PopoverModule, i1$8.TooltipModule, i17.PaginationModule, ProductExperienceModule,
25321
+ ModalModule, i1$6.BsDropdownModule, i2$2.PopoverModule, i1$7.TooltipModule, i17.PaginationModule, ProductExperienceModule,
25322
25322
  A11yModule], exports: [BaseFilteringFormRendererComponent,
25323
25323
  CellRendererDefDirective,
25324
25324
  HeaderCellRendererDefDirective,
@@ -25576,7 +25576,7 @@ class HelpComponent {
25576
25576
  }
25577
25577
  }
25578
25578
  HelpComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HelpComponent, deps: [{ token: DocsService }, { token: HelpService }], target: i0.ɵɵFactoryTarget.Component });
25579
- HelpComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: HelpComponent, selector: "c8y-help", inputs: { src: "src", isCollapsed: "isCollapsed", priority: "priority", icon: "icon" }, ngImport: i0, template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n >\n </button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div\n class=\"p-l-16 flex-grow\"\n *ngIf=\"!hasError\"\n >\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n [attr.aria-label]=\"'Close' | translate\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div\n id=\"helpContent\"\n class=\"help-content\"\n [innerHTML]=\"sectionContent\"\n ></div>\n </div>\n\n <div\n class=\"p-l-16 p-t-16 flex-grow\"\n *ngIf=\"hasError\"\n >\n <h4\n class=\"text-bold m-b-16\"\n translate\n >Sorry, that didn't work</h4>\n <div class=\"help-content\">\n <p translate>The content couldn't be loaded.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n >\n <button\n class=\"btn btn-default\"\n (click)=\"toggle()\"\n [title]=\"'Close help' | translate\"\n type=\"button\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span\n translate\n *ngIf=\"!hasError\"\n >\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span\n translate\n *ngIf=\"hasError\"\n >\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i1$a.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i1$8.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: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
25579
+ HelpComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: HelpComponent, selector: "c8y-help", inputs: { src: "src", isCollapsed: "isCollapsed", priority: "priority", icon: "icon" }, ngImport: i0, template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n >\n </button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div\n class=\"p-l-16 flex-grow\"\n *ngIf=\"!hasError\"\n >\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n [attr.aria-label]=\"'Close' | translate\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div\n id=\"helpContent\"\n class=\"help-content\"\n [innerHTML]=\"sectionContent\"\n ></div>\n </div>\n\n <div\n class=\"p-l-16 p-t-16 flex-grow\"\n *ngIf=\"hasError\"\n >\n <h4\n class=\"text-bold m-b-16\"\n translate\n >Sorry, that didn't work</h4>\n <div class=\"help-content\">\n <p translate>The content couldn't be loaded.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n >\n <button\n class=\"btn btn-default\"\n (click)=\"toggle()\"\n [title]=\"'Close help' | translate\"\n type=\"button\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span\n translate\n *ngIf=\"!hasError\"\n >\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span\n translate\n *ngIf=\"hasError\"\n >\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading" }, { kind: "directive", type: i1$9.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: i1$7.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: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
25580
25580
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HelpComponent, decorators: [{
25581
25581
  type: Component,
25582
25582
  args: [{ selector: 'c8y-help', template: "<c8y-action-bar-item\n [placement]=\"'right'\"\n itemClass=\"pull-right m-l-8\"\n [priority]=\"priority\"\n *ngIf=\"!!(helpService.contextHelp | async)\"\n>\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'About this page' | translate\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n tooltip=\"{{ 'About this page' | translate }}\"\n [delay]=\"750\"\n placement=\"left\"\n container=\"body\"\n (click)=\"toggle()\"\n c8yProductExperience\n [actionName]=\"isCollapsed ? 'helpOpened' : 'helpClosed'\"\n [actionData]=\"{ src: src }\"\n >\n </button>\n</c8y-action-bar-item>\n\n<div\n id=\"collapseHelp\"\n class=\"c8y-help-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n (collapsed)=\"onCollapsed()\"\n>\n <div\n [ngClass]=\"{ 'c8y-help-drawer-block': isInit }\"\n #docOutlet\n >\n <div *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </div>\n\n <div *ngIf=\"!isLoading\">\n <div class=\"d-flex\">\n <i\n [c8yIcon]=\"!hasError ? icon : 'unlink'\"\n [ngClass]=\"{ 'text-warning': hasError, 'text-muted': !hasError }\"\n class=\"c8y-icon-duocolor icon-48\"\n ></i>\n <div\n class=\"p-l-16 flex-grow\"\n *ngIf=\"!hasError\"\n >\n <div\n class=\"alert alert-info m-b-16\"\n *ngIf=\"\n !helpService.isSupportedLanguage() &&\n !showLangWarning &&\n !helpService.isWarningAlertViewed\n \"\n >\n <button\n class=\"close\"\n type=\"button\"\n (click)=\"\n showLangWarning = !showLangWarning;\n helpService.isWarningAlertViewed = !helpService.isWarningAlertViewed\n \"\n [attr.aria-label]=\"'Close' | translate\"\n >\n <span aria-hidden=\"true\">\u00D7</span>\n <span class=\"sr-only\">Close</span>\n </button>\n <p>\n {{ 'Help content is only available in English.' | translate }}\n </p>\n </div>\n <h4 class=\"text-bold text-primary p-t-16 m-b-16\">\n {{ title }}\n </h4>\n <div\n id=\"helpContent\"\n class=\"help-content\"\n [innerHTML]=\"sectionContent\"\n ></div>\n </div>\n\n <div\n class=\"p-l-16 p-t-16 flex-grow\"\n *ngIf=\"hasError\"\n >\n <h4\n class=\"text-bold m-b-16\"\n translate\n >Sorry, that didn't work</h4>\n <div class=\"help-content\">\n <p translate>The content couldn't be loaded.</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n class=\"c8y-help-drawer-footer animated fadeIn\"\n style=\"animation-delay: 0.35s\"\n *ngIf=\"!isLoading && !hasError\"\n >\n <button\n class=\"btn btn-default\"\n (click)=\"toggle()\"\n [title]=\"'Close help' | translate\"\n type=\"button\"\n [attr.aria-expanded]=\"!isCollapsed\"\n aria-controls=\"collapseHelp\"\n translate\n >\n Close\n </button>\n <a\n href=\"{{ hasError ? getUrl() : getUrl(src) }}\"\n class=\"btn btn-primary\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <span\n translate\n *ngIf=\"!hasError\"\n >\n Open the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n <span\n translate\n *ngIf=\"hasError\"\n >\n Check the\n <span>User guide`KEEP_ORIGINAL`</span>\n </span>\n </a>\n </div>\n</div>" }]
@@ -25599,7 +25599,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
25599
25599
  class HelpModule {
25600
25600
  }
25601
25601
  HelpModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HelpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25602
- HelpModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: HelpModule, declarations: [HelpComponent], imports: [CommonModule, i1$a.CollapseModule, i1$8.TooltipModule, ActionBarModule,
25602
+ HelpModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: HelpModule, declarations: [HelpComponent], imports: [CommonModule, i1$9.CollapseModule, i1$7.TooltipModule, ActionBarModule,
25603
25603
  ProductExperienceModule], exports: [HelpComponent] });
25604
25604
  HelpModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: HelpModule, providers: [HelpService], imports: [CommonModule,
25605
25605
  CollapseModule.forRoot(),
@@ -25638,7 +25638,7 @@ class RealtimeButtonComponent {
25638
25638
  }
25639
25639
  }
25640
25640
  RealtimeButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RealtimeButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25641
- RealtimeButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: { service: "service", label: "label", title: "title" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"btn btn-link c8y-realtime\"\n title=\"{{ title | translate }}\"\n (click)=\"toggle()\"\n>\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: active, inactive: !active }\"></span>\n <span>{{ label | translate }}</span>\n</button>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
25641
+ RealtimeButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RealtimeButtonComponent, selector: "c8y-realtime-btn", inputs: { service: "service", label: "label", title: "title" }, ngImport: i0, template: "<button\n type=\"button\"\n class=\"btn btn-link c8y-realtime\"\n title=\"{{ title | translate }}\"\n (click)=\"toggle()\"\n>\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: active, inactive: !active }\"></span>\n <span>{{ label | translate }}</span>\n</button>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
25642
25642
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RealtimeButtonComponent, decorators: [{
25643
25643
  type: Component,
25644
25644
  args: [{ selector: 'c8y-realtime-btn', template: "<button\n type=\"button\"\n class=\"btn btn-link c8y-realtime\"\n title=\"{{ title | translate }}\"\n (click)=\"toggle()\"\n>\n <span class=\"c8y-pulse\" [ngClass]=\"{ active: active, inactive: !active }\"></span>\n <span>{{ label | translate }}</span>\n</button>\n" }]
@@ -25786,12 +25786,12 @@ class SelectModalComponent {
25786
25786
  .map(selectedOption => selectedOption.obj);
25787
25787
  }
25788
25788
  }
25789
- SelectModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectModalComponent, deps: [{ token: i1$9.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
25790
- SelectModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SelectModalComponent, selector: "c8y-select-modal", inputs: { icon: "icon", title: "title", subTitle: "subTitle", items: "items", mode: "mode", disableSelected: "disableSelected", showFilter: "showFilter", additionalFilterTemplate: "additionalFilterTemplate", areMoreEntries: "areMoreEntries", labels: "labels", noItemsMessage: "noItemsMessage" }, outputs: { result: "result", search: "search", onChoiceUpdated: "onChoiceUpdated" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"icon\"></i>\n <h1 id=\"modal-title\" class=\"h3\">\n {{ title | translate }}\n </h1>\n </div>\n <div class=\"p-16 text-center separator-bottom min-height-fit\">\n <p class=\"m-b-8\">{{ subTitle | translate }}</p>\n <div class=\"row\">\n <div\n *ngIf=\"showFilter\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <c8y-filter [icon]=\"'search'\" (onSearch)=\"updatePipe($event)\"></c8y-filter>\n </div>\n <div\n *ngIf=\"additionalFilterTemplate\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <ng-container *ngTemplateOutlet=\"additionalFilterTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-16 p-r-16\">\n <div class=\"panel m-t-8 m-b-8\" *ngIf=\"!items || items.length === 0\">\n <div class=\"c8y-empty-state text-left\">\n <h1 c8yIcon=\"{{ icon }} \" class=\"c8y-icon-duocolor\"></h1>\n <p>{{ (noItemsMessage | translate) ?? 'No items to display.' | translate }}</p>\n </div>\n </div>\n </div>\n <c8y-list-group>\n <c8y-li *ngFor=\"let item of listItems | selectModalFilterPipe: filterTerm\">\n <c8y-li-icon>\n <i c8yIcon=\"{{ icon }}\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-30\">\n <div class=\"col-9\">\n <div *ngFor=\"let bodyPart of item.body\" [ngClass]=\"bodyPart.class\">\n <c8y-highlight\n [title]=\"bodyPart.value\"\n [pattern]=\"filterTerm\"\n [text]=\"bodyPart.value\"\n ></c8y-highlight>\n </div>\n </div>\n\n <div class=\"col-3 text-right\" *ngIf=\"item.additionalInformation\">\n <div [ngClass]=\"item.additionalInformation.class\">\n {{ item.additionalInformation.value }}\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <c8y-list-group>\n <c8y-li *ngFor=\"let option of item.options\">\n <c8y-li-radio\n [name]=\"mode === 'single' ? 'single' : item.groupId\"\n (onSelect)=\"updateChoice({ item: item, id: option.obj.id })\"\n [disabled]=\"option.disabled\"\n [selected]=\"option.selected\"\n ></c8y-li-radio>\n <c8y-li-body class=\"content-flex-20\">\n <div\n *ngFor=\"let optionPart of option.body; let i = index\"\n [ngClass]=\"optionPart.class\"\n >\n <c8y-highlight [pattern]=\"filterTerm\" [text]=\"optionPart.value\"></c8y-highlight>\n </div>\n <ng-container\n *ngIf=\"option.template\"\n [ngTemplateOutlet]=\"option.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item, option: option }\"\n ></ng-container>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-li-collapse>\n </c8y-li>\n <div *ngIf=\"areMoreEntries\">\n <div class=\"alert alert-info m-t-16 m-r-8 m-l-8\" translate>\n Some entries might not be shown. Try narrowing search criteria.\n </div>\n </div>\n </c8y-list-group>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"select()\"\n [disabled]=\"!selected\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: FilterInputComponent, selector: "c8y-filter", inputs: ["icon"], outputs: ["onSearch"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: SelectModalFilterPipe, name: "selectModalFilterPipe" }] });
25789
+ SelectModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectModalComponent, deps: [{ token: i1$8.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
25790
+ SelectModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: SelectModalComponent, selector: "c8y-select-modal", inputs: { icon: "icon", title: "title", subTitle: "subTitle", items: "items", mode: "mode", disableSelected: "disableSelected", showFilter: "showFilter", additionalFilterTemplate: "additionalFilterTemplate", areMoreEntries: "areMoreEntries", labels: "labels", noItemsMessage: "noItemsMessage" }, outputs: { result: "result", search: "search", onChoiceUpdated: "onChoiceUpdated" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"icon\"></i>\n <h1 id=\"modal-title\" class=\"h3\">\n {{ title | translate }}\n </h1>\n </div>\n <div class=\"p-16 text-center separator-bottom min-height-fit\">\n <p class=\"m-b-8\">{{ subTitle | translate }}</p>\n <div class=\"row\">\n <div\n *ngIf=\"showFilter\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <c8y-filter [icon]=\"'search'\" (onSearch)=\"updatePipe($event)\"></c8y-filter>\n </div>\n <div\n *ngIf=\"additionalFilterTemplate\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <ng-container *ngTemplateOutlet=\"additionalFilterTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-16 p-r-16\">\n <div class=\"panel m-t-8 m-b-8\" *ngIf=\"!items || items.length === 0\">\n <div class=\"c8y-empty-state text-left\">\n <h1 c8yIcon=\"{{ icon }} \" class=\"c8y-icon-duocolor\"></h1>\n <p>{{ (noItemsMessage | translate) ?? 'No items to display.' | translate }}</p>\n </div>\n </div>\n </div>\n <c8y-list-group>\n <c8y-li *ngFor=\"let item of listItems | selectModalFilterPipe: filterTerm\">\n <c8y-li-icon>\n <i c8yIcon=\"{{ icon }}\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-30\">\n <div class=\"col-9\">\n <div *ngFor=\"let bodyPart of item.body\" [ngClass]=\"bodyPart.class\">\n <c8y-highlight\n [title]=\"bodyPart.value\"\n [pattern]=\"filterTerm\"\n [text]=\"bodyPart.value\"\n ></c8y-highlight>\n </div>\n </div>\n\n <div class=\"col-3 text-right\" *ngIf=\"item.additionalInformation\">\n <div [ngClass]=\"item.additionalInformation.class\">\n {{ item.additionalInformation.value }}\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <c8y-list-group>\n <c8y-li *ngFor=\"let option of item.options\">\n <c8y-li-radio\n [name]=\"mode === 'single' ? 'single' : item.groupId\"\n (onSelect)=\"updateChoice({ item: item, id: option.obj.id })\"\n [disabled]=\"option.disabled\"\n [selected]=\"option.selected\"\n ></c8y-li-radio>\n <c8y-li-body class=\"content-flex-20\">\n <div\n *ngFor=\"let optionPart of option.body; let i = index\"\n [ngClass]=\"optionPart.class\"\n >\n <c8y-highlight [pattern]=\"filterTerm\" [text]=\"optionPart.value\"></c8y-highlight>\n </div>\n <ng-container\n *ngIf=\"option.template\"\n [ngTemplateOutlet]=\"option.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item, option: option }\"\n ></ng-container>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-li-collapse>\n </c8y-li>\n <div *ngIf=\"areMoreEntries\">\n <div class=\"alert alert-info m-t-16 m-r-8 m-l-8\" translate>\n Some entries might not be shown. Try narrowing search criteria.\n </div>\n </div>\n </c8y-list-group>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"select()\"\n [disabled]=\"!selected\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: FilterInputComponent, selector: "c8y-filter", inputs: ["icon"], outputs: ["onSearch"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: SelectModalFilterPipe, name: "selectModalFilterPipe" }] });
25791
25791
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectModalComponent, decorators: [{
25792
25792
  type: Component,
25793
25793
  args: [{ selector: 'c8y-select-modal', template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"icon\"></i>\n <h1 id=\"modal-title\" class=\"h3\">\n {{ title | translate }}\n </h1>\n </div>\n <div class=\"p-16 text-center separator-bottom min-height-fit\">\n <p class=\"m-b-8\">{{ subTitle | translate }}</p>\n <div class=\"row\">\n <div\n *ngIf=\"showFilter\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <c8y-filter [icon]=\"'search'\" (onSearch)=\"updatePipe($event)\"></c8y-filter>\n </div>\n <div\n *ngIf=\"additionalFilterTemplate\"\n [ngClass]=\"{\n 'col-xs-6': showFilter && additionalFilterTemplate,\n 'col-xs-12': !showFilter || !additionalFilterTemplate\n }\"\n >\n <ng-container *ngTemplateOutlet=\"additionalFilterTemplate\"></ng-container>\n </div>\n </div>\n </div>\n <div class=\"modal-inner-scroll\" id=\"modal-body\">\n <div class=\"p-l-16 p-r-16\">\n <div class=\"panel m-t-8 m-b-8\" *ngIf=\"!items || items.length === 0\">\n <div class=\"c8y-empty-state text-left\">\n <h1 c8yIcon=\"{{ icon }} \" class=\"c8y-icon-duocolor\"></h1>\n <p>{{ (noItemsMessage | translate) ?? 'No items to display.' | translate }}</p>\n </div>\n </div>\n </div>\n <c8y-list-group>\n <c8y-li *ngFor=\"let item of listItems | selectModalFilterPipe: filterTerm\">\n <c8y-li-icon>\n <i c8yIcon=\"{{ icon }}\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-30\">\n <div class=\"col-9\">\n <div *ngFor=\"let bodyPart of item.body\" [ngClass]=\"bodyPart.class\">\n <c8y-highlight\n [title]=\"bodyPart.value\"\n [pattern]=\"filterTerm\"\n [text]=\"bodyPart.value\"\n ></c8y-highlight>\n </div>\n </div>\n\n <div class=\"col-3 text-right\" *ngIf=\"item.additionalInformation\">\n <div [ngClass]=\"item.additionalInformation.class\">\n {{ item.additionalInformation.value }}\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <c8y-list-group>\n <c8y-li *ngFor=\"let option of item.options\">\n <c8y-li-radio\n [name]=\"mode === 'single' ? 'single' : item.groupId\"\n (onSelect)=\"updateChoice({ item: item, id: option.obj.id })\"\n [disabled]=\"option.disabled\"\n [selected]=\"option.selected\"\n ></c8y-li-radio>\n <c8y-li-body class=\"content-flex-20\">\n <div\n *ngFor=\"let optionPart of option.body; let i = index\"\n [ngClass]=\"optionPart.class\"\n >\n <c8y-highlight [pattern]=\"filterTerm\" [text]=\"optionPart.value\"></c8y-highlight>\n </div>\n <ng-container\n *ngIf=\"option.template\"\n [ngTemplateOutlet]=\"option.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item, option: option }\"\n ></ng-container>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-li-collapse>\n </c8y-li>\n <div *ngIf=\"areMoreEntries\">\n <div class=\"alert alert-info m-t-16 m-r-8 m-l-8\" translate>\n Some entries might not be shown. Try narrowing search criteria.\n </div>\n </div>\n </c8y-list-group>\n </div>\n\n <div class=\"modal-footer\">\n <button\n title=\"{{ labels.cancel | translate }}\"\n type=\"button\"\n *ngIf=\"labels.cancel\"\n class=\"btn btn-default\"\n (click)=\"dismiss()\"\n >\n {{ labels.cancel | translate }}\n </button>\n <button\n title=\"{{ labels.ok | translate }}\"\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"select()\"\n [disabled]=\"!selected\"\n >\n {{ labels.ok | translate }}\n </button>\n </div>\n</div>\n" }]
25794
- }], ctorParameters: function () { return [{ type: i1$9.BsModalRef }]; }, propDecorators: { icon: [{
25794
+ }], ctorParameters: function () { return [{ type: i1$8.BsModalRef }]; }, propDecorators: { icon: [{
25795
25795
  type: Input
25796
25796
  }], title: [{
25797
25797
  type: Input
@@ -25824,7 +25824,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
25824
25824
  class SelectModalModule {
25825
25825
  }
25826
25826
  SelectModalModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25827
- SelectModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: SelectModalModule, declarations: [SelectModalComponent, SelectModalFilterPipe], imports: [i1$7.BsDropdownModule, CommonModule, ListGroupModule, SearchModule, FormsModule], exports: [SelectModalComponent, SelectModalFilterPipe] });
25827
+ SelectModalModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: SelectModalModule, declarations: [SelectModalComponent, SelectModalFilterPipe], imports: [i1$6.BsDropdownModule, CommonModule, ListGroupModule, SearchModule, FormsModule], exports: [SelectModalComponent, SelectModalFilterPipe] });
25828
25828
  SelectModalModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectModalModule, imports: [BsDropdownModule.forRoot(), CommonModule, ListGroupModule, SearchModule, FormsModule] });
25829
25829
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: SelectModalModule, decorators: [{
25830
25830
  type: NgModule,
@@ -25840,6 +25840,13 @@ class RangeDisplayComponent {
25840
25840
  this.sanitizer = sanitizer;
25841
25841
  this.config = {};
25842
25842
  this.display = 'full';
25843
+ this.currentRangeWidthChanged = new Subject();
25844
+ // width of current range is changing within 150ms, see style declaration for .range-display__range__current
25845
+ this.CURRENT_RANGE_WIDTH_TRANSITION_TIME = 150;
25846
+ this.DEFAULT_TOOLTIP_SHIFT = '50%';
25847
+ this.MIN_TOOLTIP_SHIFT = 10;
25848
+ this.tooltipShift = this.DEFAULT_TOOLTIP_SHIFT;
25849
+ this.destroyed$ = new Subject();
25843
25850
  }
25844
25851
  get inlineStyle() {
25845
25852
  this.config = this.config || {};
@@ -25855,6 +25862,8 @@ class RangeDisplayComponent {
25855
25862
  return this.sanitizer.bypassSecurityTrustStyle(`
25856
25863
  --range-min: ${this.config.min};
25857
25864
  --range-max: ${this.config.max};
25865
+ --range-display-tooltip-translate: translate(${this.tooltipShift}, -56px);
25866
+ --range-display-tooltip-bg: var(${this.getTooltipBackground()});
25858
25867
  --full-range: ${this.config.max - this.config.min};
25859
25868
  --measurement-target: ${((this.config.target - this.config.min) * 100) / (this.config.max - this.config.min)}%;
25860
25869
  --measurement-current: ${((this.config.current - this.config.min) * 100) / (this.config.max - this.config.min)}%;
@@ -25868,6 +25877,21 @@ class RangeDisplayComponent {
25868
25877
  100}%;
25869
25878
  `);
25870
25879
  }
25880
+ ngOnChanges() {
25881
+ // It's necessary to handle tooltip shifting both in OnChanges and AfterViewInit. In case of Linear gauge widget, view is
25882
+ // rendered first (so as elements needed for calculating shifting) and config orientation is set later on.
25883
+ // In other cases it's possible that orientation is defined on initialization of class and view elements are rendered later.
25884
+ this.setupTooltipShiftingIfPossible();
25885
+ }
25886
+ ngAfterViewInit() {
25887
+ this.setupTooltipShiftingIfPossible();
25888
+ }
25889
+ ngOnDestroy() {
25890
+ var _a;
25891
+ (_a = this.currentRangeWidthObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
25892
+ this.destroyed$.next();
25893
+ this.destroyed$.complete();
25894
+ }
25871
25895
  checkTarget() {
25872
25896
  return (this.config.target !== undefined &&
25873
25897
  this.config.target !== null &&
@@ -25895,19 +25919,78 @@ class RangeDisplayComponent {
25895
25919
  isRangeDisplayed(rangeMin, rangeMax) {
25896
25920
  return rangeMin === 0 || rangeMax === 0 || (rangeMin && rangeMax);
25897
25921
  }
25922
+ setupTooltipShifting() {
25923
+ this.currentRangeWidthObserver = new ResizeObserver(([val]) => {
25924
+ if (getComputedStyle(val.target, null).display === 'block') {
25925
+ this.currentRangeWidthChanged.next(val.target);
25926
+ }
25927
+ });
25928
+ this.currentRangeWidthObserver.observe(this.currentRangeElement.nativeElement);
25929
+ this.currentRangeWidthChanged
25930
+ .pipe(debounceTime(this.CURRENT_RANGE_WIDTH_TRANSITION_TIME), map((rangeElement) => parseInt(getComputedStyle(rangeElement, null).width)), distinctUntilChanged(), takeUntil(this.destroyed$))
25931
+ .subscribe(rangeElementWidth => {
25932
+ this.setTooltipShiftValue(rangeElementWidth);
25933
+ });
25934
+ }
25935
+ setTooltipShiftValue(rangeElementWidth) {
25936
+ const tooltipWidth = parseInt(getComputedStyle(this.currentRangeElement.nativeElement, ':after').width);
25937
+ const currentRangeWidth = rangeElementWidth;
25938
+ const rangeDisplayWidth = parseInt(getComputedStyle(this.rangeDisplay.nativeElement, null).getPropertyValue('width'));
25939
+ const rangeDisplayPaddingLeft = parseInt(getComputedStyle(this.rangeDisplay.nativeElement, null).getPropertyValue('padding-left'));
25940
+ const tooltipOverflowsLeftEdge = tooltipWidth / 2 > rangeDisplayPaddingLeft + currentRangeWidth;
25941
+ const tooltipOverflowsRightEdge = tooltipWidth / 2 > rangeDisplayWidth - rangeDisplayPaddingLeft - currentRangeWidth;
25942
+ if (tooltipOverflowsLeftEdge) {
25943
+ this.tooltipShift = `${tooltipWidth - this.MIN_TOOLTIP_SHIFT}px`;
25944
+ }
25945
+ else if (tooltipOverflowsRightEdge) {
25946
+ this.tooltipShift = `${this.MIN_TOOLTIP_SHIFT}px`;
25947
+ }
25948
+ else {
25949
+ this.tooltipShift = this.DEFAULT_TOOLTIP_SHIFT;
25950
+ }
25951
+ }
25952
+ setupTooltipShiftingIfPossible() {
25953
+ var _a;
25954
+ if (((_a = this.config) === null || _a === void 0 ? void 0 : _a.orientation) === 'horizontal' &&
25955
+ !this.currentRangeWidthObserver &&
25956
+ this.rangeDisplay &&
25957
+ this.currentRangeElement) {
25958
+ this.setupTooltipShifting();
25959
+ }
25960
+ }
25961
+ getTooltipBackground() {
25962
+ const current = this.config.current;
25963
+ switch (true) {
25964
+ case this.isValueInRange(current, this.config.redRangeMin, this.config.redRangeMax):
25965
+ return '--c8y-palette-status-danger';
25966
+ case this.isValueInRange(current, this.config.yellowRangeMin, this.config.yellowRangeMax):
25967
+ return '--c8y-palette-status-warning';
25968
+ default:
25969
+ return '--c8y-palette-gray-30';
25970
+ }
25971
+ }
25972
+ isValueInRange(value, min, max) {
25973
+ return min != null && max != null && value >= min && value <= max;
25974
+ }
25898
25975
  }
25899
- RangeDisplayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RangeDisplayComponent, deps: [{ token: i1$6.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
25900
- RangeDisplayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RangeDisplayComponent, selector: "c8y-range-display", inputs: { config: "config", display: "display" }, host: { properties: { "attr.style": "this.inlineStyle" } }, ngImport: i0, template: "<div [ngClass]=\"{ 'range-display--vertical': config.orientation === 'vertical',\n 'range-display--compact' : display ==='compact',\n 'range-display--inline' : display ==='inline' }\" \n attr.data-label=\"{{ config.unit }}\"\n>\n <div class=\"range-display\">\n <div class=\"range-display__range\">\n <div class=\"range-display__range__unit\">\n {{ config.unit }}\n </div>\n <div *ngIf=\"isYellowRangeDisplayed()\" class=\"range-display__range__min\"></div>\n <div *ngIf=\"isRedRangeDisplayed()\" class=\"range-display__range__max\"></div>\n <div\n *ngIf=\"checkTarget()\"\n class=\"range-display__range__target\"\n attr.data-label=\"{{ config.target }} {{ config.unit }}\"\n title=\"{{ 'Target' | translate }}: {{ config.target }} {{ config.unit }}\"\n ></div>\n <div\n *ngIf=\"\n config.current != undefined &&\n config.current >= config.min &&\n config.current <= config.max\n \"\n class=\"range-display__range__current\"\n attr.data-label=\"{{ config.current }} {{ config.unit }} &#xa; {{ config.time | c8yDate }}\"\n title=\"{{ 'Current' | translate }}: {{ config.current }} {{ config.unit }} | {{\n config.time | c8yDate\n }}\"\n ></div>\n </div>\n <div class=\"range-display__ruler\">\n <div\n *ngFor=\"let x of [].constructor(10); let index = index; trackBy: trackByIndex\"\n attr.data-label=\"{{ rulerCalc(index) }}\"\n class=\"range-display__tick\"\n ></div>\n <div attr.data-label=\"{{ config.max || 100 | number }}\" class=\"range-display__tick\"></div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.DecimalPipe, name: "number" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] });
25976
+ RangeDisplayComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RangeDisplayComponent, deps: [{ token: i1$5.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
25977
+ RangeDisplayComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: RangeDisplayComponent, selector: "c8y-range-display", inputs: { config: "config", display: "display" }, host: { properties: { "attr.style": "this.inlineStyle" } }, viewQueries: [{ propertyName: "rangeDisplay", first: true, predicate: ["rangeDisplay"], descendants: true }, { propertyName: "currentRangeElement", first: true, predicate: ["currentRangeElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"{\n 'range-display--vertical': config.orientation === 'vertical',\n 'range-display--compact': display === 'compact',\n 'range-display--inline': display === 'inline'\n }\"\n attr.data-label=\"{{ config.unit }}\"\n>\n <div\n class=\"range-display\"\n #rangeDisplay\n >\n <div class=\"range-display__range\">\n <div class=\"range-display__range__unit\">\n {{ config.unit }}\n </div>\n <div\n *ngIf=\"isYellowRangeDisplayed()\"\n class=\"range-display__range__min\"\n ></div>\n <div\n *ngIf=\"isRedRangeDisplayed()\"\n class=\"range-display__range__max\"\n ></div>\n <div\n *ngIf=\"checkTarget()\"\n class=\"range-display__range__target\"\n attr.data-label=\"{{ config.target }} {{ config.unit }}\"\n title=\"{{ 'Target' | translate }}: {{ config.target }} {{ config.unit }}\"\n ></div>\n <div\n [ngStyle]=\"{\n display:\n config.current != undefined &&\n config.current >= config.min &&\n config.current <= config.max\n ? 'block'\n : 'none'\n }\"\n #currentRangeElement\n class=\"range-display__range__current\"\n attr.data-label=\"{{ config.current }} {{ config.unit }} &#xa;{{ config.time | c8yDate }}\"\n title=\"{{ 'Current' | translate }}: {{ config.current }} {{ config.unit }} | {{\n config.time | c8yDate\n }}\"\n ></div>\n </div>\n <div class=\"range-display__ruler\">\n <div\n *ngFor=\"let x of [].constructor(10); let index = index; trackBy: trackByIndex\"\n attr.data-label=\"{{ rulerCalc(index) }}\"\n class=\"range-display__tick\"\n ></div>\n <div\n attr.data-label=\"{{ config.max || 100 | number }}\"\n class=\"range-display__tick\"\n ></div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.DecimalPipe, name: "number" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] });
25901
25978
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RangeDisplayComponent, decorators: [{
25902
25979
  type: Component,
25903
- args: [{ selector: 'c8y-range-display', template: "<div [ngClass]=\"{ 'range-display--vertical': config.orientation === 'vertical',\n 'range-display--compact' : display ==='compact',\n 'range-display--inline' : display ==='inline' }\" \n attr.data-label=\"{{ config.unit }}\"\n>\n <div class=\"range-display\">\n <div class=\"range-display__range\">\n <div class=\"range-display__range__unit\">\n {{ config.unit }}\n </div>\n <div *ngIf=\"isYellowRangeDisplayed()\" class=\"range-display__range__min\"></div>\n <div *ngIf=\"isRedRangeDisplayed()\" class=\"range-display__range__max\"></div>\n <div\n *ngIf=\"checkTarget()\"\n class=\"range-display__range__target\"\n attr.data-label=\"{{ config.target }} {{ config.unit }}\"\n title=\"{{ 'Target' | translate }}: {{ config.target }} {{ config.unit }}\"\n ></div>\n <div\n *ngIf=\"\n config.current != undefined &&\n config.current >= config.min &&\n config.current <= config.max\n \"\n class=\"range-display__range__current\"\n attr.data-label=\"{{ config.current }} {{ config.unit }} &#xa; {{ config.time | c8yDate }}\"\n title=\"{{ 'Current' | translate }}: {{ config.current }} {{ config.unit }} | {{\n config.time | c8yDate\n }}\"\n ></div>\n </div>\n <div class=\"range-display__ruler\">\n <div\n *ngFor=\"let x of [].constructor(10); let index = index; trackBy: trackByIndex\"\n attr.data-label=\"{{ rulerCalc(index) }}\"\n class=\"range-display__tick\"\n ></div>\n <div attr.data-label=\"{{ config.max || 100 | number }}\" class=\"range-display__tick\"></div>\n </div>\n </div>\n</div>\n" }]
25904
- }], ctorParameters: function () { return [{ type: i1$6.DomSanitizer }]; }, propDecorators: { config: [{
25980
+ args: [{ selector: 'c8y-range-display', template: "<div\n [ngClass]=\"{\n 'range-display--vertical': config.orientation === 'vertical',\n 'range-display--compact': display === 'compact',\n 'range-display--inline': display === 'inline'\n }\"\n attr.data-label=\"{{ config.unit }}\"\n>\n <div\n class=\"range-display\"\n #rangeDisplay\n >\n <div class=\"range-display__range\">\n <div class=\"range-display__range__unit\">\n {{ config.unit }}\n </div>\n <div\n *ngIf=\"isYellowRangeDisplayed()\"\n class=\"range-display__range__min\"\n ></div>\n <div\n *ngIf=\"isRedRangeDisplayed()\"\n class=\"range-display__range__max\"\n ></div>\n <div\n *ngIf=\"checkTarget()\"\n class=\"range-display__range__target\"\n attr.data-label=\"{{ config.target }} {{ config.unit }}\"\n title=\"{{ 'Target' | translate }}: {{ config.target }} {{ config.unit }}\"\n ></div>\n <div\n [ngStyle]=\"{\n display:\n config.current != undefined &&\n config.current >= config.min &&\n config.current <= config.max\n ? 'block'\n : 'none'\n }\"\n #currentRangeElement\n class=\"range-display__range__current\"\n attr.data-label=\"{{ config.current }} {{ config.unit }} &#xa;{{ config.time | c8yDate }}\"\n title=\"{{ 'Current' | translate }}: {{ config.current }} {{ config.unit }} | {{\n config.time | c8yDate\n }}\"\n ></div>\n </div>\n <div class=\"range-display__ruler\">\n <div\n *ngFor=\"let x of [].constructor(10); let index = index; trackBy: trackByIndex\"\n attr.data-label=\"{{ rulerCalc(index) }}\"\n class=\"range-display__tick\"\n ></div>\n <div\n attr.data-label=\"{{ config.max || 100 | number }}\"\n class=\"range-display__tick\"\n ></div>\n </div>\n </div>\n</div>\n" }]
25981
+ }], ctorParameters: function () { return [{ type: i1$5.DomSanitizer }]; }, propDecorators: { config: [{
25905
25982
  type: Input
25906
25983
  }], display: [{
25907
25984
  type: Input
25908
25985
  }], inlineStyle: [{
25909
25986
  type: HostBinding,
25910
25987
  args: ['attr.style']
25988
+ }], rangeDisplay: [{
25989
+ type: ViewChild,
25990
+ args: ['rangeDisplay', { static: false }]
25991
+ }], currentRangeElement: [{
25992
+ type: ViewChild,
25993
+ args: ['currentRangeElement', { static: false }]
25911
25994
  }] } });
25912
25995
 
25913
25996
  /**
@@ -25996,12 +26079,12 @@ class ListDisplaySwitchComponent {
25996
26079
  return this.listKey || this.location.path();
25997
26080
  }
25998
26081
  }
25999
- ListDisplaySwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListDisplaySwitchComponent, deps: [{ token: i1$5.Location }], target: i0.ɵɵFactoryTarget.Component });
26000
- ListDisplaySwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListDisplaySwitchComponent, selector: "c8y-list-display-switch", inputs: { listKey: "listKey", listLength: "listLength", filterPipe: "filterPipe" }, outputs: { onListClassChange: "onListClassChange" }, ngImport: i0, template: "<div class=\"form-group\">\n <label class=\"m-r-8\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
26082
+ ListDisplaySwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListDisplaySwitchComponent, deps: [{ token: i2.Location }], target: i0.ɵɵFactoryTarget.Component });
26083
+ ListDisplaySwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ListDisplaySwitchComponent, selector: "c8y-list-display-switch", inputs: { listKey: "listKey", listLength: "listLength", filterPipe: "filterPipe" }, outputs: { onListClassChange: "onListClassChange" }, ngImport: i0, template: "<div class=\"form-group\">\n <label class=\"m-r-8\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
26001
26084
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ListDisplaySwitchComponent, decorators: [{
26002
26085
  type: Component,
26003
26086
  args: [{ selector: 'c8y-list-display-switch', template: "<div class=\"form-group\">\n <label class=\"m-r-8\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n" }]
26004
- }], ctorParameters: function () { return [{ type: i1$5.Location }]; }, propDecorators: { listKey: [{
26087
+ }], ctorParameters: function () { return [{ type: i2.Location }]; }, propDecorators: { listKey: [{
26005
26088
  type: Input
26006
26089
  }], listLength: [{
26007
26090
  type: Input,
@@ -26128,7 +26211,7 @@ class WizardOutletComponent {
26128
26211
  }
26129
26212
  }
26130
26213
  WizardOutletComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WizardOutletComponent, deps: [{ token: i1.Router }, { token: WizardService }, { token: i0.ViewContainerRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
26131
- WizardOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WizardOutletComponent, selector: "c8y-wizard-outlet", inputs: { initialState: "initialState", id: "id" }, outputs: { onSelect: "onSelect", onPath: "onPath" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container>\n <div class=\"modal-inner-scroll animated fadeIn\" *ngIf=\"showList\" id=\"modal-body\">\n <p class=\"p-16 text-center text-medium separator-bottom\">\n <span translate>Select method</span>\n </p>\n <div class=\"list-group list-group-links\" *ngIf=\"entries.length > 0; else emptyState\">\n <button\n *ngFor=\"let entry of entries\"\n type=\"button\"\n class=\"list-group-item d-flex a-i-center p-t-8 p-b-8\"\n (click)=\"handleEntry(entry)\"\n >\n <div class=\"list-item-icon\">\n <i [c8yIcon]=\"entry.c8yIcon || 'cogs'\"></i>\n </div>\n <div title=\"{{ entry.name | translate }}\" class=\"list-item-body text-truncate\">\n {{ entry.name | translate }}\n </div>\n </button>\n </div>\n\n <ng-template #emptyState>\n <div class=\"c8y-empty-state\">\n <p>{{ 'No options available.' | translate }}</p>\n </div>\n </ng-template>\n </div>\n</ng-container>\n<template #container [hidden]=\"showList\"></template>\n", dependencies: [{ kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
26214
+ WizardOutletComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WizardOutletComponent, selector: "c8y-wizard-outlet", inputs: { initialState: "initialState", id: "id" }, outputs: { onSelect: "onSelect", onPath: "onPath" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<ng-container>\n <div class=\"modal-inner-scroll animated fadeIn\" *ngIf=\"showList\" id=\"modal-body\">\n <p class=\"p-16 text-center text-medium separator-bottom\">\n <span translate>Select method</span>\n </p>\n <div class=\"list-group list-group-links\" *ngIf=\"entries.length > 0; else emptyState\">\n <button\n *ngFor=\"let entry of entries\"\n type=\"button\"\n class=\"list-group-item d-flex a-i-center p-t-8 p-b-8\"\n (click)=\"handleEntry(entry)\"\n >\n <div class=\"list-item-icon\">\n <i [c8yIcon]=\"entry.c8yIcon || 'cogs'\"></i>\n </div>\n <div title=\"{{ entry.name | translate }}\" class=\"list-item-body text-truncate\">\n {{ entry.name | translate }}\n </div>\n </button>\n </div>\n\n <ng-template #emptyState>\n <div class=\"c8y-empty-state\">\n <p>{{ 'No options available.' | translate }}</p>\n </div>\n </ng-template>\n </div>\n</ng-container>\n<template #container [hidden]=\"showList\"></template>\n", dependencies: [{ 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: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
26132
26215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WizardOutletComponent, decorators: [{
26133
26216
  type: Component,
26134
26217
  args: [{ selector: 'c8y-wizard-outlet', template: "<ng-container>\n <div class=\"modal-inner-scroll animated fadeIn\" *ngIf=\"showList\" id=\"modal-body\">\n <p class=\"p-16 text-center text-medium separator-bottom\">\n <span translate>Select method</span>\n </p>\n <div class=\"list-group list-group-links\" *ngIf=\"entries.length > 0; else emptyState\">\n <button\n *ngFor=\"let entry of entries\"\n type=\"button\"\n class=\"list-group-item d-flex a-i-center p-t-8 p-b-8\"\n (click)=\"handleEntry(entry)\"\n >\n <div class=\"list-item-icon\">\n <i [c8yIcon]=\"entry.c8yIcon || 'cogs'\"></i>\n </div>\n <div title=\"{{ entry.name | translate }}\" class=\"list-item-body text-truncate\">\n {{ entry.name | translate }}\n </div>\n </button>\n </div>\n\n <ng-template #emptyState>\n <div class=\"c8y-empty-state\">\n <p>{{ 'No options available.' | translate }}</p>\n </div>\n </ng-template>\n </div>\n</ng-container>\n<template #container [hidden]=\"showList\"></template>\n" }]
@@ -26251,12 +26334,12 @@ class WizardComponent {
26251
26334
  });
26252
26335
  }
26253
26336
  }
26254
- WizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WizardComponent, deps: [{ token: WizardService }, { token: i1$9.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
26255
- WizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WizardComponent, selector: "c8y-wizard", inputs: { id: "id", wizardConfig: "wizardConfig" }, outputs: { onClose: "onClose", onReset: "onReset", onSelect: "onSelect" }, viewQueries: [{ propertyName: "header", first: true, predicate: ["headerRef"], descendants: true, static: true }, { propertyName: "body", first: true, predicate: ["bodyRef"], descendants: true, static: true }, { propertyName: "footer", first: true, predicate: ["footerRef"], descendants: true, static: true }, { propertyName: "outlet", first: true, predicate: WizardOutletComponent, descendants: true }], ngImport: i0, template: "<div class=\"viewport-modal animated fadeIn\">\n <ng-template *ngTemplateOutlet=\"(headerTemplate$ | async)?.template\"></ng-template>\n\n <ng-template #headerRef>\n <div class=\"modal-header dialog-header animated fadeIn\">\n <i [c8yIcon]=\"wizardConfig.headerIcon\"></i>\n <h4 id=\"modal-title\">{{ wizardConfig.headerText | translate }}</h4>\n </div>\n </ng-template>\n\n <ng-template *ngTemplateOutlet=\"(bodyTemplate$ | async)?.template\"></ng-template>\n\n <ng-template #bodyRef>\n <div class=\"p-16 p-t-8 text-center\" *ngIf=\"wizardConfig.bodyHeaderText\">\n <div class=\"c8y-wizard-nav\">\n <i [c8yIcon]=\"wizardConfig.bodyHeaderIcon\"></i>\n <span>{{ wizardConfig.bodyHeaderText | translate }}</span>\n </div>\n </div>\n </ng-template>\n <c8y-wizard-outlet\n [initialState]=\"componentInitialState\"\n [id]=\"id\"\n (onSelect)=\"onSelect.emit($event)\"\n (onPath)=\"onPath()\"\n ></c8y-wizard-outlet>\n\n <ng-template *ngTemplateOutlet=\"(footerTemplate$ | async)?.template\"></ng-template>\n <ng-template #footerRef>\n <div class=\"modal-footer animated fadeIn\">\n <button\n (click)=\"close()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n >\n <span translate>Cancel</span>\n </button>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: WizardOutletComponent, selector: "c8y-wizard-outlet", inputs: ["initialState", "id"], outputs: ["onSelect", "onPath"] }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
26337
+ WizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WizardComponent, deps: [{ token: WizardService }, { token: i1$8.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
26338
+ WizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: WizardComponent, selector: "c8y-wizard", inputs: { id: "id", wizardConfig: "wizardConfig" }, outputs: { onClose: "onClose", onReset: "onReset", onSelect: "onSelect" }, viewQueries: [{ propertyName: "header", first: true, predicate: ["headerRef"], descendants: true, static: true }, { propertyName: "body", first: true, predicate: ["bodyRef"], descendants: true, static: true }, { propertyName: "footer", first: true, predicate: ["footerRef"], descendants: true, static: true }, { propertyName: "outlet", first: true, predicate: WizardOutletComponent, descendants: true }], ngImport: i0, template: "<div class=\"viewport-modal animated fadeIn\">\n <ng-template *ngTemplateOutlet=\"(headerTemplate$ | async)?.template\"></ng-template>\n\n <ng-template #headerRef>\n <div class=\"modal-header dialog-header animated fadeIn\">\n <i [c8yIcon]=\"wizardConfig.headerIcon\"></i>\n <h4 id=\"modal-title\">{{ wizardConfig.headerText | translate }}</h4>\n </div>\n </ng-template>\n\n <ng-template *ngTemplateOutlet=\"(bodyTemplate$ | async)?.template\"></ng-template>\n\n <ng-template #bodyRef>\n <div class=\"p-16 p-t-8 text-center\" *ngIf=\"wizardConfig.bodyHeaderText\">\n <div class=\"c8y-wizard-nav\">\n <i [c8yIcon]=\"wizardConfig.bodyHeaderIcon\"></i>\n <span>{{ wizardConfig.bodyHeaderText | translate }}</span>\n </div>\n </div>\n </ng-template>\n <c8y-wizard-outlet\n [initialState]=\"componentInitialState\"\n [id]=\"id\"\n (onSelect)=\"onSelect.emit($event)\"\n (onPath)=\"onPath()\"\n ></c8y-wizard-outlet>\n\n <ng-template *ngTemplateOutlet=\"(footerTemplate$ | async)?.template\"></ng-template>\n <ng-template #footerRef>\n <div class=\"modal-footer animated fadeIn\">\n <button\n (click)=\"close()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n >\n <span translate>Cancel</span>\n </button>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ 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: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: WizardOutletComponent, selector: "c8y-wizard-outlet", inputs: ["initialState", "id"], outputs: ["onSelect", "onPath"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] });
26256
26339
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WizardComponent, decorators: [{
26257
26340
  type: Component,
26258
26341
  args: [{ selector: 'c8y-wizard', template: "<div class=\"viewport-modal animated fadeIn\">\n <ng-template *ngTemplateOutlet=\"(headerTemplate$ | async)?.template\"></ng-template>\n\n <ng-template #headerRef>\n <div class=\"modal-header dialog-header animated fadeIn\">\n <i [c8yIcon]=\"wizardConfig.headerIcon\"></i>\n <h4 id=\"modal-title\">{{ wizardConfig.headerText | translate }}</h4>\n </div>\n </ng-template>\n\n <ng-template *ngTemplateOutlet=\"(bodyTemplate$ | async)?.template\"></ng-template>\n\n <ng-template #bodyRef>\n <div class=\"p-16 p-t-8 text-center\" *ngIf=\"wizardConfig.bodyHeaderText\">\n <div class=\"c8y-wizard-nav\">\n <i [c8yIcon]=\"wizardConfig.bodyHeaderIcon\"></i>\n <span>{{ wizardConfig.bodyHeaderText | translate }}</span>\n </div>\n </div>\n </ng-template>\n <c8y-wizard-outlet\n [initialState]=\"componentInitialState\"\n [id]=\"id\"\n (onSelect)=\"onSelect.emit($event)\"\n (onPath)=\"onPath()\"\n ></c8y-wizard-outlet>\n\n <ng-template *ngTemplateOutlet=\"(footerTemplate$ | async)?.template\"></ng-template>\n <ng-template #footerRef>\n <div class=\"modal-footer animated fadeIn\">\n <button\n (click)=\"close()\"\n type=\"button\"\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n >\n <span translate>Cancel</span>\n </button>\n </div>\n </ng-template>\n</div>\n" }]
26259
- }], ctorParameters: function () { return [{ type: WizardService }, { type: i1$9.BsModalRef }]; }, propDecorators: { header: [{
26342
+ }], ctorParameters: function () { return [{ type: WizardService }, { type: i1$8.BsModalRef }]; }, propDecorators: { header: [{
26260
26343
  type: ViewChild,
26261
26344
  args: ['headerRef', { static: true }]
26262
26345
  }], body: [{
@@ -26411,14 +26494,14 @@ class WizardModalService {
26411
26494
  return this.bsModalService.show(WizardComponent, options);
26412
26495
  }
26413
26496
  }
26414
- WizardModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WizardModalService, deps: [{ token: i1$9.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable });
26497
+ WizardModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WizardModalService, deps: [{ token: i1$8.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable });
26415
26498
  WizardModalService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WizardModalService, providedIn: 'root' });
26416
26499
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: WizardModalService, decorators: [{
26417
26500
  type: Injectable,
26418
26501
  args: [{
26419
26502
  providedIn: 'root'
26420
26503
  }]
26421
- }], ctorParameters: function () { return [{ type: i1$9.BsModalService }]; } });
26504
+ }], ctorParameters: function () { return [{ type: i1$8.BsModalService }]; } });
26422
26505
 
26423
26506
  class WizardModule {
26424
26507
  }
@@ -26894,7 +26977,7 @@ class ProviderConfigurationComponent {
26894
26977
  }
26895
26978
  }
26896
26979
  ProviderConfigurationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProviderConfigurationComponent, deps: [{ token: Permissions }, { token: i1.ActivatedRoute }, { token: ModalService }, { token: AlertService }, { token: ProviderDefinitionsService }, { token: ProviderConfigurationService }, { token: C8yJSONSchema }], target: i0.ɵɵFactoryTarget.Component });
26897
- ProviderConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ProviderConfigurationComponent, selector: "c8y-sms-gateway", providers: [ProviderConfigurationService, ProviderDefinitionsService], ngImport: i0, template: "<c8y-title>\n {{ (layout$ | async)?.pageTitle | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Settings' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle !='Connectivity'\"\n [label]=\"'SMS provider' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [label]=\"'Connectivity' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [icon]=\"'cog'\"\n [label]=\"'SIM provider settings' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div class=\"col-md-8 col-xs-12\">\n <form class=\"card card--fullpage\" (ngSubmit)=\"saveProviderConfiguration()\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ (layout$ | async)?.cardTitle | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <p *ngIf=\"!!(layout$ | async)?.description\" class=\"m-b-8\">\n {{ (layout$ | async)?.description | translate }}\n </p>\n <c8y-form-group>\n <label for=\"providerName\">{{ (layout$ | async)?.providerName | translate }}</label>\n <c8y-typeahead\n [disabled]=\"!permissions.hasAllRoles((layout$ | async)?.saveRoles || [])\"\n [ngModel]=\"selectedProvider$ | async\"\n [displayProperty]=\"'displayName'\"\n name=\"providerName\"\n placeholder=\"{{ (layout$ | async)?.providerNamePlaceholder | translate }}\"\n (onSearch)=\"providerInput$.next($event)\"\n [allowFreeEntries]=\"false\"\n [required]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *ngFor=\"let provider of providers$ | async\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"changeProvider$.next(provider); providerInput$.next('')\"\n [active]=\"(selectedProvider$ | async) === provider\"\n >\n <c8y-highlight\n [text]=\"provider.displayName || '--'\"\n [pattern]=\"providerInput$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"(layout$ | async)?.providerNameNoMatchesHint | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <formly-form\n *ngIf=\"selectedProvider$ | async\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n ></formly-form>\n </div>\n </div>\n <div class=\"card-footer separator\" *c8yIfAllowed=\"allRoles$ | async; allowAny\">\n <button\n *c8yIfAllowed=\"(layout$ | async)?.deleteRoles\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"deleteProviderConfiguration()\"\n [disabled]=\"\n !(configuration$ | async)?.provider && !(configuration$ | async)?.providerName\n \"\n title=\"{{ (layout$ | async)?.deleteBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.deleteBtnLabel | translate }}\n </button>\n <button\n *c8yIfAllowed=\"(layout$ | async)?.saveRoles\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid || form.pristine\"\n title=\"{{ (layout$ | async)?.saveBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.saveBtnLabel | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i4$1.FormlyForm, selector: "formly-form", inputs: ["model", "fields", "options", "form"], outputs: ["modelChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1$5.AsyncPipe, name: "async" }] });
26980
+ ProviderConfigurationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: ProviderConfigurationComponent, selector: "c8y-sms-gateway", providers: [ProviderConfigurationService, ProviderDefinitionsService], ngImport: i0, template: "<c8y-title>\n {{ (layout$ | async)?.pageTitle | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Settings' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle !='Connectivity'\"\n [label]=\"'SMS provider' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [label]=\"'Connectivity' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [icon]=\"'cog'\"\n [label]=\"'SIM provider settings' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div class=\"col-md-8 col-xs-12\">\n <form class=\"card card--fullpage\" (ngSubmit)=\"saveProviderConfiguration()\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ (layout$ | async)?.cardTitle | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <p *ngIf=\"!!(layout$ | async)?.description\" class=\"m-b-8\">\n {{ (layout$ | async)?.description | translate }}\n </p>\n <c8y-form-group>\n <label for=\"providerName\">{{ (layout$ | async)?.providerName | translate }}</label>\n <c8y-typeahead\n [disabled]=\"!permissions.hasAllRoles((layout$ | async)?.saveRoles || [])\"\n [ngModel]=\"selectedProvider$ | async\"\n [displayProperty]=\"'displayName'\"\n name=\"providerName\"\n placeholder=\"{{ (layout$ | async)?.providerNamePlaceholder | translate }}\"\n (onSearch)=\"providerInput$.next($event)\"\n [allowFreeEntries]=\"false\"\n [required]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *ngFor=\"let provider of providers$ | async\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"changeProvider$.next(provider); providerInput$.next('')\"\n [active]=\"(selectedProvider$ | async) === provider\"\n >\n <c8y-highlight\n [text]=\"provider.displayName || '--'\"\n [pattern]=\"providerInput$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"(layout$ | async)?.providerNameNoMatchesHint | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <formly-form\n *ngIf=\"selectedProvider$ | async\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n ></formly-form>\n </div>\n </div>\n <div class=\"card-footer separator\" *c8yIfAllowed=\"allRoles$ | async; allowAny\">\n <button\n *c8yIfAllowed=\"(layout$ | async)?.deleteRoles\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"deleteProviderConfiguration()\"\n [disabled]=\"\n !(configuration$ | async)?.provider && !(configuration$ | async)?.providerName\n \"\n title=\"{{ (layout$ | async)?.deleteBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.deleteBtnLabel | translate }}\n </button>\n <button\n *c8yIfAllowed=\"(layout$ | async)?.saveRoles\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid || form.pristine\"\n title=\"{{ (layout$ | async)?.saveBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.saveBtnLabel | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { 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: IfAllowedDirective, selector: "[c8yIfAllowed]", inputs: ["c8yIfAllowed", "c8yIfAllowedAllowAny"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "emptyActions", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i4$1.FormlyForm, selector: "formly-form", inputs: ["model", "fields", "options", "form"], outputs: ["modelChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
26898
26981
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProviderConfigurationComponent, decorators: [{
26899
26982
  type: Component,
26900
26983
  args: [{ selector: 'c8y-sms-gateway', providers: [ProviderConfigurationService, ProviderDefinitionsService], template: "<c8y-title>\n {{ (layout$ | async)?.pageTitle | translate }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n [label]=\"'Settings' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle !='Connectivity'\"\n [label]=\"'SMS provider' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [label]=\"'Connectivity' | translate\"\n [icon]=\"'cog'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item *ngIf=\"(layout$ | async)?.pageTitle =='Connectivity'\"\n [icon]=\"'cog'\"\n [label]=\"'SIM provider settings' | translate\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div class=\"row\">\n <div class=\"col-md-8 col-xs-12\">\n <form class=\"card card--fullpage\" (ngSubmit)=\"saveProviderConfiguration()\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ (layout$ | async)?.cardTitle | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <p *ngIf=\"!!(layout$ | async)?.description\" class=\"m-b-8\">\n {{ (layout$ | async)?.description | translate }}\n </p>\n <c8y-form-group>\n <label for=\"providerName\">{{ (layout$ | async)?.providerName | translate }}</label>\n <c8y-typeahead\n [disabled]=\"!permissions.hasAllRoles((layout$ | async)?.saveRoles || [])\"\n [ngModel]=\"selectedProvider$ | async\"\n [displayProperty]=\"'displayName'\"\n name=\"providerName\"\n placeholder=\"{{ (layout$ | async)?.providerNamePlaceholder | translate }}\"\n (onSearch)=\"providerInput$.next($event)\"\n [allowFreeEntries]=\"false\"\n [required]=\"true\"\n [container]=\"'body'\"\n >\n <c8y-li\n *ngFor=\"let provider of providers$ | async\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"changeProvider$.next(provider); providerInput$.next('')\"\n [active]=\"(selectedProvider$ | async) === provider\"\n >\n <c8y-highlight\n [text]=\"provider.displayName || '--'\"\n [pattern]=\"providerInput$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n <c8y-messages>\n <c8y-message\n name=\"notExisting\"\n [text]=\"(layout$ | async)?.providerNameNoMatchesHint | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <formly-form\n *ngIf=\"selectedProvider$ | async\"\n [form]=\"form\"\n [fields]=\"fields\"\n [model]=\"model\"\n [options]=\"options\"\n ></formly-form>\n </div>\n </div>\n <div class=\"card-footer separator\" *c8yIfAllowed=\"allRoles$ | async; allowAny\">\n <button\n *c8yIfAllowed=\"(layout$ | async)?.deleteRoles\"\n class=\"btn btn-default\"\n type=\"button\"\n (click)=\"deleteProviderConfiguration()\"\n [disabled]=\"\n !(configuration$ | async)?.provider && !(configuration$ | async)?.providerName\n \"\n title=\"{{ (layout$ | async)?.deleteBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.deleteBtnLabel | translate }}\n </button>\n <button\n *c8yIfAllowed=\"(layout$ | async)?.saveRoles\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"form.invalid || form.pristine\"\n title=\"{{ (layout$ | async)?.saveBtnLabel | translate }}\"\n >\n {{ (layout$ | async)?.saveBtnLabel | translate }}\n </button>\n </div>\n </form>\n </div>\n</div>\n" }]
@@ -27219,6 +27302,20 @@ class RealtimeService {
27219
27302
  get active() {
27220
27303
  return this.isActive.value;
27221
27304
  }
27305
+ /**
27306
+ * An observable emitting a value in case the realtime connection has been interrupted.
27307
+ * Can be used to reload data of e.g. a datapoint graph that wasn't received while realtime was interrupted.
27308
+ */
27309
+ get reconnect$() {
27310
+ return this.realtimeSubject.reconnect$;
27311
+ }
27312
+ /**
27313
+ * An observable emitting either `connected` or `disconnected` depending on the state of the realtime connection.
27314
+ * Can be used to e.g. inform the user about the interrupted realtime connection.
27315
+ */
27316
+ get connectionStatus$() {
27317
+ return this.realtimeSubject.connectionStatus$;
27318
+ }
27222
27319
  /**
27223
27320
  * Get an Observable of all realtime notifications.
27224
27321
  *
@@ -27298,6 +27395,8 @@ class RealtimeSubjectService {
27298
27395
  constructor(realtime) {
27299
27396
  this.realtime = realtime;
27300
27397
  this.subjects$ = new Map();
27398
+ this.reconnect$ = this.createObservableForReconnect().pipe(share());
27399
+ this.connectionStatus$ = this.createObservableForConnectionStatus().pipe(distinctUntilChanged(), shareReplay({ refCount: true, bufferSize: 1 }));
27301
27400
  }
27302
27401
  getObservableForChannel(channel) {
27303
27402
  if (this.subjects$.has(channel)) {
@@ -27310,7 +27409,7 @@ class RealtimeSubjectService {
27310
27409
  }
27311
27410
  createObservableForChannel(channel, realtime) {
27312
27411
  return new Observable(observer => {
27313
- const realtimeSubscription = realtime.subscribe(channel, msg => {
27412
+ let realtimeSubscription = realtime.subscribe(channel, msg => {
27314
27413
  const data = {
27315
27414
  channel: msg.channel,
27316
27415
  data: msg.data.data,
@@ -27319,13 +27418,54 @@ class RealtimeSubjectService {
27319
27418
  };
27320
27419
  observer.next(data);
27321
27420
  });
27421
+ /**
27422
+ * In (rare) case of a re-handshake, resubscribe valid subscriptions.
27423
+ * @see https://docs.cometd.org/current/reference/#_javascript_subscribe_resubscribe
27424
+ */
27425
+ const reconnectSubscription = this.reconnect$.subscribe(() => {
27426
+ try {
27427
+ realtimeSubscription = this.realtime.resubscribe(realtimeSubscription);
27428
+ }
27429
+ catch (e) {
27430
+ console.warn(`Failed to resubscribe to channel: "${channel}" after reconnect.`, e);
27431
+ observer.error(e);
27432
+ }
27433
+ });
27322
27434
  return {
27323
- unsubscribe() {
27435
+ unsubscribe: () => {
27436
+ reconnectSubscription.unsubscribe();
27324
27437
  realtime.unsubscribe(realtimeSubscription);
27325
27438
  }
27326
27439
  };
27327
27440
  });
27328
27441
  }
27442
+ createObservableForReconnect() {
27443
+ return new Observable(observer => {
27444
+ const handle = this.realtime.addHandshakeListener(msg => {
27445
+ if (msg.successful && msg.reestablish) {
27446
+ observer.next();
27447
+ }
27448
+ });
27449
+ return {
27450
+ unsubscribe: () => {
27451
+ this.realtime.removeListener(handle);
27452
+ }
27453
+ };
27454
+ });
27455
+ }
27456
+ createObservableForConnectionStatus() {
27457
+ return new Observable(observer => {
27458
+ observer.next(!this.realtime.isDisconnected() ? 'connected' : 'disconnected');
27459
+ const handle = this.realtime.addConnectListener(msg => {
27460
+ observer.next(msg.successful ? 'connected' : 'disconnected');
27461
+ });
27462
+ return {
27463
+ unsubscribe: () => {
27464
+ this.realtime.removeListener(handle);
27465
+ }
27466
+ };
27467
+ });
27468
+ }
27329
27469
  }
27330
27470
  RealtimeSubjectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RealtimeSubjectService, deps: [{ token: i1$2.Realtime }], target: i0.ɵɵFactoryTarget.Injectable });
27331
27471
  RealtimeSubjectService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: RealtimeSubjectService, providedIn: 'root' });