@c8y/ngx-components 1022.10.1 → 1022.16.2

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 (1047) hide show
  1. package/actility-device-registration/actility-device-registration-button.component.d.ts +1 -1
  2. package/actility-device-registration/actility-device-registration-button.component.d.ts.map +1 -1
  3. package/actility-device-registration/actility-device-registration.component.d.ts +1 -1
  4. package/actility-device-registration/actility-device-registration.component.d.ts.map +1 -1
  5. package/actility-device-registration/actility-device-registration.module.d.ts +4 -4
  6. package/actility-device-registration/actility-device-registration.module.d.ts.map +1 -1
  7. package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts +1 -1
  8. package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts.map +1 -1
  9. package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts +25 -1
  10. package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts.map +1 -1
  11. package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts +1 -1
  12. package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts.map +1 -1
  13. package/alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.d.ts +1 -1
  14. package/alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.d.ts.map +1 -1
  15. package/alarm-event-selector/alarm-event-selector.component.d.ts +1 -1
  16. package/alarm-event-selector/alarm-event-selector.component.d.ts.map +1 -1
  17. package/alarm-event-selector/alarm-event-selector.module.d.ts +15 -15
  18. package/alarm-event-selector/alarm-event-selector.module.d.ts.map +1 -1
  19. package/alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.d.ts +1 -1
  20. package/alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.d.ts.map +1 -1
  21. package/alarm-event-selector/pipes/includes-alarm.pipe.d.ts +1 -1
  22. package/alarm-event-selector/pipes/includes-alarm.pipe.d.ts.map +1 -1
  23. package/alarms/alarm-details.component.d.ts +1 -1
  24. package/alarms/alarm-details.component.d.ts.map +1 -1
  25. package/alarms/alarm-empty.component.d.ts +1 -1
  26. package/alarms/alarm-empty.component.d.ts.map +1 -1
  27. package/alarms/alarm-info.component.d.ts +1 -1
  28. package/alarms/alarm-info.component.d.ts.map +1 -1
  29. package/alarms/alarm-severities-to-title.pipe.d.ts +1 -1
  30. package/alarms/alarm-severities-to-title.pipe.d.ts.map +1 -1
  31. package/alarms/alarm-severity-to-label.pipe.d.ts +1 -1
  32. package/alarms/alarm-severity-to-label.pipe.d.ts.map +1 -1
  33. package/alarms/alarm-status-to-icon.pipe.d.ts +1 -1
  34. package/alarms/alarm-status-to-icon.pipe.d.ts.map +1 -1
  35. package/alarms/alarm-status-to-label.pipe.d.ts +1 -1
  36. package/alarms/alarm-status-to-label.pipe.d.ts.map +1 -1
  37. package/alarms/alarms-date-filter.component.d.ts +1 -1
  38. package/alarms/alarms-date-filter.component.d.ts.map +1 -1
  39. package/alarms/alarms-filter.component.d.ts +1 -1
  40. package/alarms/alarms-filter.component.d.ts.map +1 -1
  41. package/alarms/alarms-icon.component.d.ts +1 -1
  42. package/alarms/alarms-icon.component.d.ts.map +1 -1
  43. package/alarms/alarms-interval-refresh.component.d.ts +1 -1
  44. package/alarms/alarms-interval-refresh.component.d.ts.map +1 -1
  45. package/alarms/alarms-list.component.d.ts +1 -1
  46. package/alarms/alarms-list.component.d.ts.map +1 -1
  47. package/alarms/alarms-type-filter.component.d.ts +1 -1
  48. package/alarms/alarms-type-filter.component.d.ts.map +1 -1
  49. package/alarms/alarms.component.d.ts +1 -1
  50. package/alarms/alarms.component.d.ts.map +1 -1
  51. package/alarms/alarms.helper.d.ts.map +1 -1
  52. package/alarms/alarms.module.d.ts +27 -27
  53. package/alarms/alarms.module.d.ts.map +1 -1
  54. package/alarms/audit-changes-message.pipe.d.ts +1 -1
  55. package/alarms/audit-changes-message.pipe.d.ts.map +1 -1
  56. package/api/api.service.d.ts +8 -0
  57. package/api/api.service.d.ts.map +1 -1
  58. package/app-logs/app-logs-auto-refresh.component.d.ts +1 -1
  59. package/app-logs/app-logs-auto-refresh.component.d.ts.map +1 -1
  60. package/app-logs/app-logs-auto-refresh.module.d.ts +4 -4
  61. package/app-logs/app-logs-auto-refresh.module.d.ts.map +1 -1
  62. package/assets-navigator/asset-selector/asset-selector-node.component.d.ts +1 -1
  63. package/assets-navigator/asset-selector/asset-selector-node.component.d.ts.map +1 -1
  64. package/assets-navigator/asset-selector/asset-selector.component.d.ts +12 -1
  65. package/assets-navigator/asset-selector/asset-selector.component.d.ts.map +1 -1
  66. package/assets-navigator/asset-selector/asset-selector.module.d.ts +8 -8
  67. package/assets-navigator/asset-selector/asset-selector.module.d.ts.map +1 -1
  68. package/assets-navigator/asset-selector/miller-view.component.d.ts +1 -1
  69. package/assets-navigator/asset-selector/miller-view.component.d.ts.map +1 -1
  70. package/auth-configuration/basic-settings/auth-configuration.component.d.ts +1 -1
  71. package/auth-configuration/basic-settings/auth-configuration.component.d.ts.map +1 -1
  72. package/auth-configuration/basic-settings/basic-auth-settings.component.d.ts +1 -1
  73. package/auth-configuration/basic-settings/basic-auth-settings.component.d.ts.map +1 -1
  74. package/auth-configuration/basic-settings/basic-settings.module.d.ts +8 -8
  75. package/auth-configuration/basic-settings/basic-settings.module.d.ts.map +1 -1
  76. package/auth-configuration/basic-settings/login-settings.component.d.ts +2 -2
  77. package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
  78. package/auth-configuration/basic-settings/session-configuration.component.d.ts +1 -1
  79. package/auth-configuration/basic-settings/session-configuration.component.d.ts.map +1 -1
  80. package/auth-configuration/basic-settings/tfa-settings.component.d.ts +1 -1
  81. package/auth-configuration/basic-settings/tfa-settings.component.d.ts.map +1 -1
  82. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts +1 -1
  83. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
  84. package/auth-configuration/sso-configuration/sso-configuration.module.d.ts +24 -24
  85. package/auth-configuration/sso-configuration/sso-configuration.module.d.ts.map +1 -1
  86. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts +1 -1
  87. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
  88. package/auth-configuration/sso-configuration/template-parts/access-mapping/child-predicates.component.d.ts +1 -1
  89. package/auth-configuration/sso-configuration/template-parts/access-mapping/child-predicates.component.d.ts.map +1 -1
  90. package/auth-configuration/sso-configuration/template-parts/access-mapping/dynamic-access-mapping.component.d.ts +1 -1
  91. package/auth-configuration/sso-configuration/template-parts/access-mapping/dynamic-access-mapping.component.d.ts.map +1 -1
  92. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-mapping.component.d.ts +1 -1
  93. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-mapping.component.d.ts.map +1 -1
  94. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts +1 -1
  95. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts.map +1 -1
  96. package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts +1 -1
  97. package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts.map +1 -1
  98. package/auth-configuration/sso-configuration/template-parts/external-token-config.component.d.ts +1 -1
  99. package/auth-configuration/sso-configuration/template-parts/external-token-config.component.d.ts.map +1 -1
  100. package/auth-configuration/sso-configuration/template-parts/logout-configuration.component.d.ts +1 -1
  101. package/auth-configuration/sso-configuration/template-parts/logout-configuration.component.d.ts.map +1 -1
  102. package/auth-configuration/sso-configuration/template-parts/request-configuration.component.d.ts +1 -1
  103. package/auth-configuration/sso-configuration/template-parts/request-configuration.component.d.ts.map +1 -1
  104. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts +1 -1
  105. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
  106. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts +1 -1
  107. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
  108. package/auth-configuration/sso-configuration/template-parts/user-id-configuration.component.d.ts +1 -1
  109. package/auth-configuration/sso-configuration/template-parts/user-id-configuration.component.d.ts.map +1 -1
  110. package/auth-configuration/sso-configuration/templates/aad-template.component.d.ts +1 -1
  111. package/auth-configuration/sso-configuration/templates/aad-template.component.d.ts.map +1 -1
  112. package/auth-configuration/sso-configuration/templates/custom-template.component.d.ts +1 -1
  113. package/auth-configuration/sso-configuration/templates/custom-template.component.d.ts.map +1 -1
  114. package/auth-configuration/sso-configuration/templates/key-cloak-template.component.d.ts +1 -1
  115. package/auth-configuration/sso-configuration/templates/key-cloak-template.component.d.ts.map +1 -1
  116. package/auth-configuration/sso-configuration/templates/template.component.d.ts +1 -1
  117. package/bookmarks/bookmarks.component.d.ts +1 -1
  118. package/bookmarks/bookmarks.component.d.ts.map +1 -1
  119. package/bookmarks/bookmarks.module.d.ts +7 -7
  120. package/bookmarks/bookmarks.module.d.ts.map +1 -1
  121. package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts +1 -1
  122. package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts.map +1 -1
  123. package/child-devices/child-devices.component.d.ts +1 -1
  124. package/child-devices/child-devices.component.d.ts.map +1 -1
  125. package/child-devices/child-devices.module.d.ts +5 -5
  126. package/child-devices/child-devices.module.d.ts.map +1 -1
  127. package/cockpit-config/cockpit-config.module.d.ts +17 -17
  128. package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
  129. package/cockpit-config/cockpit-configuration.component.d.ts +1 -1
  130. package/cockpit-config/cockpit-configuration.component.d.ts.map +1 -1
  131. package/cockpit-config/feature-config.component.d.ts +1 -1
  132. package/cockpit-config/feature-config.component.d.ts.map +1 -1
  133. package/cockpit-config/home-dashboard-config.component.d.ts +1 -1
  134. package/cockpit-config/home-dashboard-config.component.d.ts.map +1 -1
  135. package/cockpit-config/misc-config.component.d.ts +1 -1
  136. package/cockpit-config/misc-config.component.d.ts.map +1 -1
  137. package/cockpit-config/root-node-config.component.d.ts +1 -1
  138. package/cockpit-config/root-node-config.component.d.ts.map +1 -1
  139. package/cockpit-config/setup/cockpit-setup-step1.component.d.ts +1 -1
  140. package/cockpit-config/setup/cockpit-setup-step1.component.d.ts.map +1 -1
  141. package/cockpit-config/setup/cockpit-setup-step2.component.d.ts +1 -1
  142. package/cockpit-config/setup/cockpit-setup-step2.component.d.ts.map +1 -1
  143. package/cockpit-config/setup/cockpit-setup-step3.component.d.ts +1 -1
  144. package/cockpit-config/setup/cockpit-setup-step3.component.d.ts.map +1 -1
  145. package/cockpit-config/setup/cockpit-setup-step4.component.d.ts +1 -1
  146. package/cockpit-config/setup/cockpit-setup-step4.component.d.ts.map +1 -1
  147. package/cockpit-config/setup/cockpit-setup-stepper-buttons.component.d.ts +1 -1
  148. package/cockpit-config/setup/cockpit-setup-stepper-buttons.component.d.ts.map +1 -1
  149. package/context-dashboard/add-dashboard.component.d.ts +1 -1
  150. package/context-dashboard/add-dashboard.component.d.ts.map +1 -1
  151. package/context-dashboard/context-dashboard.component.d.ts +2 -1
  152. package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
  153. package/context-dashboard/context-dashboard.model.d.ts +0 -1
  154. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  155. package/context-dashboard/context-dashboard.module.d.ts +26 -19
  156. package/context-dashboard/context-dashboard.module.d.ts.map +1 -1
  157. package/context-dashboard/context-dashboard.service.d.ts +6 -1
  158. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  159. package/context-dashboard/dashboard-detail.component.d.ts +2 -2
  160. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  161. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts +1 -1
  162. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts.map +1 -1
  163. package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts +5 -5
  164. package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts.map +1 -1
  165. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts +1 -1
  166. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts.map +1 -1
  167. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts +5 -5
  168. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts.map +1 -1
  169. package/context-dashboard/paste-dashboard-action.component.d.ts +1 -1
  170. package/context-dashboard/paste-dashboard-action.component.d.ts.map +1 -1
  171. package/context-dashboard/widget-config.component.d.ts +1 -1
  172. package/context-dashboard/widget-config.component.d.ts.map +1 -1
  173. package/context-dashboard/widget-config.service.d.ts +1 -1
  174. package/core/alert/alert.service.d.ts +14 -5
  175. package/core/alert/alert.service.d.ts.map +1 -1
  176. package/core/asset-property/asset-property.model.d.ts +2 -0
  177. package/core/asset-property/asset-property.model.d.ts.map +1 -1
  178. package/core/authentication/authentication.module.d.ts.map +1 -1
  179. package/core/bottom-drawer/bottom-drawer.component.d.ts +3 -0
  180. package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
  181. package/core/breadcrumb/breadcrumb.module.d.ts +3 -3
  182. package/core/common/ApplicationOptions.d.ts +14 -12
  183. package/core/common/ApplicationOptions.d.ts.map +1 -1
  184. package/core/common/date.pipe.d.ts +1 -1
  185. package/core/common/forOf.directive.d.ts +16 -16
  186. package/core/common/forOf.directive.d.ts.map +1 -1
  187. package/core/common/humanize-app-name.pipe.d.ts +7 -0
  188. package/core/common/humanize-app-name.pipe.d.ts.map +1 -1
  189. package/core/common/humanize.pipe.d.ts +7 -0
  190. package/core/common/humanize.pipe.d.ts.map +1 -1
  191. package/core/common/icon.directive.d.ts +19 -0
  192. package/core/common/icon.directive.d.ts.map +1 -1
  193. package/core/common/markdown-to-html.pipe.d.ts +8 -0
  194. package/core/common/markdown-to-html.pipe.d.ts.map +1 -1
  195. package/core/common/options.service.d.ts +5 -5
  196. package/core/common/outlet.directive.d.ts +4 -6
  197. package/core/common/outlet.directive.d.ts.map +1 -1
  198. package/core/common/permissions.service.d.ts +12 -12
  199. package/core/common/service-registry.service.d.ts +2 -1
  200. package/core/common/service-registry.service.d.ts.map +1 -1
  201. package/core/common/user-name-initials.pipe.d.ts +7 -0
  202. package/core/common/user-name-initials.pipe.d.ts.map +1 -1
  203. package/core/common/user-preferences/user-preferences.service.d.ts +1 -1
  204. package/core/countdown-interval/countdown-interval.component.d.ts +7 -0
  205. package/core/countdown-interval/countdown-interval.component.d.ts.map +1 -1
  206. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -1
  207. package/core/date-time-picker/date-time-picker.component.d.ts +20 -0
  208. package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
  209. package/core/device-status/device-status.component.d.ts +3 -0
  210. package/core/device-status/device-status.component.d.ts.map +1 -1
  211. package/core/drop-area/drop-area.component.d.ts +2 -0
  212. package/core/drop-area/drop-area.component.d.ts.map +1 -1
  213. package/core/dynamic-forms/file/file.type.component.d.ts.map +1 -1
  214. package/core/header/header.model.d.ts +3 -2
  215. package/core/header/header.model.d.ts.map +1 -1
  216. package/core/header/title/title.component.d.ts +2 -0
  217. package/core/header/title/title.component.d.ts.map +1 -1
  218. package/core/i18n/c8y-translate.directive.d.ts +2 -2
  219. package/core/list-display-switch/list-display-switch.component.d.ts +9 -0
  220. package/core/list-display-switch/list-display-switch.component.d.ts.map +1 -1
  221. package/core/modal/modal.module.d.ts.map +1 -1
  222. package/core/plugins/plugins.module.d.ts.map +1 -1
  223. package/core/plugins/plugins.service.d.ts +1 -2
  224. package/core/plugins/plugins.service.d.ts.map +1 -1
  225. package/core/preview-feature/preview-feature.service.d.ts +1 -0
  226. package/core/preview-feature/preview-feature.service.d.ts.map +1 -1
  227. package/core/range-display/range-display.component.d.ts +11 -0
  228. package/core/range-display/range-display.component.d.ts.map +1 -1
  229. package/core/realtime/realtime.service.d.ts +4 -4
  230. package/core/select/select.component.d.ts.map +1 -1
  231. package/dashboard-manager/dashboard-manager.module.d.ts +8 -8
  232. package/dashboard-manager/dashboard-manager.module.d.ts.map +1 -1
  233. package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts +1 -1
  234. package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts.map +1 -1
  235. package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts +1 -1
  236. package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts.map +1 -1
  237. package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts +1 -1
  238. package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  239. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +1 -1
  240. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  241. package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts +10 -1
  242. package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts.map +1 -1
  243. package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts +1 -1
  244. package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts.map +1 -1
  245. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts +1 -1
  246. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
  247. package/datapoint-selector/datapoint-selector.component.d.ts +1 -1
  248. package/datapoint-selector/datapoint-selector.component.d.ts.map +1 -1
  249. package/datapoint-selector/datapoint-selector.module.d.ts +18 -18
  250. package/datapoint-selector/datapoint-selector.module.d.ts.map +1 -1
  251. package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts +1 -1
  252. package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts.map +1 -1
  253. package/datapoint-selector/pipes/datapoint-label.pipe.d.ts +1 -1
  254. package/datapoint-selector/pipes/datapoint-label.pipe.d.ts.map +1 -1
  255. package/datapoint-selector/pipes/filter-datapoints.pipe.d.ts +1 -1
  256. package/datapoint-selector/pipes/filter-datapoints.pipe.d.ts.map +1 -1
  257. package/datapoint-selector/pipes/includes-datapoint.pipe.d.ts +1 -1
  258. package/datapoint-selector/pipes/includes-datapoint.pipe.d.ts.map +1 -1
  259. package/datapoints-export-selector/datapoints-export-selector.component.d.ts +7 -0
  260. package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -1
  261. package/default-subscriptions/default-subscriptions.component.d.ts +1 -1
  262. package/default-subscriptions/default-subscriptions.component.d.ts.map +1 -1
  263. package/default-subscriptions/default-subscriptions.module.d.ts +4 -4
  264. package/default-subscriptions/default-subscriptions.module.d.ts.map +1 -1
  265. package/device-grid/columns/alarms.cell-renderer.component.d.ts +1 -1
  266. package/device-grid/columns/alarms.cell-renderer.component.d.ts.map +1 -1
  267. package/device-grid/columns/alarms.header-cell-renderer.component.d.ts +1 -1
  268. package/device-grid/columns/alarms.header-cell-renderer.component.d.ts.map +1 -1
  269. package/device-grid/columns/group.cell-renderer.component.d.ts +1 -1
  270. package/device-grid/columns/group.cell-renderer.component.d.ts.map +1 -1
  271. package/device-grid/columns/group.filtering-form-renderer.component.d.ts +1 -1
  272. package/device-grid/columns/group.filtering-form-renderer.component.d.ts.map +1 -1
  273. package/device-grid/columns/model.cell-renderer.component.d.ts +1 -1
  274. package/device-grid/columns/model.cell-renderer.component.d.ts.map +1 -1
  275. package/device-grid/columns/name.cell-renderer.component.d.ts +1 -1
  276. package/device-grid/columns/name.cell-renderer.component.d.ts.map +1 -1
  277. package/device-grid/columns/registration-date.cell-renderer.component.d.ts +1 -1
  278. package/device-grid/columns/registration-date.cell-renderer.component.d.ts.map +1 -1
  279. package/device-grid/columns/serial-number.cell-renderer.component.d.ts +1 -1
  280. package/device-grid/columns/serial-number.cell-renderer.component.d.ts.map +1 -1
  281. package/device-grid/columns/status.cell-renderer.component.d.ts +1 -1
  282. package/device-grid/columns/status.cell-renderer.component.d.ts.map +1 -1
  283. package/device-grid/device-grid.component.d.ts +1 -1
  284. package/device-grid/device-grid.component.d.ts.map +1 -1
  285. package/device-grid/device-grid.module.d.ts +15 -15
  286. package/device-grid/device-grid.module.d.ts.map +1 -1
  287. package/device-list/add-smart-group.component.d.ts +1 -1
  288. package/device-list/add-smart-group.component.d.ts.map +1 -1
  289. package/device-list/device-list.component.d.ts +1 -1
  290. package/device-list/device-list.component.d.ts.map +1 -1
  291. package/device-list/device-list.module.d.ts +8 -8
  292. package/device-list/device-list.module.d.ts.map +1 -1
  293. package/device-list/devices.breadcrumb-factory.d.ts +1 -0
  294. package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
  295. package/device-parameters/device-parameter-details.component.d.ts +22 -0
  296. package/device-parameters/device-parameter-details.component.d.ts.map +1 -0
  297. package/device-parameters/device-parameter-value.component.d.ts +12 -0
  298. package/device-parameters/device-parameter-value.component.d.ts.map +1 -0
  299. package/device-parameters/device-parameters-list.component.d.ts +2 -1
  300. package/device-parameters/device-parameters-list.component.d.ts.map +1 -1
  301. package/device-parameters/index.d.ts +5 -0
  302. package/device-parameters/index.d.ts.map +1 -1
  303. package/device-parameters/parameter-type-cell-renderer.components.d.ts +8 -0
  304. package/device-parameters/parameter-type-cell-renderer.components.d.ts.map +1 -0
  305. package/device-profile/add-device-profile.component.d.ts +1 -1
  306. package/device-profile/add-device-profile.component.d.ts.map +1 -1
  307. package/device-profile/device-profile-list.component.d.ts +1 -1
  308. package/device-profile/device-profile-list.component.d.ts.map +1 -1
  309. package/device-profile/device-profile.component.d.ts +1 -1
  310. package/device-profile/device-profile.component.d.ts.map +1 -1
  311. package/device-profile/device-profile.module.d.ts +17 -17
  312. package/device-profile/device-profile.module.d.ts.map +1 -1
  313. package/device-profile/device-tab-profile/device-profile-item-list.component.d.ts +1 -1
  314. package/device-profile/device-tab-profile/device-profile-item-list.component.d.ts.map +1 -1
  315. package/device-profile/device-tab-profile/device-tab-profile-detail.component.d.ts +1 -1
  316. package/device-profile/device-tab-profile/device-tab-profile-detail.component.d.ts.map +1 -1
  317. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts +1 -1
  318. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
  319. package/device-profile/select-configuration-modal.component.d.ts +1 -1
  320. package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
  321. package/device-protocols/device-protocols.module.d.ts +1 -1
  322. package/device-protocols/device-type-detail.component.d.ts +1 -1
  323. package/device-protocols/device-type-detail.component.d.ts.map +1 -1
  324. package/device-protocols/device-type-detail.directive.d.ts +1 -1
  325. package/device-protocols/device-type-detail.directive.d.ts.map +1 -1
  326. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts +7 -7
  327. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -1
  328. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +5 -3
  329. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  330. package/device-shell/command-templates/command-templates.component.d.ts +1 -1
  331. package/device-shell/command-templates/command-templates.component.d.ts.map +1 -1
  332. package/device-shell/command-templates/command-templates.directive.d.ts +1 -1
  333. package/device-shell/command-templates/command-templates.directive.d.ts.map +1 -1
  334. package/device-shell/command-templates/command-templates.module.d.ts +1 -1
  335. package/device-shell/shell/shell.component.d.ts +1 -1
  336. package/device-shell/shell/shell.component.d.ts.map +1 -1
  337. package/device-shell/shell/shell.module.d.ts +7 -7
  338. package/diagnostics/diagnostics.component.d.ts +1 -1
  339. package/diagnostics/diagnostics.component.d.ts.map +1 -1
  340. package/diagnostics/diagnostics.module.d.ts +8 -8
  341. package/diagnostics/diagnostics.module.d.ts.map +1 -1
  342. package/ecosystem/activity-log/activity-log.component.d.ts +1 -1
  343. package/ecosystem/activity-log/activity-log.component.d.ts.map +1 -1
  344. package/ecosystem/application-plugins/appState.pipe.d.ts +1 -1
  345. package/ecosystem/application-plugins/appState.pipe.d.ts.map +1 -1
  346. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts +1 -1
  347. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts.map +1 -1
  348. package/ecosystem/application-plugins/application-plugins.component.d.ts +1 -1
  349. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  350. package/ecosystem/application-plugins/application-plugins.module.d.ts +14 -14
  351. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  352. package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts +2 -2
  353. package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts.map +1 -1
  354. package/ecosystem/application-plugins/install-plugin.component.d.ts +1 -1
  355. package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
  356. package/ecosystem/application-plugins/label-cell-renderer.component.d.ts +1 -1
  357. package/ecosystem/application-plugins/label-cell-renderer.component.d.ts.map +1 -1
  358. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts +1 -1
  359. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -1
  360. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts +1 -1
  361. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  362. package/ecosystem/application-plugins/plugin-list-item.component.d.ts +1 -1
  363. package/ecosystem/application-plugins/plugin-list-item.component.d.ts.map +1 -1
  364. package/ecosystem/application-plugins/plugin-list.component.d.ts +1 -1
  365. package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
  366. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts +1 -1
  367. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  368. package/ecosystem/application-properties/application-properties.component.d.ts +1 -1
  369. package/ecosystem/application-properties/application-properties.component.d.ts.map +1 -1
  370. package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts +1 -1
  371. package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts.map +1 -1
  372. package/ecosystem/application-properties/update-application-modal/update-application-modal.component.d.ts +1 -1
  373. package/ecosystem/application-properties/update-application-modal/update-application-modal.component.d.ts.map +1 -1
  374. package/ecosystem/applications/add-external-applicaiton/add-external-application.component.d.ts +1 -1
  375. package/ecosystem/applications/add-external-applicaiton/add-external-application.component.d.ts.map +1 -1
  376. package/ecosystem/applications/add-web-application/add-web-application.component.d.ts +1 -1
  377. package/ecosystem/applications/add-web-application/add-web-application.component.d.ts.map +1 -1
  378. package/ecosystem/applications/application-list/application-list.component.d.ts +1 -1
  379. package/ecosystem/applications/application-list/application-list.component.d.ts.map +1 -1
  380. package/ecosystem/applications/install-from-package/install-from-package.component.d.ts +2 -3
  381. package/ecosystem/applications/install-from-package/install-from-package.component.d.ts.map +1 -1
  382. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts +1 -1
  383. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts.map +1 -1
  384. package/ecosystem/archived-confirm/archived-confirm.module.d.ts +4 -4
  385. package/ecosystem/archived-confirm/archived-confirm.module.d.ts.map +1 -1
  386. package/ecosystem/ecosystem.module.d.ts +34 -34
  387. package/ecosystem/ecosystem.module.d.ts.map +1 -1
  388. package/ecosystem/features/feature-list.component.d.ts +1 -1
  389. package/ecosystem/features/feature-list.component.d.ts.map +1 -1
  390. package/ecosystem/license-confirm/license-confirm-modal.component.d.ts +1 -1
  391. package/ecosystem/license-confirm/license-confirm-modal.component.d.ts.map +1 -1
  392. package/ecosystem/license-confirm/license-confirm.module.d.ts +5 -5
  393. package/ecosystem/license-confirm/license-confirm.module.d.ts.map +1 -1
  394. package/ecosystem/license-confirm/license-view.component.d.ts +1 -1
  395. package/ecosystem/license-confirm/license-view.component.d.ts.map +1 -1
  396. package/ecosystem/microservices/add-microservice.component.d.ts +1 -1
  397. package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
  398. package/ecosystem/microservices/microservice-list.component.d.ts +1 -1
  399. package/ecosystem/microservices/microservice-list.component.d.ts.map +1 -1
  400. package/ecosystem/packages/add-package.component.d.ts +1 -1
  401. package/ecosystem/packages/add-package.component.d.ts.map +1 -1
  402. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts +1 -1
  403. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  404. package/ecosystem/packages/package-details/package-details.component.d.ts +1 -1
  405. package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
  406. package/ecosystem/packages/package-list/packages-list.component.d.ts +1 -1
  407. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  408. package/ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.d.ts +1 -1
  409. package/ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.d.ts.map +1 -1
  410. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts +1 -1
  411. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts.map +1 -1
  412. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts +1 -1
  413. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts.map +1 -1
  414. package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts +1 -1
  415. package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts.map +1 -1
  416. package/ecosystem/packages/package-versions/packages-versions.component.d.ts +1 -1
  417. package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
  418. package/ecosystem/shared/add-application.component.d.ts +1 -1
  419. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  420. package/ecosystem/shared/application-card.component.d.ts +1 -1
  421. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  422. package/ecosystem/shared/application-properties-form.component.d.ts +1 -1
  423. package/ecosystem/shared/application-properties-form.component.d.ts.map +1 -1
  424. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts +1 -1
  425. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -1
  426. package/ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.d.ts +1 -1
  427. package/ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.d.ts.map +1 -1
  428. package/ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.d.ts +2 -2
  429. package/ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.d.ts.map +1 -1
  430. package/ecosystem/shared/duplicate-application/duplicate-application.component.d.ts +1 -1
  431. package/ecosystem/shared/duplicate-application/duplicate-application.component.d.ts.map +1 -1
  432. package/ecosystem/shared/list-filters/list-filters.component.d.ts +1 -1
  433. package/ecosystem/shared/list-filters/list-filters.component.d.ts.map +1 -1
  434. package/ecosystem/shared/package-version-select/package-version-select.component.d.ts +1 -1
  435. package/ecosystem/shared/package-version-select/package-version-select.component.d.ts.map +1 -1
  436. package/ecosystem/shared/shared-ecosystem.module.d.ts +20 -20
  437. package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
  438. package/ecosystem/shared/translate-package-label.pipe.d.ts +1 -1
  439. package/ecosystem/shared/translate-package-label.pipe.d.ts.map +1 -1
  440. package/ecosystem/shared/upload-archive.component.d.ts +1 -1
  441. package/ecosystem/shared/upload-archive.component.d.ts.map +1 -1
  442. package/events/c8y-ngx-components-events.d.ts.map +1 -0
  443. package/events/events-timeline/c8y-ngx-components-events-events-timeline.d.ts.map +1 -0
  444. package/events/events-timeline/events-timeline.component.d.ts +19 -0
  445. package/events/events-timeline/events-timeline.component.d.ts.map +1 -0
  446. package/events/events-timeline/index.d.ts +2 -0
  447. package/events/events-timeline/index.d.ts.map +1 -0
  448. package/events/events.model.d.ts +6 -0
  449. package/events/events.model.d.ts.map +1 -0
  450. package/events/events.service.d.ts +10 -0
  451. package/events/events.service.d.ts.map +1 -0
  452. package/events/index.d.ts +3 -0
  453. package/events/index.d.ts.map +1 -0
  454. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +36 -12
  455. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  456. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +195 -107
  457. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  458. package/fesm2022/c8y-ngx-components-alarms.mjs +238 -97
  459. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  460. package/fesm2022/c8y-ngx-components-api.mjs +8 -0
  461. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  462. package/fesm2022/c8y-ngx-components-app-logs.mjs +6 -8
  463. package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
  464. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +74 -26
  465. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  466. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +580 -368
  467. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  468. package/fesm2022/c8y-ngx-components-bookmarks.mjs +36 -17
  469. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  470. package/fesm2022/c8y-ngx-components-child-devices.mjs +7 -9
  471. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  472. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +138 -67
  473. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  474. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-B7m2lsIe.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs} +3 -3
  475. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-B7m2lsIe.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs.map} +1 -1
  476. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BCG_pjJz.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs} +5 -5
  477. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BCG_pjJz.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs.map} +1 -1
  478. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DjCdFkJw.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs} +3 -3
  479. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DjCdFkJw.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs.map} +1 -1
  480. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +170 -94
  481. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  482. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +44 -31
  483. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  484. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +132 -66
  485. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  486. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  487. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +32 -16
  488. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  489. package/fesm2022/c8y-ngx-components-device-grid.mjs +50 -45
  490. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  491. package/fesm2022/c8y-ngx-components-device-list.mjs +59 -27
  492. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  493. package/fesm2022/c8y-ngx-components-device-parameters.mjs +110 -13
  494. package/fesm2022/c8y-ngx-components-device-parameters.mjs.map +1 -1
  495. package/fesm2022/c8y-ngx-components-device-profile.mjs +126 -49
  496. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  497. package/fesm2022/c8y-ngx-components-device-protocols.mjs +6 -9
  498. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  499. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +78 -18
  500. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  501. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -22
  502. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  503. package/fesm2022/c8y-ngx-components-diagnostics.mjs +36 -19
  504. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  505. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +155 -72
  506. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  507. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +13 -7
  508. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
  509. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +43 -12
  510. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  511. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +179 -80
  512. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  513. package/fesm2022/c8y-ngx-components-ecosystem.mjs +353 -1316
  514. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  515. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +45 -0
  516. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -0
  517. package/fesm2022/c8y-ngx-components-events.mjs +44 -0
  518. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -0
  519. package/fesm2022/c8y-ngx-components-file-preview.mjs +17 -8
  520. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  521. package/fesm2022/c8y-ngx-components-files-repository.mjs +55 -22
  522. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  523. package/fesm2022/c8y-ngx-components-icon-selector.mjs +46 -28
  524. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  525. package/fesm2022/c8y-ngx-components-location.mjs +28 -15
  526. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  527. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +36 -12
  528. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  529. package/fesm2022/c8y-ngx-components-map.mjs +260 -28
  530. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  531. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +8 -14
  532. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  533. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +49 -49
  534. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  535. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +27 -14
  536. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  537. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +27 -33
  538. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  539. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +51 -39
  540. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  541. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +10 -8
  542. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  543. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +16 -11
  544. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  545. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +8 -11
  546. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  547. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +25 -21
  548. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  549. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -9
  550. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  551. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +31 -31
  552. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  553. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +3 -3
  554. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  555. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +33 -13
  556. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  557. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +19 -13
  558. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  559. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +40 -36
  560. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  561. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +60 -41
  562. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  563. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +122 -109
  564. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  565. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +66 -41
  566. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  567. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +11 -16
  568. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  569. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +24 -13
  570. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  571. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +133 -26
  572. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  573. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +212 -83
  574. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  575. package/fesm2022/c8y-ngx-components-register-device.mjs +314 -249
  576. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  577. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +41 -17
  578. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  579. package/fesm2022/c8y-ngx-components-reports.mjs +61 -21
  580. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  581. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +113 -54
  582. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  583. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +130 -62
  584. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  585. package/fesm2022/c8y-ngx-components-repository-shared.mjs +37 -28
  586. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  587. package/fesm2022/c8y-ngx-components-repository-software.mjs +156 -83
  588. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  589. package/fesm2022/c8y-ngx-components-search.mjs +34 -21
  590. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  591. package/fesm2022/c8y-ngx-components-services.mjs +32 -19
  592. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  593. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +43 -19
  594. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  595. package/fesm2022/c8y-ngx-components-sub-assets.mjs +207 -72
  596. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  597. package/fesm2022/c8y-ngx-components-tenants.mjs +96 -39
  598. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  599. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +224 -67
  600. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  601. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +16 -3
  602. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  603. package/fesm2022/c8y-ngx-components-upgrade.mjs +20 -24
  604. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  605. package/fesm2022/c8y-ngx-components-user-roles.mjs +24 -14
  606. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  607. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +76 -50
  608. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  609. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +15 -8
  610. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  611. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +2 -2
  612. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  613. package/fesm2022/c8y-ngx-components.mjs +640 -549
  614. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  615. package/file-preview/file-preview.component.d.ts +1 -1
  616. package/file-preview/file-preview.component.d.ts.map +1 -1
  617. package/file-preview/file-preview.module.d.ts +3 -3
  618. package/file-preview/file-preview.module.d.ts.map +1 -1
  619. package/files-repository/files-repository-upload.component.d.ts +1 -1
  620. package/files-repository/files-repository-upload.component.d.ts.map +1 -1
  621. package/files-repository/files-repository.component.d.ts +1 -1
  622. package/files-repository/files-repository.component.d.ts.map +1 -1
  623. package/files-repository/files-repository.module.d.ts +6 -6
  624. package/files-repository/files-repository.module.d.ts.map +1 -1
  625. package/icon-selector/icon-name.pipe.d.ts +1 -1
  626. package/icon-selector/icon-name.pipe.d.ts.map +1 -1
  627. package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts +1 -1
  628. package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts.map +1 -1
  629. package/icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.d.ts +1 -1
  630. package/icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.d.ts.map +1 -1
  631. package/icon-selector/icon-selector.component.d.ts +1 -1
  632. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  633. package/icon-selector/icon-selector.module.d.ts +8 -8
  634. package/icon-selector/icon-selector.module.d.ts.map +1 -1
  635. package/locales/de.po +55 -17
  636. package/locales/es.po +43 -4
  637. package/locales/fr.po +43 -4
  638. package/locales/ja_JP.po +45 -6
  639. package/locales/ko.po +43 -4
  640. package/locales/locales.pot +41 -2
  641. package/locales/nl.po +43 -4
  642. package/locales/pl.po +43 -4
  643. package/locales/pt_BR.po +43 -4
  644. package/locales/zh_CN.po +44 -5
  645. package/locales/zh_TW.po +43 -4
  646. package/location/add-location.component.d.ts +1 -1
  647. package/location/add-location.component.d.ts.map +1 -1
  648. package/location/location.component.d.ts +1 -1
  649. package/location/location.component.d.ts.map +1 -1
  650. package/location/location.module.d.ts +6 -6
  651. package/location/location.module.d.ts.map +1 -1
  652. package/loriot-device-registration/loriot-device-registration-button.component.d.ts +1 -1
  653. package/loriot-device-registration/loriot-device-registration-button.component.d.ts.map +1 -1
  654. package/loriot-device-registration/loriot-device-registration.component.d.ts +1 -1
  655. package/loriot-device-registration/loriot-device-registration.component.d.ts.map +1 -1
  656. package/loriot-device-registration/loriot-device-registration.module.d.ts +4 -4
  657. package/loriot-device-registration/loriot-device-registration.module.d.ts.map +1 -1
  658. package/map/cluster-map.component.d.ts +61 -1
  659. package/map/cluster-map.component.d.ts.map +1 -1
  660. package/map/map-popup.directive.d.ts +1 -1
  661. package/map/map-popup.directive.d.ts.map +1 -1
  662. package/map/map-status.component.d.ts +86 -3
  663. package/map/map-status.component.d.ts.map +1 -1
  664. package/map/map.component.d.ts +100 -5
  665. package/map/map.component.d.ts.map +1 -1
  666. package/map/map.model.d.ts +98 -4
  667. package/map/map.model.d.ts.map +1 -1
  668. package/map/map.module.d.ts +9 -9
  669. package/map/map.module.d.ts.map +1 -1
  670. package/operations/bulk-operation-from-single/bulk-operation-from-single.component.d.ts +1 -1
  671. package/operations/bulk-operation-from-single/bulk-operation-from-single.component.d.ts.map +1 -1
  672. package/operations/bulk-operation-from-single/bulk-operation-from-single.module.d.ts +3 -5
  673. package/operations/bulk-operation-from-single/bulk-operation-from-single.module.d.ts.map +1 -1
  674. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts +1 -1
  675. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
  676. package/operations/bulk-operation-list-item/bulk-operation-list-item.module.d.ts +1 -7
  677. package/operations/bulk-operation-list-item/bulk-operation-list-item.module.d.ts.map +1 -1
  678. package/operations/bulk-operation-list-item/bulk-operation-wrapper.component.d.ts +1 -1
  679. package/operations/bulk-operation-list-item/bulk-operation-wrapper.component.d.ts.map +1 -1
  680. package/operations/bulk-operation-list-item/modal-body-host.directive.d.ts +1 -1
  681. package/operations/bulk-operation-list-item/modal-body-host.directive.d.ts.map +1 -1
  682. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts +1 -1
  683. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
  684. package/operations/bulk-operation-scheduler/bulk-operation-scheduler.module.d.ts +6 -6
  685. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts +1 -1
  686. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  687. package/operations/bulk-operation-stepper/base-stepper.component.d.ts +1 -1
  688. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts +1 -1
  689. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
  690. package/operations/bulk-operation-stepper/bulk-operation-stepper.module.d.ts +1 -5
  691. package/operations/bulk-operation-stepper/bulk-operation-stepper.module.d.ts.map +1 -1
  692. package/operations/bulk-operation-stepper/custom-step.directive.d.ts +1 -1
  693. package/operations/bulk-operation-stepper/custom-step.directive.d.ts.map +1 -1
  694. package/operations/bulk-operations-list/bulk-operations-list.component.d.ts +1 -1
  695. package/operations/bulk-operations-list/bulk-operations-list.component.d.ts.map +1 -1
  696. package/operations/bulk-operations-list/bulk-operations-list.module.d.ts +4 -10
  697. package/operations/bulk-operations-list/bulk-operations-list.module.d.ts.map +1 -1
  698. package/operations/bulk-operations-list/modals/bulk-operations-modal.component.d.ts +1 -1
  699. package/operations/bulk-operations-list/modals/bulk-operations-modal.component.d.ts.map +1 -1
  700. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.component.d.ts +1 -1
  701. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.component.d.ts.map +1 -1
  702. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.module.d.ts +3 -4
  703. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.module.d.ts.map +1 -1
  704. package/operations/create-bulk-operation-details/create-bulk-operation-details.component.d.ts +1 -1
  705. package/operations/create-bulk-operation-details/create-bulk-operation-details.component.d.ts.map +1 -1
  706. package/operations/create-bulk-operation-details/create-bulk-operation-details.module.d.ts +1 -4
  707. package/operations/create-bulk-operation-details/create-bulk-operation-details.module.d.ts.map +1 -1
  708. package/operations/device-selector/device-selector.component.d.ts +1 -1
  709. package/operations/device-selector/device-selector.component.d.ts.map +1 -1
  710. package/operations/device-selector/device-selector.module.d.ts +1 -3
  711. package/operations/device-selector/device-selector.module.d.ts.map +1 -1
  712. package/operations/operation-details/operation-details-modal.component.d.ts +1 -1
  713. package/operations/operation-details/operation-details-modal.component.d.ts.map +1 -1
  714. package/operations/operation-details/operation-details.component.d.ts +1 -1
  715. package/operations/operation-details/operation-details.component.d.ts.map +1 -1
  716. package/operations/operation-details/operation-details.module.d.ts +1 -7
  717. package/operations/operation-details/operation-details.module.d.ts.map +1 -1
  718. package/operations/operation-details/operation-details.service.d.ts.map +1 -1
  719. package/operations/operation-summary/operation-summary.component.d.ts +1 -1
  720. package/operations/operation-summary/operation-summary.component.d.ts.map +1 -1
  721. package/operations/operation-summary/operation-summary.module.d.ts +1 -2
  722. package/operations/operation-summary/operation-summary.module.d.ts.map +1 -1
  723. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  724. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  725. package/operations/operations-list/operations-list.service.d.ts +1 -1
  726. package/operations/operations-list/operations-list.service.d.ts.map +1 -1
  727. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts +1 -1
  728. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
  729. package/operations/operations-list-item-details/operation-details.component.d.ts +1 -1
  730. package/operations/operations-list-item-details/operation-details.component.d.ts.map +1 -1
  731. package/operations/operations-list-item-details/operations-list-item-details.module.d.ts +1 -6
  732. package/operations/operations-list-item-details/operations-list-item-details.module.d.ts.map +1 -1
  733. package/operations/operations-timeline/operations-timeline.component.d.ts +5 -5
  734. package/operations/operations-timeline/operations-timeline.component.d.ts.map +1 -1
  735. package/operations/operations-timeline/operations-timeline.module.d.ts +4 -6
  736. package/operations/operations-timeline/operations-timeline.module.d.ts.map +1 -1
  737. package/operations/status-filter/status-filter.component.d.ts +1 -1
  738. package/operations/status-filter/status-filter.component.d.ts.map +1 -1
  739. package/operations/status-filter/status-filter.module.d.ts +1 -4
  740. package/operations/status-filter/status-filter.module.d.ts.map +1 -1
  741. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts +1 -1
  742. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
  743. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.d.ts +1 -6
  744. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.d.ts.map +1 -1
  745. package/operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.d.ts +1 -1
  746. package/operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.d.ts.map +1 -1
  747. package/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.d.ts +1 -1
  748. package/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.d.ts.map +1 -1
  749. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts +1 -1
  750. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
  751. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.d.ts +1 -6
  752. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.d.ts.map +1 -1
  753. package/operations/stepper-bulk-type-firmware/select-firmware.component.d.ts +1 -1
  754. package/operations/stepper-bulk-type-firmware/select-firmware.component.d.ts.map +1 -1
  755. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts +1 -1
  756. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
  757. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.module.d.ts +1 -6
  758. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.module.d.ts.map +1 -1
  759. package/operations/stepper-bulk-type-firmware/version-or-patch.component.d.ts +1 -1
  760. package/operations/stepper-bulk-type-firmware/version-or-patch.component.d.ts.map +1 -1
  761. package/operations/stepper-bulk-type-software/confirm-software-selection-step.component.d.ts +1 -1
  762. package/operations/stepper-bulk-type-software/confirm-software-selection-step.component.d.ts.map +1 -1
  763. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts +1 -1
  764. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
  765. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts +1 -1
  766. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
  767. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.module.d.ts +1 -6
  768. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.module.d.ts.map +1 -1
  769. package/operations/stepper-frames/preview-block.directive.d.ts +1 -1
  770. package/operations/stepper-frames/preview-block.directive.d.ts.map +1 -1
  771. package/operations/stepper-frames/preview-selection-frame.component.d.ts +1 -1
  772. package/operations/stepper-frames/preview-selection-frame.component.d.ts.map +1 -1
  773. package/operations/stepper-frames/select-step-frame.component.d.ts +1 -1
  774. package/operations/stepper-frames/select-step-frame.component.d.ts.map +1 -1
  775. package/operations/stepper-frames/stepper-frames.modules.d.ts +1 -2
  776. package/operations/stepper-frames/stepper-frames.modules.d.ts.map +1 -1
  777. package/package.json +1 -1
  778. package/platform-configuration/platform-configuration-form.component.d.ts +1 -1
  779. package/platform-configuration/platform-configuration-form.component.d.ts.map +1 -1
  780. package/platform-configuration/platform-configuration.module.d.ts +4 -4
  781. package/platform-configuration/platform-configuration.module.d.ts.map +1 -1
  782. package/protocol-lpwan/lpwan-protocol.module.d.ts +4 -4
  783. package/protocol-lpwan/lpwan-protocol.module.d.ts.map +1 -1
  784. package/protocol-lpwan/lpwan-set-connections.component.d.ts +1 -1
  785. package/protocol-lpwan/lpwan-set-connections.component.d.ts.map +1 -1
  786. package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts +1 -1
  787. package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts.map +1 -1
  788. package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts +1 -1
  789. package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts.map +1 -1
  790. package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts +1 -1
  791. package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts.map +1 -1
  792. package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts +1 -1
  793. package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts.map +1 -1
  794. package/protocol-lpwan/multiple-lns-connectors/multiple-lns-connectors.module.d.ts +8 -8
  795. package/protocol-lpwan/multiple-lns-connectors/multiple-lns-connectors.module.d.ts.map +1 -1
  796. package/protocol-lpwan/multiple-lns-connectors/no-connections-found.component.d.ts +1 -1
  797. package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts +1 -1
  798. package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts.map +1 -1
  799. package/protocol-opcua/opcua-address-space-detail.component.d.ts +1 -1
  800. package/protocol-opcua/opcua-address-space-detail.component.d.ts.map +1 -1
  801. package/protocol-opcua/opcua-address-space-tree.component.d.ts +1 -1
  802. package/protocol-opcua/opcua-address-space-tree.component.d.ts.map +1 -1
  803. package/protocol-opcua/opcua-address-space.component.d.ts +1 -1
  804. package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
  805. package/protocol-opcua/opcua-auto-apply-settings.component.d.ts +1 -1
  806. package/protocol-opcua/opcua-auto-apply-settings.component.d.ts.map +1 -1
  807. package/protocol-opcua/opcua-device-protocol-browse-path-validation.directive.d.ts +1 -1
  808. package/protocol-opcua/opcua-device-protocol-browse-path-validation.directive.d.ts.map +1 -1
  809. package/protocol-opcua/opcua-device-protocol-data-reporting.component.d.ts +1 -1
  810. package/protocol-opcua/opcua-device-protocol-data-reporting.component.d.ts.map +1 -1
  811. package/protocol-opcua/opcua-device-protocol-description.component.d.ts +1 -1
  812. package/protocol-opcua/opcua-device-protocol-description.component.d.ts.map +1 -1
  813. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts +1 -1
  814. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
  815. package/protocol-opcua/opcua-device-protocol-mapping.component.d.ts +1 -1
  816. package/protocol-opcua/opcua-device-protocol-mapping.component.d.ts.map +1 -1
  817. package/protocol-opcua/opcua-device-protocol-object-mapping-status-icon.component.d.ts +1 -1
  818. package/protocol-opcua/opcua-device-protocol-object-mapping-status-icon.component.d.ts.map +1 -1
  819. package/protocol-opcua/opcua-protocol.module.d.ts +26 -26
  820. package/protocol-opcua/opcua-protocol.module.d.ts.map +1 -1
  821. package/protocol-opcua/opcua-server-config.component.d.ts +1 -1
  822. package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
  823. package/protocol-opcua/opcua-server-list.component.d.ts +1 -1
  824. package/protocol-opcua/opcua-server-list.component.d.ts.map +1 -1
  825. package/protocol-opcua/opcua-servers.component.d.ts +1 -1
  826. package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
  827. package/register-device/bulk/bulk-device-registration-button.component.d.ts +1 -1
  828. package/register-device/bulk/bulk-device-registration-button.component.d.ts.map +1 -1
  829. package/register-device/bulk/bulk-device-registration-modal.component.d.ts +1 -1
  830. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  831. package/register-device/device-registration-view.component.d.ts +1 -1
  832. package/register-device/device-registration-view.component.d.ts.map +1 -1
  833. package/register-device/dropdown/register-device-dropdown.component.d.ts +1 -1
  834. package/register-device/dropdown/register-device-dropdown.component.d.ts.map +1 -1
  835. package/register-device/extensible/bulk/extensible-bulk-device-registration-button.component.d.ts +1 -1
  836. package/register-device/extensible/bulk/extensible-bulk-device-registration-button.component.d.ts.map +1 -1
  837. package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts +1 -1
  838. package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts.map +1 -1
  839. package/register-device/extensible/single/extensible-device-registration-button.component.d.ts +1 -1
  840. package/register-device/extensible/single/extensible-device-registration-button.component.d.ts.map +1 -1
  841. package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts +1 -1
  842. package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts.map +1 -1
  843. package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts +1 -1
  844. package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts.map +1 -1
  845. package/register-device/general/general-device-registration-button.component.d.ts +1 -1
  846. package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
  847. package/register-device/general/general-device-registration.component.d.ts +3 -6
  848. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  849. package/register-device/register-device.module.d.ts +16 -16
  850. package/register-device/register-device.module.d.ts.map +1 -1
  851. package/report-dashboard/report-dashboard-list.component.d.ts +1 -1
  852. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  853. package/report-dashboard/report-dashboard.module.d.ts +7 -7
  854. package/reports/cron.component.d.ts +1 -1
  855. package/reports/cron.component.d.ts.map +1 -1
  856. package/reports/export-schedules.component.d.ts +2 -3
  857. package/reports/export-schedules.component.d.ts.map +1 -1
  858. package/reports/reports.module.d.ts +7 -7
  859. package/reports/reports.module.d.ts.map +1 -1
  860. package/reports/schedule-modal.component.d.ts +2 -3
  861. package/reports/schedule-modal.component.d.ts.map +1 -1
  862. package/repository/configuration/device-tab/configuration-filter.pipe.d.ts +1 -1
  863. package/repository/configuration/device-tab/configuration-filter.pipe.d.ts.map +1 -1
  864. package/repository/configuration/device-tab/configuration-preview.component.d.ts +1 -1
  865. package/repository/configuration/device-tab/configuration-preview.component.d.ts.map +1 -1
  866. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts +11 -13
  867. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
  868. package/repository/configuration/device-tab/device-configuration-list.component.d.ts +1 -1
  869. package/repository/configuration/device-tab/device-configuration-list.component.d.ts.map +1 -1
  870. package/repository/configuration/device-tab/device-configuration.component.d.ts +1 -1
  871. package/repository/configuration/device-tab/device-configuration.component.d.ts.map +1 -1
  872. package/repository/configuration/device-tab/save-to-repository.component.d.ts +1 -1
  873. package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
  874. package/repository/configuration/device-tab/source-code-preview.component.d.ts +1 -1
  875. package/repository/configuration/device-tab/source-code-preview.component.d.ts.map +1 -1
  876. package/repository/configuration/device-tab/text-based-configuration.component.d.ts +1 -1
  877. package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
  878. package/repository/configuration/list/configuration-detail.component.d.ts +1 -1
  879. package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
  880. package/repository/configuration/list/configuration-list.component.d.ts +1 -1
  881. package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
  882. package/repository/configuration/list/configuration-repository-list.module.d.ts +4 -7
  883. package/repository/configuration/list/configuration-repository-list.module.d.ts.map +1 -1
  884. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts +1 -1
  885. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
  886. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts +4 -6
  887. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
  888. package/repository/firmware/list/add-firmware-modal.component.d.ts +1 -1
  889. package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
  890. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts +1 -1
  891. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
  892. package/repository/firmware/list/firmware-details.component.d.ts +1 -1
  893. package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
  894. package/repository/firmware/list/firmware-list.component.d.ts +1 -1
  895. package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
  896. package/repository/firmware/list/firmware-repository-list.module.d.ts +6 -11
  897. package/repository/firmware/list/firmware-repository-list.module.d.ts.map +1 -1
  898. package/repository/shared/file-download/file-download.component.d.ts +1 -1
  899. package/repository/shared/file-download/file-download.component.d.ts.map +1 -1
  900. package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
  901. package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
  902. package/repository/shared/shared-repository.module.d.ts +1 -4
  903. package/repository/shared/shared-repository.module.d.ts.map +1 -1
  904. package/repository/shared/software-type/software-type.component.d.ts +1 -1
  905. package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
  906. package/repository/software/device-tab/device-software-changes.component.d.ts +1 -1
  907. package/repository/software/device-tab/device-software-changes.component.d.ts.map +1 -1
  908. package/repository/software/device-tab/device-software-list.component.d.ts +1 -1
  909. package/repository/software/device-tab/device-software-list.component.d.ts.map +1 -1
  910. package/repository/software/device-tab/installed-software.component.d.ts +1 -1
  911. package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
  912. package/repository/software/device-tab/software-device-tab.component.d.ts +1 -1
  913. package/repository/software/device-tab/software-device-tab.component.d.ts.map +1 -1
  914. package/repository/software/device-tab/software-repository-device-tab.module.d.ts +7 -11
  915. package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
  916. package/repository/software/list/add-software-modal.component.d.ts +1 -1
  917. package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
  918. package/repository/software/list/software-details.component.d.ts +1 -1
  919. package/repository/software/list/software-details.component.d.ts.map +1 -1
  920. package/repository/software/list/software-list.component.d.ts +1 -1
  921. package/repository/software/list/software-list.component.d.ts.map +1 -1
  922. package/repository/software/list/software-repository-list.module.d.ts +5 -11
  923. package/repository/software/list/software-repository-list.module.d.ts.map +1 -1
  924. package/search/search-action.component.d.ts +1 -1
  925. package/search/search-action.component.d.ts.map +1 -1
  926. package/search/search-custom-filters.component.d.ts +1 -1
  927. package/search/search-custom-filters.component.d.ts.map +1 -1
  928. package/search/search-grid.component.d.ts +1 -1
  929. package/search/search-grid.component.d.ts.map +1 -1
  930. package/search/search-results.component.d.ts +1 -1
  931. package/search/search-results.component.d.ts.map +1 -1
  932. package/search/search.module.d.ts +8 -8
  933. package/search/search.module.d.ts.map +1 -1
  934. package/services/services-device-tab/columns/last-updated-date.cell-renderer.component.d.ts +1 -1
  935. package/services/services-device-tab/columns/last-updated-date.cell-renderer.component.d.ts.map +1 -1
  936. package/services/services-device-tab/columns/name.cell-renderer.component.d.ts +1 -1
  937. package/services/services-device-tab/columns/name.cell-renderer.component.d.ts.map +1 -1
  938. package/services/services-device-tab/columns/status.cell-renderer.component.d.ts +1 -1
  939. package/services/services-device-tab/columns/status.cell-renderer.component.d.ts.map +1 -1
  940. package/services/services-device-tab/services-device-tab.component.d.ts +1 -1
  941. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  942. package/services/services-device-tab/services-device-tab.module.d.ts +1 -4
  943. package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
  944. package/sigfox-device-registration/sigfox-device-registration-button.component.d.ts +1 -1
  945. package/sigfox-device-registration/sigfox-device-registration-button.component.d.ts.map +1 -1
  946. package/sigfox-device-registration/sigfox-device-registration.component.d.ts +1 -1
  947. package/sigfox-device-registration/sigfox-device-registration.component.d.ts.map +1 -1
  948. package/sigfox-device-registration/sigfox-device-registration.module.d.ts +4 -4
  949. package/sigfox-device-registration/sigfox-device-registration.module.d.ts.map +1 -1
  950. package/sub-assets/add-group/add-group.component.d.ts +1 -1
  951. package/sub-assets/add-group/add-group.component.d.ts.map +1 -1
  952. package/sub-assets/add-group/add-group.module.d.ts +7 -7
  953. package/sub-assets/asset-properties-item.component.d.ts +1 -1
  954. package/sub-assets/asset-properties-item.component.d.ts.map +1 -1
  955. package/sub-assets/asset-properties.component.d.ts +1 -1
  956. package/sub-assets/asset-properties.component.d.ts.map +1 -1
  957. package/sub-assets/assign-devices/assign-child-devices.component.d.ts +2 -3
  958. package/sub-assets/assign-devices/assign-child-devices.component.d.ts.map +1 -1
  959. package/sub-assets/assign-devices/assign-devices.component.d.ts +1 -1
  960. package/sub-assets/assign-devices/assign-devices.component.d.ts.map +1 -1
  961. package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts +1 -1
  962. package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts.map +1 -1
  963. package/sub-assets/group-info.component.d.ts +1 -1
  964. package/sub-assets/group-info.component.d.ts.map +1 -1
  965. package/sub-assets/groups.component.d.ts +1 -1
  966. package/sub-assets/groups.component.d.ts.map +1 -1
  967. package/sub-assets/location/asset-location.component.d.ts +1 -1
  968. package/sub-assets/location/asset-location.component.d.ts.map +1 -1
  969. package/sub-assets/sub-assets-grid.component.d.ts +1 -1
  970. package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
  971. package/sub-assets/sub-assets-grids.module.d.ts +9 -9
  972. package/sub-assets/sub-assets-grids.module.d.ts.map +1 -1
  973. package/sub-assets/sub-assets.component.d.ts +1 -1
  974. package/sub-assets/sub-assets.component.d.ts.map +1 -1
  975. package/sub-assets/sub-assets.module.d.ts +18 -18
  976. package/sub-assets/sub-assets.module.d.ts.map +1 -1
  977. package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts +1 -1
  978. package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts.map +1 -1
  979. package/tenants/tenant-form/tenant-form.component.d.ts +1 -1
  980. package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -1
  981. package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts +2 -3
  982. package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts.map +1 -1
  983. package/tenants/tenant-list/status.filtering-form-renderer.component.d.ts +1 -1
  984. package/tenants/tenant-list/status.filtering-form-renderer.component.d.ts.map +1 -1
  985. package/tenants/tenant-list/tenant-list.component.d.ts +1 -1
  986. package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
  987. package/tenants/tenants.module.d.ts +9 -9
  988. package/tenants/tenants.module.d.ts.map +1 -1
  989. package/trusted-certificates/crl/crl-check-settings.component.d.ts +1 -1
  990. package/trusted-certificates/crl/crl-check-settings.component.d.ts.map +1 -1
  991. package/trusted-certificates/crl/crl-settings.component.d.ts +6 -2
  992. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
  993. package/trusted-certificates/crl/crl-settings.module.d.ts +8 -8
  994. package/trusted-certificates/crl/crl-settings.module.d.ts.map +1 -1
  995. package/trusted-certificates/factories/tabs.factory.d.ts +3 -2
  996. package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
  997. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts +2 -0
  998. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
  999. package/trusted-certificates/list/add-trusted-certificate.component.d.ts +4 -3
  1000. package/trusted-certificates/list/add-trusted-certificate.component.d.ts.map +1 -1
  1001. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +16 -3
  1002. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  1003. package/trusted-certificates/list/trusted-certificate-list.module.d.ts +10 -10
  1004. package/trusted-certificates/list/trusted-certificate-list.module.d.ts.map +1 -1
  1005. package/trusted-certificates/list/trusted-certificate.model.d.ts +2 -0
  1006. package/trusted-certificates/list/trusted-certificate.model.d.ts.map +1 -1
  1007. package/trusted-certificates/pattern-messages.data.d.ts +6 -0
  1008. package/trusted-certificates/pattern-messages.data.d.ts.map +1 -1
  1009. package/trusted-certificates/trusted-certificates.guard.d.ts +11 -0
  1010. package/trusted-certificates/trusted-certificates.guard.d.ts.map +1 -0
  1011. package/upgrade/dashboard/dashboard-upgrade.module.d.ts +6 -6
  1012. package/upgrade/dashboard/dashboard-upgrade.module.d.ts.map +1 -1
  1013. package/upgrade/dashboard/device-selector.component.d.ts +1 -1
  1014. package/upgrade/dashboard/device-selector.component.d.ts.map +1 -1
  1015. package/upgrade/dashboard/widget.component.d.ts +1 -1
  1016. package/upgrade/dashboard/widget.component.d.ts.map +1 -1
  1017. package/upgrade/index.d.ts +0 -1
  1018. package/upgrade/index.d.ts.map +1 -1
  1019. package/upgrade/upgrade.module.d.ts.map +1 -1
  1020. package/upgrade/upgraded-services/index.d.ts +1 -0
  1021. package/upgrade/upgraded-services/index.d.ts.map +1 -1
  1022. package/upgrade/upgraded-services/smart-rules.service.d.ts.map +1 -0
  1023. package/upgrade/upgraded-services/upgraded-services.module.d.ts.map +1 -1
  1024. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts +2 -1
  1025. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts.map +1 -1
  1026. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts +2 -1
  1027. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
  1028. package/user-roles/user-roles.module.d.ts +4 -4
  1029. package/user-roles/user-roles.module.d.ts.map +1 -1
  1030. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +1 -1
  1031. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  1032. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +1 -1
  1033. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  1034. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +1 -1
  1035. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  1036. package/widgets/implementations/alarms/alarms-widget.module.d.ts +13 -13
  1037. package/widgets/implementations/alarms/alarms-widget.module.d.ts.map +1 -1
  1038. package/widgets/implementations/alarms/severity-icon.pipe.d.ts +1 -1
  1039. package/widgets/implementations/alarms/severity-icon.pipe.d.ts.map +1 -1
  1040. package/widgets/implementations/alarms/sorting-description-popover-message.pipe.d.ts +1 -1
  1041. package/widgets/implementations/alarms/sorting-description-popover-message.pipe.d.ts.map +1 -1
  1042. package/widgets/implementations/device-management-welcome/device-management-welcome-widget.module.d.ts +4 -4
  1043. package/widgets/implementations/device-management-welcome/device-management-welcome-widget.module.d.ts.map +1 -1
  1044. package/widgets/implementations/device-management-welcome/welcome.component.d.ts +1 -1
  1045. package/widgets/implementations/device-management-welcome/welcome.component.d.ts.map +1 -1
  1046. package/upgrade/smart-rules.service.d.ts.map +0 -1
  1047. /package/upgrade/{smart-rules.service.d.ts → upgraded-services/smart-rules.service.d.ts} +0 -0
@@ -70,6 +70,25 @@ import { PaginationModule } from 'ngx-bootstrap/pagination';
70
70
  * ```
71
71
  */
72
72
  class IconDirective {
73
+ /**
74
+ * Sets the icon to be displayed. This directive handles the correct CSS classes
75
+ * for Cumulocity IoT's dual-color icon sets.
76
+ *
77
+ * There are two main icon sets:
78
+ * 1. **Cumulocity Icons**: These are specific to the platform. To use them, provide the icon name prefixed with **c8y-**.
79
+ * 2. **Delight Icons**: This is the default icon set. To use them, provide just the icon name without any prefix.
80
+ *
81
+ * ```html
82
+ * <!-- To display a Cumulocity IoT icon (e.g., cockpit) -->
83
+ * <i [c8yIcon]="'c8y-cockpit'"></i>
84
+ *
85
+ * <!-- To display a default Delight icon (e.g., download) -->
86
+ * <i [c8yIcon]="'download'"></i>
87
+ *
88
+ * <!-- You can also use it without property binding for static icons -->
89
+ * <i c8yIcon="building"></i>
90
+ * ```
91
+ */
73
92
  set c8yIcon(icon) {
74
93
  this.updateIcon(icon);
75
94
  }
@@ -692,11 +711,11 @@ class OptionsService extends ApplicationOptions {
692
711
  }
693
712
  /**
694
713
  * Gets support URL from:
695
- * - application option `supportUrl`,
696
- * - or current tenant's option `configuration / system.support.url`,
697
- * - or current tenant's inherited option `configuration / system.support.url`,
698
- * - or system option `configuration / system.support.url`,
699
- * - otherwise defaults to `false`.
714
+ * - application option: `supportUrl`
715
+ * - or current tenant's option: `configuration / system.support.url`
716
+ * - or current tenant's inherited option: `configuration / system.support.url`
717
+ * - or system option: `configuration / system.support.url`
718
+ * - otherwise defaults to: `false`
700
719
  *
701
720
  * @returns Returns support url or false.
702
721
  */
@@ -1097,7 +1116,7 @@ class RealtimeService {
1097
1116
  /**
1098
1117
  * Get an Observable of all realtime notifications.
1099
1118
  *
1100
- * @param {string | number | IIdentified} entityOrId Entity object or id
1119
+ * @param entityOrId Entity object or id
1101
1120
  *
1102
1121
  * @returns An [[Observable]] of notifications wrapped as [[RealtimeMessage]]
1103
1122
  */
@@ -1124,7 +1143,7 @@ class RealtimeService {
1124
1143
  /**
1125
1144
  * Get an Observable of all CREATE realtime notifications.
1126
1145
  *
1127
- * @param {string | number | IIdentified} entityOrId Entity object or id
1146
+ * @param entityOrId Entity object or id
1128
1147
  *
1129
1148
  * @returns An [[Observable]] of newly created entity objects.
1130
1149
  */
@@ -1134,7 +1153,7 @@ class RealtimeService {
1134
1153
  /**
1135
1154
  * Get an Observable of all UPDATE realtime notifications.
1136
1155
  *
1137
- * @param {string | number | IIdentified} entityOrId Entity object or id
1156
+ * @param entityOrId Entity object or id
1138
1157
  *
1139
1158
  * @returns An [[Observable]] of updated entity objects.
1140
1159
  */
@@ -1144,7 +1163,7 @@ class RealtimeService {
1144
1163
  /**
1145
1164
  * Get an Observable of all DELETE realtime notifications.
1146
1165
  *
1147
- * @param {string | number | IIdentified} entityOrId Entity object or id
1166
+ * @param entityOrId Entity object or id
1148
1167
  *
1149
1168
  * @returns An [[Observable]] of deleted entity objects.
1150
1169
  */
@@ -3876,9 +3895,9 @@ class C8yTranslateDirective extends TranslateDirective {
3876
3895
  /**
3877
3896
  * Overridden method from original directive.
3878
3897
  * For simple text nodes, it just invokes the base method.
3879
- * For complex nodes, it builds translation key from whole inner HTML
3898
+ * For complex nodes, it builds translation key from whole `inner HTML`
3880
3899
  * and replaces it with its translation.
3881
- * This prevents splitting HTML into pieces and attempting to translate each one separately
3900
+ * This prevents splitting `HTML` into pieces and attempting to translate each one separately
3882
3901
  * which doesn't work, because we extract strings in whole.
3883
3902
  */
3884
3903
  checkNodes(forceUpdate = false, translations) {
@@ -4565,7 +4584,7 @@ const ES_MAX_TIME_MILLISECONDS = 8640000000000000;
4565
4584
  * Extends Angular's DatePipe in a way so that date values exceeding the range supported by ECMAScript
4566
4585
  * are displayed as earliest/latest supported point in time printed in the desired format pre- or postfixed
4567
4586
  * by the word `before` or `after`, respectively.
4568
- * In all other cases the pipe behaves as the standard [DatePipe]{@link https://angular.io/api/common/DatePipe}.
4587
+ * In all other cases the pipe behaves as the standard [DatePipe](https://angular.io/api/common/DatePipe).
4569
4588
  *
4570
4589
  * ```html
4571
4590
  * <span class="highlight">{{ deadline | c8yDate }}</span> <!-- e.g. 7 May 2020, 17:45:19 (en-GB) or 07.05.2020, 17:45:19 (de) -->
@@ -5378,15 +5397,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
5378
5397
  }] } });
5379
5398
 
5380
5399
  /**
5381
- * A directive to iterate over IResultList<T> data from @c8y/client.
5382
- * Depending on the [c8yForLoadMore] a load more button is:
5383
- * - auto: Tries to automatically load more data (default maximum 10 iterations; can be
5400
+ * A directive to iterate over `IResultList<T>` data from `@c8y/client`.
5401
+ * Depending on the `[c8yForLoadMore]` a load more button is:
5402
+ * - **auto**: Tries to automatically load more data (default maximum 10 iterations; can be
5384
5403
  * change with maxIterations settings).
5385
- * - show: Shows a load more button for the user to decide
5386
- * - none: Doesn't perform any load more action.
5387
- * - hidden: Loads more data automatically but with no visible button for the user.
5404
+ * - **show**: Shows a load more button for the user to decide
5405
+ * - **none**: Doesn't perform any load more action.
5406
+ * - **hidden**: Loads more data automatically but with no visible button for the user.
5388
5407
  *
5389
- * Additional, any rxjs operator pipe can be applied to the [c8yForPipe] input, e.g. to
5408
+ * Additional, any rxjs operator pipe can be applied to the `[c8yForPipe]` input, e.g. to
5390
5409
  * filter the data displayed currently as well as the data loaded by subsequent requests.
5391
5410
  *
5392
5411
  * ```html
@@ -5398,8 +5417,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
5398
5417
  * ```typescript
5399
5418
  * this.devices = this.inventoryService.list({ pageSize: 10, fragmentType: 'c8y_IsDevice' })
5400
5419
  * ```
5401
- * It will display the first 10 items, if there is more space left on the screen, and there are more
5402
- * than 10 devices, it will automatically load up to 10 pages more. If it still can't fit the screen
5420
+ * It will display the first `10` items, if there is more space left on the screen, and there are more
5421
+ * than `10` devices, it will automatically load up to 10 pages more. If it still can't fit the screen
5403
5422
  * it will stop and switch to `show` mode.
5404
5423
  *
5405
5424
  * A pipe can be applied e.g. for filtering or grouping. This pipe is attached to every follow up
@@ -5501,11 +5520,11 @@ class ForOfDirective {
5501
5520
  }
5502
5521
  /**
5503
5522
  * The mode setter:
5504
- * - auto: Tries to automatically load more data (default maximum 10 iterations; can be
5523
+ * - **auto**: Tries to automatically load more data (default maximum 10 iterations; can be
5505
5524
  * change with maxIterations settings).
5506
- * - show: Shows a load more button for the user to decide
5507
- * - none: Doesn't perform any load more action.
5508
- * - hidden: Loads more data automatically but with no visible button for the user.
5525
+ * - **show**: Shows a load more button for the user to decide
5526
+ * - **none**: Doesn't perform any load more action.
5527
+ * - **hidden**: Loads more data automatically but with no visible button for the user.
5509
5528
  */
5510
5529
  set c8yForLoadMore(type) {
5511
5530
  this.loadMoreMode = type;
@@ -5552,7 +5571,7 @@ class ForOfDirective {
5552
5571
  this.loadingLabel = loadingLabel;
5553
5572
  }
5554
5573
  /**
5555
- * A RealtimeService instance.
5574
+ * A `RealtimeService` instance.
5556
5575
  */
5557
5576
  set c8yForRealtime(source) {
5558
5577
  this.realtime = source;
@@ -5577,7 +5596,9 @@ class ForOfDirective {
5577
5596
  this.cachedData = [];
5578
5597
  this.loadMoreMode = 'auto';
5579
5598
  this.dataPipe = pipe(tap());
5580
- this.itemDataPipe = pipe(map(item => [item]), src => this.dataPipe(src), map(([item]) => item));
5599
+ this.itemDataPipe = pipe(map(item => [item]), src => this.dataPipe(src), map(([item]) => {
5600
+ return item;
5601
+ }));
5581
5602
  this.maxIterations = 10;
5582
5603
  this.realtimeOptions = {};
5583
5604
  this.unsubscribe$ = new Subject();
@@ -5594,7 +5615,7 @@ class ForOfDirective {
5594
5615
  /**
5595
5616
  * The number of items currently loaded in the list.
5596
5617
  *
5597
- * Note: This can only be used if the forOf isn't used with
5618
+ * Note: This can only be used if the `forOf` isn't used with
5598
5619
  * the sugared asterisk (*) syntax. Instead you need to use an ng-template:
5599
5620
  * ```html
5600
5621
  * <ng-template
@@ -5610,7 +5631,7 @@ class ForOfDirective {
5610
5631
  /**
5611
5632
  * The items change event emitting the newly loaded items.
5612
5633
  *
5613
- * Note: This can only be used if the forOf isn't used with
5634
+ * Note: This can only be used if the `forOf` isn't used with
5614
5635
  * the sugared asterisk (*) syntax. Instead you need to use an ng-template:
5615
5636
  * ```html
5616
5637
  * <ng-template
@@ -6424,10 +6445,12 @@ const internalApps = {
6424
6445
  streaminganalytics: gettext$1('Streaming Analytics')
6425
6446
  };
6426
6447
 
6427
- /*
6448
+ /**
6428
6449
  * Humanize an application name and translates it.
6429
- * Usage:
6430
- * appNameOrApp | humanizeAppName | async
6450
+ *
6451
+ * ```html
6452
+ * <p>{{ appNameOrApp | humanizeAppName | async }}</p>
6453
+ * ```
6431
6454
  */
6432
6455
  class HumanizeAppNamePipe {
6433
6456
  constructor(translateService) {
@@ -6476,10 +6499,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
6476
6499
  args: [{ name: 'humanizeAppName', standalone: true }]
6477
6500
  }], ctorParameters: () => [{ type: i1$1.TranslateService }] });
6478
6501
 
6479
- /*
6480
- * Humanize any string
6481
- * Usage:
6482
- * 'something' | humanize
6502
+ /**
6503
+ * Transforms a string into a human-readable format.
6504
+ *
6505
+ * ```html
6506
+ * <p>{{ 'c8y_hello world' | humanize }}</p> <!-- e.g. Hello world -->
6507
+ * ```
6483
6508
  */
6484
6509
  class HumanizePipe {
6485
6510
  static humanize(str = '') {
@@ -6610,9 +6635,9 @@ class Permissions {
6610
6635
  * }
6611
6636
  * ```
6612
6637
  *
6613
- * @param roleIds - The array of role ids to check if the current user have at least one of them.
6614
- * @param mo - The managed object for which we are checking whether the user has access.
6615
- * @param config - A configuration object that can take the following values: `skipRolesCheck`: `boolean` - skips roles check, `skipOwnerCheck`: `boolean` - skips ownership check, `skipRequestCheck`: `boolean` - skips checks with a query to the inventory API. UI will make a query to backend whether the user can edit the managed object. A rejection from BE indicates a lack of permission.
6638
+ * @param roleIds The array of role ids to check if the current user have at least one of them.
6639
+ * @param mo The managed object for which we are checking whether the user has access.
6640
+ * @param config A configuration object that can take the following values: `skipRolesCheck`: `boolean` - skips roles check, `skipOwnerCheck`: `boolean` - skips ownership check, `skipRequestCheck`: `boolean` - skips checks with a query to the inventory API. UI will make a query to backend whether the user can edit the managed object. A rejection from BE indicates a lack of permission.
6616
6641
  *
6617
6642
  * @returns A Promise resolving to a boolean value. `true` if editing is permitted based on the given parameters and configuration; otherwise, `false`.
6618
6643
  *
@@ -6633,7 +6658,7 @@ class Permissions {
6633
6658
  * };
6634
6659
  * ```
6635
6660
  *
6636
- * @param roleId - The ID of the role to check against the current user's roles.
6661
+ * @param roleId The ID of the role to check against the current user's roles.
6637
6662
  * @returns A boolean value indicating whether the current user has the specified role.
6638
6663
  * @throws Error if no user is currently logged in.
6639
6664
  *
@@ -6657,7 +6682,7 @@ class Permissions {
6657
6682
  * }
6658
6683
  * ```
6659
6684
  *
6660
- * @param roleIds - An array of strings representing the role IDs to check against the current user's roles.
6685
+ * @param roleIds An array of strings representing the role IDs to check against the current user's roles.
6661
6686
  * @returns A boolean value indicating whether the current user has all the specified roles.
6662
6687
  * @throws Error if no user is currently logged in.
6663
6688
  *
@@ -6681,7 +6706,7 @@ class Permissions {
6681
6706
  * };
6682
6707
  * ```
6683
6708
  *
6684
- * @param roleIds - An array of strings representing the role IDs to check against the current user's roles.
6709
+ * @param roleIds An array of strings representing the role IDs to check against the current user's roles.
6685
6710
  * @returns A boolean value indicating whether the current user has any of the specified roles.
6686
6711
  * @throws Error if no user is currently logged in.
6687
6712
  *
@@ -6703,7 +6728,7 @@ class Permissions {
6703
6728
  * }
6704
6729
  * ```
6705
6730
  *
6706
- * @param globalRolesIds - An array of numbers representing the global role IDs to check against the current user's roles.
6731
+ * @param globalRolesIds An array of numbers representing the global role IDs to check against the current user's roles.
6707
6732
  * @returns A boolean value indicating whether the current user has any of the specified global roles.
6708
6733
  * @throws Error if no user is currently logged in.
6709
6734
  *
@@ -6727,7 +6752,7 @@ class Permissions {
6727
6752
  * });
6728
6753
  * ```
6729
6754
  *
6730
- * @param mo - The managed object to check ownership against.
6755
+ * @param mo The managed object to check ownership against.
6731
6756
  * @returns A promise that resolves to `true` if the current user is the owner of the managed object, and `false` otherwise.
6732
6757
  *
6733
6758
  */
@@ -6753,7 +6778,7 @@ class Permissions {
6753
6778
  * });
6754
6779
  * ```
6755
6780
  *
6756
- * @param mo - The managed object to test edit permissions on.
6781
+ * @param mo The managed object to test edit permissions on.
6757
6782
  * @returns A promise that resolves to `true` if the update request succeeds (indicating edit permissions), and `false` if it fails.
6758
6783
  *
6759
6784
  */
@@ -6777,9 +6802,9 @@ class Permissions {
6777
6802
  * ownership, and custom request-based checks. Each of these checks can be optionally skipped
6778
6803
  * based on the provided configuration.
6779
6804
  *
6780
- * @param roleIds - An array of role IDs to check against the current user's roles.
6781
- * @param mo - The managed object or an identified resource to check edit permissions for.
6782
- * @param config - Configuration options to customize the checks performed. This includes options to skip role checks, owner checks, or custom request checks.
6805
+ * @param roleIds An array of role IDs to check against the current user's roles.
6806
+ * @param mo The managed object or an identified resource to check edit permissions for.
6807
+ * @param config Configuration options to customize the checks performed. This includes options to skip role checks, owner checks, or custom request checks.
6783
6808
  * @returns A promise that resolves to `true` if the current user can edit the managed object based on the given conditions, and `false` otherwise.
6784
6809
  *
6785
6810
  */
@@ -6946,6 +6971,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
6946
6971
  }]
6947
6972
  }] });
6948
6973
 
6974
+ /**
6975
+ * A pipe that transforms a Markdown string into sanitized HTML.
6976
+ *
6977
+ *
6978
+ * ```html
6979
+ * <div [innerHTML]="'[Example markdown link](#)' | markdownToHtml | async"></div>
6980
+ * ```
6981
+ */
6949
6982
  class MarkdownToHtmlPipe {
6950
6983
  constructor(sanitizer) {
6951
6984
  this.sanitizer = sanitizer;
@@ -7132,11 +7165,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
7132
7165
  * <div *c8yOutlet="nodes"></div>
7133
7166
  * ```
7134
7167
  *
7135
- * note: If template is instance of HTMLElement (for example, node compiled by angularJS) then there can be
7136
- * only single instance rendered, as only one instance of HTMLElement can exist in DOM.
7137
- * If there is need for displaying same element multiple times, please make sure to inject into
7138
- * this element createCopy function, which should return another instance of given element.
7139
- *
7168
+ * Note: When passing a native `HTMLElement`, be aware that a single element instance can only exist in one
7169
+ * place in the DOM. If you need to render the same element in multiple locations, the passed element
7170
+ * should have a `createCopy` function that returns a new instance or a clone of the element.
7140
7171
  */
7141
7172
  class OutletDirective {
7142
7173
  constructor(viewContainer, injector, renderer, el) {
@@ -7147,7 +7178,7 @@ class OutletDirective {
7147
7178
  this.properties = {};
7148
7179
  }
7149
7180
  /**
7150
- * Directive to set a DOM node, a TemplateRef or any Component to a container or any node.
7181
+ * Directive to set a `DOM node`, a `TemplateRef` or any `Component` to a container or any node.
7151
7182
  * ```html
7152
7183
  * <div *c8yOutlet="template"></div>
7153
7184
  * <div *c8yOutlet="DeviceStatusComponent; properties: { node }"></div>
@@ -7554,6 +7585,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
7554
7585
  args: [':blur']
7555
7586
  }] } });
7556
7587
 
7588
+ /**
7589
+ * A pipe that transforms a user object into their initials.
7590
+
7591
+ * ```html
7592
+ * {{ user | userNameInitials }}
7593
+ * ```
7594
+ */
7557
7595
  class UserNameInitialsPipe {
7558
7596
  transform(user) {
7559
7597
  if (!user) {
@@ -7648,12 +7686,16 @@ class AlertService extends StateService {
7648
7686
  }
7649
7687
  /**
7650
7688
  * Adds a new alert to the current state.
7689
+ * @param alert The alert object to be added.
7651
7690
  */
7652
7691
  add(alert) {
7653
7692
  this.addAlert(alert);
7654
7693
  }
7655
7694
  /**
7656
7695
  * Adds a alert by text.
7696
+ * @param type The type of the alert.
7697
+ * @param txt The text to be displayed in the alert.
7698
+ * @param detailedData Optional detailed data for the alert.
7657
7699
  */
7658
7700
  addByText(type, txt, detailedData) {
7659
7701
  this.addAlert({ text: txt, type, detailedData });
@@ -7667,12 +7709,15 @@ class AlertService extends StateService {
7667
7709
  }
7668
7710
  /**
7669
7711
  * Remove an alert from the current state.
7712
+ * @param alert The alert object to be removed.
7670
7713
  */
7671
7714
  remove(alert) {
7672
7715
  this.changeAlerts(this.state.filter(item => !this.areSame(alert, item)));
7673
7716
  }
7674
7717
  /**
7675
7718
  * Updates matching alert with provided values.
7719
+ * @param alert The alert to be updated.
7720
+ * @param fieldsToUpdate An object with the fields to update in the alert.
7676
7721
  */
7677
7722
  update(alert, fieldsToUpdate) {
7678
7723
  this.changeAlerts(this.state.map(item => {
@@ -7700,7 +7745,7 @@ class AlertService extends StateService {
7700
7745
  }
7701
7746
  /**
7702
7747
  * Shorthand for a save successful alert.
7703
- * @param savedObject The object which was saved.
7748
+ * @param savedObject The name of the object which was saved.
7704
7749
  * @return A function that can be executed to show the msg.
7705
7750
  */
7706
7751
  saveSuccess(savedObject) {
@@ -7711,7 +7756,7 @@ class AlertService extends StateService {
7711
7756
  }
7712
7757
  /**
7713
7758
  * Shorthand for a create successful alert.
7714
- * @param createdObject The object which was created.
7759
+ * @param createdObject The name of the object which was created.
7715
7760
  * @return A function that can be executed to show the msg.
7716
7761
  */
7717
7762
  createSuccess(createdObject) {
@@ -7769,8 +7814,8 @@ class AlertService extends StateService {
7769
7814
  /**
7770
7815
  * Creates alert from standard api errors.
7771
7816
  * Should be used for errors generated by @c8y/client services.
7772
- * @param {IResult} error The error from server.
7773
- * @param {alertType} type The type of alert.
7817
+ * @param error The error from server.
7818
+ * @param type The type of alert.
7774
7819
  */
7775
7820
  addServerFailure(error, type = 'danger') {
7776
7821
  const { data, res } = error;
@@ -7804,6 +7849,8 @@ class AlertService extends StateService {
7804
7849
  /**
7805
7850
  * Compares two alert objects. Alerts are same if text, type, detailed data and callbacks are same.
7806
7851
  * Callbacks are same if they refer to the same function.
7852
+ * @param alert1 First alert to compare.
7853
+ * @param alert2 Second alert to compare.
7807
7854
  */
7808
7855
  areSame(alert1, alert2) {
7809
7856
  return (alert1.text === alert2.text &&
@@ -7922,7 +7969,7 @@ class UserPreferencesService {
7922
7969
  * @param user The user for whom the search is done.
7923
7970
  * @returns An Observable with the value of preference.
7924
7971
  *
7925
- * @deprecated Uses depracted inventory approach. Use get instead.
7972
+ * @deprecated Uses deprecated inventory approach. Use get instead.
7926
7973
  */
7927
7974
  getForUser(key, user) {
7928
7975
  const rawKey = this.getTransformedRawKey(key, user);
@@ -8659,13 +8706,13 @@ const SERVICE_HOOK_TOKENS = new Map();
8659
8706
  * hookService('layersServiceKey', TestService);
8660
8707
  * ```
8661
8708
  */
8662
- function hookService(extensionKey, service) {
8709
+ function hookService(extensionKey, service, options) {
8663
8710
  let token = SERVICE_HOOK_TOKENS.get(extensionKey);
8664
8711
  if (!token) {
8665
8712
  token = new InjectionToken(extensionKey);
8666
8713
  SERVICE_HOOK_TOKENS.set(extensionKey, token);
8667
8714
  }
8668
- return hookGeneric(service, token);
8715
+ return hookGeneric(service, token, options);
8669
8716
  }
8670
8717
  /**
8671
8718
  * Service for managing and retrieving dynamically registered services within the application.
@@ -12972,7 +13019,7 @@ class BreadcrumbOutletComponent {
12972
13019
  return path?.replace(/^#\/?/, '');
12973
13020
  }
12974
13021
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BreadcrumbOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12975
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: BreadcrumbOutletComponent, isStandalone: true, selector: "c8y-breadcrumb-outlet", inputs: { breadcrumbs: "breadcrumbs" }, ngImport: i0, template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n class=\"btn-show-all-breadcrumbs pull-left\"\n type=\"button\"\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$5.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: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
13022
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: BreadcrumbOutletComponent, isStandalone: true, selector: "c8y-breadcrumb-outlet", inputs: { breadcrumbs: "breadcrumbs" }, ngImport: i0, template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n class=\"btn-show-all-breadcrumbs pull-left\"\n type=\"button\"\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" [attr.role]=\"'navigation'\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n [attr.aria-label]=\"'breadcrumb'\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i1$5.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: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: OutletDirective, selector: "[c8yOutlet]", inputs: ["c8yOutlet", "c8yOutletProperties", "c8yOutletInjector"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
12976
13023
  }
12977
13024
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BreadcrumbOutletComponent, decorators: [{
12978
13025
  type: Component,
@@ -12985,7 +13032,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
12985
13032
  OutletDirective,
12986
13033
  RouterLink,
12987
13034
  C8yTranslatePipe
12988
- ], template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n class=\"btn-show-all-breadcrumbs pull-left\"\n type=\"button\"\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n" }]
13035
+ ], template: "<div\n class=\"breadcrumbs-container\"\n [ngClass]=\"{\n multiple: breadcrumbs.length > 1,\n open: showAll\n }\"\n *ngIf=\"breadcrumbs && breadcrumbs.length > 0\"\n>\n <button\n class=\"btn-show-all-breadcrumbs pull-left\"\n type=\"button\"\n title=\"{{ 'Expand/collapse all breadcrumbs' | translate }}\"\n *ngIf=\"breadcrumbs.length > 1\"\n (click)=\"showAll = !showAll\"\n >\n <i\n *ngIf=\"!showAll\"\n [c8yIcon]=\"'caret-right'\"\n tooltip=\"{{ 'Show all breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n <i\n *ngIf=\"showAll\"\n [c8yIcon]=\"'caret-down'\"\n tooltip=\"{{ 'Expand breadcrumbs' | translate }}\"\n container=\"body\"\n placement=\"top\"\n ></i>\n </button>\n\n <ul class=\"breadcrumbs text-muted\" [attr.role]=\"'navigation'\" *ngFor=\"let breadcrumb of breadcrumbs; let first = first\">\n <ng-container *ngIf=\"first || showAll\">\n <li class=\"text-muted\" *ngFor=\"let item of breadcrumb.items; let firstItem = first\">\n <span *ngIf=\"!firstItem\">></span>\n <ng-container\n *c8yOutlet=\"item.component || item.template; injector: breadcrumb.injector\"\n ></ng-container>\n <ng-container *ngIf=\"item.label && item.path\">\n <a\n [routerLink]=\"normalizePath(item.path)\"\n class=\"word-break\"\n title=\"{{ item.label | translate }}\"\n [attr.aria-label]=\"'breadcrumb'\"\n >\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span>{{ item.label | translate }}</span>\n </a>\n </ng-container>\n <ng-container *ngIf=\"item.label && !item.path\">\n <i [c8yIcon]=\"item.icon\" *ngIf=\"firstItem\" class=\"m-r-4\"></i>\n <span title=\"{{ item.label | translate }}\">{{ item.label | translate }}</span>\n </ng-container>\n </li>\n </ng-container>\n </ul>\n</div>\n" }]
12989
13036
  }], propDecorators: { breadcrumbs: [{
12990
13037
  type: Input
12991
13038
  }] } });
@@ -13294,6 +13341,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
13294
13341
  class TitleComponent {
13295
13342
  constructor(headerService) {
13296
13343
  this.headerService = headerService;
13344
+ /** Whether to update the browser's page title with the content of the title. */
13297
13345
  this.pageTitleUpdate = true;
13298
13346
  }
13299
13347
  ngAfterViewInit() {
@@ -14526,9 +14574,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
14526
14574
 
14527
14575
  /**
14528
14576
  * The angular module definition for breadcrumbs.
14529
- * @exports BreadcrumbComponent
14530
- * @exports BreadcrumbItemComponent
14531
- * @exports BreadcrumbOutletComponent
14577
+ * @exports {@link BreadcrumbComponent}
14578
+ * @exports {@link BreadcrumbItemComponent}
14579
+ * @exports {@link BreadcrumbOutletComponent}
14532
14580
  */
14533
14581
  class BreadcrumbModule {
14534
14582
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BreadcrumbModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
@@ -15074,102 +15122,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
15074
15122
  args: ['document:keydown.enter', ['$event']]
15075
15123
  }] } });
15076
15124
 
15077
- /**
15078
- * Service to show a modal.
15079
- */
15080
- class ModalService {
15081
- constructor(modalService, gainsightService) {
15082
- this.modalService = modalService;
15083
- this.gainsightService = gainsightService;
15084
- }
15085
- /**
15086
- * Shows a quick confirm message modal.
15087
- * @param title The title of that modal.
15088
- * @param body The text body to display.
15089
- * @param status The status.
15090
- * @param labels The labels to use. Default: { ok: 'Confirm', cancel: 'Cancel'}
15091
- * @param confirmOptions Selection options to display as checkbox list.
15092
- * @param productExperienceEvent Additional data to attach to custom product experience events.
15093
- */
15094
- async confirm(title, body, status = Status.INFO, labels = {}, confirmOptions = {}, productExperienceEvent = { eventName: 'confirmModal' }) {
15095
- const modalLabels = {
15096
- ok: labels.ok || gettext$1('Confirm'),
15097
- cancel: labels.cancel || gettext$1('Cancel')
15098
- };
15099
- const modalRef = this.modalService.show(ConfirmModalComponent, {
15100
- initialState: { title, body, labels: modalLabels, status, confirmOptions },
15101
- ariaDescribedby: 'modal-body',
15102
- ariaLabelledBy: 'modal-title',
15103
- ignoreBackdropClick: true
15104
- });
15105
- if (productExperienceEvent) {
15106
- productExperienceEvent.data = { ...productExperienceEvent.data, title };
15107
- }
15108
- this.triggerEvent(modalRef.content.result, modalLabels, productExperienceEvent);
15109
- return await modalRef.content.result;
15110
- }
15111
- /**
15112
- * Shows a quick acknowledge message modal.
15113
- * @param title The title of that modal.
15114
- * @param body The text body to display.
15115
- * @param status The status.
15116
- * @param acknowledgeLabel The label to use.
15117
- * @param productExperienceEvent Additional data to attach to custom product experience events.
15118
- */
15119
- async acknowledge(title, body, status = Status.INFO, acknowledgeLabel = gettext$1('Confirm'), productExperienceEvent = { eventName: 'confirmModal' }) {
15120
- const labels = { ok: acknowledgeLabel, cancel: null };
15121
- const modalRef = this.modalService.show(ConfirmModalComponent, {
15122
- initialState: { title, body, labels, status },
15123
- ariaDescribedby: 'modal-body',
15124
- ariaLabelledBy: 'modal-title',
15125
- ignoreBackdropClick: true
15126
- });
15127
- if (productExperienceEvent) {
15128
- productExperienceEvent.data = { ...productExperienceEvent.data, title };
15129
- }
15130
- this.triggerEvent(modalRef.content.result, labels, productExperienceEvent);
15131
- return await modalRef.content.result;
15132
- }
15133
- /**
15134
- * Shows a quick logout confirmation modal.
15135
- * @param body The text body to display. Default: 'You will be logged out to apply your changes. Do you want to proceed?'
15136
- * @param status The status.
15137
- * @param labels The labels to use. Default: { ok: 'Confirm and log out', cancel: 'Cancel' }
15138
- */
15139
- async confirmLogout(body, status = Status.WARNING, labels = {}) {
15140
- const modalLabels = {
15141
- ok: labels.ok || gettext$1('Confirm and log out'),
15142
- cancel: labels.cancel || gettext$1('Cancel')
15143
- };
15144
- const modalBody = body || gettext$1('You must log out to apply your changes. Do you want to proceed?');
15145
- return await this.confirm(gettext$1('Logout required'), modalBody, status, modalLabels);
15146
- }
15147
- triggerEvent(result, labels, productExperienceEvent) {
15148
- const data = { ...productExperienceEvent.data, url: window.location.href };
15149
- result
15150
- .then(() => {
15151
- this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
15152
- ...data,
15153
- result: labels.ok
15154
- });
15155
- })
15156
- .catch(() => {
15157
- this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
15158
- ...data,
15159
- result: labels.cancel
15160
- });
15161
- });
15162
- }
15163
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalService, deps: [{ token: i1$7.BsModalService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Injectable }); }
15164
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalService, providedIn: 'root' }); }
15165
- }
15166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalService, decorators: [{
15167
- type: Injectable,
15168
- args: [{
15169
- providedIn: 'root'
15170
- }]
15171
- }], ctorParameters: () => [{ type: i1$7.BsModalService }, { type: GainsightService }] });
15172
-
15173
15125
  /**
15174
15126
  * The angular module definition for modal.
15175
15127
  * @exports ConfirmModalComponent
@@ -15181,7 +15133,7 @@ class ModalModule {
15181
15133
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ModalModule, imports: [i1$7.ModalModule, CommonModule, i1$9.PopoverModule, ConfirmModalComponent,
15182
15134
  ModalComponent,
15183
15135
  PopoverConfirmComponent], exports: [ConfirmModalComponent, ModalComponent, PopoverConfirmComponent] }); }
15184
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalModule, providers: [ModalService], imports: [ModalModule$1.forRoot(),
15136
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalModule, imports: [ModalModule$1.forRoot(),
15185
15137
  CommonModule,
15186
15138
  PopoverModule.forRoot(),
15187
15139
  PopoverConfirmComponent] }); }
@@ -15197,8 +15149,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
15197
15149
  ModalComponent,
15198
15150
  PopoverConfirmComponent
15199
15151
  ],
15200
- exports: [ConfirmModalComponent, ModalComponent, PopoverConfirmComponent],
15201
- providers: [ModalService]
15152
+ exports: [ConfirmModalComponent, ModalComponent, PopoverConfirmComponent]
15202
15153
  }]
15203
15154
  }] });
15204
15155
 
@@ -16422,6 +16373,9 @@ class DeviceStatusComponent {
16422
16373
  }
16423
16374
  constructor(translateService) {
16424
16375
  this.translateService = translateService;
16376
+ /**
16377
+ * Max width of the svg icon in pixels.
16378
+ */
16425
16379
  this.size = 20;
16426
16380
  }
16427
16381
  get() {
@@ -18930,7 +18884,7 @@ class SelectComponent {
18930
18884
  multi: true
18931
18885
  },
18932
18886
  SelectKeyboardService
18933
- ], queries: [{ propertyName: "projectedSelectedItems", first: true, predicate: SelectedItemsDirective, descendants: true }, { propertyName: "projectedSelectableItems", predicate: SelectItemDirective }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "list", predicate: ListItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n data-cy=\"deselect-all-button\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault()\"\n ></c8y-li-checkbox>\n <c8y-li-body *ngIf=\"!item.template\">\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i1$3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "indeterminate", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
18887
+ ], queries: [{ propertyName: "projectedSelectedItems", first: true, predicate: SelectedItemsDirective, descendants: true }, { propertyName: "projectedSelectableItems", predicate: SelectItemDirective }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }, { propertyName: "list", predicate: ListItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n data-cy=\"deselect-all-button\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal dropdown-menu--select\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault()\"\n ></c8y-li-checkbox>\n <c8y-li-body *ngIf=\"!item.template\">\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n", dependencies: [{ kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i1$3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i1$3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i1$3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemCheckboxComponent, selector: "c8y-list-item-checkbox, c8y-li-checkbox", inputs: ["selected", "indeterminate", "disabled", "displayAsSwitch"], outputs: ["onSelect"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
18934
18888
  }
18935
18889
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SelectComponent, decorators: [{
18936
18890
  type: Component,
@@ -18959,7 +18913,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
18959
18913
  ListItemCheckboxComponent,
18960
18914
  ListItemBodyComponent,
18961
18915
  C8yTranslatePipe
18962
- ], template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n data-cy=\"deselect-all-button\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault()\"\n ></c8y-li-checkbox>\n <c8y-li-body *ngIf=\"!item.template\">\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
18916
+ ], template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"autoClose\"\n [isDisabled]=\"disabled\"\n [insideClick]=\"insideClick\"\n (onShown)=\"onShown()\"\n (onHidden)=\"onHidden()\"\n dropdownToggle\n (click)=\"open()\"\n>\n <div\n class=\"input-group input-group-dropdown\"\n role=\"button\"\n >\n <div\n class=\"form-control text-truncate\"\n *ngIf=\"true\"\n [ngClass]=\"{\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0,\n 'text-truncate': !multi,\n 'inner-scroll d-flex a-i-center': multi\n }\"\n >\n <!-- rendering of selected items (with content projection) -->\n <div\n class=\"selected-items\"\n *ngIf=\"projectedSelectedItems\"\n >\n <ng-container *ngFor=\"let selectedItem of selected\">\n <ng-container\n *ngTemplateOutlet=\"\n projectedSelectedItems.templateRef;\n context: { $implicit: selectedItem }\n \"\n ></ng-container>\n </ng-container>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !searchHasFocus && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n </div>\n\n <!-- rendering of selected items (default) -->\n <div\n class=\"selected-items\"\n *ngIf=\"!projectedSelectedItems\"\n >\n <span *ngIf=\"!multi\">\n <span *ngIf=\"searchHasFocus && preselectedItem\">\n {{ preselectedItem.label | translate }}\n </span>\n <span *ngIf=\"!searchHasFocus && selected.length === 1\">\n {{ selected[0].label | translate }}\n </span>\n </span>\n <i\n class=\"text-muted\"\n *ngIf=\"selected.length === 0 && !preselectedItem && searchControl.value.length === 0\"\n >\n {{ placeholder | translate }}\n </i>\n <ng-container *ngIf=\"multi\">\n <span class=\"m-r-4\">{{ searchControl.value }}</span>\n <span\n class=\"tag tag--info chip\"\n *ngFor=\"let selectedItem of selected\"\n >\n <button\n class=\"btn btn-xs btn-clean text-10 m-r-4\"\n title=\"{{ selectedItem.label | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselect(selectedItem)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n {{ selectedItem.label | translate }}\n </span>\n </ng-container>\n </div>\n </div>\n\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n autocomplete=\"off\"\n #searchControl\n [ngClass]=\"{\n 'p-absolute': true,\n 'm-r-80': canDeselect && selected.length > 0,\n 'm-r-40': !canDeselect || selected.length === 0\n }\"\n [required]=\"required\"\n (blur)=\"doBlur()\"\n (focus)=\"doFocus()\"\n [name]=\"name\"\n [disabled]=\"disabled\"\n />\n\n <span class=\"input-group-btn\">\n <!-- this button is displayed only if we have something selected and are allowed to deselect -->\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"canDeselect && selected.length > 0\"\n [disabled]=\"disabled\"\n (click)=\"$event.preventDefault(); $event.stopPropagation(); deselectAll()\"\n data-cy=\"deselect-all-button\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"select-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal dropdown-menu--select\"\n [style.width]=\"container === 'body' ? searchControl.parentNode.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"select--dropdown-menu\"\n *dropdownMenu\n >\n <!-- rendering of items (default) -->\n <c8y-li\n style=\"cursor: pointer\"\n *ngFor=\"let item of items\"\n [selectable]=\"true\"\n [dense]=\"true\"\n [active]=\"!multi && item.value === selected[0]?.value\"\n (click)=\"select(item)\"\n >\n <span [attr.data-search-label]=\"item.label | translate\"></span>\n <c8y-li-checkbox\n *ngIf=\"multi\"\n [selected]=\"selected.indexOf(item) > -1\"\n (click)=\"$event.preventDefault()\"\n ></c8y-li-checkbox>\n <c8y-li-body *ngIf=\"!item.template\">\n {{ item.label | translate }}\n </c8y-li-body>\n <ng-container\n *ngTemplateOutlet=\"item?.template\"\n ngProjectAs=\"c8y-li-body\"\n ></ng-container>\n </c8y-li>\n <ng-content select=\"div\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
18963
18917
  }], ctorParameters: () => [{ type: SelectKeyboardService }], propDecorators: { placeholder: [{
18964
18918
  type: Input
18965
18919
  }], items: [{
@@ -19152,6 +19106,102 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
19152
19106
  }]
19153
19107
  }] });
19154
19108
 
19109
+ /**
19110
+ * Service to show a modal.
19111
+ */
19112
+ class ModalService {
19113
+ constructor(modalService, gainsightService) {
19114
+ this.modalService = modalService;
19115
+ this.gainsightService = gainsightService;
19116
+ }
19117
+ /**
19118
+ * Shows a quick confirm message modal.
19119
+ * @param title The title of that modal.
19120
+ * @param body The text body to display.
19121
+ * @param status The status.
19122
+ * @param labels The labels to use. Default: { ok: 'Confirm', cancel: 'Cancel'}
19123
+ * @param confirmOptions Selection options to display as checkbox list.
19124
+ * @param productExperienceEvent Additional data to attach to custom product experience events.
19125
+ */
19126
+ async confirm(title, body, status = Status.INFO, labels = {}, confirmOptions = {}, productExperienceEvent = { eventName: 'confirmModal' }) {
19127
+ const modalLabels = {
19128
+ ok: labels.ok || gettext$1('Confirm'),
19129
+ cancel: labels.cancel || gettext$1('Cancel')
19130
+ };
19131
+ const modalRef = this.modalService.show(ConfirmModalComponent, {
19132
+ initialState: { title, body, labels: modalLabels, status, confirmOptions },
19133
+ ariaDescribedby: 'modal-body',
19134
+ ariaLabelledBy: 'modal-title',
19135
+ ignoreBackdropClick: true
19136
+ });
19137
+ if (productExperienceEvent) {
19138
+ productExperienceEvent.data = { ...productExperienceEvent.data, title };
19139
+ }
19140
+ this.triggerEvent(modalRef.content.result, modalLabels, productExperienceEvent);
19141
+ return await modalRef.content.result;
19142
+ }
19143
+ /**
19144
+ * Shows a quick acknowledge message modal.
19145
+ * @param title The title of that modal.
19146
+ * @param body The text body to display.
19147
+ * @param status The status.
19148
+ * @param acknowledgeLabel The label to use.
19149
+ * @param productExperienceEvent Additional data to attach to custom product experience events.
19150
+ */
19151
+ async acknowledge(title, body, status = Status.INFO, acknowledgeLabel = gettext$1('Confirm'), productExperienceEvent = { eventName: 'confirmModal' }) {
19152
+ const labels = { ok: acknowledgeLabel, cancel: null };
19153
+ const modalRef = this.modalService.show(ConfirmModalComponent, {
19154
+ initialState: { title, body, labels, status },
19155
+ ariaDescribedby: 'modal-body',
19156
+ ariaLabelledBy: 'modal-title',
19157
+ ignoreBackdropClick: true
19158
+ });
19159
+ if (productExperienceEvent) {
19160
+ productExperienceEvent.data = { ...productExperienceEvent.data, title };
19161
+ }
19162
+ this.triggerEvent(modalRef.content.result, labels, productExperienceEvent);
19163
+ return await modalRef.content.result;
19164
+ }
19165
+ /**
19166
+ * Shows a quick logout confirmation modal.
19167
+ * @param body The text body to display. Default: 'You will be logged out to apply your changes. Do you want to proceed?'
19168
+ * @param status The status.
19169
+ * @param labels The labels to use. Default: { ok: 'Confirm and log out', cancel: 'Cancel' }
19170
+ */
19171
+ async confirmLogout(body, status = Status.WARNING, labels = {}) {
19172
+ const modalLabels = {
19173
+ ok: labels.ok || gettext$1('Confirm and log out'),
19174
+ cancel: labels.cancel || gettext$1('Cancel')
19175
+ };
19176
+ const modalBody = body || gettext$1('You must log out to apply your changes. Do you want to proceed?');
19177
+ return await this.confirm(gettext$1('Logout required'), modalBody, status, modalLabels);
19178
+ }
19179
+ triggerEvent(result, labels, productExperienceEvent) {
19180
+ const data = { ...productExperienceEvent.data, url: window.location.href };
19181
+ result
19182
+ .then(() => {
19183
+ this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
19184
+ ...data,
19185
+ result: labels.ok
19186
+ });
19187
+ })
19188
+ .catch(() => {
19189
+ this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
19190
+ ...data,
19191
+ result: labels.cancel
19192
+ });
19193
+ });
19194
+ }
19195
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalService, deps: [{ token: i1$7.BsModalService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Injectable }); }
19196
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalService, providedIn: 'root' }); }
19197
+ }
19198
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ModalService, decorators: [{
19199
+ type: Injectable,
19200
+ args: [{
19201
+ providedIn: 'root'
19202
+ }]
19203
+ }], ctorParameters: () => [{ type: i1$7.BsModalService }, { type: GainsightService }] });
19204
+
19155
19205
  class ThemeSwitcherService {
19156
19206
  constructor(options) {
19157
19207
  this.options = options;
@@ -19543,10 +19593,11 @@ class PasswordService {
19543
19593
  return this.DEFAULT_PASSWORD_MIN_LENGTH;
19544
19594
  }
19545
19595
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordService, deps: [{ token: i1$7.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
19546
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordService }); }
19596
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordService, providedIn: 'root' }); }
19547
19597
  }
19548
19598
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordService, decorators: [{
19549
- type: Injectable
19599
+ type: Injectable,
19600
+ args: [{ providedIn: 'root' }]
19550
19601
  }], ctorParameters: () => [{ type: i1$7.BsModalService }] });
19551
19602
 
19552
19603
  class TotpSetupComponent {
@@ -20373,63 +20424,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
20373
20424
  args: [{ selector: 'c8y-user-menu-outlet', standalone: true, imports: [NgIf, NgFor, OutletDirective, UserMenuItemComponent, C8yTranslatePipe, AsyncPipe], template: "<ng-container *ngIf=\"items$ | async as items\">\n <div\n class=\"p-t-8 p-b-8\"\n *ngIf=\"items.length\"\n >\n <ul class=\"list-unstyled m-b-0\">\n <ng-container *ngFor=\"let item of items\">\n <ng-container *ngIf=\"item.template\">\n <ng-container *c8yOutlet=\"item.template\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!item.template\">\n <li>\n <button\n class=\"c8y-right-drawer__link\"\n [attr.aria-label]=\"item.label | translate\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n (click)=\"item.click()\"\n [attr.href]=\"item.link\"\n [attr.target]=\"item.target\"\n >\n {{ item.label | translate }}\n </button>\n </li>\n </ng-container>\n </ng-container>\n </ul>\n </div>\n</ng-container>\n\n<!-- the default items -->\n<c8y-user-menu-item\n [icon]=\"'user-menu-male'\"\n *ngIf=\"(ui.currentUser | async) && (ui.currentUser | async).id !== 'NO_LOGIN'\"\n [label]=\"'User settings' | translate\"\n [priority]=\"20\"\n [dataCy]=\"'user-menu-user-settings-button'\"\n (click)=\"editUser()\"\n></c8y-user-menu-item>\n<c8y-user-menu-item\n [icon]=\"'sign-out'\"\n *ngIf=\"(ui.currentUser | async) && (ui.currentUser | async).id !== 'NO_LOGIN'\"\n [label]=\"'Logout' | translate\"\n [dataCy]=\"'user-menu-logout-button'\"\n (click)=\"logout()\"\n></c8y-user-menu-item>\n" }]
20374
20425
  }], ctorParameters: () => [{ type: AppStateService }, { type: i1$7.BsModalService }, { type: SimplifiedAuthService }, { type: UserMenuService }, { type: HeaderService }] });
20375
20426
 
20376
- class PasswordStrengthCheckerService {
20377
- constructor() {
20378
- this.GREEN = {
20379
- colorName: 'green',
20380
- color: 'rgb(0, 128, 0)',
20381
- description: gettext$1('strong'),
20382
- passwordStrength: PasswordStrength.GREEN
20383
- };
20384
- this.YELLOW = {
20385
- colorName: 'yellow',
20386
- color: 'rgb(255, 204, 51)',
20387
- description: gettext$1('medium'),
20388
- passwordStrength: PasswordStrength.YELLOW
20389
- };
20390
- this.RED = {
20391
- colorName: 'red',
20392
- color: 'rgb(170, 0, 51)',
20393
- description: gettext$1('weak'),
20394
- passwordStrength: PasswordStrength.RED
20395
- };
20396
- }
20397
- hasLowerCase(password) {
20398
- return password.search(/[a-z]/) !== -1;
20399
- }
20400
- hasUpperCase(password) {
20401
- return password.search(/[A-Z]/) !== -1;
20402
- }
20403
- hasNumbers(password) {
20404
- return password.search(/[0-9]/) !== -1;
20405
- }
20406
- hasSpecialChars(password) {
20407
- return password.search(/[^0-9a-zA-Z]+/) !== -1;
20408
- }
20409
- getStrengthColor(password) {
20410
- const passwordStrength = filter$2([
20411
- this.hasLowerCase(password),
20412
- this.hasUpperCase(password),
20413
- this.hasNumbers(password),
20414
- this.hasSpecialChars(password)
20415
- ]).length;
20416
- if (passwordStrength > 3) {
20417
- return this.GREEN;
20418
- }
20419
- else if (passwordStrength >= 3) {
20420
- return this.YELLOW;
20421
- }
20422
- else {
20423
- return this.RED;
20424
- }
20425
- }
20426
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordStrengthCheckerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
20427
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordStrengthCheckerService }); }
20428
- }
20429
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordStrengthCheckerService, decorators: [{
20430
- type: Injectable
20431
- }] });
20432
-
20433
20427
  /**
20434
20428
  * @deprecated: [MTM-56403] Password strength indicator removed from UI in favor of the enhanced password strength check list.
20435
20429
  */
@@ -20490,7 +20484,7 @@ class AuthenticationModule {
20490
20484
  CurrentPasswordModalComponent,
20491
20485
  TotpSetupComponent,
20492
20486
  PasswordInputComponent] }); }
20493
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AuthenticationModule, providers: [PasswordStrengthCheckerService, PasswordService], imports: [FormsModule,
20487
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AuthenticationModule, imports: [FormsModule,
20494
20488
  TooltipModule,
20495
20489
  CommonModule,
20496
20490
  ModalModule,
@@ -20530,8 +20524,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
20530
20524
  CurrentPasswordModalComponent,
20531
20525
  TotpSetupComponent,
20532
20526
  PasswordInputComponent
20533
- ],
20534
- providers: [PasswordStrengthCheckerService, PasswordService]
20527
+ ]
20535
20528
  }]
20536
20529
  }] });
20537
20530
 
@@ -20776,6 +20769,311 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
20776
20769
  }]
20777
20770
  }] });
20778
20771
 
20772
+ class PluginsModule {
20773
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
20774
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: PluginsModule }); }
20775
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsModule }); }
20776
+ }
20777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsModule, decorators: [{
20778
+ type: NgModule,
20779
+ args: [{
20780
+ providers: []
20781
+ }]
20782
+ }] });
20783
+
20784
+ /**
20785
+ * An extension HOOK can use either a pure value:
20786
+ * ```typescript
20787
+ * { provide: HOOK_X, useValue: { ...hookValue }, multi: true }
20788
+ * ```
20789
+ *
20790
+ * Or an array to directly register multiple:
20791
+ * ```typescript
20792
+ * { provide: HOOK_X, useValue: [{ ...hookValues }], multi: true }
20793
+ * ```
20794
+ *
20795
+ * Or an ExtensionFactory which allows to define a get() function. This function
20796
+ * gets called on each navigation with the current route and can return values
20797
+ * async (observable or promise).
20798
+ * ```typescript
20799
+ * { provide: HOOK_X, useFactory: { get: (route) => doSomethingAsync(route) }, multi: true }
20800
+ * ```
20801
+ * @deprecated Consider using the `hookVersion` function instead.
20802
+ */
20803
+ const HOOK_VERSION = new InjectionToken('HOOK_VERSION');
20804
+ const VERSION_MODULE_CONFIG = new InjectionToken('VERSION_MODULE_CONFIG');
20805
+ /**
20806
+ * You can either provide a single `Version` as parameter:
20807
+ * ```typescript
20808
+ * hookVersion(...)
20809
+ * ```
20810
+ *
20811
+ * Or an array to directly register multiple:
20812
+ * ```typescript
20813
+ * hookVersion([...])
20814
+ * ```
20815
+ *
20816
+ * Or you provide an Service that implements `ExtensionFactory<Version>`
20817
+ * ```typescript
20818
+ * export class MyVersionFactory implements ExtensionFactory<Version> {...}
20819
+ * ...
20820
+ * hookVersion(MyVersionFactory)
20821
+ * ```
20822
+ * A typed alternative to `HOOK_VERSION`.
20823
+ * @param versions The `Version`'s or `ExtensionFactory` to be provided.
20824
+ * @returns An `Provider` to be provided in your module.
20825
+ */
20826
+ function hookVersion(versions, options) {
20827
+ return hookGeneric(versions, HOOK_VERSION, options);
20828
+ }
20829
+
20830
+ /**
20831
+ * Will provide the backend versions of the tenant.
20832
+ * The system option 'system' -> 'version' is used for this.
20833
+ */
20834
+ class BackendVersionFactory {
20835
+ constructor(config, appState) {
20836
+ this.config = config;
20837
+ this.appState = appState;
20838
+ this.backendVersion$ = of([]);
20839
+ if (this.config?.disableBackendVersionFactory) {
20840
+ return;
20841
+ }
20842
+ this.backendVersion$ = this.appState.state$.pipe(map(state => state?.versions?.backend), filter(backendVersion => !!backendVersion), distinctUntilChanged(), map(backendVersion => this.buildBackendVersion(backendVersion)), shareReplay(1));
20843
+ }
20844
+ get() {
20845
+ return this.backendVersion$;
20846
+ }
20847
+ buildBackendVersion(backendVersion) {
20848
+ return {
20849
+ label: gettext$1('Backend'),
20850
+ version: backendVersion,
20851
+ priority: 20,
20852
+ type: 'SYSTEM',
20853
+ hidden: true
20854
+ };
20855
+ }
20856
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BackendVersionFactory, deps: [{ token: VERSION_MODULE_CONFIG, optional: true }, { token: AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
20857
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BackendVersionFactory, providedIn: 'root' }); }
20858
+ }
20859
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BackendVersionFactory, decorators: [{
20860
+ type: Injectable,
20861
+ args: [{
20862
+ providedIn: 'root'
20863
+ }]
20864
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
20865
+ type: Optional
20866
+ }, {
20867
+ type: Inject,
20868
+ args: [VERSION_MODULE_CONFIG]
20869
+ }] }, { type: AppStateService }] });
20870
+
20871
+ class VersionService extends ExtensionPointForPlugins {
20872
+ constructor(rootInjector, pluginService) {
20873
+ super(rootInjector, pluginService);
20874
+ this.items$ = this.setupItemsObservable();
20875
+ this.nonHiddenItems$ = this.items$.pipe(map(versions => versions.filter(version => !version.hidden)));
20876
+ }
20877
+ get state() {
20878
+ return this.state$.value;
20879
+ }
20880
+ add(version) {
20881
+ this.state.add(version);
20882
+ this.emitNewState();
20883
+ }
20884
+ remove(version) {
20885
+ this.state.delete(version);
20886
+ this.emitNewState();
20887
+ }
20888
+ cleanUpVersions(versions) {
20889
+ return versions.map(version => pick(version, 'label', 'version', 'type', 'custom'));
20890
+ }
20891
+ setupItemsObservable() {
20892
+ return fromTriggerOnce(undefined, this.refresh$, [
20893
+ getInjectedHooks(HOOK_VERSION, this.injectors),
20894
+ () => this.factories,
20895
+ stateToFactory(this.state$)
20896
+ ]).pipe(distinctUntilChanged(), map(versions => sortByPriority(versions)), shareReplay(1));
20897
+ }
20898
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionService, deps: [{ token: i0.Injector }, { token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
20899
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionService, providedIn: 'root' }); }
20900
+ }
20901
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionService, decorators: [{
20902
+ type: Injectable,
20903
+ args: [{
20904
+ providedIn: 'root'
20905
+ }]
20906
+ }], ctorParameters: () => [{ type: i0.Injector }, { type: PluginsResolveService }] });
20907
+
20908
+ class PlatformDetailsService {
20909
+ constructor(version, appState, apps) {
20910
+ this.version = version;
20911
+ this.appState = appState;
20912
+ this.apps = apps;
20913
+ }
20914
+ async getPlatformDetailsObject() {
20915
+ const currentUser = this.appState.currentUser.value;
20916
+ const userId = currentUser?.id;
20917
+ const userPermissions = this.getUserPermissions(currentUser);
20918
+ const [hookedVersions, microserviceVersions] = await Promise.all([
20919
+ this.getVersions(),
20920
+ this.getMicroserviceVersions(userId)
20921
+ ]);
20922
+ const versions = [...hookedVersions, ...microserviceVersions];
20923
+ const groupedVersions = groupBy(versions, 'type');
20924
+ const tenantId = this.appState.currentTenant.value?.name;
20925
+ // useful as `domainName` might be pointing to a custom domain
20926
+ // self link should still allow to identify the actual environment of the tenant
20927
+ const tenantSelfLink = this.appState.currentTenant.value?.self;
20928
+ const tenantDomainName = this.appState.currentTenant.value?.domainName;
20929
+ const applicationKey = this.appState.currentApplication.value?.key;
20930
+ const applicationId = this.appState.currentApplication.value?.id;
20931
+ const time = new Date().toISOString();
20932
+ const url = document.URL;
20933
+ const obj = {
20934
+ time,
20935
+ tenantId,
20936
+ tenantSelfLink,
20937
+ tenantDomainName,
20938
+ url,
20939
+ userId,
20940
+ userPermissions,
20941
+ applicationId,
20942
+ applicationKey,
20943
+ versions: groupedVersions
20944
+ };
20945
+ return obj;
20946
+ }
20947
+ async getVersions() {
20948
+ const versions = await this.version.items$
20949
+ .pipe(take(1), map(versions => this.version.cleanUpVersions(versions)))
20950
+ .toPromise();
20951
+ return versions;
20952
+ }
20953
+ async getMicroserviceVersions(userId) {
20954
+ try {
20955
+ const { data: apps } = await this.apps.listByUser(userId, {
20956
+ pageSize: 2000,
20957
+ dropOverwrittenApps: true,
20958
+ noPaging: true
20959
+ });
20960
+ return apps
20961
+ .filter(app => !!app.manifest?.version && app.type === ApplicationType.MICROSERVICE)
20962
+ .map(app => {
20963
+ return {
20964
+ label: app.name,
20965
+ version: app.manifest.version,
20966
+ type: app.type,
20967
+ custom: {
20968
+ owner: app.owner?.tenant?.id,
20969
+ provider: app.manifest?.provider
20970
+ }
20971
+ };
20972
+ });
20973
+ }
20974
+ catch (e) {
20975
+ console.warn(e);
20976
+ return [];
20977
+ }
20978
+ }
20979
+ getUserPermissions(user) {
20980
+ if (!user) {
20981
+ return null;
20982
+ }
20983
+ const userPermissions = this.getDirectPermissionsOfUser(user);
20984
+ const groupPermissions = this.getPermissionsOfAssignedGroups(user);
20985
+ return { user: userPermissions, groups: groupPermissions };
20986
+ }
20987
+ getDirectPermissionsOfUser(user) {
20988
+ const userChangedType = user;
20989
+ const userRoleReferences = userChangedType.roles?.references || [];
20990
+ return userRoleReferences.map(ref => ref.role.id);
20991
+ }
20992
+ getPermissionsOfAssignedGroups(user) {
20993
+ const groups = user.groups?.references || [];
20994
+ return groups.map(ref => {
20995
+ const roleReferences = ref.group?.roles?.references || [];
20996
+ const permissions = roleReferences.map(ref => ref.role.id);
20997
+ return {
20998
+ id: ref.group.id,
20999
+ name: ref.group.name,
21000
+ permissions
21001
+ };
21002
+ });
21003
+ }
21004
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformDetailsService, deps: [{ token: VersionService }, { token: AppStateService }, { token: i1.ApplicationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21005
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformDetailsService, providedIn: 'root' }); }
21006
+ }
21007
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformDetailsService, decorators: [{
21008
+ type: Injectable,
21009
+ args: [{ providedIn: 'root' }]
21010
+ }], ctorParameters: () => [{ type: VersionService }, { type: AppStateService }, { type: i1.ApplicationService }] });
21011
+
21012
+ class VersionListComponent {
21013
+ constructor(version, appState, clipboardService, modalService, platformDetails, headerService) {
21014
+ this.version = version;
21015
+ this.appState = appState;
21016
+ this.clipboardService = clipboardService;
21017
+ this.modalService = modalService;
21018
+ this.platformDetails = platformDetails;
21019
+ this.headerService = headerService;
21020
+ this.versionsToDirectlyDisplay$ = this.version.nonHiddenItems$;
21021
+ this.currentTenantId$ = this.appState.currentTenant.pipe(map(tenant => tenant?.name), filter(tenantId => !!tenantId), distinctUntilChanged());
21022
+ this.open$ = this.headerService.rightDrawerOpen$;
21023
+ }
21024
+ async downloadPlatformDetails() {
21025
+ const obj = await this.platformDetails.getPlatformDetailsObject();
21026
+ const json = JSON.stringify(obj, undefined, 2);
21027
+ const blob = new Blob([json]);
21028
+ saveAs$1(blob, 'platform-details.json');
21029
+ }
21030
+ copyIt(text) {
21031
+ this.clipboardService.writeText(text);
21032
+ }
21033
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionListComponent, deps: [{ token: VersionService }, { token: AppStateService }, { token: ClipboardService }, { token: i1$7.BsModalService }, { token: PlatformDetailsService }, { token: HeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
21034
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: VersionListComponent, isStandalone: true, selector: "c8y-version-list", ngImport: i0, template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"c8y-c8y-c\"></i>\n <span class=\"text-bold\">{{ 'Platform info' | translate }}</span>\n </div>\n\n <ul class=\"list-unstyled\">\n <li\n class=\"c8y-right-drawer__item\"\n *ngIf=\"currentTenantId$ | async as tenantId\"\n >\n <span\n class=\"flex-grow text-muted m-0 text-12 text-truncate\"\n translate\n >\n Tenant ID\n </span>\n <button\n class=\"m-l-auto flex-no-shrink btn-clean p-0 btn-link\"\n title=\"{{ 'Copy tenant ID to the clipboard' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); copyIt(tenantId)\"\n >\n {{ tenantId }}\n <i\n class=\"text-14 m-0\"\n [c8yIcon]=\"'clipboard'\"\n ></i>\n </button>\n </li>\n <li\n class=\"c8y-right-drawer__item\"\n *ngFor=\"let versionEntry of versionsToDirectlyDisplay$ | async\"\n >\n <span\n class=\"flex-no-shrink text-muted text-12 text-truncate m-r-8\"\n [title]=\"versionEntry.label | translate\"\n >\n {{ versionEntry.label | translate }}\n </span>\n <span\n class=\"flex-grow text-right text-truncate\"\n [title]=\"versionEntry.version | translate\"\n >\n {{ versionEntry.version }}\n </span>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n title=\"{{ 'Download platform details' | translate }}\"\n (click)=\"downloadPlatformDetails()\"\n >\n <i c8yIcon=\"download\" class=\"m-t-0 m-b-0 text-14\"></i>\n <span translate>Download platform details</span>\n </button>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
21035
+ }
21036
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionListComponent, decorators: [{
21037
+ type: Component,
21038
+ args: [{ selector: 'c8y-version-list', standalone: true, imports: [IconDirective, NgIf, C8yTranslateDirective, NgFor, C8yTranslatePipe, AsyncPipe], template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"c8y-c8y-c\"></i>\n <span class=\"text-bold\">{{ 'Platform info' | translate }}</span>\n </div>\n\n <ul class=\"list-unstyled\">\n <li\n class=\"c8y-right-drawer__item\"\n *ngIf=\"currentTenantId$ | async as tenantId\"\n >\n <span\n class=\"flex-grow text-muted m-0 text-12 text-truncate\"\n translate\n >\n Tenant ID\n </span>\n <button\n class=\"m-l-auto flex-no-shrink btn-clean p-0 btn-link\"\n title=\"{{ 'Copy tenant ID to the clipboard' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); copyIt(tenantId)\"\n >\n {{ tenantId }}\n <i\n class=\"text-14 m-0\"\n [c8yIcon]=\"'clipboard'\"\n ></i>\n </button>\n </li>\n <li\n class=\"c8y-right-drawer__item\"\n *ngFor=\"let versionEntry of versionsToDirectlyDisplay$ | async\"\n >\n <span\n class=\"flex-no-shrink text-muted text-12 text-truncate m-r-8\"\n [title]=\"versionEntry.label | translate\"\n >\n {{ versionEntry.label | translate }}\n </span>\n <span\n class=\"flex-grow text-right text-truncate\"\n [title]=\"versionEntry.version | translate\"\n >\n {{ versionEntry.version }}\n </span>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n title=\"{{ 'Download platform details' | translate }}\"\n (click)=\"downloadPlatformDetails()\"\n >\n <i c8yIcon=\"download\" class=\"m-t-0 m-b-0 text-14\"></i>\n <span translate>Download platform details</span>\n </button>\n </li>\n </ul>\n</div>\n" }]
21039
+ }], ctorParameters: () => [{ type: VersionService }, { type: AppStateService }, { type: ClipboardService }, { type: i1$7.BsModalService }, { type: PlatformDetailsService }, { type: HeaderService }] });
21040
+
21041
+ class VersionDrawerFactory {
21042
+ constructor(options) {
21043
+ this.options = options;
21044
+ this.drawerItem = {
21045
+ component: VersionListComponent,
21046
+ position: 'right',
21047
+ priority: 80,
21048
+ id: 'platformInformation'
21049
+ };
21050
+ }
21051
+ get() {
21052
+ return this.shouldShowPlatformInformation$().pipe(distinctUntilChanged(), map(shouldShowPlatformInformation => {
21053
+ if (shouldShowPlatformInformation) {
21054
+ return this.drawerItem;
21055
+ }
21056
+ return [];
21057
+ }));
21058
+ }
21059
+ shouldShowPlatformInformation$() {
21060
+ return combineLatest([
21061
+ this.options.get$('hidePowered'),
21062
+ this.options.get$('hidePlatformInformation')
21063
+ ]).pipe(map(([hidePowered, hidePlatformInformation]) => {
21064
+ if (hidePlatformInformation === undefined) {
21065
+ return !hidePowered;
21066
+ }
21067
+ return !hidePlatformInformation;
21068
+ }));
21069
+ }
21070
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionDrawerFactory, deps: [{ token: OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21071
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionDrawerFactory }); }
21072
+ }
21073
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionDrawerFactory, decorators: [{
21074
+ type: Injectable
21075
+ }], ctorParameters: () => [{ type: OptionsService }] });
21076
+
20779
21077
  var ApplicationPluginStatus;
20780
21078
  (function (ApplicationPluginStatus) {
20781
21079
  ApplicationPluginStatus["ORPHANED"] = "ORPHANED";
@@ -21229,316 +21527,12 @@ class PluginsService {
21229
21527
  return { rawContextPath, contextPath, moduleName };
21230
21528
  }
21231
21529
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsService, deps: [{ token: i1.ApplicationService }, { token: AppStateService }, { token: i1.FetchClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
21232
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsService }); }
21530
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsService, providedIn: 'root' }); }
21233
21531
  }
21234
21532
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsService, decorators: [{
21235
- type: Injectable
21236
- }], ctorParameters: () => [{ type: i1.ApplicationService }, { type: AppStateService }, { type: i1.FetchClient }] });
21237
-
21238
- class PluginsModule {
21239
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21240
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: PluginsModule }); }
21241
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsModule, providers: [PluginsService] }); }
21242
- }
21243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PluginsModule, decorators: [{
21244
- type: NgModule,
21245
- args: [{
21246
- providers: [PluginsService]
21247
- }]
21248
- }] });
21249
-
21250
- /**
21251
- * An extension HOOK can use either a pure value:
21252
- * ```typescript
21253
- * { provide: HOOK_X, useValue: { ...hookValue }, multi: true }
21254
- * ```
21255
- *
21256
- * Or an array to directly register multiple:
21257
- * ```typescript
21258
- * { provide: HOOK_X, useValue: [{ ...hookValues }], multi: true }
21259
- * ```
21260
- *
21261
- * Or an ExtensionFactory which allows to define a get() function. This function
21262
- * gets called on each navigation with the current route and can return values
21263
- * async (observable or promise).
21264
- * ```typescript
21265
- * { provide: HOOK_X, useFactory: { get: (route) => doSomethingAsync(route) }, multi: true }
21266
- * ```
21267
- * @deprecated Consider using the `hookVersion` function instead.
21268
- */
21269
- const HOOK_VERSION = new InjectionToken('HOOK_VERSION');
21270
- const VERSION_MODULE_CONFIG = new InjectionToken('VERSION_MODULE_CONFIG');
21271
- /**
21272
- * You can either provide a single `Version` as parameter:
21273
- * ```typescript
21274
- * hookVersion(...)
21275
- * ```
21276
- *
21277
- * Or an array to directly register multiple:
21278
- * ```typescript
21279
- * hookVersion([...])
21280
- * ```
21281
- *
21282
- * Or you provide an Service that implements `ExtensionFactory<Version>`
21283
- * ```typescript
21284
- * export class MyVersionFactory implements ExtensionFactory<Version> {...}
21285
- * ...
21286
- * hookVersion(MyVersionFactory)
21287
- * ```
21288
- * A typed alternative to `HOOK_VERSION`.
21289
- * @param versions The `Version`'s or `ExtensionFactory` to be provided.
21290
- * @returns An `Provider` to be provided in your module.
21291
- */
21292
- function hookVersion(versions, options) {
21293
- return hookGeneric(versions, HOOK_VERSION, options);
21294
- }
21295
-
21296
- /**
21297
- * Will provide the backend versions of the tenant.
21298
- * The system option 'system' -> 'version' is used for this.
21299
- */
21300
- class BackendVersionFactory {
21301
- constructor(config, appState) {
21302
- this.config = config;
21303
- this.appState = appState;
21304
- this.backendVersion$ = of([]);
21305
- if (this.config?.disableBackendVersionFactory) {
21306
- return;
21307
- }
21308
- this.backendVersion$ = this.appState.state$.pipe(map(state => state?.versions?.backend), filter(backendVersion => !!backendVersion), distinctUntilChanged(), map(backendVersion => this.buildBackendVersion(backendVersion)), shareReplay(1));
21309
- }
21310
- get() {
21311
- return this.backendVersion$;
21312
- }
21313
- buildBackendVersion(backendVersion) {
21314
- return {
21315
- label: gettext$1('Backend'),
21316
- version: backendVersion,
21317
- priority: 20,
21318
- type: 'SYSTEM',
21319
- hidden: true
21320
- };
21321
- }
21322
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BackendVersionFactory, deps: [{ token: VERSION_MODULE_CONFIG, optional: true }, { token: AppStateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21323
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BackendVersionFactory, providedIn: 'root' }); }
21324
- }
21325
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: BackendVersionFactory, decorators: [{
21326
- type: Injectable,
21327
- args: [{
21328
- providedIn: 'root'
21329
- }]
21330
- }], ctorParameters: () => [{ type: undefined, decorators: [{
21331
- type: Optional
21332
- }, {
21333
- type: Inject,
21334
- args: [VERSION_MODULE_CONFIG]
21335
- }] }, { type: AppStateService }] });
21336
-
21337
- class VersionService extends ExtensionPointForPlugins {
21338
- constructor(rootInjector, pluginService) {
21339
- super(rootInjector, pluginService);
21340
- this.items$ = this.setupItemsObservable();
21341
- this.nonHiddenItems$ = this.items$.pipe(map(versions => versions.filter(version => !version.hidden)));
21342
- }
21343
- get state() {
21344
- return this.state$.value;
21345
- }
21346
- add(version) {
21347
- this.state.add(version);
21348
- this.emitNewState();
21349
- }
21350
- remove(version) {
21351
- this.state.delete(version);
21352
- this.emitNewState();
21353
- }
21354
- cleanUpVersions(versions) {
21355
- return versions.map(version => pick(version, 'label', 'version', 'type', 'custom'));
21356
- }
21357
- setupItemsObservable() {
21358
- return fromTriggerOnce(undefined, this.refresh$, [
21359
- getInjectedHooks(HOOK_VERSION, this.injectors),
21360
- () => this.factories,
21361
- stateToFactory(this.state$)
21362
- ]).pipe(distinctUntilChanged(), map(versions => sortByPriority(versions)), shareReplay(1));
21363
- }
21364
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionService, deps: [{ token: i0.Injector }, { token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21365
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionService, providedIn: 'root' }); }
21366
- }
21367
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionService, decorators: [{
21368
- type: Injectable,
21369
- args: [{
21370
- providedIn: 'root'
21371
- }]
21372
- }], ctorParameters: () => [{ type: i0.Injector }, { type: PluginsResolveService }] });
21373
-
21374
- class PlatformDetailsService {
21375
- constructor(version, appState, apps) {
21376
- this.version = version;
21377
- this.appState = appState;
21378
- this.apps = apps;
21379
- }
21380
- async getPlatformDetailsObject() {
21381
- const currentUser = this.appState.currentUser.value;
21382
- const userId = currentUser?.id;
21383
- const userPermissions = this.getUserPermissions(currentUser);
21384
- const [hookedVersions, microserviceVersions] = await Promise.all([
21385
- this.getVersions(),
21386
- this.getMicroserviceVersions(userId)
21387
- ]);
21388
- const versions = [...hookedVersions, ...microserviceVersions];
21389
- const groupedVersions = groupBy(versions, 'type');
21390
- const tenantId = this.appState.currentTenant.value?.name;
21391
- // useful as `domainName` might be pointing to a custom domain
21392
- // self link should still allow to identify the actual environment of the tenant
21393
- const tenantSelfLink = this.appState.currentTenant.value?.self;
21394
- const tenantDomainName = this.appState.currentTenant.value?.domainName;
21395
- const applicationKey = this.appState.currentApplication.value?.key;
21396
- const applicationId = this.appState.currentApplication.value?.id;
21397
- const time = new Date().toISOString();
21398
- const url = document.URL;
21399
- const obj = {
21400
- time,
21401
- tenantId,
21402
- tenantSelfLink,
21403
- tenantDomainName,
21404
- url,
21405
- userId,
21406
- userPermissions,
21407
- applicationId,
21408
- applicationKey,
21409
- versions: groupedVersions
21410
- };
21411
- return obj;
21412
- }
21413
- async getVersions() {
21414
- const versions = await this.version.items$
21415
- .pipe(take(1), map(versions => this.version.cleanUpVersions(versions)))
21416
- .toPromise();
21417
- return versions;
21418
- }
21419
- async getMicroserviceVersions(userId) {
21420
- try {
21421
- const { data: apps } = await this.apps.listByUser(userId, {
21422
- pageSize: 2000,
21423
- dropOverwrittenApps: true,
21424
- noPaging: true
21425
- });
21426
- return apps
21427
- .filter(app => !!app.manifest?.version && app.type === ApplicationType.MICROSERVICE)
21428
- .map(app => {
21429
- return {
21430
- label: app.name,
21431
- version: app.manifest.version,
21432
- type: app.type,
21433
- custom: {
21434
- owner: app.owner?.tenant?.id,
21435
- provider: app.manifest?.provider
21436
- }
21437
- };
21438
- });
21439
- }
21440
- catch (e) {
21441
- console.warn(e);
21442
- return [];
21443
- }
21444
- }
21445
- getUserPermissions(user) {
21446
- if (!user) {
21447
- return null;
21448
- }
21449
- const userPermissions = this.getDirectPermissionsOfUser(user);
21450
- const groupPermissions = this.getPermissionsOfAssignedGroups(user);
21451
- return { user: userPermissions, groups: groupPermissions };
21452
- }
21453
- getDirectPermissionsOfUser(user) {
21454
- const userChangedType = user;
21455
- const userRoleReferences = userChangedType.roles?.references || [];
21456
- return userRoleReferences.map(ref => ref.role.id);
21457
- }
21458
- getPermissionsOfAssignedGroups(user) {
21459
- const groups = user.groups?.references || [];
21460
- return groups.map(ref => {
21461
- const roleReferences = ref.group?.roles?.references || [];
21462
- const permissions = roleReferences.map(ref => ref.role.id);
21463
- return {
21464
- id: ref.group.id,
21465
- name: ref.group.name,
21466
- permissions
21467
- };
21468
- });
21469
- }
21470
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformDetailsService, deps: [{ token: VersionService }, { token: AppStateService }, { token: i1.ApplicationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21471
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformDetailsService, providedIn: 'root' }); }
21472
- }
21473
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformDetailsService, decorators: [{
21474
21533
  type: Injectable,
21475
21534
  args: [{ providedIn: 'root' }]
21476
- }], ctorParameters: () => [{ type: VersionService }, { type: AppStateService }, { type: i1.ApplicationService }] });
21477
-
21478
- class VersionListComponent {
21479
- constructor(version, appState, clipboardService, modalService, platformDetails, headerService) {
21480
- this.version = version;
21481
- this.appState = appState;
21482
- this.clipboardService = clipboardService;
21483
- this.modalService = modalService;
21484
- this.platformDetails = platformDetails;
21485
- this.headerService = headerService;
21486
- this.versionsToDirectlyDisplay$ = this.version.nonHiddenItems$;
21487
- this.currentTenantId$ = this.appState.currentTenant.pipe(map(tenant => tenant?.name), filter(tenantId => !!tenantId), distinctUntilChanged());
21488
- this.open$ = this.headerService.rightDrawerOpen$;
21489
- }
21490
- async downloadPlatformDetails() {
21491
- const obj = await this.platformDetails.getPlatformDetailsObject();
21492
- const json = JSON.stringify(obj, undefined, 2);
21493
- const blob = new Blob([json]);
21494
- saveAs$1(blob, 'platform-details.json');
21495
- }
21496
- copyIt(text) {
21497
- this.clipboardService.writeText(text);
21498
- }
21499
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionListComponent, deps: [{ token: VersionService }, { token: AppStateService }, { token: ClipboardService }, { token: i1$7.BsModalService }, { token: PlatformDetailsService }, { token: HeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
21500
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: VersionListComponent, isStandalone: true, selector: "c8y-version-list", ngImport: i0, template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"c8y-c8y-c\"></i>\n <span class=\"text-bold\">{{ 'Platform info' | translate }}</span>\n </div>\n\n <ul class=\"list-unstyled\">\n <li\n class=\"c8y-right-drawer__item\"\n *ngIf=\"currentTenantId$ | async as tenantId\"\n >\n <span\n class=\"flex-grow text-muted m-0 text-12 text-truncate\"\n translate\n >\n Tenant ID\n </span>\n <button\n class=\"m-l-auto flex-no-shrink btn-clean p-0 btn-link\"\n title=\"{{ 'Copy tenant ID to the clipboard' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); copyIt(tenantId)\"\n >\n {{ tenantId }}\n <i\n class=\"text-14 m-0\"\n [c8yIcon]=\"'clipboard'\"\n ></i>\n </button>\n </li>\n <li\n class=\"c8y-right-drawer__item\"\n *ngFor=\"let versionEntry of versionsToDirectlyDisplay$ | async\"\n >\n <span\n class=\"flex-no-shrink text-muted text-12 text-truncate m-r-8\"\n [title]=\"versionEntry.label | translate\"\n >\n {{ versionEntry.label | translate }}\n </span>\n <span\n class=\"flex-grow text-right text-truncate\"\n [title]=\"versionEntry.version | translate\"\n >\n {{ versionEntry.version }}\n </span>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n title=\"{{ 'Download platform details' | translate }}\"\n (click)=\"downloadPlatformDetails()\"\n >\n <i c8yIcon=\"download\" class=\"m-t-0 m-b-0 text-14\"></i>\n <span translate>Download platform details</span>\n </button>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
21501
- }
21502
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionListComponent, decorators: [{
21503
- type: Component,
21504
- args: [{ selector: 'c8y-version-list', standalone: true, imports: [IconDirective, NgIf, C8yTranslateDirective, NgFor, C8yTranslatePipe, AsyncPipe], template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"c8y-c8y-c\"></i>\n <span class=\"text-bold\">{{ 'Platform info' | translate }}</span>\n </div>\n\n <ul class=\"list-unstyled\">\n <li\n class=\"c8y-right-drawer__item\"\n *ngIf=\"currentTenantId$ | async as tenantId\"\n >\n <span\n class=\"flex-grow text-muted m-0 text-12 text-truncate\"\n translate\n >\n Tenant ID\n </span>\n <button\n class=\"m-l-auto flex-no-shrink btn-clean p-0 btn-link\"\n title=\"{{ 'Copy tenant ID to the clipboard' | translate }}\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n (click)=\"$event.stopPropagation(); copyIt(tenantId)\"\n >\n {{ tenantId }}\n <i\n class=\"text-14 m-0\"\n [c8yIcon]=\"'clipboard'\"\n ></i>\n </button>\n </li>\n <li\n class=\"c8y-right-drawer__item\"\n *ngFor=\"let versionEntry of versionsToDirectlyDisplay$ | async\"\n >\n <span\n class=\"flex-no-shrink text-muted text-12 text-truncate m-r-8\"\n [title]=\"versionEntry.label | translate\"\n >\n {{ versionEntry.label | translate }}\n </span>\n <span\n class=\"flex-grow text-right text-truncate\"\n [title]=\"versionEntry.version | translate\"\n >\n {{ versionEntry.version }}\n </span>\n </li>\n <li class=\"c8y-right-drawer__item\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n title=\"{{ 'Download platform details' | translate }}\"\n (click)=\"downloadPlatformDetails()\"\n >\n <i c8yIcon=\"download\" class=\"m-t-0 m-b-0 text-14\"></i>\n <span translate>Download platform details</span>\n </button>\n </li>\n </ul>\n</div>\n" }]
21505
- }], ctorParameters: () => [{ type: VersionService }, { type: AppStateService }, { type: ClipboardService }, { type: i1$7.BsModalService }, { type: PlatformDetailsService }, { type: HeaderService }] });
21506
-
21507
- class VersionDrawerFactory {
21508
- constructor(options) {
21509
- this.options = options;
21510
- this.drawerItem = {
21511
- component: VersionListComponent,
21512
- position: 'right',
21513
- priority: 80,
21514
- id: 'platformInformation'
21515
- };
21516
- }
21517
- get() {
21518
- return this.shouldShowPlatformInformation$().pipe(distinctUntilChanged(), map(shouldShowPlatformInformation => {
21519
- if (shouldShowPlatformInformation) {
21520
- return this.drawerItem;
21521
- }
21522
- return [];
21523
- }));
21524
- }
21525
- shouldShowPlatformInformation$() {
21526
- return combineLatest([
21527
- this.options.get$('hidePowered'),
21528
- this.options.get$('hidePlatformInformation')
21529
- ]).pipe(map(([hidePowered, hidePlatformInformation]) => {
21530
- if (hidePlatformInformation === undefined) {
21531
- return !hidePowered;
21532
- }
21533
- return !hidePlatformInformation;
21534
- }));
21535
- }
21536
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionDrawerFactory, deps: [{ token: OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21537
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionDrawerFactory }); }
21538
- }
21539
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: VersionDrawerFactory, decorators: [{
21540
- type: Injectable
21541
- }], ctorParameters: () => [{ type: OptionsService }] });
21535
+ }], ctorParameters: () => [{ type: i1.ApplicationService }, { type: AppStateService }, { type: i1.FetchClient }] });
21542
21536
 
21543
21537
  /**
21544
21538
  * Will provide the version of plugins installed to the current application.
@@ -22249,6 +22243,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
22249
22243
 
22250
22244
  class BottomDrawerComponent {
22251
22245
  constructor() {
22246
+ /**
22247
+ * When enabled, clicking outside the drawer will not close it.
22248
+ */
22252
22249
  this.disableClickOutside = false;
22253
22250
  this.drawerOpenSubject$ = new BehaviorSubject(true);
22254
22251
  this.drawerOpenObs$ = this.drawerOpenSubject$.asObservable().pipe(delay(0), shareReplay());
@@ -22503,6 +22500,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
22503
22500
  args: [{}]
22504
22501
  }] });
22505
22502
 
22503
+ class PasswordStrengthCheckerService {
22504
+ constructor() {
22505
+ this.GREEN = {
22506
+ colorName: 'green',
22507
+ color: 'rgb(0, 128, 0)',
22508
+ description: gettext$1('strong'),
22509
+ passwordStrength: PasswordStrength.GREEN
22510
+ };
22511
+ this.YELLOW = {
22512
+ colorName: 'yellow',
22513
+ color: 'rgb(255, 204, 51)',
22514
+ description: gettext$1('medium'),
22515
+ passwordStrength: PasswordStrength.YELLOW
22516
+ };
22517
+ this.RED = {
22518
+ colorName: 'red',
22519
+ color: 'rgb(170, 0, 51)',
22520
+ description: gettext$1('weak'),
22521
+ passwordStrength: PasswordStrength.RED
22522
+ };
22523
+ }
22524
+ hasLowerCase(password) {
22525
+ return password.search(/[a-z]/) !== -1;
22526
+ }
22527
+ hasUpperCase(password) {
22528
+ return password.search(/[A-Z]/) !== -1;
22529
+ }
22530
+ hasNumbers(password) {
22531
+ return password.search(/[0-9]/) !== -1;
22532
+ }
22533
+ hasSpecialChars(password) {
22534
+ return password.search(/[^0-9a-zA-Z]+/) !== -1;
22535
+ }
22536
+ getStrengthColor(password) {
22537
+ const passwordStrength = filter$2([
22538
+ this.hasLowerCase(password),
22539
+ this.hasUpperCase(password),
22540
+ this.hasNumbers(password),
22541
+ this.hasSpecialChars(password)
22542
+ ]).length;
22543
+ if (passwordStrength > 3) {
22544
+ return this.GREEN;
22545
+ }
22546
+ else if (passwordStrength >= 3) {
22547
+ return this.YELLOW;
22548
+ }
22549
+ else {
22550
+ return this.RED;
22551
+ }
22552
+ }
22553
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordStrengthCheckerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
22554
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordStrengthCheckerService, providedIn: 'root' }); }
22555
+ }
22556
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasswordStrengthCheckerService, decorators: [{
22557
+ type: Injectable,
22558
+ args: [{ providedIn: 'root' }]
22559
+ }] });
22560
+
22506
22561
  /**
22507
22562
  * A drop-zone which is a file selector allowing users to select file(s) from their file system, either natively or by drag and drop.
22508
22563
  *
@@ -22540,6 +22595,7 @@ class DropAreaComponent {
22540
22595
  this.maxAllowedFiles = Infinity;
22541
22596
  this.isOver = false;
22542
22597
  this.errors = false;
22598
+ this.disabled = false;
22543
22599
  this.onChange = _ => undefined;
22544
22600
  this.onTouched = () => undefined;
22545
22601
  }
@@ -22646,6 +22702,9 @@ class DropAreaComponent {
22646
22702
  registerOnTouched(fn) {
22647
22703
  this.onTouched = fn;
22648
22704
  }
22705
+ setDisabledState(isDisabled) {
22706
+ this.disabled = isDisabled;
22707
+ }
22649
22708
  async onFilesSelected(files) {
22650
22709
  this.onTouched();
22651
22710
  const hasValidNameLength = this.filesService.checkMaxLength(files);
@@ -22785,11 +22844,11 @@ class DropAreaComponent {
22785
22844
  resolve(reader.result);
22786
22845
  }
22787
22846
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DropAreaComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: FilesService }, { token: i1$1.TranslateService }, { token: BytesPipe }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
22788
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DropAreaComponent, isStandalone: true, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", maxFileSizeInMegaBytes: "maxFileSizeInMegaBytes", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors, disabled: formControl?.disabled }\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n (click)=\"showPicker($event)\"\n>\n <div\n class=\"file-placeholder\"\n data-cy=\"c8y-file-placeholder--drop-zone\"\n [ngClass]=\"{ 'drag-over': isOver }\"\n >\n <div\n class=\"d-flex d-col p-4 flex-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 50%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div\n class=\"spinner-snake\"\n *ngIf=\"progress === -1\"\n ></div>\n <p\n class=\"m-t-auto m-b-auto m-r-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n {{ loadingMessage | translate }}\n </p>\n </div>\n <div\n class=\"hint-placeholder pointer\"\n *ngIf=\"!loading\"\n data-cy=\"drop-zone--hint-placeholder\"\n >\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\" class=\"text-truncate\" title=\"{{ message | translate }}\">\n <b>{{ message | translate }}</b>\n <br />\n <span\n *ngIf=\"alwaysShow && clickToOpen\"\n translate\n ></span>\n </p>\n <div\n class=\"has-errors\"\n *ngIf=\"errors\"\n >\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"shouldShowFilesList()\"\n>\n <div\n class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 80%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div *ngIf=\"progress === -1\">\n <c8y-loading></c8y-loading>\n </div>\n <p\n class=\"m-b-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n </div>\n <div\n class=\"file-placeholder p-4\"\n *ngIf=\"!loading\"\n >\n <div class=\"d-flex p-4 a-i-center\">\n <i\n class=\"icon-20 m-r-8\"\n c8yIcon=\"file-o\"\n ></i>\n <span\n class=\"text-truncate\"\n title=\"{{ filesNameString }}\"\n >\n {{ filesNameString }}\n </span>\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n title=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n >\n <i\n c8yIcon=\"minus-circle\"\n (click)=\"onDelete()\"\n ></i>\n </button>\n </div>\n </div>\n</div>\n<label\n class=\"sr-only\"\n for=\"file\"\n>\n {{ 'Select file' | translate }}\n</label>\n<input\n class=\"hidden\"\n id=\"file\"\n type=\"file\"\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n [disabled]=\"formControl?.disabled\"\n/>\n<div\n #area\n [hidden]=\"isOver || loading\"\n (dragover)=\"toggle()\"\n>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$a.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$a.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
22847
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DropAreaComponent, isStandalone: true, selector: "c8y-drop-area", inputs: { formControl: "formControl", title: "title", message: "message", icon: "icon", loadingMessage: "loadingMessage", forceHideList: "forceHideList", alwaysShow: "alwaysShow", clickToOpen: "clickToOpen", loading: "loading", progress: "progress", maxAllowedFiles: "maxAllowedFiles", files: "files", maxFileSizeInMegaBytes: "maxFileSizeInMegaBytes", accept: "accept" }, outputs: { dropped: "dropped" }, host: { listeners: { "keyup": "onkeyup($event)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], viewQueries: [{ propertyName: "area", first: true, predicate: ["area"], descendants: true, static: true }, { propertyName: "zone", first: true, predicate: ["zone"], descendants: true }, { propertyName: "picker", first: true, predicate: ["picker"], descendants: true }], ngImport: i0, template: "<div\n class=\"drop-zone\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors, disabled: formControl?.disabled || disabled }\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n (click)=\"showPicker($event)\"\n>\n <div\n class=\"file-placeholder\"\n data-cy=\"c8y-file-placeholder--drop-zone\"\n [ngClass]=\"{ 'drag-over': isOver }\"\n >\n <div\n class=\"d-flex d-col p-4 flex-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 50%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div\n class=\"spinner-snake\"\n *ngIf=\"progress === -1\"\n ></div>\n <p\n class=\"m-t-auto m-b-auto m-r-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n {{ loadingMessage | translate }}\n </p>\n </div>\n <div\n class=\"hint-placeholder pointer\"\n *ngIf=\"!loading\"\n data-cy=\"drop-zone--hint-placeholder\"\n >\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p\n class=\"text-truncate\"\n title=\"{{ message | translate }}\"\n *ngIf=\"!errors\"\n >\n <b>{{ message | translate }}</b>\n <br />\n <span\n *ngIf=\"alwaysShow && clickToOpen\"\n translate\n ></span>\n </p>\n <div\n class=\"has-errors\"\n *ngIf=\"errors\"\n >\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"shouldShowFilesList()\"\n>\n <div\n class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 80%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div *ngIf=\"progress === -1\">\n <c8y-loading></c8y-loading>\n </div>\n <p\n class=\"m-b-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n </div>\n <div\n class=\"file-placeholder p-4\"\n *ngIf=\"!loading\"\n >\n <div class=\"d-flex p-4 a-i-center\">\n <i\n class=\"icon-20 m-r-8\"\n c8yIcon=\"file-o\"\n ></i>\n <span\n class=\"text-truncate\"\n title=\"{{ filesNameString }}\"\n >\n {{ filesNameString }}\n </span>\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n title=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n >\n <i\n c8yIcon=\"minus-circle\"\n (click)=\"onDelete()\"\n ></i>\n </button>\n </div>\n </div>\n</div>\n<label\n class=\"sr-only\"\n for=\"file\"\n>\n {{ 'Select file' | translate }}\n</label>\n<input\n class=\"hidden\"\n id=\"file\"\n type=\"file\"\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n [disabled]=\"formControl?.disabled || disabled\"\n/>\n<div\n #area\n [hidden]=\"isOver || loading\"\n (dragover)=\"toggle()\"\n>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$a.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$a.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
22789
22848
  }
22790
22849
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DropAreaComponent, decorators: [{
22791
22850
  type: Component,
22792
- args: [{ selector: 'c8y-drop-area', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], standalone: true, imports: [CommonModule, C8yTranslatePipe, NgIf, NgClass, IconDirective], template: "<div\n class=\"drop-zone\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors, disabled: formControl?.disabled }\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n (click)=\"showPicker($event)\"\n>\n <div\n class=\"file-placeholder\"\n data-cy=\"c8y-file-placeholder--drop-zone\"\n [ngClass]=\"{ 'drag-over': isOver }\"\n >\n <div\n class=\"d-flex d-col p-4 flex-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 50%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div\n class=\"spinner-snake\"\n *ngIf=\"progress === -1\"\n ></div>\n <p\n class=\"m-t-auto m-b-auto m-r-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n {{ loadingMessage | translate }}\n </p>\n </div>\n <div\n class=\"hint-placeholder pointer\"\n *ngIf=\"!loading\"\n data-cy=\"drop-zone--hint-placeholder\"\n >\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p *ngIf=\"!errors\" class=\"text-truncate\" title=\"{{ message | translate }}\">\n <b>{{ message | translate }}</b>\n <br />\n <span\n *ngIf=\"alwaysShow && clickToOpen\"\n translate\n ></span>\n </p>\n <div\n class=\"has-errors\"\n *ngIf=\"errors\"\n >\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"shouldShowFilesList()\"\n>\n <div\n class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 80%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div *ngIf=\"progress === -1\">\n <c8y-loading></c8y-loading>\n </div>\n <p\n class=\"m-b-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n </div>\n <div\n class=\"file-placeholder p-4\"\n *ngIf=\"!loading\"\n >\n <div class=\"d-flex p-4 a-i-center\">\n <i\n class=\"icon-20 m-r-8\"\n c8yIcon=\"file-o\"\n ></i>\n <span\n class=\"text-truncate\"\n title=\"{{ filesNameString }}\"\n >\n {{ filesNameString }}\n </span>\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n title=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n >\n <i\n c8yIcon=\"minus-circle\"\n (click)=\"onDelete()\"\n ></i>\n </button>\n </div>\n </div>\n</div>\n<label\n class=\"sr-only\"\n for=\"file\"\n>\n {{ 'Select file' | translate }}\n</label>\n<input\n class=\"hidden\"\n id=\"file\"\n type=\"file\"\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n [disabled]=\"formControl?.disabled\"\n/>\n<div\n #area\n [hidden]=\"isOver || loading\"\n (dragover)=\"toggle()\"\n>\n <ng-content></ng-content>\n</div>\n" }]
22851
+ args: [{ selector: 'c8y-drop-area', providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: DropAreaComponent, multi: true }], standalone: true, imports: [CommonModule, C8yTranslatePipe, NgIf, NgClass, IconDirective], template: "<div\n class=\"drop-zone\"\n [style.pointerEvents]=\"loading ? 'none' : 'auto'\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"!shouldShowFilesList()\"\n [ngClass]=\"{ 'has-errors': errors, disabled: formControl?.disabled || disabled }\"\n #zone\n (dragleave)=\"stopDragging()\"\n (drop)=\"onDrop($event)\"\n (dragover)=\"onOver()\"\n (click)=\"showPicker($event)\"\n>\n <div\n class=\"file-placeholder\"\n data-cy=\"c8y-file-placeholder--drop-zone\"\n [ngClass]=\"{ 'drag-over': isOver }\"\n >\n <div\n class=\"d-flex d-col p-4 flex-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 50%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div\n class=\"spinner-snake\"\n *ngIf=\"progress === -1\"\n ></div>\n <p\n class=\"m-t-auto m-b-auto m-r-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n {{ loadingMessage | translate }}\n </p>\n </div>\n <div\n class=\"hint-placeholder pointer\"\n *ngIf=\"!loading\"\n data-cy=\"drop-zone--hint-placeholder\"\n >\n <i class=\"dlt-c8y-icon-{{ icon }}\"></i>\n <p\n class=\"text-truncate\"\n title=\"{{ message | translate }}\"\n *ngIf=\"!errors\"\n >\n <b>{{ message | translate }}</b>\n <br />\n <span\n *ngIf=\"alwaysShow && clickToOpen\"\n translate\n ></span>\n </p>\n <div\n class=\"has-errors\"\n *ngIf=\"errors\"\n >\n <p class=\"form-control-feedback-message\">\n {{ errorMessage | translate }}\n </p>\n </div>\n </div>\n </div>\n</div>\n\n<div\n class=\"drop-zone\"\n [style.display]=\"isOver || alwaysShow || loading ? 'block' : 'none'\"\n tabindex=\"0\"\n *ngIf=\"shouldShowFilesList()\"\n>\n <div\n class=\"p-absolute p-4 fit-w fit-h d-flex d-col j-c-center a-i-center\"\n *ngIf=\"loading\"\n >\n <div\n class=\"progress progress-striped active m-0\"\n style=\"min-width: 80%\"\n *ngIf=\"progress !== -1\"\n >\n <div\n class=\"progress-bar\"\n [style.width]=\"progress + '%'\"\n [attr.aria-label]=\"progress + '%'\"\n aria-valuenow=\"0\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n role=\"progressbar\"\n ></div>\n </div>\n <div *ngIf=\"progress === -1\">\n <c8y-loading></c8y-loading>\n </div>\n <p\n class=\"m-b-8\"\n *ngIf=\"!hasDropAreaSmallClass\"\n >\n <strong>\n {{ loadingMessage | translate }}\n </strong>\n </p>\n </div>\n <div\n class=\"file-placeholder p-4\"\n *ngIf=\"!loading\"\n >\n <div class=\"d-flex p-4 a-i-center\">\n <i\n class=\"icon-20 m-r-8\"\n c8yIcon=\"file-o\"\n ></i>\n <span\n class=\"text-truncate\"\n title=\"{{ filesNameString }}\"\n >\n {{ filesNameString }}\n </span>\n <button\n class=\"btn btn-dot btn-dot--danger showOnHover m-l-auto\"\n title=\"{{ 'Remove' | translate }}\"\n [attr.aria-label]=\"'Remove' | translate\"\n type=\"button\"\n >\n <i\n c8yIcon=\"minus-circle\"\n (click)=\"onDelete()\"\n ></i>\n </button>\n </div>\n </div>\n</div>\n<label\n class=\"sr-only\"\n for=\"file\"\n>\n {{ 'Select file' | translate }}\n</label>\n<input\n class=\"hidden\"\n id=\"file\"\n type=\"file\"\n #picker\n *ngIf=\"clickToOpen\"\n (change)=\"onPick($event)\"\n (click)=\"picker.focus()\"\n (blur)=\"onTouched()\"\n [accept]=\"acceptedExts\"\n [multiple]=\"maxAllowedFiles > 1\"\n [disabled]=\"formControl?.disabled || disabled\"\n/>\n<div\n #area\n [hidden]=\"isOver || loading\"\n (dragover)=\"toggle()\"\n>\n <ng-content></ng-content>\n</div>\n" }]
22793
22852
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: FilesService }, { type: i1$1.TranslateService }, { type: BytesPipe }, { type: i0.ElementRef }], propDecorators: { formControl: [{
22794
22853
  type: Input
22795
22854
  }], title: [{
@@ -25056,6 +25115,10 @@ class DateTimePickerComponent {
25056
25115
  constructor(cd, dateFormatService) {
25057
25116
  this.cd = cd;
25058
25117
  this.dateFormatService = dateFormatService;
25118
+ /**
25119
+ * If true, the datepicker will adapt its position based on available space.
25120
+ * This is useful for responsive designs where the datepicker should not overflow the viewport.
25121
+ */
25059
25122
  this.adaptivePosition = false;
25060
25123
  /**
25061
25124
  * Specifies the type of date input.
@@ -29396,10 +29459,17 @@ class CountdownIntervalComponent {
29396
29459
  this.destroy$.next();
29397
29460
  this.destroy$.complete();
29398
29461
  }
29462
+ /**
29463
+ * Starts the countdown timer.
29464
+ */
29399
29465
  start() {
29400
29466
  this.countdownSubscription?.unsubscribe();
29401
29467
  this.start$.next(null);
29402
29468
  }
29469
+ /**
29470
+ * Stops the countdown timer.
29471
+ * @param stopAtZero - If true, stops the timer when it reaches zero. Otherwise, stops it at the current countdown interval.
29472
+ */
29403
29473
  stop(stopAtZero = false) {
29404
29474
  this.countdownSubscription?.unsubscribe();
29405
29475
  this.runSpinner$.next(false);
@@ -33654,12 +33724,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
33654
33724
  }] });
33655
33725
 
33656
33726
  class ListDisplaySwitchComponent {
33727
+ /**
33728
+ * The length of the list to display.
33729
+ */
33657
33730
  set listLength(val) {
33658
33731
  this._listLength = val;
33659
33732
  this.loadSelectedOption();
33660
33733
  }
33661
33734
  constructor(location) {
33662
33735
  this.location = location;
33736
+ /**
33737
+ * The pipe used to filter the list items. It should return an observable that emits the filtered items.
33738
+ */
33663
33739
  this.filterPipe = pipe(tap());
33664
33740
  this.onListClassChange = new EventEmitter();
33665
33741
  this.DISPLAY_OPTIONS = [
@@ -33720,11 +33796,11 @@ class ListDisplaySwitchComponent {
33720
33796
  return this.listKey || this.location.path();
33721
33797
  }
33722
33798
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListDisplaySwitchComponent, deps: [{ token: i1$a.Location }], target: i0.ɵɵFactoryTarget.Component }); }
33723
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListDisplaySwitchComponent, isStandalone: true, selector: "c8y-list-display-switch", inputs: { listKey: "listKey", listLength: "listLength", filterPipe: "filterPipe" }, outputs: { onListClassChange: "onListClassChange" }, ngImport: i0, template: "<div class=\"d-flex\">\n <label class=\"m-r-8\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
33799
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ListDisplaySwitchComponent, isStandalone: true, selector: "c8y-list-display-switch", inputs: { listKey: "listKey", listLength: "listLength", filterPipe: "filterPipe" }, outputs: { onListClassChange: "onListClassChange" }, ngImport: i0, template: "<div class=\"d-flex a-i-center\">\n <label class=\"m-r-8 m-b-0\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
33724
33800
  }
33725
33801
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ListDisplaySwitchComponent, decorators: [{
33726
33802
  type: Component,
33727
- args: [{ selector: 'c8y-list-display-switch', standalone: true, imports: [FormsModule$1, NgFor, C8yTranslatePipe], template: "<div class=\"d-flex\">\n <label class=\"m-r-8\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n" }]
33803
+ args: [{ selector: 'c8y-list-display-switch', standalone: true, imports: [FormsModule$1, NgFor, C8yTranslatePipe], template: "<div class=\"d-flex a-i-center\">\n <label class=\"m-r-8 m-b-0\" id=\"listLabel\">\n {{ 'Display as' | translate }}\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n aria-labelledby=\"listLabel\"\n name=\"listLabel\"\n class=\"form-control\"\n [ngModel]=\"selectedOption\"\n (ngModelChange)=\"onOptionSelect($event)\"\n [attr.aria-label]=\"'Display mode' | translate\"\n >\n <option *ngFor=\"let option of DISPLAY_OPTIONS\" [ngValue]=\"option\">\n {{ option.label | translate }}\n </option>\n </select>\n <span></span>\n </div>\n</div>\n" }]
33728
33804
  }], ctorParameters: () => [{ type: i1$a.Location }], propDecorators: { listKey: [{
33729
33805
  type: Input
33730
33806
  }], listLength: [{
@@ -33810,6 +33886,11 @@ class RangeDisplayComponent {
33810
33886
  this.destroyed$.next();
33811
33887
  this.destroyed$.complete();
33812
33888
  }
33889
+ /**
33890
+ *
33891
+ * @returns true if the target value is within the defined range, false otherwise.
33892
+ * This method checks if the target value is defined and falls within the minimum and maximum range
33893
+ */
33813
33894
  checkTarget() {
33814
33895
  return (this.config.target !== undefined &&
33815
33896
  this.config.target !== null &&
@@ -33834,6 +33915,12 @@ class RangeDisplayComponent {
33834
33915
  const { yellowRangeMin, yellowRangeMax } = this.config;
33835
33916
  return this.isRangeDisplayed(yellowRangeMin, yellowRangeMax);
33836
33917
  }
33918
+ /**
33919
+ * Checks if the given range is displayed.
33920
+ * @param rangeMin - The minimum value of the range.
33921
+ * @param rangeMax - The maximum value of the range.
33922
+ * * @returns true if the range is displayed, false otherwise.
33923
+ */
33837
33924
  isRangeDisplayed(rangeMin, rangeMax) {
33838
33925
  return rangeMin === 0 || rangeMax === 0 || (rangeMin && rangeMax);
33839
33926
  }
@@ -35040,20 +35127,13 @@ class PreviewService extends ExtensionPointForPlugins {
35040
35127
  if (!success) {
35041
35128
  throw new Error(`Failed to toggle feature with key "${key}".`);
35042
35129
  }
35130
+ this.checkIfReloadNeeded(feature, key);
35043
35131
  return;
35044
35132
  }
35045
35133
  const featureToUpdate = { key: feature.key, active: toggleValue };
35046
35134
  await this.featureService.updateFeature(featureToUpdate);
35047
- await this.featureCacheService.resetFeatureState();
35048
- if (feature.settings?.reload) {
35049
- if (this.toggledFeaturesWithReload.has(key)) {
35050
- this.toggledFeaturesWithReload.delete(key);
35051
- }
35052
- else {
35053
- this.toggledFeaturesWithReload.add(key);
35054
- }
35055
- }
35056
- this.reload$.next(this.toggledFeaturesWithReload.size > 0);
35135
+ this.featureCacheService.resetFeatureState();
35136
+ this.checkIfReloadNeeded(feature, key);
35057
35137
  }
35058
35138
  /**
35059
35139
  * Marks all unseen features as seen by the user and updates the local storage.
@@ -35081,6 +35161,17 @@ class PreviewService extends ExtensionPointForPlugins {
35081
35161
  : of(feat))).pipe(map(features => features.filter(Boolean)));
35082
35162
  }));
35083
35163
  }
35164
+ checkIfReloadNeeded(feature, key) {
35165
+ if (feature.settings?.reload) {
35166
+ if (this.toggledFeaturesWithReload.has(key)) {
35167
+ this.toggledFeaturesWithReload.delete(key);
35168
+ }
35169
+ else {
35170
+ this.toggledFeaturesWithReload.add(key);
35171
+ }
35172
+ }
35173
+ this.reload$.next(this.toggledFeaturesWithReload.size > 0);
35174
+ }
35084
35175
  /**
35085
35176
  *
35086
35177
  * @returns An array of feature names that have been seen by the user. This is retrieved from local storage.