@c8y/ngx-components 1023.28.5 → 1023.37.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 (127) hide show
  1. package/alarms/cockpit/index.d.ts.map +1 -1
  2. package/alarms/devicemanagement/index.d.ts.map +1 -1
  3. package/alarms/index.d.ts +25 -2
  4. package/alarms/index.d.ts.map +1 -1
  5. package/asset-properties/index.d.ts +20 -2
  6. package/asset-properties/index.d.ts.map +1 -1
  7. package/bookmarks/index.d.ts +15 -7
  8. package/bookmarks/index.d.ts.map +1 -1
  9. package/cockpit-config/index.d.ts.map +1 -1
  10. package/datapoint-explorer/view/index.d.ts +2 -0
  11. package/datapoint-explorer/view/index.d.ts.map +1 -1
  12. package/datapoint-selector/index.d.ts.map +1 -1
  13. package/device-grid/index.d.ts.map +1 -1
  14. package/echart/index.d.ts +19 -3
  15. package/echart/index.d.ts.map +1 -1
  16. package/feature-toggles/index.d.ts +6 -0
  17. package/feature-toggles/index.d.ts.map +1 -0
  18. package/feature-toggles/list/index.d.ts +63 -0
  19. package/feature-toggles/list/index.d.ts.map +1 -0
  20. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +6 -11
  21. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  22. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +37 -11
  23. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  24. package/fesm2022/c8y-ngx-components-alarms.mjs +58 -10
  25. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  26. package/fesm2022/c8y-ngx-components-asset-properties.mjs +36 -12
  27. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  28. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-B04ixTyA.mjs → c8y-ngx-components-asset-property-grid.component-BoVrIpap.mjs} +5 -12
  29. package/fesm2022/c8y-ngx-components-asset-property-grid.component-BoVrIpap.mjs.map +1 -0
  30. package/fesm2022/c8y-ngx-components-bookmarks.mjs +86 -39
  31. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  32. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +9 -9
  33. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  34. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +1 -1
  35. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  36. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +21 -36
  37. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  38. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +3 -11
  39. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  40. package/fesm2022/c8y-ngx-components-device-grid.mjs +5 -2
  41. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  42. package/fesm2022/c8y-ngx-components-echart.mjs +101 -42
  43. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +3 -3
  45. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  46. package/fesm2022/c8y-ngx-components-feature-toggles-list.mjs +242 -0
  47. package/fesm2022/c8y-ngx-components-feature-toggles-list.mjs.map +1 -0
  48. package/fesm2022/c8y-ngx-components-feature-toggles.mjs +36 -0
  49. package/fesm2022/c8y-ngx-components-feature-toggles.mjs.map +1 -0
  50. package/fesm2022/c8y-ngx-components-global-context.mjs +21 -6
  51. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-map.mjs +127 -33
  53. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-tenants.mjs +2 -2
  55. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +5 -1
  57. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  58. package/fesm2022/c8y-ngx-components-upgrade-not-found.component-CuCuYAkK.mjs +19 -0
  59. package/fesm2022/c8y-ngx-components-upgrade-not-found.component-CuCuYAkK.mjs.map +1 -0
  60. package/fesm2022/c8y-ngx-components-upgrade.mjs +33 -3
  61. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  62. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +3 -3
  63. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  64. package/fesm2022/c8y-ngx-components-widgets-definitions-pie-chart.mjs +30 -0
  65. package/fesm2022/c8y-ngx-components-widgets-definitions-pie-chart.mjs.map +1 -0
  66. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs +2 -1
  67. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  68. package/fesm2022/c8y-ngx-components-widgets-exports.mjs +8 -1
  69. package/fesm2022/c8y-ngx-components-widgets-exports.mjs.map +1 -1
  70. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +4 -4
  71. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  72. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +3 -3
  73. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  74. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -2
  75. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  76. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +4 -3
  77. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  78. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +18 -11
  79. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  80. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs +366 -0
  81. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs.map +1 -0
  82. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +4 -0
  83. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  84. package/fesm2022/c8y-ngx-components-widgets-widget-providers.mjs +5 -2
  85. package/fesm2022/c8y-ngx-components-widgets-widget-providers.mjs.map +1 -1
  86. package/fesm2022/c8y-ngx-components.mjs +57 -18
  87. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  88. package/global-context/index.d.ts +12 -2
  89. package/global-context/index.d.ts.map +1 -1
  90. package/index.d.ts +9 -3
  91. package/index.d.ts.map +1 -1
  92. package/locales/de.po +88 -66
  93. package/locales/es.po +26 -20
  94. package/locales/fr.po +25 -20
  95. package/locales/ja_JP.po +18 -20
  96. package/locales/ko.po +24 -20
  97. package/locales/locales.pot +130 -32
  98. package/locales/nl.po +26 -20
  99. package/locales/pl.po +26 -20
  100. package/locales/pt_BR.po +24 -20
  101. package/locales/zh_CN.po +26 -20
  102. package/locales/zh_TW.po +26 -20
  103. package/map/index.d.ts +41 -10
  104. package/map/index.d.ts.map +1 -1
  105. package/package.json +1 -1
  106. package/trusted-certificates/index.d.ts +2 -0
  107. package/trusted-certificates/index.d.ts.map +1 -1
  108. package/upgrade/index.d.ts.map +1 -1
  109. package/widgets/cockpit-exports/index.d.ts +6 -0
  110. package/widgets/cockpit-exports/index.d.ts.map +1 -1
  111. package/widgets/definitions/index.d.ts +1 -0
  112. package/widgets/definitions/index.d.ts.map +1 -1
  113. package/widgets/definitions/pie-chart/index.d.ts +25 -0
  114. package/widgets/definitions/pie-chart/index.d.ts.map +1 -0
  115. package/widgets/device-management-exports/index.d.ts +6 -0
  116. package/widgets/device-management-exports/index.d.ts.map +1 -1
  117. package/widgets/exports/index.d.ts +8 -1
  118. package/widgets/exports/index.d.ts.map +1 -1
  119. package/widgets/implementations/html-widget/index.d.ts +2 -2
  120. package/widgets/implementations/html-widget/index.d.ts.map +1 -1
  121. package/widgets/implementations/map/index.d.ts +1 -0
  122. package/widgets/implementations/map/index.d.ts.map +1 -1
  123. package/widgets/implementations/pie-chart/index.d.ts +129 -0
  124. package/widgets/implementations/pie-chart/index.d.ts.map +1 -0
  125. package/widgets/implementations/three-d-rotation/index.d.ts.map +1 -1
  126. package/widgets/widget-providers/index.d.ts.map +1 -1
  127. package/fesm2022/c8y-ngx-components-asset-property-grid.component-B04ixTyA.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-alarms-devicemanagement.mjs","sources":["../../alarms/devicemanagement/index.ts","../../alarms/devicemanagement/c8y-ngx-components-alarms-devicemanagement.ts"],"sourcesContent":["import { ModuleWithProviders } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { NavigatorNode, ViewContext } from '@c8y/ngx-components';\nimport {\n ALARMS_PATH,\n AlarmsComponent,\n AlarmsModule,\n getChildrenForViewContext,\n getViewContextRoutes\n} from '@c8y/ngx-components/alarms';\n\nexport function alarmsDeviceManagementRouteAndNodeConfig(): ModuleWithProviders<AlarmsModule> {\n return AlarmsModule.config({\n rootNavigatorNode: new NavigatorNode({\n label: gettext('Alarms'),\n icon: 'bell',\n priority: 3000,\n path: `/${ALARMS_PATH}`,\n featureId: 'alarms',\n parent: 'Overviews',\n routerLinkExact: false\n }),\n route: [\n {\n path: ALARMS_PATH,\n component: AlarmsComponent,\n data: { title: true },\n children: getChildrenForViewContext(ViewContext.Alarms)\n },\n {\n context: ViewContext.Group,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.GroupAlarms)\n },\n {\n context: ViewContext.Device,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.DeviceAlarms)\n },\n {\n context: ViewContext.Service,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.ServiceAlarms)\n },\n {\n context: ViewContext.Simulators,\n path: ALARMS_PATH,\n priority: -2,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.SimulatorsAlarms)\n },\n ...getViewContextRoutes([\n ViewContext.Alarms,\n ViewContext.GroupAlarms,\n ViewContext.DeviceAlarms,\n ViewContext.ServiceAlarms,\n ViewContext.SimulatorsAlarms\n ])\n ]\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;SAWgB,wCAAwC,GAAA;IACtD,OAAO,YAAY,CAAC,MAAM,CAAC;QACzB,iBAAiB,EAAE,IAAI,aAAa,CAAC;AACnC,YAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,CAAA,CAAA,EAAI,WAAW,CAAA,CAAE;AACvB,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,MAAM,EAAE,WAAW;AACnB,YAAA,eAAe,EAAE;SAClB,CAAC;AACF,QAAA,KAAK,EAAE;AACL,YAAA;AACE,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE;AACrB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,MAAM;AACvD,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,KAAK;AAC1B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,WAAW;AAC5D,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,MAAM;AAC3B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,YAAY;AAC7D,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,OAAO;AAC5B,gBAAA,IAAI,EAAE,WAAW;AACjB,gBAAA,QAAQ,EAAE,GAAG;AACb,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,aAAa;AAC9D,aAAA;AACD,YAAA;gBACE,OAAO,EAAE,WAAW,CAAC,UAAU;AAC/B,gBAAA,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,CAAC,CAAC;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC;AACxB,gBAAA,SAAS,EAAE,eAAe;AAC1B,gBAAA,SAAS,EAAE,QAAQ;AACnB,gBAAA,QAAQ,EAAE,yBAAyB,CAAC,WAAW,CAAC,gBAAgB;AACjE,aAAA;AACD,YAAA,GAAG,oBAAoB,CAAC;AACtB,gBAAA,WAAW,CAAC,MAAM;AAClB,gBAAA,WAAW,CAAC,WAAW;AACvB,gBAAA,WAAW,CAAC,YAAY;AACxB,gBAAA,WAAW,CAAC,aAAa;AACzB,gBAAA,WAAW,CAAC;aACb;AACF;AACF,KAAA,CAAC;AACJ;;AC9EA;;AAEG;;;;"}
1
+ {"version":3,"file":"c8y-ngx-components-alarms-devicemanagement.mjs","sources":["../../alarms/devicemanagement/alarms-navigation.factory.ts","../../alarms/devicemanagement/index.ts","../../alarms/devicemanagement/c8y-ngx-components-alarms-devicemanagement.ts"],"sourcesContent":["import { Injectable, inject } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { AlarmsGuard, ALARMS_PATH } from '@c8y/ngx-components/alarms';\n\n@Injectable()\nexport class DeviceManagementAlarmsNavigationFactory implements NavigatorNodeFactory {\n private guard = inject(AlarmsGuard);\n private navs: NavigatorNode[] = [];\n\n async get(): Promise<NavigatorNode[]> {\n const canActivate = this.guard.canActivate();\n if (canActivate && this.navs.length === 0) {\n this.navs.push(\n new NavigatorNode({\n label: gettext('Alarms'),\n icon: 'bell',\n path: `/${ALARMS_PATH}`,\n featureId: 'alarms',\n parent: 'Overviews',\n routerLinkExact: false,\n priority: 3000\n })\n );\n }\n return this.navs;\n }\n}\n","import { ModuleWithProviders } from '@angular/core';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { hookNavigator, ViewContext } from '@c8y/ngx-components';\nimport {\n ALARMS_PATH,\n AlarmsComponent,\n AlarmsGuard,\n AlarmsModule,\n getChildrenForViewContext,\n getViewContextRoutes\n} from '@c8y/ngx-components/alarms';\nimport { DeviceManagementAlarmsNavigationFactory } from './alarms-navigation.factory';\n\nexport function alarmsDeviceManagementRouteAndNodeConfig(): ModuleWithProviders<AlarmsModule> {\n return AlarmsModule.config({\n additionalProviders: [hookNavigator(DeviceManagementAlarmsNavigationFactory)],\n route: [\n {\n path: ALARMS_PATH,\n component: AlarmsComponent,\n canActivate: [AlarmsGuard],\n data: { title: true },\n children: getChildrenForViewContext(ViewContext.Alarms)\n },\n {\n context: ViewContext.Group,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n canActivate: [AlarmsGuard],\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.GroupAlarms)\n },\n {\n context: ViewContext.Device,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n canActivate: [AlarmsGuard],\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.DeviceAlarms)\n },\n {\n context: ViewContext.Service,\n path: ALARMS_PATH,\n priority: 800,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n canActivate: [AlarmsGuard],\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.ServiceAlarms)\n },\n {\n context: ViewContext.Simulators,\n path: ALARMS_PATH,\n priority: -2,\n icon: 'bell',\n label: gettext('Alarms'),\n component: AlarmsComponent,\n canActivate: [AlarmsGuard],\n featureId: 'alarms',\n children: getChildrenForViewContext(ViewContext.SimulatorsAlarms)\n },\n ...getViewContextRoutes([\n ViewContext.Alarms,\n ViewContext.GroupAlarms,\n ViewContext.DeviceAlarms,\n ViewContext.ServiceAlarms,\n ViewContext.SimulatorsAlarms\n ])\n ]\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Pipe, InjectionToken, HostListener, Input, Optional, Component, EventEmitter, ViewChild, Output, ChangeDetectionStrategy, forwardRef, signal, NgModule } from '@angular/core';
2
+ import { Injectable, Pipe, InjectionToken, HostListener, Input, Optional, Component, EventEmitter, ViewChild, Output, ChangeDetectionStrategy, forwardRef, signal, NgModule, inject } from '@angular/core';
3
3
  import { combineLatest, BehaviorSubject, Subject, fromEvent, firstValueFrom, of, from, forkJoin, EMPTY, Observable, pipe, take, takeUntil as takeUntil$1, map as map$1 } from 'rxjs';
4
4
  import { filter, map, switchMap, startWith, debounceTime, takeUntil, distinctUntilChanged, catchError, finalize, tap, shareReplay, throttleTime } from 'rxjs/operators';
5
5
  import * as i3 from '@c8y/ngx-components';
6
- import { Permissions, ViewContext, SupportedApps, IconDirective, EmptyStateComponent, LoadingComponent, ListGroupComponent, ForOfDirective, ListItemTimelineComponent, ListItemComponent, ListItemBodyComponent, SplitViewDetailsActionsComponent, IconPanelComponent, C8yTranslatePipe, DatePipe, HumanizeAppNamePipe, AssetLinkPipe, TitleComponent, TabsOutletComponent, ProductExperienceDirective, RequiredInputPlaceholderDirective, CountdownIntervalComponent, DynamicComponentAlertAggregator, DynamicComponentAlert, C8yTranslateDirective, ListItemIconComponent, DynamicComponentAlertsComponent, SplitViewListComponent, SplitViewHeaderActionsComponent, SplitViewAlertsComponent, FormGroupComponent, DateTimePickerComponent, MessagesComponent, MessageDirective, ListItemCheckboxComponent, SplitViewComponent, SplitViewDetailsComponent, HelpComponent, ActionBarItemComponent, AlarmWithChildrenRealtimeService, RouterTabsResolver, ContextRouteGuard, ContextRouteComponent, hookNavigator, hookRoute, CommonModule, CoreModule, HeaderModule, C8yTranslateModule, DynamicComponentModule, RelativeTimePipe } from '@c8y/ngx-components';
6
+ import { Permissions, ViewContext, SupportedApps, IconDirective, EmptyStateComponent, LoadingComponent, ListGroupComponent, ForOfDirective, ListItemTimelineComponent, ListItemComponent, ListItemBodyComponent, SplitViewDetailsActionsComponent, IconPanelComponent, C8yTranslatePipe, DatePipe, HumanizeAppNamePipe, AssetLinkPipe, TitleComponent, TabsOutletComponent, ProductExperienceDirective, RequiredInputPlaceholderDirective, CountdownIntervalComponent, DynamicComponentAlertAggregator, DynamicComponentAlert, C8yTranslateDirective, ListItemIconComponent, DynamicComponentAlertsComponent, SplitViewListComponent, SplitViewHeaderActionsComponent, SplitViewAlertsComponent, FormGroupComponent, DateTimePickerComponent, MessagesComponent, MessageDirective, ListItemCheckboxComponent, SplitViewComponent, SplitViewDetailsComponent, HelpComponent, ActionBarItemComponent, AlarmWithChildrenRealtimeService, RouterTabsResolver, ContextRouteGuard, ContextRouteComponent, hookNavigator, hookRoute, CommonModule, CoreModule, HeaderModule, C8yTranslateModule, DynamicComponentModule, RelativeTimePipe, NavigatorNode } from '@c8y/ngx-components';
7
7
  import { sortBy, cloneDeep } from 'lodash-es';
8
8
  import { NgClass, NgStyle, NgTemplateOutlet, AsyncPipe, JsonPipe, LowerCasePipe, NgIf, NgFor, TitleCasePipe } from '@angular/common';
9
9
  import * as i1 from '@angular/router';
@@ -1967,6 +1967,7 @@ class AlarmsListComponent {
1967
1967
  */
1968
1968
  this.isEmptyListLoading = true;
1969
1969
  this.alertAggregator = new DynamicComponentAlertAggregator();
1970
+ this.permissionAlertAggregator = new DynamicComponentAlertAggregator();
1970
1971
  this.mapAlarmLink = pipe(map((alarms) => alarms.map((alarm) => {
1971
1972
  alarm.link = this.getRouterLink(alarm);
1972
1973
  return alarm;
@@ -1997,10 +1998,7 @@ class AlarmsListComponent {
1997
1998
  this.isEmptyListLoading = !this.alarms?.data?.length;
1998
1999
  }
1999
2000
  if (changes.hasPermissions?.currentValue === false) {
2000
- this.alertAggregator.addAlerts(new DynamicComponentAlert({
2001
- type: 'system',
2002
- text: gettext("You don't have permission to view alarms.")
2003
- }));
2001
+ this.addPermissionAlert();
2004
2002
  }
2005
2003
  }
2006
2004
  ngAfterViewInit() {
@@ -2032,6 +2030,13 @@ class AlarmsListComponent {
2032
2030
  const contextData = this.contextRouteService.getContextData(this.activatedRoute);
2033
2031
  return this.alarmsViewService.getRouterLink(contextData, alarm);
2034
2032
  }
2033
+ addPermissionAlert() {
2034
+ this.permissionAlertAggregator.clear();
2035
+ this.permissionAlertAggregator.addAlerts(new DynamicComponentAlert({
2036
+ type: 'system',
2037
+ text: gettext("You don't have permission to view alarms.")
2038
+ }));
2039
+ }
2035
2040
  shouldCountdownIntervalBeHidden(target) {
2036
2041
  const scrollTopPixels = target.scrollTop;
2037
2042
  return scrollTopPixels > this.HIDE_INTERVAL_COUNTDOWN_SCROLL;
@@ -2042,7 +2047,7 @@ class AlarmsListComponent {
2042
2047
  this.activeChildParam$.subscribe();
2043
2048
  }
2044
2049
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsListComponent, deps: [{ token: i1.ActivatedRoute }, { token: AlarmsViewService }, { token: i3.ContextRouteService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
2045
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AlarmsListComponent, isStandalone: true, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", isInPreviewMode: "isInPreviewMode" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "svListComponent", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-sv-list\n [emptyStateIcon]=\"'c8y-alert-idle'\"\n [title]=\"'Alarms list' | translate\"\n [emptyStateTitle]=\"'No alarms to display.' | translate\"\n [loading]=\"isInitialLoading || isEmptyListLoading\"\n [showEmptyState]=\"isEmptyListLoading && !isInitialLoading && hasPermissions\"\n [docsUrl]=\"\n '/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms'\n \"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <c8y-sv-header-actions>\n <ng-content></ng-content>\n </c8y-sv-header-actions>\n\n <c8y-sv-alerts>\n @if (\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n ) {\n <div\n class=\"alert alert-warning m-b-0\"\n role=\"alert\"\n translate\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n }\n </c8y-sv-alerts>\n\n <c8y-list-group class=\"c8y-list--timeline d-block p-r-16 p-t-16\">\n <c8y-li-timeline\n class=\"pointer c8y-list--timeline__item\"\n role=\"button\"\n data-cy=\"c8y-alarms-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n data-cy=\"c8y-alarms-list--last-occurrence-date\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon\n [typeFilters]=\"typeFilters\"\n [alarm]=\"alarm\"\n ></c8y-alarms-icon>\n </div>\n @if (alarm.firstOccurrenceTime) {\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n data-cy=\"c8y-alarms-list--badge\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n @if (alarm.count > 1) {\n <span class=\"badge badge-info\">\n {{ alarm.count }}\n </span>\n }\n </button>\n }\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p\n class=\"text-truncate-wrap p-b-4\"\n data-cy=\"c8y-alarms-list--alarm-text\"\n >\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n data-cy=\"c8y-alarms-list--alarm-source-name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n @for (item of alarm | alarmListIndicator | async; track $index) {\n <div [title]=\"item.title | translate\">\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n</c8y-sv-list>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: 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: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: SplitViewListComponent, selector: "c8y-sv-list", inputs: ["title", "loading", "showEmptyState", "emptyStateIcon", "emptyStateTitle", "emptyStateSubtitle", "docsUrl", "showTitle", "listOpacity"] }, { kind: "component", type: SplitViewHeaderActionsComponent, selector: "c8y-sv-header-actions" }, { kind: "component", type: SplitViewAlertsComponent, selector: "c8y-sv-alerts" }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "pipe", type: AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
2050
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: AlarmsListComponent, isStandalone: true, selector: "c8y-alarms-list", inputs: { alarms: "alarms", hasPermissions: "hasPermissions", typeFilters: "typeFilters", loadMoreMode: "loadMoreMode", navigationOptions: "navigationOptions", isInitialLoading: "isInitialLoading", isInPreviewMode: "isInPreviewMode" }, outputs: { onSelectedAlarm: "onSelectedAlarm", onScrollingStateChange: "onScrollingStateChange" }, viewQueries: [{ propertyName: "svListComponent", first: true, predicate: ["scrollWrapper"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-sv-list\n [emptyStateIcon]=\"'c8y-alert-idle'\"\n [title]=\"'Alarms list' | translate\"\n [emptyStateTitle]=\"'No alarms to display.' | translate\"\n [loading]=\"isInitialLoading || isEmptyListLoading\"\n [showEmptyState]=\"isEmptyListLoading && !isInitialLoading && hasPermissions\"\n [docsUrl]=\"\n '/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms'\n \"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <c8y-sv-header-actions>\n <ng-content></ng-content>\n </c8y-sv-header-actions>\n\n <c8y-sv-alerts>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n @if (\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n ) {\n <div\n class=\"alert alert-warning m-b-0\"\n role=\"alert\"\n translate\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n }\n </c8y-sv-alerts>\n\n @if (!hasPermissions) {\n <c8y-dynamic-component-alerts\n [alerts]=\"permissionAlertAggregator\"\n ></c8y-dynamic-component-alerts>\n } @else {\n <c8y-list-group class=\"c8y-list--timeline d-block p-r-16 p-t-16\">\n <c8y-li-timeline\n class=\"pointer c8y-list--timeline__item\"\n role=\"button\"\n data-cy=\"c8y-alarms-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n data-cy=\"c8y-alarms-list--last-occurrence-date\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon\n [typeFilters]=\"typeFilters\"\n [alarm]=\"alarm\"\n ></c8y-alarms-icon>\n </div>\n @if (alarm.firstOccurrenceTime) {\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n data-cy=\"c8y-alarms-list--badge\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n @if (alarm.count > 1) {\n <span class=\"badge badge-info\">\n {{ alarm.count }}\n </span>\n }\n </button>\n }\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p\n class=\"text-truncate-wrap p-b-4\"\n data-cy=\"c8y-alarms-list--alarm-text\"\n >\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n data-cy=\"c8y-alarms-list--alarm-source-name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n @for (item of alarm | alarmListIndicator | async; track $index) {\n <div [title]=\"item.title | translate\">\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n }\n</c8y-sv-list>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: 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: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: AlarmsIconComponent, selector: "c8y-alarms-icon", inputs: ["alarm", "typeFilters"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: DynamicComponentAlertsComponent, selector: "c8y-dynamic-component-alerts", inputs: ["alerts"] }, { kind: "component", type: SplitViewListComponent, selector: "c8y-sv-list", inputs: ["title", "loading", "showEmptyState", "emptyStateIcon", "emptyStateTitle", "emptyStateSubtitle", "docsUrl", "showTitle", "listOpacity"] }, { kind: "component", type: SplitViewHeaderActionsComponent, selector: "c8y-sv-header-actions" }, { kind: "component", type: SplitViewAlertsComponent, selector: "c8y-sv-alerts" }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "pipe", type: AlarmListIndicatorPipe, name: "alarmListIndicator" }] }); }
2046
2051
  }
2047
2052
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsListComponent, decorators: [{
2048
2053
  type: Component,
@@ -2067,7 +2072,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2067
2072
  SplitViewHeaderActionsComponent,
2068
2073
  SplitViewAlertsComponent,
2069
2074
  ListGroupComponent
2070
- ], template: "<c8y-sv-list\n [emptyStateIcon]=\"'c8y-alert-idle'\"\n [title]=\"'Alarms list' | translate\"\n [emptyStateTitle]=\"'No alarms to display.' | translate\"\n [loading]=\"isInitialLoading || isEmptyListLoading\"\n [showEmptyState]=\"isEmptyListLoading && !isInitialLoading && hasPermissions\"\n [docsUrl]=\"\n '/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms'\n \"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <c8y-sv-header-actions>\n <ng-content></ng-content>\n </c8y-sv-header-actions>\n\n <c8y-sv-alerts>\n @if (\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n ) {\n <div\n class=\"alert alert-warning m-b-0\"\n role=\"alert\"\n translate\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n }\n </c8y-sv-alerts>\n\n <c8y-list-group class=\"c8y-list--timeline d-block p-r-16 p-t-16\">\n <c8y-li-timeline\n class=\"pointer c8y-list--timeline__item\"\n role=\"button\"\n data-cy=\"c8y-alarms-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n data-cy=\"c8y-alarms-list--last-occurrence-date\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon\n [typeFilters]=\"typeFilters\"\n [alarm]=\"alarm\"\n ></c8y-alarms-icon>\n </div>\n @if (alarm.firstOccurrenceTime) {\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n data-cy=\"c8y-alarms-list--badge\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n @if (alarm.count > 1) {\n <span class=\"badge badge-info\">\n {{ alarm.count }}\n </span>\n }\n </button>\n }\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p\n class=\"text-truncate-wrap p-b-4\"\n data-cy=\"c8y-alarms-list--alarm-text\"\n >\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n data-cy=\"c8y-alarms-list--alarm-source-name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n @for (item of alarm | alarmListIndicator | async; track $index) {\n <div [title]=\"item.title | translate\">\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n</c8y-sv-list>\n\n<ng-template #alertsA>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n</ng-template>\n" }]
2075
+ ], template: "<c8y-sv-list\n [emptyStateIcon]=\"'c8y-alert-idle'\"\n [title]=\"'Alarms list' | translate\"\n [emptyStateTitle]=\"'No alarms to display.' | translate\"\n [loading]=\"isInitialLoading || isEmptyListLoading\"\n [showEmptyState]=\"isEmptyListLoading && !isInitialLoading && hasPermissions\"\n [docsUrl]=\"\n '/docs/device-management-application/monitoring-and-controlling-devices/#working-with-alarms'\n \"\n data-cy=\"c8y-alarms-list\"\n #scrollWrapper\n>\n <c8y-sv-header-actions>\n <ng-content></ng-content>\n </c8y-sv-header-actions>\n\n <c8y-sv-alerts>\n <c8y-dynamic-component-alerts [alerts]=\"alertAggregator\"></c8y-dynamic-component-alerts>\n @if (\n !isEmptyListLoading &&\n (activeChildParam$ | async) &&\n (activeAlarm$ | async)?.id !== (activeChildParam$ | async)\n ) {\n <div\n class=\"alert alert-warning m-b-0\"\n role=\"alert\"\n translate\n >\n The selected alarm is not currently in the list, change your filter.\n </div>\n }\n </c8y-sv-alerts>\n\n @if (!hasPermissions) {\n <c8y-dynamic-component-alerts\n [alerts]=\"permissionAlertAggregator\"\n ></c8y-dynamic-component-alerts>\n } @else {\n <c8y-list-group class=\"c8y-list--timeline d-block p-r-16 p-t-16\">\n <c8y-li-timeline\n class=\"pointer c8y-list--timeline__item\"\n role=\"button\"\n data-cy=\"c8y-alarms-list--timeline-repeat\"\n *c8yFor=\"let alarm of alarms; let i = index; pipe: mapAlarmLink; loadMore: loadMoreMode\"\n [routerLink]=\"navigationOptions.allowNavigationToAlarmsView ? alarm.link : null\"\n routerLinkActive=\"active\"\n [queryParamsHandling]=\"navigationOptions.queryParamsHandling\"\n (isActiveChange)=\"activeRouteChanged($event, liScrollAnchor, alarm)\"\n (click)=\"onAlarmOpen(alarm)\"\n [queryParams]=\"\n navigationOptions.includeClearedQueryParams\n ? { showCleared: alarm.status === 'CLEARED' }\n : {}\n \"\n >\n <span\n [attr.aria-label]=\"alarmLastOccurrenceLabel | translate\"\n [tooltip]=\"alarmLastOccurrenceLabel | translate\"\n placement=\"right\"\n container=\"body\"\n data-cy=\"c8y-alarms-list--last-occurrence-date\"\n [delay]=\"500\"\n >\n {{ alarm.time | c8yDate: 'mediumDate' }}\n {{ alarm.time | c8yDate: 'mediumTime' }}\n </span>\n <c8y-li\n style=\"scroll-margin-top: 56px\"\n #liScrollAnchor\n >\n <c8y-li-icon class=\"a-s-start\">\n <div class=\"alarm-icons\">\n <c8y-alarms-icon\n [typeFilters]=\"typeFilters\"\n [alarm]=\"alarm\"\n ></c8y-alarms-icon>\n </div>\n @if (alarm.firstOccurrenceTime) {\n <button\n class=\"btn-clean text-center\"\n [attr.aria-label]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n [tooltip]=\"\n alarmBadgeTooltip\n | translate\n : { alarmFirstOccurrenceTime: alarm.firstOccurrenceTime | c8yDate: 'medium' }\n \"\n placement=\"right\"\n container=\"body\"\n type=\"button\"\n data-cy=\"c8y-alarms-list--badge\"\n (click)=\"$event.stopPropagation()\"\n [delay]=\"500\"\n >\n @if (alarm.count > 1) {\n <span class=\"badge badge-info\">\n {{ alarm.count }}\n </span>\n }\n </button>\n }\n </c8y-li-icon>\n <c8y-li-body class=\"a-s-stretch\">\n <div class=\"d-flex a-i-start fit-h\">\n <div class=\"min-width-0 flex-grow\">\n <p\n class=\"text-truncate-wrap p-b-4\"\n data-cy=\"c8y-alarms-list--alarm-text\"\n >\n {{ alarm.text | translate }}\n </p>\n <div class=\"d-flex\">\n <p\n class=\"small text-muted text-truncate flex-grow\"\n [title]=\"alarm.source.name\"\n data-cy=\"c8y-alarms-list--alarm-source-name\"\n >\n <i [c8yIcon]=\"'exchange'\"></i>\n {{ alarm.source.name }}\n </p>\n <div class=\"d-flex\">\n @for (item of alarm | alarmListIndicator | async; track $index) {\n <div [title]=\"item.title | translate\">\n <i\n [class]=\"item.class\"\n [c8yIcon]=\"item.icon\"\n ></i>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-li-timeline>\n </c8y-list-group>\n }\n</c8y-sv-list>\n" }]
2071
2076
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: AlarmsViewService }, { type: i3.ContextRouteService }, { type: i1.Router }], propDecorators: { alarms: [{
2072
2077
  type: Input
2073
2078
  }], hasPermissions: [{
@@ -2711,8 +2716,9 @@ class AlarmsModule {
2711
2716
  ngModule: AlarmsModule,
2712
2717
  providers: [
2713
2718
  ...(alarmsConfig.hybrid ? [smartRulesUpgradeServiceProvider] : []),
2714
- hookNavigator(alarmsConfig.rootNavigatorNode),
2719
+ ...(alarmsConfig.rootNavigatorNode ? [hookNavigator(alarmsConfig.rootNavigatorNode)] : []),
2715
2720
  hookRoute(alarmsConfig.route),
2721
+ ...(alarmsConfig.additionalProviders || []),
2716
2722
  {
2717
2723
  provide: ALARMS_MODULE_CONFIG,
2718
2724
  useValue: alarmsConfig
@@ -2828,9 +2834,51 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
2828
2834
  }]
2829
2835
  }] });
2830
2836
 
2837
+ class AlarmsGuard {
2838
+ constructor() {
2839
+ this.permissions = inject(Permissions);
2840
+ }
2841
+ canActivate() {
2842
+ return this.permissions.hasAnyRole([Permissions.ROLE_ALARM_READ, Permissions.ROLE_ALARM_ADMIN]);
2843
+ }
2844
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2845
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsGuard, providedIn: 'root' }); }
2846
+ }
2847
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsGuard, decorators: [{
2848
+ type: Injectable,
2849
+ args: [{ providedIn: 'root' }]
2850
+ }] });
2851
+
2852
+ class AlarmsNavigationFactory {
2853
+ constructor() {
2854
+ this.guard = inject(AlarmsGuard);
2855
+ this.navs = [];
2856
+ }
2857
+ async get() {
2858
+ const canActivate = this.guard.canActivate();
2859
+ if (canActivate && this.navs.length === 0) {
2860
+ this.navs.push(new NavigatorNode({
2861
+ label: gettext('Alarms'),
2862
+ icon: 'bell',
2863
+ path: `/${ALARMS_PATH}`,
2864
+ featureId: 'alarms',
2865
+ parent: '',
2866
+ routerLinkExact: false,
2867
+ priority: 1000
2868
+ }));
2869
+ }
2870
+ return this.navs;
2871
+ }
2872
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsNavigationFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2873
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsNavigationFactory }); }
2874
+ }
2875
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AlarmsNavigationFactory, decorators: [{
2876
+ type: Injectable
2877
+ }] });
2878
+
2831
2879
  /**
2832
2880
  * Generated bundle index. Do not edit.
2833
2881
  */
2834
2882
 
2835
- export { ALARMS_MODULE_CONFIG, ALARMS_PATH, ALARM_DEFAULT_PROPERTIES, ALARM_SEVERITY_ICON, ALARM_SEVERITY_ICON_MAP, ALARM_STATUS_ICON, AlarmDetailsButtonPipe, AlarmDetailsButtonService, AlarmDetailsComponent, AlarmDetailsService, AlarmEmptyComponent, AlarmIconMap, AlarmInfoComponent, AlarmListIndicatorPipe, AlarmListIndicatorService, AlarmSeveritiesToTitlePipe, AlarmSeverityToIconClassPipe, AlarmSeverityToIconPipe, AlarmSeverityToLabelPipe, AlarmStatusToIconPipe, AlarmStatusToLabelPipe, AlarmsActivityTrackerService, AlarmsComponent, AlarmsDateFilterComponent, AlarmsFilterComponent, AlarmsIconComponent, AlarmsIntervalRefreshComponent, AlarmsListComponent, AlarmsModule, AlarmsTypeFilterComponent, AlarmsViewService, AuditChangesMessagePipe, DEFAULT_ALARM_COUNTS, DEFAULT_SEVERITY_VALUES, DEFAULT_STATUS_VALUES, HELP_ICON, INTERVALS_EXTENDED, INTERVAL_TITLES_EXTENDED, Ng1SmartRulesUpgradeService, PRODUCT_EXPERIENCE_ALARMS, SmartRulesUpgradeServiceFactory, THROTTLE_REALTIME_REFRESH, getChildrenForViewContext, getViewContextRoutes, smartRulesUpgradeServiceProvider };
2883
+ export { ALARMS_MODULE_CONFIG, ALARMS_PATH, ALARM_DEFAULT_PROPERTIES, ALARM_SEVERITY_ICON, ALARM_SEVERITY_ICON_MAP, ALARM_STATUS_ICON, AlarmDetailsButtonPipe, AlarmDetailsButtonService, AlarmDetailsComponent, AlarmDetailsService, AlarmEmptyComponent, AlarmIconMap, AlarmInfoComponent, AlarmListIndicatorPipe, AlarmListIndicatorService, AlarmSeveritiesToTitlePipe, AlarmSeverityToIconClassPipe, AlarmSeverityToIconPipe, AlarmSeverityToLabelPipe, AlarmStatusToIconPipe, AlarmStatusToLabelPipe, AlarmsActivityTrackerService, AlarmsComponent, AlarmsDateFilterComponent, AlarmsFilterComponent, AlarmsGuard, AlarmsIconComponent, AlarmsIntervalRefreshComponent, AlarmsListComponent, AlarmsModule, AlarmsNavigationFactory, AlarmsTypeFilterComponent, AlarmsViewService, AuditChangesMessagePipe, DEFAULT_ALARM_COUNTS, DEFAULT_SEVERITY_VALUES, DEFAULT_STATUS_VALUES, HELP_ICON, INTERVALS_EXTENDED, INTERVAL_TITLES_EXTENDED, Ng1SmartRulesUpgradeService, PRODUCT_EXPERIENCE_ALARMS, SmartRulesUpgradeServiceFactory, THROTTLE_REALTIME_REFRESH, getChildrenForViewContext, getViewContextRoutes, smartRulesUpgradeServiceProvider };
2836
2884
  //# sourceMappingURL=c8y-ngx-components-alarms.mjs.map