@c8y/ngx-components 1021.75.8 → 1021.77.0

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 (73) hide show
  1. package/branding/shared/supports-branding.service.d.ts.map +1 -1
  2. package/core/common/ApplicationOptions.d.ts +2 -2
  3. package/core/dashboard/widgets-dashboard.component.d.ts +4 -2
  4. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  5. package/core/login/login.component.d.ts.map +1 -1
  6. package/core/login/login.service.d.ts +1 -0
  7. package/core/login/login.service.d.ts.map +1 -1
  8. package/core/navigator/navigator-bottom/navigator-bottom.service.d.ts +3 -1
  9. package/core/navigator/navigator-bottom/navigator-bottom.service.d.ts.map +1 -1
  10. package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
  11. package/echart/charts.component.d.ts.map +1 -1
  12. package/echart/models/datapoints-graph-widget.model.d.ts +10 -0
  13. package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -1
  14. package/echart/services/chart-realtime.service.d.ts +2 -5
  15. package/echart/services/chart-realtime.service.d.ts.map +1 -1
  16. package/echart/services/echarts-options.service.d.ts +4 -13
  17. package/echart/services/echarts-options.service.d.ts.map +1 -1
  18. package/echart/services/y-axis.service.d.ts +1 -1
  19. package/echart/services/y-axis.service.d.ts.map +1 -1
  20. package/esm2022/branding/shared/supports-branding.service.mjs +6 -3
  21. package/esm2022/core/beta-feature/beta-preview-button.component.mjs +3 -3
  22. package/esm2022/core/beta-feature/beta-preview.component.mjs +3 -3
  23. package/esm2022/core/common/ApplicationOptions.mjs +1 -1
  24. package/esm2022/core/dashboard/widgets-dashboard.component.mjs +9 -5
  25. package/esm2022/core/login/login.component.mjs +2 -1
  26. package/esm2022/core/login/login.service.mjs +5 -1
  27. package/esm2022/core/navigator/navigator-bottom/navigator-bottom.service.mjs +13 -6
  28. package/esm2022/datapoint-explorer/view/datapoint-explorer.component.mjs +4 -3
  29. package/esm2022/device-map/device-map.component.mjs +2 -2
  30. package/esm2022/echart/charts.component.mjs +8 -2
  31. package/esm2022/echart/models/datapoints-graph-widget.model.mjs +1 -1
  32. package/esm2022/echart/services/chart-realtime.service.mjs +1 -1
  33. package/esm2022/echart/services/echarts-options.service.mjs +23 -15
  34. package/esm2022/echart/services/y-axis.service.mjs +32 -1
  35. package/esm2022/map/cluster-map.component.mjs +6 -3
  36. package/esm2022/map/map-status.component.mjs +23 -5
  37. package/esm2022/map/map.model.mjs +5 -2
  38. package/esm2022/map/map.service.mjs +17 -1
  39. package/esm2022/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.mjs +4 -3
  40. package/esm2022/widgets/implementations/map/map-widget-config.component.mjs +25 -6
  41. package/esm2022/widgets/implementations/map/map-widget.component.mjs +40 -11
  42. package/fesm2022/c8y-ngx-components-branding-shared.mjs +5 -2
  43. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +3 -2
  45. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  46. package/fesm2022/c8y-ngx-components-device-map.mjs +1 -1
  47. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  48. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-echart.mjs +60 -15
  50. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-map.mjs +47 -7
  52. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  53. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +3 -2
  54. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  55. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +67 -19
  56. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  57. package/fesm2022/c8y-ngx-components.mjs +26 -12
  58. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  59. package/locales/locales.pot +19 -7
  60. package/map/cluster-map.component.d.ts +2 -1
  61. package/map/cluster-map.component.d.ts.map +1 -1
  62. package/map/map-status.component.d.ts +7 -2
  63. package/map/map-status.component.d.ts.map +1 -1
  64. package/map/map.model.d.ts +1 -0
  65. package/map/map.model.d.ts.map +1 -1
  66. package/map/map.service.d.ts +1 -0
  67. package/map/map.service.d.ts.map +1 -1
  68. package/package.json +1 -1
  69. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts.map +1 -1
  70. package/widgets/implementations/map/map-widget-config.component.d.ts +1 -0
  71. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  72. package/widgets/implementations/map/map-widget.component.d.ts +10 -4
  73. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
@@ -13495,6 +13495,10 @@ class LoginService {
13495
13495
  : gettext$1('SSO login failed. Contact the administrator.');
13496
13496
  this.modalService.acknowledge(gettext$1('Login error'), body, Status.DANGER, gettext$1('OK'));
13497
13497
  }
13498
+ async clearCookies() {
13499
+ // clear cookies but avoid redirect on logout
13500
+ return await this.cookieAuth.logout({ redirect: 'manual' });
13501
+ }
13498
13502
  /**
13499
13503
  * Sets the tenant to the client and updates the credentials on the
13500
13504
  * auth strategy.
@@ -17225,6 +17229,7 @@ class LoginComponent {
17225
17229
  await this.loginService.login();
17226
17230
  }
17227
17231
  catch (e) {
17232
+ await this.loginService.clearCookies();
17228
17233
  const preferredLoginOptionType = this.loginService.loginMode.type;
17229
17234
  if (preferredLoginOptionType === TenantLoginOptionType.OAUTH2) {
17230
17235
  this.loginService.redirectToOauth();
@@ -23406,8 +23411,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
23406
23411
  }] });
23407
23412
 
23408
23413
  class NavigatorBottomService {
23409
- constructor(options) {
23414
+ constructor(options, themeService) {
23410
23415
  this.options = options;
23416
+ this.themeService = themeService;
23411
23417
  this.navigatorLogoVariable = 'navigator-platform-logo';
23412
23418
  this.navigatorLogoHeightVariable = 'navigator-platform-logo-height';
23413
23419
  }
@@ -23415,11 +23421,15 @@ class NavigatorBottomService {
23415
23421
  return this.options.get$('hidePowered').pipe(map(hidePowered => !!hidePowered));
23416
23422
  }
23417
23423
  hasCustomNavigatorLogoSet() {
23418
- return this.options.get$('brandingCSSVars').pipe(map(vars => {
23424
+ return combineLatest([
23425
+ this.options.get$('brandingCSSVars'),
23426
+ this.themeService.currentlyAppliedTheme$
23427
+ ]).pipe(map(([vars, theme]) => {
23419
23428
  if (!vars || typeof vars !== 'object') {
23420
23429
  return false;
23421
23430
  }
23422
- if (typeof vars[this.navigatorLogoVariable] === 'string') {
23431
+ const variableToLookFor = theme === 'dark' ? `dark-${this.navigatorLogoVariable}` : this.navigatorLogoVariable;
23432
+ if (typeof vars[variableToLookFor] === 'string') {
23423
23433
  return true;
23424
23434
  }
23425
23435
  return false;
@@ -23431,7 +23441,7 @@ class NavigatorBottomService {
23431
23441
  shouldShowDefaultPoweredBy() {
23432
23442
  return combineLatest([this.hasHidePoweredSet(), this.hasCustomNavigatorLogoSet()]).pipe(map(([hidePowered, hasCustomLogo]) => !hidePowered && !hasCustomLogo));
23433
23443
  }
23434
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigatorBottomService, deps: [{ token: OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
23444
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigatorBottomService, deps: [{ token: OptionsService }, { token: ThemeSwitcherService }], target: i0.ɵɵFactoryTarget.Injectable }); }
23435
23445
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigatorBottomService, providedIn: 'root' }); }
23436
23446
  }
23437
23447
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NavigatorBottomService, decorators: [{
@@ -23439,7 +23449,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
23439
23449
  args: [{
23440
23450
  providedIn: 'root'
23441
23451
  }]
23442
- }], ctorParameters: () => [{ type: OptionsService }] });
23452
+ }], ctorParameters: () => [{ type: OptionsService }, { type: ThemeSwitcherService }] });
23443
23453
 
23444
23454
  class NavigatorBottomComponent {
23445
23455
  constructor(bottomService) {
@@ -30616,13 +30626,17 @@ class WidgetsDashboardComponent {
30616
30626
  this.settings = { ...this.settings, ...settings };
30617
30627
  this.isLoading$.next(!!this.settings.isLoading);
30618
30628
  }
30619
- constructor(dynamic, translateService, route, modal, widgetGlobalAutoRefresh, router) {
30629
+ get nativeElement() {
30630
+ return this.elementRef.nativeElement;
30631
+ }
30632
+ constructor(dynamic, translateService, route, modal, widgetGlobalAutoRefresh, router, elementRef) {
30620
30633
  this.dynamic = dynamic;
30621
30634
  this.translateService = translateService;
30622
30635
  this.route = route;
30623
30636
  this.modal = modal;
30624
30637
  this.widgetGlobalAutoRefresh = widgetGlobalAutoRefresh;
30625
30638
  this.router = router;
30639
+ this.elementRef = elementRef;
30626
30640
  /**
30627
30641
  * Indicates if device info in config should be overridden with values from context property.
30628
30642
  */
@@ -30822,7 +30836,7 @@ class WidgetsDashboardComponent {
30822
30836
  });
30823
30837
  return widgets;
30824
30838
  }
30825
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetsDashboardComponent, deps: [{ token: DynamicComponentService }, { token: i1$1.TranslateService }, { token: i1$4.ActivatedRoute }, { token: ModalService }, { token: WidgetGlobalAutoRefreshService }, { token: i1$4.Router }], target: i0.ɵɵFactoryTarget.Component }); }
30839
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetsDashboardComponent, deps: [{ token: DynamicComponentService }, { token: i1$1.TranslateService }, { token: i1$4.ActivatedRoute }, { token: ModalService }, { token: WidgetGlobalAutoRefreshService }, { token: i1$4.Router }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
30826
30840
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: { widgets: "widgets", context: "context", contextDashboard: "contextDashboard", _settings: ["settings", "_settings"], isCopyDisabled: "isCopyDisabled", breadcrumb: "breadcrumb", editModeButtons: "editModeButtons" }, outputs: { onAddWidget: "onAddWidget", onEditWidget: "onEditWidget", onDeleteWidget: "onDeleteWidget", onChangeDashboard: "onChangeDashboard", onResize: "onResize", onEditDashboard: "onEditDashboard", onCopyDashboard: "onCopyDashboard", onDeleteDashboard: "onDeleteDashboard", onChangeStart: "onChangeStart", onChangeEnd: "onChangeEnd", onSaveDashboard: "onSaveDashboard", onCancelDashboard: "onCancelDashboard", revertChange: "revertChange" }, host: { styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, providers: [WidgetsDashboardEventService], usesOnChanges: true, 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\n [placement]=\"'left'\"\n [priority]=\"ACTION_BAR_EDIT_WIDGETS_PRIORITY\"\n *ngIf=\"!(editMode$ | async)\"\n>\n <button\n class=\"btn btn-link animated fadeIn hidden-xs\"\n title=\"{{ 'Edit widgets' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled\"\n (click)=\"enableEditMode()\"\n data-cy=\"c8y-widget-dashboard--edit-widgets\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n *ngIf=\"editMode$ | async\"\n>\n <button\n class=\"btn btn-link animated fadeIn\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widget-dashboard--Add-widget\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"d-flex a-i-center gap-8\"\n *ngIf=\"editMode$ | async\"\n>\n <div class=\"input-group input-group-sm animated fadeIn\">\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Undo' | translate\"\n [tooltip]=\"\n editModeButtons.undoButtonDisabled\n ? ''\n : (undoMessage\n | translate: { changeToUndo: editModeButtons.changeToUndoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('undo')\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n >\n <i [c8yIcon]=\"'undo'\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Redo' | translate\"\n [tooltip]=\"\n editModeButtons.redoButtonDisabled\n ? ''\n : (redoMessage\n | translate: { changeToRedo: editModeButtons.changeToRedoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('redo')\"\n [disabled]=\"editModeButtons.redoButtonDisabled\"\n >\n <i [c8yIcon]=\"'redo'\"></i>\n </button>\n </div>\n <span></span>\n </div>\n <div class=\"btn-group animated fadeIn\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancelDashboardSave()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm m-l-8\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n (click)=\"saveDashboard()\"\n data-cy=\"c8y-widgets-dashboard--save\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onEditDashboard.observers.length\"\n>\n <button\n class=\"btn btn-link hidden-xs m-l-0\"\n title=\"{{ 'Dashboard settings' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n (click)=\"onEditDashboard.emit()\"\n data-cy=\"c8y-widgets-dashboard--edit-dashboard\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"settings.allowFullscreen\"\n [priority]=\"-5000\"\n itemClass=\"pull-right\"\n>\n <button\n class=\"btn btn-link\"\n [attr.aria-label]=\"'Full screen' | translate\"\n tooltip=\"{{ 'Full screen' | translate }}\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleFullscreen()\"\n data-cy=\"widgets-dashboard--Full-screen\"\n >\n <i [c8yIcon]=\"(inFullScreen$ | async) ? 'compress' : 'expand'\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visibile-lg-inline\">\n {{ 'Full screen' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n }\"\n >\n <button\n class=\"hidden-xs\"\n title=\"{{\n (isCopyDisabled === true || !isCopyDisabled?.state ? 'Disabled' : copyDashboardLabel)\n | translate\n }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"isCopyDisabled === true || !isCopyDisabled?.state || (editMode$ | async)\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</span>\n </button>\n <button\n class=\"btn-help btn-help--sm m-r-16 hidden-xs\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"copyDisabledPopoverMsg | translate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"!isCopyDisabled?.state && copyDisabledPopoverMsg\"\n data-cy=\"widgets-dashboard--info-copy-dashboard\"\n (click)=\"$event.stopPropagation()\"\n ></button>\n </div>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</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 class=\"hidden-xs\"\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard-mobile\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading\n class=\"col-xs-12 text-center\"\n *ngIf=\"isLoadingWidgets$ | async\"\n ></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 [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n *ngIf=\"widgetsToDisplay?.length === 0\"\n >\n <div *ngIf=\"onAddWidget.observers.length\">\n <p\n translate\n *ngIf=\"editMode$ | async\"\n >\n Add widgets to this dashboard.\n </p>\n <p\n translate\n *ngIf=\"!(editMode$ | async)\"\n >\n Click \"Edit widgets\" to unlock\n </p>\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || !(editMode$ | async)\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"c8y-widgets-dashboard--add-widget\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-dashboards\">user documentation</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 [class]=\"widget.classes\"\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 [data]=\"widget\"\n [useIntersection]=\"true\"\n [editMode]=\"editMode$ | async\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (toggleFullscreen)=\"toggleFullscreenOnWidget(child)\"\n [canToggleFullscreen]=\"!(inFullScreen$ | async) || widgetInFullscreenMode\"\n #child\n >\n <c8y-dashboard-child-title>\n <span\n data-cy=\"c8y-dashboard-list--device-widget\"\n *ngIf=\"settings.translateWidgetTitle\"\n >\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 data-cy=\"widgets-dashboard--Edit-widget\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span 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 data-cy=\"c8y-widgets-dashboard--remove-widget\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span 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?.displaySettings?.globalRealtimeContext) &&\n (widget.config.widgetInstanceGlobalTimeContext ||\n widget.config.widgetInstanceGlobalAutoRefreshContext)\n \"\n (dateContextChange)=\"updateWidgetConfig($event, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n [displaySettings]=\"widget.config.displaySettings\"\n [hidden]=\"editMode$ | async\"\n ></c8y-widget-time-context>\n\n <c8y-widget-auto-refresh-context\n *ngIf=\"\n widget?.config?.widgetInstanceGlobalAutoRefreshContext &&\n widget.config?.displaySettings.globalAutoRefreshContext\n \"\n [editMode$]=\"editMode$\"\n ></c8y-widget-auto-refresh-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", 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$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "component", type: DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "directive", type: i2$3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "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: "directive", type: i1$1.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "directive", type: i2$5.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: WidgetTimeContextComponent, selector: "c8y-widget-time-context", inputs: ["canDecouple", "displaySettings", "hidden"], outputs: ["dateContextChange"] }, { kind: "component", type: DashboardChildActionComponent, selector: "c8y-dashboard-child-action" }, { kind: "component", type: DashboardChildComponent, selector: "c8y-dashboard-child", inputs: ["x", "y", "width", "height", "data", "margin", "useIntersection", "isFrozen", "canToggleFullscreen", "editMode", "class"], outputs: ["changeStart", "changeEnd", "toggleFullscreen"] }, { 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: WidgetAutoRefreshContextComponent, selector: "c8y-widget-auto-refresh-context", inputs: ["editMode$"] }, { kind: "pipe", type: i2$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] }); }
30827
30841
  }
30828
30842
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetsDashboardComponent, decorators: [{
@@ -30833,7 +30847,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
30833
30847
  `,
30834
30848
  class: 'dashboard c8y-grid-dashboard'
30835
30849
  }, providers: [WidgetsDashboardEventService], 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\n [placement]=\"'left'\"\n [priority]=\"ACTION_BAR_EDIT_WIDGETS_PRIORITY\"\n *ngIf=\"!(editMode$ | async)\"\n>\n <button\n class=\"btn btn-link animated fadeIn hidden-xs\"\n title=\"{{ 'Edit widgets' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled\"\n (click)=\"enableEditMode()\"\n data-cy=\"c8y-widget-dashboard--edit-widgets\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"send-backward\"></i>\n <span class=\"m-l-4\">{{ 'Edit widgets' | translate }}</span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n *ngIf=\"editMode$ | async\"\n>\n <button\n class=\"btn btn-link animated fadeIn\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"widget-dashboard--Add-widget\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add widget' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'left'\"\n itemClass=\"d-flex a-i-center gap-8\"\n *ngIf=\"editMode$ | async\"\n>\n <div class=\"input-group input-group-sm animated fadeIn\">\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Undo' | translate\"\n [tooltip]=\"\n editModeButtons.undoButtonDisabled\n ? ''\n : (undoMessage\n | translate: { changeToUndo: editModeButtons.changeToUndoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('undo')\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n >\n <i [c8yIcon]=\"'undo'\"></i>\n </button>\n </div>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-default btn-sm btn-icon\"\n [attr.aria-label]=\"'Redo' | translate\"\n [tooltip]=\"\n editModeButtons.redoButtonDisabled\n ? ''\n : (redoMessage\n | translate: { changeToRedo: editModeButtons.changeToRedoName | translate })\n \"\n container=\"body\"\n (click)=\"revertChange.emit('redo')\"\n [disabled]=\"editModeButtons.redoButtonDisabled\"\n >\n <i [c8yIcon]=\"'redo'\"></i>\n </button>\n </div>\n <span></span>\n </div>\n <div class=\"btn-group animated fadeIn\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n (click)=\"cancelDashboardSave()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm m-l-8\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n [disabled]=\"editModeButtons.undoButtonDisabled\"\n (click)=\"saveDashboard()\"\n data-cy=\"c8y-widgets-dashboard--save\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"onEditDashboard.observers.length\"\n>\n <button\n class=\"btn btn-link hidden-xs m-l-0\"\n title=\"{{ 'Dashboard settings' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n (click)=\"onEditDashboard.emit()\"\n data-cy=\"c8y-widgets-dashboard--edit-dashboard\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n <button\n class=\"btn btn-link visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"sorting-slider\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Dashboard settings' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n *ngIf=\"settings.allowFullscreen\"\n [priority]=\"-5000\"\n itemClass=\"pull-right\"\n>\n <button\n class=\"btn btn-link\"\n [attr.aria-label]=\"'Full screen' | translate\"\n tooltip=\"{{ 'Full screen' | translate }}\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"toggleFullscreen()\"\n data-cy=\"widgets-dashboard--Full-screen\"\n >\n <i [c8yIcon]=\"(inFullScreen$ | async) ? 'compress' : 'expand'\"></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visibile-lg-inline\">\n {{ 'Full screen' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'more'\"\n [priority]=\"-2000\"\n *ngIf=\"settings.canCopy\"\n>\n <div\n [ngStyle]=\"{\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center'\n }\"\n >\n <button\n class=\"hidden-xs\"\n title=\"{{\n (isCopyDisabled === true || !isCopyDisabled?.state ? 'Disabled' : copyDashboardLabel)\n | translate\n }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n data-cy=\"widgets-dashboard--copy-dashboard\"\n (click)=\"onCopyDashboard.emit()\"\n [disabled]=\"isCopyDisabled === true || !isCopyDisabled?.state || (editMode$ | async)\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</span>\n </button>\n <button\n class=\"btn-help btn-help--sm m-r-16 hidden-xs\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"copyDisabledPopoverMsg | translate\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n *ngIf=\"!isCopyDisabled?.state && copyDisabledPopoverMsg\"\n data-cy=\"widgets-dashboard--info-copy-dashboard\"\n (click)=\"$event.stopPropagation()\"\n ></button>\n </div>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn btn-link': !settings.canDelete }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"clone\"></i>\n <span>{{ copyDashboardLabel | translate }}</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 class=\"hidden-xs\"\n title=\"{{ 'Delete dashboard' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n (click)=\"onDeleteDashboard.emit()\"\n [disabled]=\"settings.isDisabled || (editMode$ | async)\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n <button\n class=\"visible-xs m-l-0\"\n tooltip=\"{{ 'Not available on mobile phone' | translate }}\"\n type=\"button\"\n data-cy=\"widgets-dashboard--delete-dashboard-mobile\"\n [ngClass]=\"{ 'btn btn-link': !settings.canCopy }\"\n [disabled]=\"true\"\n >\n <i c8yIcon=\"delete\"></i>\n <span translate>Delete dashboard</span>\n </button>\n</c8y-action-bar-item>\n\n<ng-template #loadingIndicator>\n <c8y-loading\n class=\"col-xs-12 text-center\"\n *ngIf=\"isLoadingWidgets$ | async\"\n ></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 [icon]=\"'c8y-device'\"\n [title]=\"'No widgets to display.' | translate\"\n *ngIf=\"widgetsToDisplay?.length === 0\"\n >\n <div *ngIf=\"onAddWidget.observers.length\">\n <p\n translate\n *ngIf=\"editMode$ | async\"\n >\n Add widgets to this dashboard.\n </p>\n <p\n translate\n *ngIf=\"!(editMode$ | async)\"\n >\n Click \"Edit widgets\" to unlock\n </p>\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Add widget' | translate }}\"\n type=\"button\"\n [disabled]=\"settings.isDisabled || !(editMode$ | async)\"\n (click)=\"onAddWidget.emit()\"\n data-cy=\"c8y-widgets-dashboard--add-widget\"\n translate\n >\n Add widget\n </button>\n </div>\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/working-with-dashboards\">user documentation</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 [class]=\"widget.classes\"\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 [data]=\"widget\"\n [useIntersection]=\"true\"\n [editMode]=\"editMode$ | async\"\n (changeStart)=\"onChangeStart.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (changeEnd)=\"onChangeEnd.emit({ widget: widget, source: child, dashboard: dashboard })\"\n (toggleFullscreen)=\"toggleFullscreenOnWidget(child)\"\n [canToggleFullscreen]=\"!(inFullScreen$ | async) || widgetInFullscreenMode\"\n #child\n >\n <c8y-dashboard-child-title>\n <span\n data-cy=\"c8y-dashboard-list--device-widget\"\n *ngIf=\"settings.translateWidgetTitle\"\n >\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 data-cy=\"widgets-dashboard--Edit-widget\"\n (click)=\"onEditWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"pencil\"></i>\n <span 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 data-cy=\"c8y-widgets-dashboard--remove-widget\"\n (click)=\"onDeleteWidget.emit({ widget: widget, source: child, dashboard: dashboard })\"\n >\n <i c8yIcon=\"delete\"></i>\n <span 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?.displaySettings?.globalRealtimeContext) &&\n (widget.config.widgetInstanceGlobalTimeContext ||\n widget.config.widgetInstanceGlobalAutoRefreshContext)\n \"\n (dateContextChange)=\"updateWidgetConfig($event, widget)\"\n [canDecouple]=\"widget.config.canDecoupleGlobalTimeContext\"\n [displaySettings]=\"widget.config.displaySettings\"\n [hidden]=\"editMode$ | async\"\n ></c8y-widget-time-context>\n\n <c8y-widget-auto-refresh-context\n *ngIf=\"\n widget?.config?.widgetInstanceGlobalAutoRefreshContext &&\n widget.config?.displaySettings.globalAutoRefreshContext\n \"\n [editMode$]=\"editMode$\"\n ></c8y-widget-auto-refresh-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" }]
30836
- }], ctorParameters: () => [{ type: DynamicComponentService }, { type: i1$1.TranslateService }, { type: i1$4.ActivatedRoute }, { type: ModalService }, { type: WidgetGlobalAutoRefreshService }, { type: i1$4.Router }], propDecorators: { widgets: [{
30850
+ }], ctorParameters: () => [{ type: DynamicComponentService }, { type: i1$1.TranslateService }, { type: i1$4.ActivatedRoute }, { type: ModalService }, { type: WidgetGlobalAutoRefreshService }, { type: i1$4.Router }, { type: i0.ElementRef }], propDecorators: { widgets: [{
30837
30851
  type: Input
30838
30852
  }], context: [{
30839
30853
  type: Input
@@ -35422,11 +35436,11 @@ class BetaPreviewComponent {
35422
35436
  this.resolveClose(true);
35423
35437
  }
35424
35438
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35425
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BetaPreviewComponent, isStandalone: true, selector: "c8y-beta-preview", host: { classAttribute: "d-contents" }, providers: [MarkdownToHtmlPipe], ngImport: i0, template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Beta features preview\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n {{ feature.label }}\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: ListGroupModule }, { kind: "pipe", type: FeatureStatePipe, name: "featureState" }] }); }
35439
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BetaPreviewComponent, isStandalone: true, selector: "c8y-beta-preview", host: { classAttribute: "d-contents" }, providers: [MarkdownToHtmlPipe], ngImport: i0, template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n {{ feature.label }}\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: ListGroupModule }, { kind: "pipe", type: FeatureStatePipe, name: "featureState" }] }); }
35426
35440
  }
35427
35441
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewComponent, decorators: [{
35428
35442
  type: Component,
35429
- args: [{ selector: 'c8y-beta-preview', host: { class: 'd-contents' }, standalone: true, imports: [NgForOf, NgIf, AsyncPipe, CommonModule, ListGroupModule, FeatureStatePipe], providers: [MarkdownToHtmlPipe], template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Beta features preview\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n {{ feature.label }}\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n" }]
35443
+ args: [{ selector: 'c8y-beta-preview', host: { class: 'd-contents' }, standalone: true, imports: [NgForOf, NgIf, AsyncPipe, CommonModule, ListGroupModule, FeatureStatePipe], providers: [MarkdownToHtmlPipe], template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n {{ feature.label }}\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n" }]
35430
35444
  }], ctorParameters: () => [] });
35431
35445
 
35432
35446
  class BetaPreviewButtonComponent {
@@ -35466,11 +35480,11 @@ class BetaPreviewButtonComponent {
35466
35480
  this.destroy$.complete();
35467
35481
  }
35468
35482
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
35469
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BetaPreviewButtonComponent, isStandalone: true, selector: "c8y-beta-preview-button", ngImport: i0, template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Beta features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage beta features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openBetaPreview()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage beta features</span>\n </button>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
35483
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BetaPreviewButtonComponent, isStandalone: true, selector: "c8y-beta-preview-button", ngImport: i0, template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Preview features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage preview features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openBetaPreview()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage preview features</span>\n </button>\n </li>\n</ul>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
35470
35484
  }
35471
35485
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BetaPreviewButtonComponent, decorators: [{
35472
35486
  type: Component,
35473
- args: [{ selector: 'c8y-beta-preview-button', standalone: true, imports: [C8yTranslateDirective, C8yTranslatePipe, AsyncPipe, NgIf], template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Beta features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage beta features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openBetaPreview()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage beta features</span>\n </button>\n </li>\n</ul>\n" }]
35487
+ args: [{ selector: 'c8y-beta-preview-button', standalone: true, imports: [C8yTranslateDirective, C8yTranslatePipe, AsyncPipe, NgIf], template: "<div class=\"separator-top p-t-8 m-t-auto c8y-right-drawer__item sticky-top\">\n <i class=\"dlt-c8y-icon-science\"></i>\n <span\n class=\"text-bold\"\n translate\n >\n Preview features\n </span>\n <span\n class=\"m-l-8 tag tag--primary\"\n *ngIf=\"hasUnseenFeatures$ | async\"\n >\n {{ 'New' | translate }}\n </span>\n</div>\n<ul class=\"list-unstyled\">\n <li class=\"c8y-right-drawer__item\">\n <small translate>\n Enable or disable experimental features. Your feedback helps us improve functionality before\n final release.\n </small>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n title=\"{{ 'Manage preview features' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"openBetaPreview()\"\n >\n <i class=\"m-t-0 m-b-9 text-14 dlt-c8y-icon-settings\"></i>\n <span translate>Manage preview features</span>\n </button>\n </li>\n</ul>\n" }]
35474
35488
  }] });
35475
35489
 
35476
35490
  class BetaPreviewDrawerFactory {