@c8y/ngx-components 1022.34.0 → 1022.44.3

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 (943) hide show
  1. package/actility-device-registration/actility-device-registration.component.d.ts.map +1 -1
  2. package/actility-device-registration/actility-device-registration.service.d.ts.map +1 -1
  3. package/alarms/alarm-details.component.d.ts.map +1 -1
  4. package/alarms/alarm-info.component.d.ts.map +1 -1
  5. package/alarms/alarm-severity-to-icon-class.pipe.d.ts +9 -0
  6. package/alarms/alarm-severity-to-icon-class.pipe.d.ts.map +1 -0
  7. package/alarms/alarms-icon.component.d.ts.map +1 -1
  8. package/alarms/alarms-interval-refresh.component.d.ts.map +1 -1
  9. package/alarms/alarms-list.component.d.ts.map +1 -1
  10. package/alarms/alarms-view.service.d.ts.map +1 -1
  11. package/alarms/alarms.component.d.ts.map +1 -1
  12. package/alarms/alarms.helper.d.ts.map +1 -1
  13. package/alarms/alarms.model.d.ts.map +1 -1
  14. package/alarms/cockpit/index.d.ts.map +1 -1
  15. package/alarms/devicemanagement/index.d.ts.map +1 -1
  16. package/alarms/index.d.ts +1 -0
  17. package/alarms/index.d.ts.map +1 -1
  18. package/asset-properties/asset-properties.model.d.ts +77 -1
  19. package/asset-properties/asset-properties.model.d.ts.map +1 -1
  20. package/asset-properties/asset-properties.service.d.ts +17 -0
  21. package/asset-properties/asset-properties.service.d.ts.map +1 -1
  22. package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts +14 -0
  23. package/asset-properties/asset-property-list/asset-property-collapse-button-title.pipe.d.ts.map +1 -0
  24. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts +2 -1
  25. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
  26. package/asset-properties/asset-property-list/asset-property-list.component.d.ts +52 -13
  27. package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
  28. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts +7 -3
  29. package/asset-properties/asset-property-list/asset-property-value.pipe.d.ts.map +1 -1
  30. package/asset-properties/asset-property-list/tree-data-source.d.ts +1 -0
  31. package/asset-properties/asset-property-list/tree-data-source.d.ts.map +1 -1
  32. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
  33. package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts +39 -0
  34. package/asset-properties/computed-properties-config/computed-properties-config.component.d.ts.map +1 -0
  35. package/asset-properties/computed-properties.service.d.ts +27 -0
  36. package/asset-properties/computed-properties.service.d.ts.map +1 -0
  37. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +11 -6
  38. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -1
  39. package/asset-properties/custom-properties-drawer.service.d.ts +2 -1
  40. package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -1
  41. package/asset-properties/index.d.ts +1 -0
  42. package/asset-properties/index.d.ts.map +1 -1
  43. package/assets-navigator/asset-node.d.ts.map +1 -1
  44. package/assets-navigator/asset-node.service.d.ts.map +1 -1
  45. package/assets-navigator/asset-selector/asset-selector-node.component.d.ts.map +1 -1
  46. package/assets-navigator/asset-selector/asset-selector.model.d.ts +1 -2
  47. package/assets-navigator/asset-selector/asset-selector.model.d.ts.map +1 -1
  48. package/assets-navigator/asset-selector/miller-view.component.d.ts +17 -5
  49. package/assets-navigator/asset-selector/miller-view.component.d.ts.map +1 -1
  50. package/assets-navigator/asset-selector/unassigned-devices-node.d.ts.map +1 -1
  51. package/assets-navigator/load-more-node.d.ts.map +1 -1
  52. package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
  53. package/auth-configuration/basic-settings/session-configuration.component.d.ts.map +1 -1
  54. package/auth-configuration/factories/navigation.factory.d.ts.map +1 -1
  55. package/auth-configuration/factories/tabs.factory.d.ts.map +1 -1
  56. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
  57. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts.map +1 -1
  58. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
  59. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
  60. package/binary-file-download/binary-file-download.service.d.ts.map +1 -1
  61. package/bookmarks/bookmarks.component.d.ts.map +1 -1
  62. package/bookmarks/bookmarks.service.d.ts.map +1 -1
  63. package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts.map +1 -1
  64. package/branding/dark-theme/dark-theme-tab.factory.d.ts.map +1 -1
  65. package/branding/extra-css-branding-editor/extra-css-branding-editor-tab.factory.d.ts.map +1 -1
  66. package/branding/plain-branding-editor/plain-branding-editor-tab.factory.d.ts.map +1 -1
  67. package/branding/shared/lazy/branding-form/branding-form.component.d.ts.map +1 -1
  68. package/branding/shared/lazy/branding-import-modal/branding-import-modal.component.d.ts.map +1 -1
  69. package/branding/shared/lazy/edit-branding-router-outlet/edit-branding-router-outlet.component.d.ts.map +1 -1
  70. package/cockpit-config/cockpit-config.guard.d.ts.map +1 -1
  71. package/cockpit-config/cockpit-configuration.component.d.ts.map +1 -1
  72. package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts +8 -0
  73. package/computed-asset-properties/alarm-count/alarm-count-3-months-computed-property.d.ts.map +1 -0
  74. package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts +26 -0
  75. package/computed-asset-properties/alarm-count/alarm-count-config.component.d.ts.map +1 -0
  76. package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts +8 -0
  77. package/computed-asset-properties/alarm-count/alarm-count-today-computed-property.d.ts.map +1 -0
  78. package/computed-asset-properties/alarm-count/alarm-count-value.d.ts +17 -0
  79. package/computed-asset-properties/alarm-count/alarm-count-value.d.ts.map +1 -0
  80. package/computed-asset-properties/alarm-count/alarm-count.model.d.ts +6 -0
  81. package/computed-asset-properties/alarm-count/alarm-count.model.d.ts.map +1 -0
  82. package/computed-asset-properties/c8y-ngx-components-computed-asset-properties.d.ts.map +1 -0
  83. package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts +14 -0
  84. package/computed-asset-properties/child-count/child-assets-count-computed-property.d.ts.map +1 -0
  85. package/computed-asset-properties/child-count/child-count-value.d.ts +14 -0
  86. package/computed-asset-properties/child-count/child-count-value.d.ts.map +1 -0
  87. package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts +14 -0
  88. package/computed-asset-properties/child-count/child-devices-count-computed-property.d.ts.map +1 -0
  89. package/computed-asset-properties/common/realtime-value-base.d.ts +32 -0
  90. package/computed-asset-properties/common/realtime-value-base.d.ts.map +1 -0
  91. package/computed-asset-properties/common/realtime-value-handler.d.ts +19 -0
  92. package/computed-asset-properties/common/realtime-value-handler.d.ts.map +1 -0
  93. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts +7 -0
  94. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-computed-property.d.ts.map +1 -0
  95. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts +21 -0
  96. package/computed-asset-properties/configuration-snapshot/configuration-snapshot-config.component.d.ts.map +1 -0
  97. package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts +8 -0
  98. package/computed-asset-properties/configuration-snapshot/configuration-snapshot.model.d.ts.map +1 -0
  99. package/computed-asset-properties/event-count/event-count-3-months.d.ts +8 -0
  100. package/computed-asset-properties/event-count/event-count-3-months.d.ts.map +1 -0
  101. package/computed-asset-properties/event-count/event-count-config.component.d.ts +18 -0
  102. package/computed-asset-properties/event-count/event-count-config.component.d.ts.map +1 -0
  103. package/computed-asset-properties/event-count/event-count-today.d.ts +8 -0
  104. package/computed-asset-properties/event-count/event-count-today.d.ts.map +1 -0
  105. package/computed-asset-properties/event-count/event-count-value.d.ts +17 -0
  106. package/computed-asset-properties/event-count/event-count-value.d.ts.map +1 -0
  107. package/computed-asset-properties/event-count/event-count.model.d.ts +4 -0
  108. package/computed-asset-properties/event-count/event-count.model.d.ts.map +1 -0
  109. package/computed-asset-properties/index.d.ts +3 -0
  110. package/computed-asset-properties/index.d.ts.map +1 -0
  111. package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts +3 -0
  112. package/computed-asset-properties/last-device-message/last-device-message-computed-property.d.ts.map +1 -0
  113. package/computed-asset-properties/last-device-message/last-device-message-value.d.ts +13 -0
  114. package/computed-asset-properties/last-device-message/last-device-message-value.d.ts.map +1 -0
  115. package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts +8 -0
  116. package/computed-asset-properties/last-measurement/last-measurement-computed-property.d.ts.map +1 -0
  117. package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts +48 -0
  118. package/computed-asset-properties/last-measurement/last-measurement-config.component.d.ts.map +1 -0
  119. package/computed-asset-properties/last-measurement/last-measurement-value.d.ts +13 -0
  120. package/computed-asset-properties/last-measurement/last-measurement-value.d.ts.map +1 -0
  121. package/computed-asset-properties/last-measurement/last-measurement.model.d.ts +28 -0
  122. package/computed-asset-properties/last-measurement/last-measurement.model.d.ts.map +1 -0
  123. package/computed-asset-properties/strategies/alarm-count-strategy.d.ts +17 -0
  124. package/computed-asset-properties/strategies/alarm-count-strategy.d.ts.map +1 -0
  125. package/computed-asset-properties/strategies/child-count-strategy.d.ts +14 -0
  126. package/computed-asset-properties/strategies/child-count-strategy.d.ts.map +1 -0
  127. package/computed-asset-properties/strategies/count-strategy-base.d.ts +12 -0
  128. package/computed-asset-properties/strategies/count-strategy-base.d.ts.map +1 -0
  129. package/computed-asset-properties/strategies/event-count-strategy.d.ts +16 -0
  130. package/computed-asset-properties/strategies/event-count-strategy.d.ts.map +1 -0
  131. package/computed-asset-properties/strategies/last-device-message-strategy.d.ts +20 -0
  132. package/computed-asset-properties/strategies/last-device-message-strategy.d.ts.map +1 -0
  133. package/computed-asset-properties/strategies/last-measurement-strategy.d.ts +16 -0
  134. package/computed-asset-properties/strategies/last-measurement-strategy.d.ts.map +1 -0
  135. package/connectivity/abstract-connectivity-node.factory.d.ts.map +1 -1
  136. package/connectivity/actility/actility-tab.factory.d.ts.map +1 -1
  137. package/connectivity/sigfox/sigfox-tab.factory.d.ts.map +1 -1
  138. package/connectivity/sim/sim.module.d.ts.map +1 -1
  139. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.component.d.ts.map +1 -1
  140. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.model.d.ts.map +1 -1
  141. package/context-dashboard/cockpit-home-dashboard/cockpit-dashboard.module.d.ts.map +1 -1
  142. package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
  143. package/context-dashboard/context-dashboard.model.d.ts +16 -0
  144. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  145. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  146. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  147. package/context-dashboard/dashboard-detail.service.d.ts.map +1 -1
  148. package/context-dashboard/dashboard-details-tabs.factory.d.ts.map +1 -1
  149. package/context-dashboard/dashboard-settings/dashboard-general-settings.component.d.ts.map +1 -1
  150. package/context-dashboard/dashboard-settings/dashboard-version-history.component.d.ts.map +1 -1
  151. package/context-dashboard/dashboard-settings/typed-dashboard-settings.component.d.ts.map +1 -1
  152. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts.map +1 -1
  153. package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts.map +1 -1
  154. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts.map +1 -1
  155. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts.map +1 -1
  156. package/context-dashboard/new-dashboard.guard.d.ts.map +1 -1
  157. package/context-dashboard/widget-config/appearance-settings.component.d.ts.map +1 -1
  158. package/context-dashboard/widget-config.service.d.ts +11 -1
  159. package/context-dashboard/widget-config.service.d.ts.map +1 -1
  160. package/core/action/action.service.d.ts +1 -1
  161. package/core/action-bar/action-bar.service.d.ts +1 -1
  162. package/core/authentication/simplified-auth.service.d.ts +1 -1
  163. package/core/authentication/simplified-auth.service.d.ts.map +1 -1
  164. package/core/breadcrumb/breadcrumb.service.d.ts +1 -1
  165. package/core/common/date.pipe.d.ts.map +1 -1
  166. package/core/common/extension-hooks.d.ts.map +1 -1
  167. package/core/common/options.service.d.ts +1 -1
  168. package/core/common/service-registry.service.d.ts +1 -1
  169. package/core/common/ui-state.service.d.ts +7 -7
  170. package/core/common/ui-state.service.d.ts.map +1 -1
  171. package/core/common/user-preferences/user-preferences.service.d.ts +4 -4
  172. package/core/common/user-preferences/user-preferences.service.d.ts.map +1 -1
  173. package/core/dashboard/widgets-dashboard.component.d.ts +1 -1
  174. package/core/dashboard/widgets-dashboard.component.d.ts.map +1 -1
  175. package/core/data-grid/action-controls-extension.service.d.ts +1 -1
  176. package/core/data-grid/filter-chip/filter-mapper.factory.d.ts +1 -1
  177. package/core/date-picker/date-picker.component.d.ts.map +1 -1
  178. package/core/docs/docs.models.d.ts +1 -1
  179. package/core/docs/docs.module.d.ts +1 -1
  180. package/core/docs/help-and-support-outlet/help-and-support-outlet.module.d.ts +1 -1
  181. package/core/docs/legal-notices-outlet/legal-notices-outlet.module.d.ts +1 -1
  182. package/core/docs/support-outlet/support-outlet.component.d.ts +4 -3
  183. package/core/docs/support-outlet/support-outlet.component.d.ts.map +1 -1
  184. package/core/docs/support-outlet/support-outlet.module.d.ts +1 -1
  185. package/core/drawer/drawer.service.d.ts +1 -1
  186. package/core/dynamic-component/dynamic-component.model.d.ts +18 -4
  187. package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
  188. package/core/dynamic-forms/i18n/translate.extension.d.ts.map +1 -1
  189. package/core/feedback-form/feedback-form.component.d.ts +27 -0
  190. package/core/feedback-form/feedback-form.component.d.ts.map +1 -0
  191. package/core/feedback-form/feedback-form.model.d.ts +6 -0
  192. package/core/feedback-form/feedback-form.model.d.ts.map +1 -0
  193. package/core/feedback-form/index.d.ts +2 -0
  194. package/core/feedback-form/index.d.ts.map +1 -0
  195. package/core/i18n/gettext.d.ts +4 -1
  196. package/core/i18n/gettext.d.ts.map +1 -1
  197. package/core/i18n/pattern-messages.data.d.ts +61 -0
  198. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  199. package/core/i18n/patterns-message.hook.d.ts +1 -1
  200. package/core/index.d.ts +1 -0
  201. package/core/index.d.ts.map +1 -1
  202. package/core/modal/modal.service.d.ts +0 -1
  203. package/core/modal/modal.service.d.ts.map +1 -1
  204. package/core/navigator/navigator-bottom/navigator-bottom.module.d.ts +1 -1
  205. package/core/navigator/navigator-top/navigator-top.module.d.ts +1 -1
  206. package/core/navigator/navigator.module.d.ts +1 -1
  207. package/core/navigator/navigator.service.d.ts +1 -1
  208. package/core/plugins/index.d.ts +1 -0
  209. package/core/plugins/index.d.ts.map +1 -1
  210. package/core/plugins/plugins-injection-token.d.ts +14 -0
  211. package/core/plugins/plugins-injection-token.d.ts.map +1 -0
  212. package/core/plugins/plugins-loader.service.d.ts +7 -21
  213. package/core/plugins/plugins-loader.service.d.ts.map +1 -1
  214. package/core/plugins/plugins-resolve.service.d.ts +1 -0
  215. package/core/plugins/plugins-resolve.service.d.ts.map +1 -1
  216. package/core/preview-feature/preview-feature.component.d.ts.map +1 -1
  217. package/core/preview-feature/preview-feature.service.d.ts +1 -1
  218. package/core/provider-configuration/provider-configuration-hook.d.ts +1 -1
  219. package/core/query-param-handler/index.d.ts +1 -1
  220. package/core/query-param-handler/query-param-bottom-drawer.service.d.ts +1 -1
  221. package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
  222. package/core/query-param-handler/query-param-modal-handler.service.d.ts +1 -1
  223. package/core/router/router.service.d.ts +1 -1
  224. package/core/search/search.service.d.ts +1 -1
  225. package/core/stepper/stepper.service.d.ts +1 -1
  226. package/core/tabs/tab.component.d.ts +2 -2
  227. package/core/tabs/tab.component.d.ts.map +1 -1
  228. package/core/tabs/tab.model.d.ts +2 -2
  229. package/core/tabs/tab.model.d.ts.map +1 -1
  230. package/core/tabs/tabs.service.d.ts +1 -1
  231. package/core/tabs/tabs.service.d.ts.map +1 -1
  232. package/core/ui-settings/ui-settings.module.d.ts +1 -1
  233. package/core/user/change-current-user-password.service.d.ts +10 -0
  234. package/core/user/change-current-user-password.service.d.ts.map +1 -0
  235. package/core/user/index.d.ts +1 -0
  236. package/core/user/index.d.ts.map +1 -1
  237. package/core/user/user-details-drawer/user-details-drawer.module.d.ts +1 -1
  238. package/core/user/user-menu.service.d.ts +1 -1
  239. package/core/user/user.module.d.ts +1 -1
  240. package/core/version/version.model.d.ts +1 -1
  241. package/core/version/version.module.d.ts +1 -1
  242. package/core/wizard/wizard.model.d.ts +1 -1
  243. package/dashboard-details-advanced-tab/advanced-tab.factory.d.ts.map +1 -1
  244. package/dashboard-details-advanced-tab/assign-widget-assets/assign-widget-asset-modal.component.d.ts.map +1 -1
  245. package/dashboard-details-advanced-tab/dashboard-json-editor/dashboard-json-editor.component.d.ts.map +1 -1
  246. package/dashboard-details-advanced-tab/dashboard-json-editor/import-export-widgets.service.d.ts.map +1 -1
  247. package/dashboard-manager/dashboard-manager-tabs.factory.d.ts.map +1 -1
  248. package/dashboard-manager/dashboard-manager.service.d.ts.map +1 -1
  249. package/dashboard-manager/devicemanagement/index.d.ts +1 -1
  250. package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts.map +1 -1
  251. package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts.map +1 -1
  252. package/dashboard-manager/type-dashboards-list/device-type-value.grid-column.d.ts.map +1 -1
  253. package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  254. package/data-grid-columns/asset-type/asset-type-grid-column.d.ts.map +1 -1
  255. package/data-grid-columns/asset-type/asset-type.cell-renderer.component.d.ts.map +1 -1
  256. package/datapoint-explorer/datapoint-explorer-navigation-factory.d.ts.map +1 -1
  257. package/datapoint-explorer/devicemanagement/index.d.ts +3 -0
  258. package/datapoint-explorer/devicemanagement/index.d.ts.map +1 -1
  259. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts +4 -2
  260. package/datapoint-explorer/view/configuration/workspace-configuration.component.d.ts.map +1 -1
  261. package/datapoint-explorer/view/create-new-report-modal/create-new-report-modal.component.d.ts.map +1 -1
  262. package/datapoint-explorer/view/datapoint-explorer.component.d.ts +7 -3
  263. package/datapoint-explorer/view/datapoint-explorer.component.d.ts.map +1 -1
  264. package/datapoint-explorer/view/datapoint-explorer.model.d.ts +1 -0
  265. package/datapoint-explorer/view/datapoint-explorer.model.d.ts.map +1 -1
  266. package/datapoint-explorer/view/index.d.ts +3 -0
  267. package/datapoint-explorer/view/index.d.ts.map +1 -1
  268. package/datapoint-explorer/view/send-as-widget-to-dashboard-modal/send-as-widget-to-dashboard-modal.component.d.ts.map +1 -1
  269. package/datapoint-explorer/view/send-as-widget-to-report-modal/send-as-widget-to-report-modal.component.d.ts.map +1 -1
  270. package/datapoint-library/datapoint-library.module.d.ts.map +1 -1
  271. package/datapoint-library/details/datapoint-library-details.component.d.ts +1 -2
  272. package/datapoint-library/details/datapoint-library-details.component.d.ts.map +1 -1
  273. package/datapoint-library/list/datapoint-library-list.component.d.ts.map +1 -1
  274. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form-validation.service.d.ts.map +1 -1
  275. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
  276. package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts.map +1 -1
  277. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  278. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-export-selector-file-exporter.service.d.ts.map +1 -1
  279. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/datapoints-exports-selector-time-range/datapoints-exports-selector-time-range.component.d.ts.map +1 -1
  280. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-modal.component.d.ts.map +1 -1
  281. package/datapoints-export-selector/datapoints-export-selector.model.d.ts.map +1 -1
  282. package/default-subscriptions/default-subscriptions-navigation.factory.d.ts.map +1 -1
  283. package/default-subscriptions/default-subscriptions.component.d.ts.map +1 -1
  284. package/device-grid/columns/alarms.cell-renderer.component.d.ts.map +1 -1
  285. package/device-grid/columns/alarms.device-grid-column.d.ts.map +1 -1
  286. package/device-grid/columns/group.device-grid-column.d.ts.map +1 -1
  287. package/device-grid/columns/imei.device-grid-column.d.ts.map +1 -1
  288. package/device-grid/columns/model.device-grid-column.d.ts.map +1 -1
  289. package/device-grid/columns/name.device-grid-column.d.ts.map +1 -1
  290. package/device-grid/columns/registration-date.device-grid-column.d.ts.map +1 -1
  291. package/device-grid/columns/serial-number.device-grid-column.d.ts.map +1 -1
  292. package/device-grid/columns/status.device-grid-column.d.ts.map +1 -1
  293. package/device-grid/columns/system-id.device-grid-column.d.ts.map +1 -1
  294. package/device-grid/columns/type.device-grid-column.d.ts.map +1 -1
  295. package/device-grid/device-grid.component.d.ts.map +1 -1
  296. package/device-grid/device-grid.service.d.ts.map +1 -1
  297. package/device-list/add-smart-group.component.d.ts.map +1 -1
  298. package/device-list/device-list-navigation.factory.d.ts.map +1 -1
  299. package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
  300. package/device-map/device-map-navigation.factory.d.ts.map +1 -1
  301. package/device-profile/add-device-profile.component.d.ts.map +1 -1
  302. package/device-profile/device-profile-list.component.d.ts.map +1 -1
  303. package/device-profile/device-profile-navigation.factory.d.ts.map +1 -1
  304. package/device-profile/device-profile.component.d.ts.map +1 -1
  305. package/device-profile/device-profile.service.d.ts.map +1 -1
  306. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
  307. package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
  308. package/device-protocols/device-protocols.guard.d.ts.map +1 -1
  309. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -1
  310. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  311. package/device-shell/device-shell.module.d.ts.map +1 -1
  312. package/device-shell/shared/device-shell.service.d.ts.map +1 -1
  313. package/device-shell/shell/shell.component.d.ts.map +1 -1
  314. package/diagnostics/diagnostics.module.d.ts.map +1 -1
  315. package/diagnostics/diagnostics.service.d.ts.map +1 -1
  316. package/echart/charts.component.d.ts +11 -2
  317. package/echart/charts.component.d.ts.map +1 -1
  318. package/echart/index.d.ts +1 -0
  319. package/echart/index.d.ts.map +1 -1
  320. package/echart/models/chart.model.d.ts +5 -0
  321. package/echart/models/chart.model.d.ts.map +1 -1
  322. package/echart/models/datapoints-graph-widget.model.d.ts +2 -0
  323. package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -1
  324. package/echart/select-aggregated-datapoint/select-aggregated-datapoint.component.d.ts +18 -0
  325. package/echart/select-aggregated-datapoint/select-aggregated-datapoint.component.d.ts.map +1 -0
  326. package/echart/services/chart-helpers.service.d.ts +4 -0
  327. package/echart/services/chart-helpers.service.d.ts.map +1 -1
  328. package/echart/services/echarts-options.service.d.ts +4 -5
  329. package/echart/services/echarts-options.service.d.ts.map +1 -1
  330. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  331. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  332. package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts.map +1 -1
  333. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -1
  334. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  335. package/ecosystem/application-plugins/plugin-list.service.d.ts.map +1 -1
  336. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  337. package/ecosystem/application-properties/application-properties.component.d.ts.map +1 -1
  338. package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts.map +1 -1
  339. package/ecosystem/ecosystem-tabs.factory.d.ts.map +1 -1
  340. package/ecosystem/license-confirm/license-confirm-modal.component.d.ts.map +1 -1
  341. package/ecosystem/license-confirm/license-view.component.d.ts.map +1 -1
  342. package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
  343. package/ecosystem/packages/add-package.component.d.ts.map +1 -1
  344. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  345. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  346. package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts.map +1 -1
  347. package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
  348. package/ecosystem/plugin-setup-stepper/plugin-setup-stepper.module.d.ts.map +1 -1
  349. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  350. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  351. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -1
  352. package/ecosystem/shared/ecosystem.constants.d.ts.map +1 -1
  353. package/ecosystem/shared/ecosystem.service.d.ts.map +1 -1
  354. package/ecosystem/shared/package-availability.service.d.ts.map +1 -1
  355. package/ecosystem/shared/package-version-select/package-version-select.component.d.ts.map +1 -1
  356. package/ecosystem/shared/upload-archive.component.d.ts.map +1 -1
  357. package/editor/editor.component.d.ts +15 -0
  358. package/editor/editor.component.d.ts.map +1 -1
  359. package/exports/index.d.ts +1 -1
  360. package/exports/index.d.ts.map +1 -1
  361. package/exports/list/exports-grid.service.d.ts.map +1 -1
  362. package/exports/list/exports-list/exports-list.component.d.ts.map +1 -1
  363. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +2 -1
  364. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +8 -7
  366. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  367. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +2 -1
  368. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs +2 -1
  370. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-alarms.mjs +40 -2
  372. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  373. package/fesm2022/c8y-ngx-components-asset-properties.mjs +608 -97
  374. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  375. package/fesm2022/c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map +1 -1
  376. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +70 -23
  377. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  378. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -1
  379. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  380. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +2 -1
  381. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  382. package/fesm2022/c8y-ngx-components-bookmarks.mjs +2 -1
  383. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  384. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +2 -1
  385. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  386. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +3 -3
  387. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  388. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +2 -1
  389. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  390. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +22 -12
  391. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  392. package/fesm2022/c8y-ngx-components-child-devices.mjs +2 -1
  393. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  394. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +2 -1
  395. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  396. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs +68 -0
  397. package/fesm2022/c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BOpIFCYh.mjs.map +1 -0
  398. package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs +73 -0
  399. package/fesm2022/c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-D8otkLI8.mjs.map +1 -0
  400. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs +44 -0
  401. package/fesm2022/c8y-ngx-components-computed-asset-properties-event-count-config.component-AVm6qa9k.mjs.map +1 -0
  402. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs +91 -0
  403. package/fesm2022/c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CtUoKGuU.mjs.map +1 -0
  404. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +643 -0
  405. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs.map +1 -0
  406. package/fesm2022/c8y-ngx-components-connectivity.mjs +2 -1
  407. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  408. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +2 -1
  409. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  410. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs} +3 -2
  411. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BkcNSexF.mjs.map +1 -0
  412. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs} +3 -2
  413. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-D9W68e7h.mjs.map +1 -0
  414. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +43 -10
  415. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  416. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs} +12 -8
  417. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-D0lATUjO.mjs.map +1 -0
  418. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +4 -3
  419. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  420. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +2 -1
  421. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  422. package/fesm2022/c8y-ngx-components-data-broker.mjs +2 -1
  423. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  424. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +2 -1
  425. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  426. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +2 -1
  427. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  428. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs +38 -9
  429. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  430. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +61 -46
  431. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  432. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +2 -1
  433. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  434. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +2 -1
  435. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  436. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +2 -1
  437. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  438. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +2 -1
  439. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  440. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +2 -1
  441. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  442. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +2 -1
  443. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  444. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +2 -1
  445. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  446. package/fesm2022/c8y-ngx-components-device-grid.mjs +3 -3
  447. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  448. package/fesm2022/c8y-ngx-components-device-list.mjs +2 -1
  449. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  450. package/fesm2022/c8y-ngx-components-device-map.mjs +2 -1
  451. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  452. package/fesm2022/c8y-ngx-components-device-profile.mjs +2 -1
  453. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  454. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -2
  455. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  456. package/fesm2022/c8y-ngx-components-device-protocols.mjs +2 -1
  457. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  458. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +2 -1
  459. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  460. package/fesm2022/c8y-ngx-components-device-shell.mjs +2 -1
  461. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  462. package/fesm2022/c8y-ngx-components-diagnostics.mjs +2 -1
  463. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  464. package/fesm2022/c8y-ngx-components-echart-models.mjs +9 -2
  465. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  466. package/fesm2022/c8y-ngx-components-echart.mjs +319 -140
  467. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  468. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +2 -1
  469. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  470. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +2 -1
  471. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  472. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +2 -1
  473. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  474. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +2 -1
  475. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  476. package/fesm2022/c8y-ngx-components-ecosystem.mjs +2 -1
  477. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  478. package/fesm2022/c8y-ngx-components-editor.mjs +15 -0
  479. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  480. package/fesm2022/c8y-ngx-components-events.mjs +1 -1
  481. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  482. package/fesm2022/c8y-ngx-components-exports-list.mjs +2 -1
  483. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  484. package/fesm2022/c8y-ngx-components-exports.mjs +2 -1
  485. package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
  486. package/fesm2022/c8y-ngx-components-file-preview.mjs +2 -1
  487. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  488. package/fesm2022/c8y-ngx-components-files-repository.mjs +2 -1
  489. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  490. package/fesm2022/c8y-ngx-components-icon-selector.mjs +2 -1
  491. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  492. package/fesm2022/c8y-ngx-components-location.mjs +2 -1
  493. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  494. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +2 -1
  495. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  496. package/fesm2022/c8y-ngx-components-map.mjs +2 -1
  497. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  498. package/fesm2022/c8y-ngx-components-messaging-management.mjs +2 -1
  499. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  500. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +2 -1
  501. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  502. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +2 -1
  503. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  504. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +2 -1
  505. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  506. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +2 -1
  507. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  508. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +2 -1
  509. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  510. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +2 -1
  511. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  512. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +2 -1
  513. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  514. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +2 -1
  515. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  516. package/fesm2022/c8y-ngx-components-operations-shared.mjs +2 -1
  517. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  518. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +4 -4
  519. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  520. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +4 -4
  521. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  522. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +4 -4
  523. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  524. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +4 -4
  525. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  526. package/fesm2022/c8y-ngx-components-operations.mjs +2 -1
  527. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  528. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +2 -1
  529. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  530. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +2 -1
  531. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  532. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +2 -1
  533. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  534. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs +1 -1
  535. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
  536. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +2 -1
  537. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  538. package/fesm2022/c8y-ngx-components-register-device.mjs +2 -1
  539. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  540. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +3 -3
  541. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  542. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +2 -1
  543. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  544. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +2 -1
  545. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  546. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +2 -1
  547. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  548. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +2 -1
  549. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  550. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +3 -3
  551. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  552. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +2 -1
  553. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  554. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +2 -1
  555. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  556. package/fesm2022/c8y-ngx-components-replace-device.mjs +2 -1
  557. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  558. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +2 -1
  559. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  560. package/fesm2022/c8y-ngx-components-reports.mjs +2 -1
  561. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  562. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +2 -1
  563. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  564. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +2 -1
  565. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  566. package/fesm2022/c8y-ngx-components-repository-shared.mjs +3 -2
  567. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  568. package/fesm2022/c8y-ngx-components-repository-software.mjs +2 -1
  569. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  570. package/fesm2022/c8y-ngx-components-search.mjs +2 -1
  571. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  572. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +2 -1
  573. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  574. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +3 -2
  575. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  576. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +2 -1
  577. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  578. package/fesm2022/c8y-ngx-components-services-shared.mjs +1 -1
  579. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  580. package/fesm2022/c8y-ngx-components-services.mjs +2 -1
  581. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  582. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +2 -1
  583. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  584. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +3 -2
  585. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  586. package/fesm2022/c8y-ngx-components-sub-assets.mjs +2 -1
  587. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  588. package/fesm2022/c8y-ngx-components-tenants.mjs +37 -37
  589. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  590. package/fesm2022/c8y-ngx-components-tracking.mjs +2 -1
  591. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  592. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +5 -5
  593. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  594. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +2 -1
  595. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  596. package/fesm2022/c8y-ngx-components-upgrade.mjs +10 -3
  597. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  598. package/fesm2022/c8y-ngx-components-user-roles.mjs +2 -1
  599. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  600. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +2 -1
  601. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  602. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +2 -1
  603. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  604. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +2 -1
  605. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  606. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs +2 -1
  607. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  608. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +2 -1
  609. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  610. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs +2 -1
  611. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  612. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs +2 -1
  613. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  614. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +2 -1
  615. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  616. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +2 -1
  617. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  618. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +2 -1
  619. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  620. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs +1 -1
  621. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  622. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs +2 -1
  623. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  624. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +3 -3
  625. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  626. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +3 -6
  627. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  628. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +2 -1
  629. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  630. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +2 -1
  631. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  632. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +2 -1
  633. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  634. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +2 -1
  635. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  636. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +2 -2
  637. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  638. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs +2 -1
  639. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
  640. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +2 -1
  641. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  642. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +2 -1
  643. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  644. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +2 -1
  645. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  646. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +2 -1
  647. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  648. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +2 -1
  649. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  650. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +9 -6
  651. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  652. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +15 -7
  653. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  654. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +2 -1
  655. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  656. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +2 -1
  657. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  658. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +2 -1
  659. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  660. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +2 -1
  661. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  662. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +13 -8
  663. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  664. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +2 -1
  665. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  666. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +2 -1
  667. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  668. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +2 -1
  669. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  670. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +2 -1
  671. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  672. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +2 -1
  673. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  674. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +2 -1
  675. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  676. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs +3 -10
  677. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
  678. package/fesm2022/c8y-ngx-components.mjs +694 -504
  679. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  680. package/file-preview/file-preview.component.d.ts.map +1 -1
  681. package/files-repository/files-repository-navigation.factory.d.ts.map +1 -1
  682. package/files-repository/files-repository-upload.component.d.ts.map +1 -1
  683. package/files-repository/files-repository.component.d.ts.map +1 -1
  684. package/files-repository/files-repository.service.d.ts +1 -2
  685. package/files-repository/files-repository.service.d.ts.map +1 -1
  686. package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts.map +1 -1
  687. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  688. package/locales/de.po +138 -12
  689. package/locales/es.po +138 -12
  690. package/locales/fr.po +138 -12
  691. package/locales/ja_JP.po +132 -12
  692. package/locales/ko.po +137 -12
  693. package/locales/locales.pot +103 -12
  694. package/locales/nl.po +138 -12
  695. package/locales/pl.po +138 -12
  696. package/locales/pt_BR.po +138 -12
  697. package/locales/zh_CN.po +137 -12
  698. package/locales/zh_TW.po +137 -12
  699. package/location/location-tab.factory.d.ts.map +1 -1
  700. package/location/location.component.d.ts.map +1 -1
  701. package/loriot-device-registration/loriot-device-registration.component.d.ts.map +1 -1
  702. package/loriot-device-registration/loriot-provider.service.d.ts.map +1 -1
  703. package/map/map.component.d.ts.map +1 -1
  704. package/messaging-management/messaging/namespace-list/namespace-item/namespace-item-card/namespace-item-card.component.d.ts.map +1 -1
  705. package/messaging-management/messaging/shared/usage/usage.component.d.ts.map +1 -1
  706. package/messaging-management/messaging/topic/topic-list-view.component.d.ts.map +1 -1
  707. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-data-grid.service.d.ts.map +1 -1
  708. package/messaging-management/messaging/topic/topic-subscribers-view/topic-subscribers-view.component.d.ts.map +1 -1
  709. package/messaging-management/messaging/topic/topics-data-grid.service.d.ts.map +1 -1
  710. package/messaging-management/navigator/messaging-navigator-factory.d.ts.map +1 -1
  711. package/messaging-management/navigator/topic-details-tab.factory.d.ts.map +1 -1
  712. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
  713. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
  714. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  715. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
  716. package/operations/bulk-single-operations-list/single-operation-item.component.d.ts.map +1 -1
  717. package/operations/bulk-single-operations-list/single-operations-list.component.d.ts.map +1 -1
  718. package/operations/factories/bulk-operations-tab.factory.d.ts.map +1 -1
  719. package/operations/grid-columns/creation-time.grid-column.d.ts.map +1 -1
  720. package/operations/grid-columns/device.grid-column.d.ts.map +1 -1
  721. package/operations/grid-columns/failure-reason.grid-column.d.ts.map +1 -1
  722. package/operations/grid-columns/status.grid-column.d.ts.map +1 -1
  723. package/operations/operations-list/device-control.feature.d.ts.map +1 -1
  724. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  725. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  726. package/operations/operations-list/single-operations-tab.factory.d.ts.map +1 -1
  727. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
  728. package/operations/shared/nav.factory.d.ts.map +1 -1
  729. package/operations/shared/operations.service.d.ts.map +1 -1
  730. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
  731. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
  732. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
  733. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
  734. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
  735. package/package.json +1 -1
  736. package/pending-mo-request/pending-mo-request-interceptor.d.ts.map +1 -1
  737. package/pending-mo-request/pending-mo-request.service.d.ts.map +1 -1
  738. package/platform-configuration/platform-configuration-form-provider.service.d.ts.map +1 -1
  739. package/protocol-lpwan/lpwan-protocol.module.d.ts.map +1 -1
  740. package/protocol-lpwan/lpwan-set-connections.component.d.ts.map +1 -1
  741. package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts.map +1 -1
  742. package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts.map +1 -1
  743. package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts.map +1 -1
  744. package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts.map +1 -1
  745. package/protocol-lpwan/multiple-lns-connectors/no-connections-found.component.d.ts.map +1 -1
  746. package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts.map +1 -1
  747. package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
  748. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
  749. package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
  750. package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
  751. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  752. package/register-device/device-registration-view.component.d.ts.map +1 -1
  753. package/register-device/extensible/base-extensible-device-registration.service.d.ts.map +1 -1
  754. package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts.map +1 -1
  755. package/register-device/extensible/bulk/extensible-bulk-device-registration.service.d.ts.map +1 -1
  756. package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts.map +1 -1
  757. package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts.map +1 -1
  758. package/register-device/extensible/single/extensible-device-registration.service.d.ts.map +1 -1
  759. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  760. package/register-device/register-device-navigation.factory.d.ts.map +1 -1
  761. package/register-device/register-device.service.d.ts.map +1 -1
  762. package/remote-access/configurations/remote-access-configuration-list/remote-access-configuration-list.component.d.ts.map +1 -1
  763. package/remote-access/configurations/remote-access-pick-protocol-modal/remote-access-pick-protocol-modal.component.d.ts.map +1 -1
  764. package/remote-access/passthrough/index.d.ts +1 -1
  765. package/remote-access/passthrough/index.d.ts.map +1 -1
  766. package/remote-access/shared/remote-access-basic-endpoint-modal/remote-access-basic-endpoint-modal.component.d.ts.map +1 -1
  767. package/remote-access/ssh/index.d.ts.map +1 -1
  768. package/remote-access/telnet/index.d.ts.map +1 -1
  769. package/remote-access/vnc/index.d.ts.map +1 -1
  770. package/replace-device/replace-device-grid-action.factory.d.ts.map +1 -1
  771. package/replace-device/replace-device-wizard/replace-device-wizard.component.d.ts.map +1 -1
  772. package/replace-device/replace-device-wizard/replace-device-wizard.service.d.ts.map +1 -1
  773. package/replace-device/replace-device.service.d.ts.map +1 -1
  774. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  775. package/report-dashboard/report-dashboard-navigation.factory.d.ts.map +1 -1
  776. package/reports/export-schedules.component.d.ts.map +1 -1
  777. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
  778. package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
  779. package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
  780. package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
  781. package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
  782. package/repository/configuration/list/configuration-repository-navigation-factory.d.ts.map +1 -1
  783. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
  784. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
  785. package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
  786. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
  787. package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
  788. package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
  789. package/repository/firmware/list/firmware-repository-navigation-factory.d.ts.map +1 -1
  790. package/repository/shared/columns/description.grid-column.d.ts.map +1 -1
  791. package/repository/shared/columns/device-type.grid-column.d.ts.map +1 -1
  792. package/repository/shared/columns/file.grid-column.d.ts.map +1 -1
  793. package/repository/shared/columns/name.grid-column.d.ts.map +1 -1
  794. package/repository/shared/columns/type.filtering-form-renderer.component.d.ts.map +1 -1
  795. package/repository/shared/columns/type.grid-column.d.ts.map +1 -1
  796. package/repository/shared/columns/versions.grid-column.d.ts.map +1 -1
  797. package/repository/shared/repository.service.d.ts.map +1 -1
  798. package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
  799. package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
  800. package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
  801. package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
  802. package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
  803. package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
  804. package/repository/software/list/software-details.component.d.ts.map +1 -1
  805. package/repository/software/list/software-list.component.d.ts.map +1 -1
  806. package/repository/software/list/software-repository-navigation-factory.d.ts.map +1 -1
  807. package/search/columns/asset-type-search-grid-column.d.ts.map +1 -1
  808. package/search/search-grid.component.d.ts.map +1 -1
  809. package/search/search-results.component.d.ts.map +1 -1
  810. package/sensor-phone/connect-smartphone.factory.d.ts.map +1 -1
  811. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
  812. package/sensor-phone/sensor-phone-modal/sensor-phone.service.d.ts.map +1 -1
  813. package/services/service-command-tab/service-command.feature.d.ts.map +1 -1
  814. package/services/services-device-tab/columns/last-updated-date.device-grid-column.d.ts.map +1 -1
  815. package/services/services-device-tab/columns/name.grid-column.d.ts.map +1 -1
  816. package/services/services-device-tab/columns/service-type.grid-column.d.ts.map +1 -1
  817. package/services/services-device-tab/columns/status.grid-column.d.ts.map +1 -1
  818. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  819. package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
  820. package/services/services-device-tab/services.breadcrumb-factory.d.ts.map +1 -1
  821. package/services/shared/service-command.service.d.ts.map +1 -1
  822. package/services/status-options/status-options.model.d.ts.map +1 -1
  823. package/sigfox-device-registration/sigfox-device-registration.component.d.ts.map +1 -1
  824. package/sigfox-device-registration/sigfox-provider.service.d.ts.map +1 -1
  825. package/sms-gateway/sms-gateway.module.d.ts.map +1 -1
  826. package/sub-assets/add-group/add-group.component.d.ts.map +1 -1
  827. package/sub-assets/asset-properties-item.component.d.ts.map +1 -1
  828. package/sub-assets/asset-properties.component.d.ts.map +1 -1
  829. package/sub-assets/assign-devices/assign-child-devices.component.d.ts.map +1 -1
  830. package/sub-assets/assign-devices/assign-devices.component.d.ts.map +1 -1
  831. package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts.map +1 -1
  832. package/sub-assets/group-info.component.d.ts.map +1 -1
  833. package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
  834. package/sub-assets/sub-assets.module.d.ts.map +1 -1
  835. package/sub-assets/sub-assets.service.d.ts.map +1 -1
  836. package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts.map +1 -1
  837. package/tenants/custom-properties/custom-properties.component.d.ts.map +1 -1
  838. package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -1
  839. package/tenants/tenant-limits/tenant-limits.component.d.ts.map +1 -1
  840. package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts.map +1 -1
  841. package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
  842. package/tenants/tenants-navigation.factory.d.ts.map +1 -1
  843. package/tenants/tenants.module.d.ts.map +1 -1
  844. package/tracking/tracking.feature.d.ts.map +1 -1
  845. package/translation-editor/lazy/translation-editor/translation-editor.component.d.ts.map +1 -1
  846. package/trusted-certificates/crl/crl-check-settings.component.d.ts.map +1 -1
  847. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
  848. package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
  849. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
  850. package/trusted-certificates/list/add-trusted-certificate.component.d.ts.map +1 -1
  851. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  852. package/upgrade/auth-bridge.service.d.ts.map +1 -1
  853. package/upgrade/bridge.service.d.ts.map +1 -1
  854. package/upgrade/ng1/downgraded.services.d.ts +1 -0
  855. package/upgrade/ng1/downgraded.services.d.ts.map +1 -1
  856. package/upgrade/ng1/index.d.ts.map +1 -1
  857. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
  858. package/widgets/cockpit/index.d.ts +4 -4
  859. package/widgets/definitions/alarms/alarm-list/index.d.ts +1 -1
  860. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  861. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +1 -1
  862. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  863. package/widgets/definitions/alarms/recent-alarms/index.d.ts +1 -1
  864. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  865. package/widgets/definitions/applications/index.d.ts +1 -1
  866. package/widgets/definitions/applications/index.d.ts.map +1 -1
  867. package/widgets/definitions/asset-notes/index.d.ts +1 -1
  868. package/widgets/definitions/asset-notes/index.d.ts.map +1 -1
  869. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts +1 -1
  870. package/widgets/definitions/cockpit-legacy-welcome/index.d.ts.map +1 -1
  871. package/widgets/definitions/cockpit-welcome/index.d.ts +1 -1
  872. package/widgets/definitions/cockpit-welcome/index.d.ts.map +1 -1
  873. package/widgets/definitions/datapoints-graph/datapoint-graph-widget-factory.d.ts.map +1 -1
  874. package/widgets/definitions/datapoints-graph/index.d.ts +1 -1
  875. package/widgets/definitions/datapoints-table/index.d.ts +1 -1
  876. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  877. package/widgets/definitions/device-control-message/index.d.ts +1 -1
  878. package/widgets/definitions/device-control-message/index.d.ts.map +1 -1
  879. package/widgets/definitions/help-and-service/index.d.ts +1 -1
  880. package/widgets/definitions/help-and-service/index.d.ts.map +1 -1
  881. package/widgets/definitions/html-widget/html-widget.factory.d.ts.map +1 -1
  882. package/widgets/definitions/html-widget/index.d.ts +1 -1
  883. package/widgets/definitions/image/index.d.ts +5 -3
  884. package/widgets/definitions/image/index.d.ts.map +1 -1
  885. package/widgets/definitions/info-gauge/index.d.ts +2 -3
  886. package/widgets/definitions/info-gauge/index.d.ts.map +1 -1
  887. package/widgets/definitions/kpi/index.d.ts +1 -1
  888. package/widgets/definitions/kpi/index.d.ts.map +1 -1
  889. package/widgets/definitions/linear-gauge/index.d.ts +1 -1
  890. package/widgets/definitions/linear-gauge/index.d.ts.map +1 -1
  891. package/widgets/definitions/map/index.d.ts +1 -1
  892. package/widgets/definitions/map/index.d.ts.map +1 -1
  893. package/widgets/definitions/markdown/index.d.ts +5 -3
  894. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  895. package/widgets/definitions/quick-links/index.d.ts +1 -1
  896. package/widgets/definitions/quick-links/index.d.ts.map +1 -1
  897. package/widgets/definitions/radial-gauge/index.d.ts +1 -1
  898. package/widgets/definitions/radial-gauge/index.d.ts.map +1 -1
  899. package/widgets/definitions/silo/index.d.ts +1 -1
  900. package/widgets/definitions/silo/index.d.ts.map +1 -1
  901. package/widgets/definitions/three-d-rotation/index.d.ts +1 -1
  902. package/widgets/definitions/three-d-rotation/index.d.ts.map +1 -1
  903. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  904. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  905. package/widgets/implementations/alarms/alarm-list-widget.model.d.ts.map +1 -1
  906. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  907. package/widgets/implementations/cockpit-welcome/welcome.component.d.ts +3 -2
  908. package/widgets/implementations/cockpit-welcome/welcome.component.d.ts.map +1 -1
  909. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts +4 -1
  910. package/widgets/implementations/datapoints-graph/datapoints-graph-config/datapoints-graph-widget-config.component.d.ts.map +1 -1
  911. package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts +2 -1
  912. package/widgets/implementations/datapoints-graph/datapoints-graph-view/datapoints-graph-widget-view.component.d.ts.map +1 -1
  913. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-reload/datapoints-reload.component.d.ts.map +1 -1
  914. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table/datapoints-table.component.d.ts.map +1 -1
  915. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  916. package/widgets/implementations/datapoints-table/datapoints-table-widget.model.d.ts.map +1 -1
  917. package/widgets/implementations/datapoints-table/date-range-picker.component.d.ts.map +1 -1
  918. package/widgets/implementations/device-control-message/device-control-message-widget-view/device-control-message-widget-view.component.d.ts.map +1 -1
  919. package/widgets/implementations/device-management-welcome/welcome.component.d.ts.map +1 -1
  920. package/widgets/implementations/help-and-service-widget/help-and-service-view/help-and-service-view.component.d.ts.map +1 -1
  921. package/widgets/implementations/html-widget/advanced-settings/advanced-settings.component.d.ts.map +1 -1
  922. package/widgets/implementations/html-widget/html-widget-config.service.d.ts.map +1 -1
  923. package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts +5 -3
  924. package/widgets/implementations/html-widget/widget-code-editor-section/widget-code-editor.component.d.ts.map +1 -1
  925. package/widgets/implementations/image/image-widget-config/image-widget-config.component.d.ts.map +1 -1
  926. package/widgets/implementations/image/image-widget.service.d.ts +1 -2
  927. package/widgets/implementations/image/image-widget.service.d.ts.map +1 -1
  928. package/widgets/implementations/info-gauge/info-gauge-widget-config/info-gauge-widget-config.component.d.ts.map +1 -1
  929. package/widgets/implementations/linear-gauge/linear-gauge-widget-view/linear-gauge-widget-view.component.d.ts.map +1 -1
  930. package/widgets/implementations/map/map-widget-config.component.d.ts.map +1 -1
  931. package/widgets/implementations/map/map-widget.component.d.ts.map +1 -1
  932. package/widgets/implementations/markdown/markdown-widget-config/markdown-widget-config.component.d.ts.map +1 -1
  933. package/widgets/implementations/markdown/markdown-widget.service.d.ts.map +1 -1
  934. package/widgets/implementations/quick-links/quick-links-widget-config/quick-links-widget-config.component.d.ts.map +1 -1
  935. package/widgets/import-export-config/config-target-export.d.ts +3 -1
  936. package/widgets/import-export-config/config-target-export.d.ts.map +1 -1
  937. package/widgets/import-export-config/config-target-import.d.ts +3 -1
  938. package/widgets/import-export-config/config-target-import.d.ts.map +1 -1
  939. package/widgets/import-export-config/device-import-export.d.ts +3 -1
  940. package/widgets/import-export-config/device-import-export.d.ts.map +1 -1
  941. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map +0 -1
  942. package/fesm2022/c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map +0 -1
  943. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map +0 -1
@@ -1,13 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Input, Directive, Injectable, Injector, InjectionToken, NgModuleRef, createNgModule, Optional, Inject, isDevMode, inject, Pipe, EventEmitter, NgModule, LOCALE_ID, EnvironmentInjector, createEnvironmentInjector, HostListener, Component, HostBinding, Output, forwardRef, DestroyRef, ViewChild, SecurityContext, TemplateRef, provideAppInitializer, Self, SkipSelf, Attribute, ContentChild, ViewContainerRef, ElementRef, ContentChildren, runInInjectionContext, createComponent, ViewChildren, viewChild, effect, importProvidersFrom, ChangeDetectionStrategy, SimpleChange, reflectComponentType, signal, Type, computed, input, output } from '@angular/core';
2
+ import { Input, Directive, createEnvironmentInjector, InjectionToken, Optional, Inject, Injectable, NgModuleRef, createNgModule, isDevMode, inject, Pipe, EventEmitter, NgModule, LOCALE_ID, EnvironmentInjector, Injector, HostListener, Component, HostBinding, Output, forwardRef, DestroyRef, ViewChild, SecurityContext, TemplateRef, provideAppInitializer, Self, SkipSelf, Attribute, ContentChild, ElementRef, ContentChildren, ViewContainerRef, runInInjectionContext, createComponent, ViewChildren, viewChild, effect, importProvidersFrom, ChangeDetectionStrategy, SimpleChange, reflectComponentType, signal, Type, computed, input, output } from '@angular/core';
3
3
  import * as i1$3 from 'ngx-bootstrap/dropdown';
4
4
  import { BsDropdownModule, BsDropdownDirective } from 'ngx-bootstrap/dropdown';
5
5
  import { CdkTrapFocus, A11yModule } from '@angular/cdk/a11y';
6
6
  import { castArray, flatten, uniq, sortBy, groupBy, camelCase, isEqual, isUndefined, throttle as throttle$1, keys, get, isNaN as isNaN$1, isFinite, each, mapValues, mapKeys, forEach, assign, min, every, first, map as map$1, find, negate, upperFirst, memoize as memoize$1, property, some, entries, omitBy, isDate, pick, flatMap, orderBy, isEmpty, filter as filter$2, snakeCase, matches, escape, escapeRegExp, assignWith, set, cloneDeep, uniqBy, toNumber, isEqualWith, clone, omit, has, transform, identity, flow, findIndex as findIndex$1, isNil, chunk, values, union, without, indexOf, parseInt as parseInt$1, kebabCase, forOwn } from 'lodash-es';
7
- import { Subject, BehaviorSubject, ReplaySubject, merge, of, defer, combineLatest, race, isObservable, from, NEVER, Observable, firstValueFrom, fromEvent, pipe, throwError, concat, map as map$2, filter as filter$1, tap as tap$1, fromEventPattern, startWith as startWith$1, switchMap as switchMap$1, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, shareReplay as shareReplay$1, timer, catchError as catchError$1, empty, forkJoin, interval, mergeMap as mergeMap$1 } from 'rxjs';
8
- import { shareReplay, map, distinctUntilChanged, filter, startWith, switchMap, take, scan, debounceTime, share, takeUntil, tap, catchError, first as first$1, retryWhen, delay, concatMap, debounce, sample, withLatestFrom, mergeMap, every as every$1, toArray, merge as merge$1, expand, mapTo, skip, reduce, finalize, combineLatestWith } from 'rxjs/operators';
7
+ import { merge, of, defer, combineLatest, race, isObservable, from, Subject, BehaviorSubject, ReplaySubject, NEVER, Observable, firstValueFrom, fromEvent, pipe, throwError, concat, map as map$2, filter as filter$1, tap as tap$1, fromEventPattern, startWith as startWith$1, switchMap as switchMap$1, distinctUntilChanged as distinctUntilChanged$1, takeUntil as takeUntil$1, shareReplay as shareReplay$1, timer, catchError as catchError$1, empty, forkJoin, interval, mergeMap as mergeMap$1 } from 'rxjs';
8
+ import { map, distinctUntilChanged, filter, startWith, switchMap, shareReplay, take, scan, debounceTime, share, takeUntil, tap, catchError, first as first$1, retryWhen, delay, concatMap, debounce, sample, withLatestFrom, mergeMap, every as every$1, toArray, merge as merge$1, expand, mapTo, skip, reduce, finalize, combineLatestWith } from 'rxjs/operators';
9
9
  import * as i1 from '@c8y/client';
10
- import { OperationStatus, TenantLoginOptionType, UserManagementSource, GrantType, ApplicationType, BasicAuth, CookieAuth, Realtime, FetchClient, FeatureService, ApplicationAvailability, InventoryService, QueriesUtil, Client, PasswordStrength, AlarmService, TenantService, ApplicationService, UserService, aggregationType, Service, Paging } from '@c8y/client';
10
+ import { OperationStatus, TenantLoginOptionType, UserManagementSource, GrantType, ApplicationType, BasicAuth, CookieAuth, Realtime, FetchClient, BearerAuthFromSessionStorage, FeatureService, ApplicationAvailability, InventoryService, QueriesUtil, Client, PasswordStrength, AlarmService, TenantService, ApplicationService, UserService, aggregationType, Service, Paging } from '@c8y/client';
11
11
  import { __decorate, __metadata } from 'tslib';
12
12
  import * as i1$4 from '@angular/router';
13
13
  import { NavigationEnd, RouterModule as RouterModule$1, NavigationStart, RouterLink, RouterLinkActive, RouterOutlet, ActivationEnd, Router, ActivatedRoute, PRIMARY_OUTLET, ActivationStart, ChildActivationEnd, ROUTES, NavigationCancel, NavigationError } from '@angular/router';
@@ -15,7 +15,6 @@ import * as i4 from '@c8y/ngx-components/api';
15
15
  import { DataModule } from '@c8y/ngx-components/api';
16
16
  import { coerceNumberProperty } from '@angular/cdk/coercion';
17
17
  import { gettext as gettext$1 } from '@c8y/ngx-components/gettext';
18
- export * from '@c8y/ngx-components/gettext';
19
18
  import * as i1$1 from '@ngx-translate/core';
20
19
  import { TranslateService as TranslateService$1, TranslateDefaultParser, TranslateDirective, TranslatePipe, TranslateModule, TranslateLoader, TranslateFakeCompiler, TranslateCompiler, TranslateParser, MissingTranslationHandler, TranslateStore, USE_STORE, USE_DEFAULT_LANG, USE_EXTEND, DEFAULT_LANGUAGE } from '@ngx-translate/core';
21
20
  import { VIRTUAL_SCROLL_STRATEGY, CdkVirtualScrollViewport, CdkVirtualForOf, CdkFixedSizeVirtualScroll, ScrollingModule } from '@angular/cdk/scrolling';
@@ -40,7 +39,7 @@ import { CdkStepper, STEP_STATE, CdkStep, CdkStepperModule, STEPPER_GLOBAL_OPTIO
40
39
  import * as i1$7 from 'ngx-bootstrap/modal';
41
40
  import { ModalModule as ModalModule$1, BsModalRef } from 'ngx-bootstrap/modal';
42
41
  import * as i1$8 from '@angular/forms';
43
- import { FormsModule as FormsModule$1, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxControlValueAccessor, FormControl, NgModel, FormControlName, ReactiveFormsModule, NgForm, ControlContainer, FormArray, NgControl, FormGroup, FormBuilder } from '@angular/forms';
42
+ import { FormsModule as FormsModule$1, Validators, NG_VALUE_ACCESSOR, NG_VALIDATORS, CheckboxControlValueAccessor, ReactiveFormsModule, FormControl, NgModel, FormControlName, NgForm, ControlContainer, FormArray, NgControl, FormGroup, FormBuilder } from '@angular/forms';
44
43
  import { TOKEN_KEY, TFATOKEN_KEY, mergeRemotes, removeRemotes, getThemePreference, setThemePreference, applyTheme } from '@c8y/bootstrap';
45
44
  import * as i1$9 from 'ngx-bootstrap/popover';
46
45
  import { PopoverModule, PopoverDirective } from 'ngx-bootstrap/popover';
@@ -212,168 +211,6 @@ var GroupFragment;
212
211
  GroupFragment["dynamicGroupQueryString"] = "c8y_DeviceQueryString";
213
212
  })(GroupFragment || (GroupFragment = {}));
214
213
 
215
- class PluginsResolveService {
216
- constructor() {
217
- this._refresh$ = new Subject();
218
- this._allPluginsLoaded$ = new BehaviorSubject(false);
219
- this._contextPathsFromWhereRemotesHaveBeenLoaded$ = new BehaviorSubject([]);
220
- this._loadedPluginNames$ = new BehaviorSubject([]);
221
- this._injectors$ = new ReplaySubject();
222
- this._pluginDetails$ = new ReplaySubject();
223
- this.injectors$ = this._injectors$;
224
- this.refresh$ = this._refresh$.asObservable().pipe(shareReplay(1));
225
- this.pluginDetails$ = this._pluginDetails$;
226
- this.allPluginsLoaded$ = this._allPluginsLoaded$.asObservable();
227
- this.contextPathsFromWhereRemotesHaveBeenLoaded$ =
228
- this._contextPathsFromWhereRemotesHaveBeenLoaded$.asObservable();
229
- this.loadedPluginNames$ = this._loadedPluginNames$.asObservable();
230
- }
231
- /**
232
- * Will refresh all current registered hooks.
233
- */
234
- refreshHooks() {
235
- this._refresh$.next();
236
- }
237
- markPluginsAsLoaded() {
238
- this._allPluginsLoaded$.next(true);
239
- }
240
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
241
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, providedIn: 'root' }); }
242
- }
243
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, decorators: [{
244
- type: Injectable,
245
- args: [{
246
- providedIn: 'root'
247
- }]
248
- }], ctorParameters: () => [] });
249
-
250
- class StandalonePluginInjector extends Injector {
251
- /**
252
- * @deprecated Use `constructor` instead.
253
- */
254
- static create(..._args) {
255
- throw Error('Not implemented');
256
- }
257
- constructor(options) {
258
- super();
259
- this.options = options;
260
- this.injector = Injector.create(options);
261
- }
262
- get name() {
263
- return this.options.name;
264
- }
265
- get(token, notFoundValue, options) {
266
- return this.injector.get(token, notFoundValue, options);
267
- }
268
- }
269
- /**
270
- * @deprecated Only meant for internal usage.
271
- * @internal
272
- */
273
- const HOOK_PLUGIN = new InjectionToken('HOOK_PLUGIN');
274
- /**
275
- * @deprecated Only meant for internal usage.
276
- * @internal
277
- */
278
- function hookPlugin(plugins) {
279
- return hookGeneric(plugins, HOOK_PLUGIN, { multi: false });
280
- }
281
- class PluginsLoaderService {
282
- constructor(plugins, injector, pluginsResolveService) {
283
- this.plugins = plugins;
284
- this.injector = injector;
285
- this.pluginsResolveService = pluginsResolveService;
286
- this.loadModulesDynamically(this.plugins);
287
- }
288
- /**
289
- * Loads modules and handles hooking correctly.
290
- * @param remoteNgModules The modules to load.
291
- */
292
- loadModulesDynamically(remoteModules) {
293
- const modulesWithMetadata = this.loadModules(remoteModules || [], this.injector);
294
- const injectors = modulesWithMetadata.map(m => m.injector);
295
- const refs = modulesWithMetadata
296
- .map(m => {
297
- if (m.moduleRef && m.remoteNgModule) {
298
- return { moduleRef: m.moduleRef, remoteNgModule: m.remoteNgModule };
299
- }
300
- return null;
301
- })
302
- .filter(m => !!m);
303
- const loadedPluginNames = modulesWithMetadata.map(m => m.name);
304
- this.pluginsResolveService._loadedPluginNames$.next(loadedPluginNames);
305
- const loadedContextPaths = modulesWithMetadata.map(m => m.fullContextPath);
306
- this.pluginsResolveService._contextPathsFromWhereRemotesHaveBeenLoaded$.next(loadedContextPaths);
307
- injectors.forEach(injector => this.pluginsResolveService._injectors$.next(injector));
308
- refs.forEach(ref => this.pluginsResolveService._pluginDetails$.next(ref));
309
- this.pluginsResolveService.refreshHooks();
310
- this.pluginsResolveService.markPluginsAsLoaded();
311
- return modulesWithMetadata;
312
- }
313
- /**
314
- * Uses the provided remoteModule factories to load and instantiate the modules.
315
- * The provided injector is used as a parent to create the module instances.
316
- */
317
- loadModules(remoteModules, injector) {
318
- const loadedResults = [];
319
- for (const { factory, name, fullContextPath } of remoteModules) {
320
- try {
321
- const moduleOrProviders = factory[name];
322
- let result;
323
- if (Array.isArray(moduleOrProviders)) {
324
- result = this.loadProviders(moduleOrProviders, name, injector);
325
- }
326
- else {
327
- result = this.loadModule(moduleOrProviders, injector);
328
- }
329
- const resultWithName = {
330
- ...result,
331
- name,
332
- fullContextPath
333
- };
334
- loadedResults.push(resultWithName);
335
- }
336
- catch (ex) {
337
- console.error(`Failed to load ${name}`, ex);
338
- }
339
- }
340
- return loadedResults;
341
- }
342
- loadProviders(providers, name, parentInjector) {
343
- const injector = new StandalonePluginInjector({
344
- providers: providers,
345
- name: `pluginsInjector-${name}`,
346
- parent: parentInjector
347
- });
348
- return { injector };
349
- }
350
- loadModule(remoteNgModule, parentInjector) {
351
- let moduleRef;
352
- if (remoteNgModule instanceof NgModuleRef) {
353
- // AOT
354
- moduleRef = remoteNgModule;
355
- }
356
- else {
357
- // JIT
358
- moduleRef = createNgModule(remoteNgModule, parentInjector);
359
- }
360
- return { moduleRef, remoteNgModule, injector: moduleRef.injector };
361
- }
362
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, deps: [{ token: HOOK_PLUGIN, optional: true }, { token: i0.EnvironmentInjector }, { token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
363
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, providedIn: 'root' }); }
364
- }
365
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, decorators: [{
366
- type: Injectable,
367
- args: [{
368
- providedIn: 'root'
369
- }]
370
- }], ctorParameters: () => [{ type: Array, decorators: [{
371
- type: Optional
372
- }, {
373
- type: Inject,
374
- args: [HOOK_PLUGIN]
375
- }] }, { type: i0.EnvironmentInjector }, { type: PluginsResolveService }] });
376
-
377
214
  /**
378
215
  * A abstract state which should be included in each state.
379
216
  * @abstract
@@ -414,14 +251,14 @@ function getInjectedHooks(token, injectors, type = InjectionType.COMPONENT) {
414
251
  if (injector.scopes?.has('root')) {
415
252
  return factories;
416
253
  }
417
- if (injector instanceof StandalonePluginInjector) {
418
- // No need to set injector for items retrieved from standalone plugins
419
- return factories;
420
- }
421
254
  factories.forEach((factory) => {
422
255
  if (!factory.get && factory.injector !== null) {
423
256
  if (type === InjectionType.ROUTE) {
424
- factory._injector = injector;
257
+ const route = factory;
258
+ if (!route._injector) {
259
+ const envInjector = createEnvironmentInjector(route.providers || [], injector, `Route: ${route.path}`);
260
+ factory._injector = envInjector;
261
+ }
425
262
  }
426
263
  else {
427
264
  factory.injector = injector;
@@ -868,6 +705,178 @@ function throttle(wait, options) {
868
705
  };
869
706
  }
870
707
 
708
+ class PluginsResolveService {
709
+ constructor() {
710
+ this._refresh$ = new Subject();
711
+ this._allPluginsLoaded$ = new BehaviorSubject(false);
712
+ this._contextPathsFromWhereRemotesHaveBeenLoaded$ = new BehaviorSubject([]);
713
+ this._loadedPluginNames$ = new BehaviorSubject([]);
714
+ this._injectors$ = new ReplaySubject();
715
+ this._pluginDetails$ = new ReplaySubject();
716
+ this.injectors$ = this._injectors$;
717
+ this.refresh$ = this._refresh$.asObservable().pipe(shareReplay(1));
718
+ this.pluginDetails$ = this._pluginDetails$;
719
+ this.allPluginsLoaded$ = this._allPluginsLoaded$.asObservable();
720
+ this.contextPathsFromWhereRemotesHaveBeenLoaded$ =
721
+ this._contextPathsFromWhereRemotesHaveBeenLoaded$.asObservable();
722
+ this.loadedPluginNames$ = this._loadedPluginNames$.asObservable();
723
+ }
724
+ /**
725
+ * Will refresh all current registered hooks.
726
+ */
727
+ refreshHooks() {
728
+ this._refresh$.next();
729
+ }
730
+ addInjector(injector) {
731
+ this._injectors$.next(injector);
732
+ }
733
+ markPluginsAsLoaded() {
734
+ this._allPluginsLoaded$.next(true);
735
+ }
736
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
737
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, providedIn: 'root' }); }
738
+ }
739
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsResolveService, decorators: [{
740
+ type: Injectable,
741
+ args: [{
742
+ providedIn: 'root'
743
+ }]
744
+ }], ctorParameters: () => [] });
745
+
746
+ /**
747
+ * Injection token for providing the context path of a plugin.
748
+ *
749
+ * Can e.g. be used to construct URLs to assets within the plugin.
750
+ */
751
+ const C8Y_PLUGIN_CONTEXT_PATH = new InjectionToken('C8Y_PLUGIN_CONTEXT_PATH');
752
+ /**
753
+ * Injection token for providing the name of a plugin.
754
+ *
755
+ * Can e.g. be used to identify the plugin within the application.
756
+ */
757
+ const C8Y_PLUGIN_NAME = new InjectionToken('C8Y_PLUGIN_NAME');
758
+
759
+ /**
760
+ * @deprecated Only meant for internal usage.
761
+ * @internal
762
+ */
763
+ const HOOK_PLUGIN = new InjectionToken('HOOK_PLUGIN');
764
+ /**
765
+ * @deprecated Only meant for internal usage.
766
+ * @internal
767
+ */
768
+ function hookPlugin(plugins) {
769
+ return hookGeneric(plugins, HOOK_PLUGIN, { multi: false });
770
+ }
771
+ class PluginsLoaderService {
772
+ constructor(plugins, injector, pluginsResolveService) {
773
+ this.plugins = plugins;
774
+ this.injector = injector;
775
+ this.pluginsResolveService = pluginsResolveService;
776
+ this.injectorPerContextPath = new Map();
777
+ this.loadModulesDynamically(this.plugins);
778
+ }
779
+ /**
780
+ * Loads modules and handles hooking correctly.
781
+ * @param remoteNgModules The modules to load.
782
+ */
783
+ loadModulesDynamically(remoteModules) {
784
+ const modulesWithMetadata = this.loadModules(remoteModules || [], this.injector);
785
+ const injectors = modulesWithMetadata.map(m => m.injector);
786
+ const refs = modulesWithMetadata
787
+ .map(m => {
788
+ if (m.moduleRef && m.remoteNgModule) {
789
+ return { moduleRef: m.moduleRef, remoteNgModule: m.remoteNgModule };
790
+ }
791
+ return null;
792
+ })
793
+ .filter(m => !!m);
794
+ const loadedPluginNames = modulesWithMetadata.map(m => m.name);
795
+ this.pluginsResolveService._loadedPluginNames$.next(loadedPluginNames);
796
+ const loadedContextPaths = modulesWithMetadata.map(m => m.fullContextPath);
797
+ this.pluginsResolveService._contextPathsFromWhereRemotesHaveBeenLoaded$.next(loadedContextPaths);
798
+ injectors.forEach(injector => this.pluginsResolveService.addInjector(injector));
799
+ refs.forEach(ref => this.pluginsResolveService._pluginDetails$.next(ref));
800
+ this.pluginsResolveService.refreshHooks();
801
+ this.pluginsResolveService.markPluginsAsLoaded();
802
+ return modulesWithMetadata;
803
+ }
804
+ /**
805
+ * Uses the provided remoteModule factories to load and instantiate the modules.
806
+ * The provided injector is used as a parent to create the module instances.
807
+ */
808
+ loadModules(remoteModules, injector) {
809
+ const loadedResults = [];
810
+ for (const { factory, name, fullContextPath } of remoteModules) {
811
+ let injectorPerContextPath = this.injectorPerContextPath.get(fullContextPath);
812
+ if (!injectorPerContextPath) {
813
+ injectorPerContextPath = createEnvironmentInjector([
814
+ {
815
+ provide: C8Y_PLUGIN_CONTEXT_PATH,
816
+ useValue: fullContextPath
817
+ }
818
+ ], injector, `packageInjector-${fullContextPath}`);
819
+ this.injectorPerContextPath.set(fullContextPath, injectorPerContextPath);
820
+ }
821
+ const pluginSpecificInjector = createEnvironmentInjector([
822
+ {
823
+ provide: C8Y_PLUGIN_NAME,
824
+ useValue: name
825
+ }
826
+ ], injectorPerContextPath, `pluginInjector-${fullContextPath}-${name}`);
827
+ try {
828
+ const moduleOrProviders = factory[name];
829
+ let result;
830
+ if (Array.isArray(moduleOrProviders)) {
831
+ result = this.loadProviders(moduleOrProviders, name, pluginSpecificInjector);
832
+ }
833
+ else {
834
+ result = this.loadModule(moduleOrProviders, pluginSpecificInjector);
835
+ }
836
+ const resultWithName = {
837
+ ...result,
838
+ name,
839
+ fullContextPath
840
+ };
841
+ loadedResults.push(resultWithName);
842
+ }
843
+ catch (ex) {
844
+ console.error(`Failed to load ${name}`, ex);
845
+ }
846
+ }
847
+ return loadedResults;
848
+ }
849
+ loadProviders(providers, name, parentInjector) {
850
+ const injector = createEnvironmentInjector(providers, parentInjector, `pluginsInjector-${name}`);
851
+ return { injector };
852
+ }
853
+ loadModule(remoteNgModule, parentInjector) {
854
+ let moduleRef;
855
+ if (remoteNgModule instanceof NgModuleRef) {
856
+ // AOT
857
+ moduleRef = remoteNgModule;
858
+ }
859
+ else {
860
+ // JIT
861
+ moduleRef = createNgModule(remoteNgModule, parentInjector);
862
+ }
863
+ return { moduleRef, remoteNgModule, injector: moduleRef.injector };
864
+ }
865
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, deps: [{ token: HOOK_PLUGIN, optional: true }, { token: i0.EnvironmentInjector }, { token: PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
866
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, providedIn: 'root' }); }
867
+ }
868
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PluginsLoaderService, decorators: [{
869
+ type: Injectable,
870
+ args: [{
871
+ providedIn: 'root'
872
+ }]
873
+ }], ctorParameters: () => [{ type: Array, decorators: [{
874
+ type: Optional
875
+ }, {
876
+ type: Inject,
877
+ args: [HOOK_PLUGIN]
878
+ }] }, { type: i0.EnvironmentInjector }, { type: PluginsResolveService }] });
879
+
871
880
  const HOOK_CURRENT_USER = new InjectionToken('HOOK_CURRENT_USER');
872
881
  const HOOK_CURRENT_APPLICATION = new InjectionToken('HOOK_CURRENT_APPLICATION');
873
882
  const HOOK_CURRENT_TENANT = new InjectionToken('HOOK_CURRENT_TENANT');
@@ -1908,9 +1917,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
1908
1917
  type: Injectable
1909
1918
  }], ctorParameters: () => [{ type: i1$1.TranslateParser }, { type: PatternMessagesService }] });
1910
1919
 
1911
- // kept here for backwards compatibility
1912
- // gettext was moved into separate entry point
1913
-
1914
1920
  /* tslint:disable:max-line-length */
1915
1921
  const bulkOperationAuditLogTextPlaceholders = {
1916
1922
  updatesList: {
@@ -3794,6 +3800,68 @@ const MESSAGES_CORE_I18N = {
3794
3800
  seriesParam: '$1',
3795
3801
  validFormat: '$2'
3796
3802
  }
3803
+ },
3804
+ // Tenant Certificate Authority audit records
3805
+ "^Tenant certificate authority\\(CA\\) created on '(.+?)'.*$": {
3806
+ gettext: gettext$1('Tenant certificate authority (CA) created for tenant "{{ tenantId }}"'),
3807
+ placeholders: {
3808
+ tenantId: '$1'
3809
+ }
3810
+ },
3811
+ "^Certificate fingerprint: '(.+?)'\\.\\n\\s*Certificate subject name: '(.+?)'\\.\\n$": {
3812
+ gettext: gettext$1('Certificate fingerprint: "{{ fingerprint }}".\nCertificate subject name: "{{ subjectName }}".'),
3813
+ placeholders: {
3814
+ fingerprint: '$1',
3815
+ subjectName: '$2'
3816
+ }
3817
+ },
3818
+ "^Tenant certificate authority\\(CA\\) was renewed for Tenant: '(.+?)'.*$": {
3819
+ gettext: gettext$1('Tenant certificate authority (CA) was renewed for tenant "{{ tenantId }}"'),
3820
+ placeholders: {
3821
+ tenantId: '$1'
3822
+ }
3823
+ },
3824
+ "^Certificate fingerprint: '(.+?)'\\.\\n\\s*Certificate subject name: '(.+?)'\\.\\n\\s*NotAfter='(.+?)'.*$": {
3825
+ gettext: gettext$1('Certificate fingerprint: "{{ fingerprint }}".\nCertificate subject name: "{{ subjectName }}".\nExpiration date: {{ expirationDate | absoluteDate }}.'),
3826
+ placeholders: {
3827
+ fingerprint: '$1',
3828
+ subjectName: '$2',
3829
+ expirationDate: '$3'
3830
+ }
3831
+ },
3832
+ "^Tenant certificate authority\\(CA\\) renewal for Tenant: '(.+?)' failed.*$": {
3833
+ gettext: gettext$1('Tenant certificate authority (CA) renewal for tenant "{{ tenantId }}" failed'),
3834
+ placeholders: {
3835
+ tenantId: '$1'
3836
+ }
3837
+ },
3838
+ '^The CA certificate has not been refreshed\\.\\s+It may either still have sufficient remaining validity.*$': {
3839
+ gettext: gettext$1('The CA certificate has not been renewed; however, it may still have sufficient validity remaining.')
3840
+ },
3841
+ "^Provisioned certificate stored in user object: '(.+?)'.*$": {
3842
+ gettext: gettext$1('Provisioned certificate stored in user object: "{{ userName }}"'),
3843
+ placeholders: {
3844
+ userName: '$1'
3845
+ }
3846
+ },
3847
+ "^Certificate serial number: '(.+?)'\\.\\n\\s*NotAfter='(.+?)'.*$": {
3848
+ gettext: gettext$1('Certificate serial number: "{{ serialNumber }}".\nExpiration date: {{ expirationDate | absoluteDate }}.'),
3849
+ placeholders: {
3850
+ serialNumber: '$1',
3851
+ expirationDate: '$2'
3852
+ }
3853
+ },
3854
+ "^Provisioned certificates removed from user: '(.+?)'.*$": {
3855
+ gettext: gettext$1('Provisioned certificates removed from user: "{{ userName }}"'),
3856
+ placeholders: {
3857
+ userName: '$1'
3858
+ }
3859
+ },
3860
+ '^Revoked serials: (.+?)$': {
3861
+ gettext: gettext$1('Revoked serials: {{ revokedSerials }}'),
3862
+ placeholders: {
3863
+ revokedSerials: '$1'
3864
+ }
3797
3865
  }
3798
3866
  };
3799
3867
 
@@ -4611,6 +4679,8 @@ class DatePipe extends DatePipe$1 {
4611
4679
  if (!currentLocale && this.appStateService) {
4612
4680
  currentLocale = this.appStateService.state.lang;
4613
4681
  }
4682
+ // Apply locale mapping to ensure consistent Angular locale usage
4683
+ currentLocale = getAngularLocalesLanguageString(currentLocale);
4614
4684
  if (format === 'short' && this.dateFormatService && currentLocale) {
4615
4685
  // Angular doesn't provide a predefined format with leading zeros (e.g., "01.01.2025")
4616
4686
  // The 'shortDate' format would display as "1/1/25" (without leading zeros and with 2-digit year)
@@ -4809,6 +4879,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
4809
4879
  }]
4810
4880
  }], ctorParameters: () => [{ type: i0.TemplateRef }] });
4811
4881
 
4882
+ // kept here for backwards compatibility
4883
+ // gettext was moved into separate entry point
4884
+ /**
4885
+ * @deprecated Use `import { gettext } from '@c8y/ngx-components/gettext';` instead.
4886
+ */
4887
+ function gettext(str) {
4888
+ console.error("`gettext` was moved into separate entry point. Use `import { gettext } from '@c8y/ngx-components/gettext';` instead.");
4889
+ return gettext$1(str);
4890
+ }
4891
+
4812
4892
  /**
4813
4893
  * A service to provide unmodified, cached translations for angular.
4814
4894
  */
@@ -8106,7 +8186,8 @@ class UserPreferencesService {
8106
8186
  async getCurrentUserStorage() {
8107
8187
  const currentUser = await firstValueFrom(this.currentUser);
8108
8188
  const hasRoleToEditCurrentUser = this.user.hasRole(currentUser, Permissions.ROLE_USER_MANAGEMENT_OWN_ADMIN);
8109
- const isExternalUser = currentUser.customProperties?.userOrigin === 'OAUTH2';
8189
+ const customProperties = currentUser.customProperties;
8190
+ const isExternalUser = customProperties?.userOrigin === 'OAUTH2';
8110
8191
  if (!hasRoleToEditCurrentUser || isExternalUser) {
8111
8192
  return null;
8112
8193
  }
@@ -12412,7 +12493,7 @@ class TabsService extends ExtensionPointForPlugins {
12412
12493
  prepareTabs(tabs) {
12413
12494
  return this.sortTabs(tabs
12414
12495
  .map(tab => {
12415
- tab.template = tab.template instanceof ViewContainerRef ? tab.template : undefined;
12496
+ tab.template = tab.template instanceof TemplateRef ? tab.template : undefined;
12416
12497
  return tab;
12417
12498
  })
12418
12499
  .filter((tab, index, self) => tab.component || !tab.path || index === self.findIndex(t => isEqual(t.path, tab.path))));
@@ -13296,7 +13377,7 @@ class TabsOutletComponent {
13296
13377
  return { widthScroll, width, scrollLeft };
13297
13378
  }
13298
13379
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabsOutletComponent, deps: [{ token: i1$4.Router }, { token: i0.Renderer2 }, { token: HeaderService }, { token: TabsService }, { token: i1$4.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
13299
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TabsOutletComponent, isStandalone: true, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", openFirstTab: "openFirstTab", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector", "c8yComponentOutletProviders", "c8yComponentOutletInitialState"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
13380
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TabsOutletComponent, isStandalone: true, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: { tabs: "tabs", orientation: "orientation", navigatorOpen: "navigatorOpen", outletName: "outletName", context: "context", openFirstTab: "openFirstTab", hasHeader: "hasHeader" }, host: { properties: { "class.has-header": "this.hasHeader", "class.navigator-open": "this.isNavigatorOpen", "class.page-tabs": "this.hasTabs", "class.page-tabs-horizontal": "this.isHorizontal", "class.page-tabs-vertical": "this.isVertical" } }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ElementRef, static: true }, { propertyName: "tabsContainer", first: true, predicate: ["tabsContainer"], descendants: true, read: ElementRef }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n @let tabLabel = tab?.skipLabelTranslation ? tab?.label : (tab?.label | translate);\n <a\n class=\"pointer\"\n title=\"{{ tabLabel }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"tab?.icon && tab?.label\"\n ></i>\n <span *ngIf=\"tab?.label\">{{ tabLabel }}</span>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "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: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector", "c8yComponentOutletProviders", "c8yComponentOutletInitialState"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
13300
13381
  }
13301
13382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabsOutletComponent, decorators: [{
13302
13383
  type: Component,
@@ -13312,7 +13393,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
13312
13393
  NgComponentOutlet,
13313
13394
  C8yComponentOutlet,
13314
13395
  C8yTranslatePipe
13315
- ], template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n <a\n class=\"pointer\"\n title=\"{{ tab?.label | translate }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i [c8yIcon]=\"tab?.icon\"></i>\n <span>\n {{ tab?.label | translate }}\n </span>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
13396
+ ], template: "<div\n class=\"tabContainer\"\n [ngClass]=\"{ 'hidden-xs': !outletName }\"\n #container\n>\n <button\n class=\"tabs-slider tabs-slider-left\"\n title=\"{{ 'Scroll to the left' | translate }}\"\n type=\"button\"\n #left\n *ngIf=\"showLeft || showRight\"\n [disabled]=\"!showLeft\"\n (click)=\"scroll('left')\"\n >\n <i [c8yIcon]=\"'chevron-left'\"></i>\n </button>\n <button\n class=\"tabs-slider tabs-slider-right\"\n title=\"{{ 'Scroll to the right' | translate }}\"\n type=\"button\"\n #right\n *ngIf=\"showRight || showLeft\"\n [disabled]=\"!showRight\"\n (click)=\"scroll('right')\"\n >\n <i [c8yIcon]=\"'chevron-right'\"></i>\n </button>\n <ng-container *ngIf=\"!outletName\">\n <div\n class=\"nav nav-tabs nav-tabsc8y\"\n role=\"list\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <div\n role=\"listitem\"\n [ngClass]=\"{ active: rla?.isActive }\"\n *ngIf=\"!tab.component && !tab.hide\"\n >\n <a\n [routerLink]=\"tab.path\"\n routerLinkActive\n [queryParamsHandling]=\"'preserve'\"\n #rla=\"routerLinkActive\"\n [ngClass]=\"{ 'p-r-24': !tab.template && tab?.badge }\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"!tab.template && tab?.icon\"\n ></i>\n <span\n title=\"{{ tab?.label | translate }}\"\n *ngIf=\"!tab.template && !tab.component\"\n >\n {{ tab?.label | translate }}\n </span>\n <span\n class=\"dashboard-template-marker\"\n tooltip=\"{{ tab?.tooltipText | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"300\"\n *ngIf=\"!tab.template && tab?.badge\"\n ></span>\n </a>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </div>\n <ng-container *ngComponentOutlet=\"tab.component; injector: tab.injector\"></ng-container>\n </ng-container>\n </div>\n </ng-container>\n\n <div\n class=\"component-tabs nav nav-tabs nav-tabsc8y\"\n *ngIf=\"outletName\"\n #tabsContainer\n >\n <ng-container *ngFor=\"let tab of tabs; trackBy: trackByPath\">\n <div\n [ngClass]=\"{ active: tab.isActive }\"\n [routerLink]=\"tab.path\"\n [routerLinkActive]=\"tab.path ? 'active' : ''\"\n [queryParamsHandling]=\"'preserve'\"\n >\n @let tabLabel = tab?.skipLabelTranslation ? tab?.label : (tab?.label | translate);\n <a\n class=\"pointer\"\n title=\"{{ tabLabel }}\"\n (click)=\"tab.onSelect?.emit()\"\n >\n <i\n [c8yIcon]=\"tab?.icon\"\n *ngIf=\"tab?.icon && tab?.label\"\n ></i>\n <span *ngIf=\"tab?.label\">{{ tabLabel }}</span>\n <ng-container *ngTemplateOutlet=\"tab.template; injector: tab.injector\"></ng-container>\n </a>\n </div>\n </ng-container>\n </div>\n</div>\n\n<div\n class=\"visible-xs mobile-tabs\"\n *ngIf=\"!outletName\"\n>\n <ul class=\"list-unstyled d-flex m-b-0\">\n <li class=\"c8y-select-wrapper flex-grow\">\n <select\n (change)=\"navigateTo($event.target.value)\"\n #select\n >\n <ng-container *ngFor=\"let tab of tabs\">\n <option\n *ngIf=\"!tab.component\"\n [value]=\"tab.path\"\n [selected]=\"isActive(tab)\"\n >\n {{ tab?.label | translate }}\n </option>\n </ng-container>\n </select>\n </li>\n <ng-container *ngFor=\"let tab of tabs\">\n <ng-container *ngIf=\"tab.component\">\n <ng-container\n *c8yComponentOutlet=\"tab.component; environmentInjector: tab.injector\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </ul>\n</div>\n" }]
13316
13397
  }], ctorParameters: () => [{ type: i1$4.Router }, { type: i0.Renderer2 }, { type: HeaderService }, { type: TabsService }, { type: i1$4.ActivatedRoute }], propDecorators: { tabs: [{
13317
13398
  type: Input
13318
13399
  }], orientation: [{
@@ -14448,7 +14529,13 @@ class SimplifiedAuthService {
14448
14529
  this.cleanSessionStorage();
14449
14530
  this.realtime.disconnect();
14450
14531
  this.ui.currentUser.next(null);
14451
- return Promise.all([this.basicAuth.logout(), this.cookieAuth.logout()]);
14532
+ return Promise.all([
14533
+ this.basicAuth.logout(),
14534
+ this.cookieAuth.logout(),
14535
+ this.client.authIsInstanceOf(BearerAuthFromSessionStorage)
14536
+ ? this.client.performLogoutOnCurrentAuthStrategy()
14537
+ : BearerAuthFromSessionStorage.removeEntriesFromSessionStorage()
14538
+ ]);
14452
14539
  }
14453
14540
  cleanLocalStorage() {
14454
14541
  localStorage.removeItem(TOKEN_KEY);
@@ -16127,7 +16214,7 @@ class TypeaheadComponent {
16127
16214
  multi: true
16128
16215
  },
16129
16216
  SelectKeyboardService
16130
- ], queries: [{ propertyName: "list", predicate: ListItemComponent }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "searchControlModel", first: true, predicate: ["searchControlModel"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n dropdownToggle\n>\n <div\n class=\"input-group input-group-dropdown input-group-lg input-group-search\"\n role=\"button\"\n >\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n #searchControl\n #searchControlModel=\"ngModel\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n [title]=\"title\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"typeahead-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"typeahead--dropdown-menu\"\n *dropdownMenu\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></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: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
16217
+ ], queries: [{ propertyName: "list", predicate: ListItemComponent }], viewQueries: [{ propertyName: "searchControl", first: true, predicate: ["searchControl"], descendants: true }, { propertyName: "searchControlModel", first: true, predicate: ["searchControlModel"], descendants: true }, { propertyName: "dropdown", first: true, predicate: ["dropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"c8y-search-dropdown dropdown fit-w\"\n placement=\"bottom left\"\n dropdown\n [container]=\"container\"\n #dropdown=\"bs-dropdown\"\n [autoClose]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n dropdownToggle\n>\n <div\n class=\"input-group input-group-dropdown \"\n role=\"button\"\n >\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n #searchControl\n #searchControlModel=\"ngModel\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n [title]=\"title\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"typeahead-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"typeahead--dropdown-menu\"\n *dropdownMenu\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></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: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
16131
16218
  }
16132
16219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TypeaheadComponent, decorators: [{
16133
16220
  type: Component,
@@ -16152,7 +16239,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
16152
16239
  IconDirective,
16153
16240
  ListGroupComponent,
16154
16241
  C8yTranslatePipe
16155
- ], 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]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n dropdownToggle\n>\n <div\n class=\"input-group input-group-dropdown input-group-lg input-group-search\"\n role=\"button\"\n >\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n #searchControl\n #searchControlModel=\"ngModel\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n [title]=\"title\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"typeahead-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"typeahead--dropdown-menu\"\n *dropdownMenu\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
16242
+ ], 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]=\"true\"\n (onShown)=\"onShown()\"\n [isDisabled]=\"disabled\"\n dropdownToggle\n>\n <div\n class=\"input-group input-group-dropdown \"\n role=\"button\"\n >\n <input\n class=\"form-control text-truncate\"\n type=\"text\"\n #searchControl\n #searchControlModel=\"ngModel\"\n [ngClass]=\"{\n 'p-r-80':\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false),\n 'p-r-40': hideNew || getDisplayProperty()?.length === 0\n }\"\n [required]=\"required\"\n [ngModel]=\"selected ? getDisplayProperty() : ''\"\n [placeholder]=\"placeholder | translate\"\n (blur)=\"doBlur()\"\n [name]=\"name\"\n [maxlength]=\"maxlength\"\n [disabled]=\"disabled\"\n />\n <span\n class=\"label label-info p-absolute\"\n style=\"top: 10px; right: 40px; z-index: 10\"\n *ngIf=\"\n !hideNew &&\n (selected\n ? selected.id === null && getDisplayProperty()?.length > 0 && allowFreeEntries\n : false)\n \"\n >\n {{ 'New' | translate }}\n </span>\n\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n [title]=\"title\"\n type=\"button\"\n [disabled]=\"disabled\"\n (click)=\"onIconClick.emit({ icon, $event })\"\n data-cy=\"typeahead-button\"\n >\n <i\n class=\"text-primary\"\n [c8yIcon]=\"icon\"\n ></i>\n </button>\n </span>\n </div>\n <c8y-list-group\n class=\"dropdown-menu dropdown-menu--modal\"\n [style.width]=\"container === 'body' ? searchControl.clientWidth + 'px' : undefined\"\n role=\"menu\"\n data-cy=\"typeahead--dropdown-menu\"\n *dropdownMenu\n >\n <ng-content select=\"div, c8y-li, c8y-list-item, button, a\"></ng-content>\n </c8y-list-group>\n</div>\n" }]
16156
16243
  }], ctorParameters: () => [{ type: SelectKeyboardService }], propDecorators: { searchControl: [{
16157
16244
  type: ViewChild,
16158
16245
  args: ['searchControl', { static: false }]
@@ -17701,6 +17788,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
17701
17788
  }]
17702
17789
  }], ctorParameters: () => [{ type: PreviewService }] });
17703
17790
 
17791
+ const PRODUCT_EXPERIENCE_FEEDBACK_FORM = {
17792
+ EVENTS: {
17793
+ FORM_SUBMIT: 'feedback-form-submit'
17794
+ }
17795
+ };
17796
+
17797
+ class FeedbackFormComponent {
17798
+ constructor(fb, gainsightService) {
17799
+ this.fb = fb;
17800
+ this.gainsightService = gainsightService;
17801
+ this.feedbackMessageTpl = gettext('We want to hear from you. Share your feedback on the <strong>{{featurePreviewName}}</strong> feature preview to help us improve Cumulocity.');
17802
+ this.stars = [1, 2, 3, 4, 5];
17803
+ this.hoveredRating = 0;
17804
+ this.ratingLockOnHover = false;
17805
+ this.submitted = {};
17806
+ this.feedbackForm = this.initForm();
17807
+ }
17808
+ ngOnChanges(changes) {
17809
+ if (changes['featureKey'] && !changes['featureKey'].firstChange) {
17810
+ this.feedbackForm.reset();
17811
+ this.submitted[this.featureKey] = false;
17812
+ this.ratingLockOnHover = false;
17813
+ this.hoveredRating = 0;
17814
+ }
17815
+ }
17816
+ setRating(star) {
17817
+ this.feedbackForm.patchValue({ rating: star });
17818
+ this.ratingLockOnHover = true;
17819
+ }
17820
+ onMouseDown(star) {
17821
+ if (this.hoveredRating > 0) {
17822
+ this.hoveredRating = star; // needed in case ratingLockOnHover is true
17823
+ this.setRating(star);
17824
+ }
17825
+ }
17826
+ onMouseEnter(star) {
17827
+ if (!this.ratingLockOnHover) {
17828
+ this.hoveredRating = star;
17829
+ }
17830
+ }
17831
+ onMouseLeave() {
17832
+ if (!this.ratingLockOnHover) {
17833
+ this.hoveredRating = 0;
17834
+ }
17835
+ }
17836
+ onSubmit() {
17837
+ if (this.feedbackForm.valid) {
17838
+ this.gainsightService.triggerEvent(PRODUCT_EXPERIENCE_FEEDBACK_FORM.EVENTS.FORM_SUBMIT, {
17839
+ component: this.featureKey,
17840
+ ...this.feedbackForm.value
17841
+ });
17842
+ this.feedbackForm.reset();
17843
+ this.submitted[this.featureKey] = true;
17844
+ this.ratingLockOnHover = false;
17845
+ this.hoveredRating = 0;
17846
+ }
17847
+ }
17848
+ initForm() {
17849
+ return this.fb.group({
17850
+ feedback: ['', [Validators.maxLength(900)]],
17851
+ rating: [null, [Validators.required]],
17852
+ contactViaEmail: [false]
17853
+ });
17854
+ }
17855
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FeedbackFormComponent, deps: [{ token: i1$8.FormBuilder }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
17856
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: FeedbackFormComponent, isStandalone: true, selector: "c8y-feedback-form", inputs: { featureKey: "featureKey", featurePreviewName: "featurePreviewName" }, usesOnChanges: true, ngImport: i0, template: "<form\n class=\"card card-highlight b-r-16 m-t-40\"\n [formGroup]=\"feedbackForm\"\n (ngSubmit)=\"onSubmit()\"\n>\n <div class=\"card-header p-48 p-b-24\">\n <h3 translate>We value your feedback.</h3>\n </div>\n <div class=\"card-block p-48 p-t-0\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-4\">\n <p\n class=\"m-b-8\"\n [innerHTML]=\"feedbackMessageTpl | translate: { featurePreviewName: featurePreviewName }\"\n ></p>\n <p\n class=\"m-b-24\"\n translate\n >\n Your insights and suggestions directly influence the future of the platform.\n </p>\n </div>\n <div\n class=\"col-md-7\"\n style=\"min-height: 256px\"\n >\n @if (!submitted[featureKey]) {\n <div class=\"form-group\">\n <label class=\"text-medium\">\n {{ 'How would you rate your experience with this feature?' | translate }}\n </label>\n <div\n class=\"d-flex a-i-center gap-4\"\n (mouseleave)=\"onMouseLeave()\"\n >\n @for (star of stars; track star) {\n <button\n class=\"btn-clean btn-lg\"\n [attr.aria-label]=\"\n 'Your rating: {{ starCount }} star(s)' | translate: { starCount: star }\n \"\n type=\"button\"\n (mousedown)=\"onMouseDown(star)\"\n (mouseenter)=\"onMouseEnter(star)\"\n >\n @if (star <= (hoveredRating || feedbackForm.get('rating')?.value || 0)) {\n <i class=\"dlt-c8y-icon-star stroked-icon status minor\"></i>\n } @else {\n <i class=\"dlt-c8y-icon-star-outline status\"></i>\n }\n </button>\n }\n </div>\n </div>\n\n <div class=\"form-group\">\n <label\n class=\"text-medium\"\n for=\"feedback\"\n translate\n >\n Share your feedback, suggestions, or any issues you\u2019ve encountered.\n </label>\n <textarea\n class=\"form-control no-resize inner-scroll\"\n style=\"max-height: 100px !important\"\n [attr.aria-label]=\"'Enter your feedback here' | translate\"\n id=\"feedback\"\n c8y-textarea-autoresize\n formControlName=\"feedback\"\n maxlength=\"900\"\n ></textarea>\n </div>\n\n <label class=\"c8y-switch\">\n <input\n id=\"contactViaEmail\"\n type=\"checkbox\"\n formControlName=\"contactViaEmail\"\n />\n <span></span>\n <span>\n {{ 'I\u2019m open to being contacted for follow-up about my feedback' | translate }}\n </span>\n </label>\n\n <button\n class=\"btn btn-primary m-t-24\"\n type=\"submit\"\n [disabled]=\"feedbackForm.invalid\"\n translate\n >\n Submit feedback\n </button>\n } @else {\n <c8y-operation-result\n class=\"d-block\"\n style=\"margin-top: -40px\"\n type=\"success\"\n [size]=\"90\"\n text=\"{{ 'Thank you for your feedback.' | translate }}\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n }\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$8.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: TextareaAutoresizeDirective, selector: "[c8y-textarea-autoresize]" }, { kind: "ngmodule", type: C8yTranslateModule }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "component", type: OperationResultComponent, selector: "c8y-operation-result", inputs: ["text", "vertical", "size", "type"] }] }); }
17857
+ }
17858
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FeedbackFormComponent, decorators: [{
17859
+ type: Component,
17860
+ args: [{ selector: 'c8y-feedback-form', standalone: true, imports: [
17861
+ ReactiveFormsModule,
17862
+ TextareaAutoresizeDirective,
17863
+ C8yTranslateModule,
17864
+ OperationResultComponent
17865
+ ], template: "<form\n class=\"card card-highlight b-r-16 m-t-40\"\n [formGroup]=\"feedbackForm\"\n (ngSubmit)=\"onSubmit()\"\n>\n <div class=\"card-header p-48 p-b-24\">\n <h3 translate>We value your feedback.</h3>\n </div>\n <div class=\"card-block p-48 p-t-0\">\n <div class=\"d-flex-md row\">\n <div class=\"col-md-4\">\n <p\n class=\"m-b-8\"\n [innerHTML]=\"feedbackMessageTpl | translate: { featurePreviewName: featurePreviewName }\"\n ></p>\n <p\n class=\"m-b-24\"\n translate\n >\n Your insights and suggestions directly influence the future of the platform.\n </p>\n </div>\n <div\n class=\"col-md-7\"\n style=\"min-height: 256px\"\n >\n @if (!submitted[featureKey]) {\n <div class=\"form-group\">\n <label class=\"text-medium\">\n {{ 'How would you rate your experience with this feature?' | translate }}\n </label>\n <div\n class=\"d-flex a-i-center gap-4\"\n (mouseleave)=\"onMouseLeave()\"\n >\n @for (star of stars; track star) {\n <button\n class=\"btn-clean btn-lg\"\n [attr.aria-label]=\"\n 'Your rating: {{ starCount }} star(s)' | translate: { starCount: star }\n \"\n type=\"button\"\n (mousedown)=\"onMouseDown(star)\"\n (mouseenter)=\"onMouseEnter(star)\"\n >\n @if (star <= (hoveredRating || feedbackForm.get('rating')?.value || 0)) {\n <i class=\"dlt-c8y-icon-star stroked-icon status minor\"></i>\n } @else {\n <i class=\"dlt-c8y-icon-star-outline status\"></i>\n }\n </button>\n }\n </div>\n </div>\n\n <div class=\"form-group\">\n <label\n class=\"text-medium\"\n for=\"feedback\"\n translate\n >\n Share your feedback, suggestions, or any issues you\u2019ve encountered.\n </label>\n <textarea\n class=\"form-control no-resize inner-scroll\"\n style=\"max-height: 100px !important\"\n [attr.aria-label]=\"'Enter your feedback here' | translate\"\n id=\"feedback\"\n c8y-textarea-autoresize\n formControlName=\"feedback\"\n maxlength=\"900\"\n ></textarea>\n </div>\n\n <label class=\"c8y-switch\">\n <input\n id=\"contactViaEmail\"\n type=\"checkbox\"\n formControlName=\"contactViaEmail\"\n />\n <span></span>\n <span>\n {{ 'I\u2019m open to being contacted for follow-up about my feedback' | translate }}\n </span>\n </label>\n\n <button\n class=\"btn btn-primary m-t-24\"\n type=\"submit\"\n [disabled]=\"feedbackForm.invalid\"\n translate\n >\n Submit feedback\n </button>\n } @else {\n <c8y-operation-result\n class=\"d-block\"\n style=\"margin-top: -40px\"\n type=\"success\"\n [size]=\"90\"\n text=\"{{ 'Thank you for your feedback.' | translate }}\"\n [vertical]=\"true\"\n ></c8y-operation-result>\n }\n </div>\n </div>\n </div>\n</form>\n" }]
17866
+ }], ctorParameters: () => [{ type: i1$8.FormBuilder }, { type: GainsightService }], propDecorators: { featureKey: [{
17867
+ type: Input
17868
+ }], featurePreviewName: [{
17869
+ type: Input
17870
+ }] } });
17871
+
17704
17872
  class PreviewFeatureComponent {
17705
17873
  constructor() {
17706
17874
  this.description$ = new BehaviorSubject('');
@@ -17756,11 +17924,19 @@ class PreviewFeatureComponent {
17756
17924
  });
17757
17925
  }
17758
17926
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreviewFeatureComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
17759
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: PreviewFeatureComponent, isStandalone: true, selector: "c8y-preview-feature", host: { classAttribute: "d-contents" }, providers: [MarkdownToHtmlPipe], ngImport: i0, template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow min-width-0\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n <span class=\"text-truncate\">\n {{ feature.label }}\n </span>\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll markdown-content\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$a.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$a.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: ListGroupModule }, { kind: "pipe", type: FeatureStatePipe, name: "featureState" }] }); }
17927
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: PreviewFeatureComponent, isStandalone: true, selector: "c8y-preview-feature", host: { classAttribute: "d-contents" }, providers: [MarkdownToHtmlPipe], ngImport: i0, template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow min-width-0\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n <span class=\"text-truncate\">\n {{ feature.label }}\n </span>\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll markdown-content\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n @if (selectedFeature.key) {\n <c8y-feedback-form\n [featureKey]=\"selectedFeature.key\"\n [featurePreviewName]=\"selectedFeature.label\"\n ></c8y-feedback-form>\n }\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n @if (selectedFeature.key) {\n <c8y-feedback-form\n [featureKey]=\"selectedFeature.key\"\n [featurePreviewName]=\"selectedFeature.label\"\n ></c8y-feedback-form>\n }\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1$a.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$a.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: ListGroupModule }, { kind: "pipe", type: FeatureStatePipe, name: "featureState" }, { kind: "component", type: FeedbackFormComponent, selector: "c8y-feedback-form", inputs: ["featureKey", "featurePreviewName"] }] }); }
17760
17928
  }
17761
17929
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PreviewFeatureComponent, decorators: [{
17762
17930
  type: Component,
17763
- args: [{ selector: 'c8y-preview-feature', host: { class: 'd-contents' }, standalone: true, imports: [NgForOf, NgIf, AsyncPipe, CommonModule, ListGroupModule, FeatureStatePipe], providers: [MarkdownToHtmlPipe], template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow min-width-0\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n <span class=\"text-truncate\">\n {{ feature.label }}\n </span>\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll markdown-content\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n</ng-template>\n" }]
17931
+ args: [{ selector: 'c8y-preview-feature', host: { class: 'd-contents' }, standalone: true, imports: [
17932
+ NgForOf,
17933
+ NgIf,
17934
+ AsyncPipe,
17935
+ CommonModule,
17936
+ ListGroupModule,
17937
+ FeatureStatePipe,
17938
+ FeedbackFormComponent
17939
+ ], providers: [MarkdownToHtmlPipe], template: "<div class=\"card-block separator-bottom bg-component text-center flex-no-shrink p-24\">\n <div class=\"d-flex fit-w a-i-center j-c-center\">\n <i\n class=\"icon-24 m-r-8\"\n [c8yIcon]=\"'science'\"\n ></i>\n <h3\n class=\"m-0\"\n translate\n >\n Preview features\n </h3>\n </div>\n <p class=\"text-16 m-t-8\">\n {{\n 'Select any feature to view additional details and documentation. Toggle features on or off using the switches.'\n | translate\n }}\n </p>\n\n <p>\n {{\n 'These beta capabilities may change or be removed before final release. We value your feedback. The descriptions for the features below are available only in English.'\n | translate\n }}\n </p>\n</div>\n\n<div class=\"card-block p-0\">\n <div class=\"d-flex fit-h\">\n <div class=\"col-md-4 col-lg-3 p-l-0 p-r-0 sticky-top m-t-0 inner-scroll bg-level-1\">\n <div class=\"nav-tabs nav-tabs-vertical nav-tabs-vertical--wide p-t-0\">\n <div\n [class.active]=\"feature === selectedFeature\"\n class=\"d-flex fit-w a-i-center\"\n *ngFor=\"let feature of features$ | async\"\n >\n <button\n class=\"d-flex gap-4 text-truncate flex-grow min-width-0\"\n title=\"{{ feature.label }}\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n (click)=\"updateSelectedFeature(feature)\"\n >\n <i\n class=\"m-l-0\"\n [c8yIcon]=\"'science'\"\n ></i>\n <span class=\"text-truncate\">\n {{ feature.label }}\n </span>\n </button>\n <div\n class=\"a-s-stretch d-flex a-i-center separator-bottom p-r-16\"\n [ngClass]=\"{\n 'bg-component': feature === selectedFeature,\n 'bg-level-1': feature !== selectedFeature\n }\"\n >\n <label\n class=\"c8y-switch c8y-switch--inline m-l-auto\"\n title=\"{{ 'Enable or disable' | translate }}\"\n >\n <input\n [attr.aria-label]=\"feature.label\"\n type=\"checkbox\"\n [checked]=\"feature.key | featureState | async\"\n (change)=\"$event.stopPropagation(); onToggle(feature, $event)\"\n />\n <span class=\"slider round\"></span>\n </label>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-md-8 col-lg-9 p-24 inner-scroll markdown-content\"\n *ngIf=\"selectedFeature\"\n >\n <span class=\"tag tag--primary h4\">\n {{ 'Feature preview' | translate }} \u2014 {{ selectedFeature.label }}\n </span>\n <div *ngIf=\"isComponent(description$.value); else stringDescription\">\n <ng-container *ngComponentOutlet=\"description$.value\"></ng-container>\n @if (selectedFeature.key) {\n <c8y-feedback-form\n [featureKey]=\"selectedFeature.key\"\n [featurePreviewName]=\"selectedFeature.label\"\n ></c8y-feedback-form>\n }\n </div>\n </div>\n </div>\n</div>\n\n<div class=\"text-center card-footer p-24 separator\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Close' | translate }}\"\n type=\"button\"\n (click)=\"close()\"\n >\n {{ 'Close' | translate }}\n </button>\n</div>\n\n<ng-template #stringDescription>\n <p [innerHTML]=\"description$.value\"></p>\n @if (selectedFeature.key) {\n <c8y-feedback-form\n [featureKey]=\"selectedFeature.key\"\n [featurePreviewName]=\"selectedFeature.label\"\n ></c8y-feedback-form>\n }\n</ng-template>\n" }]
17764
17940
  }], ctorParameters: () => [] });
17765
17941
 
17766
17942
  class PreviewFeatureQueryParamDrawerFactory {
@@ -18276,7 +18452,7 @@ class SearchInputComponent {
18276
18452
  this.isLoading = term.length > 0;
18277
18453
  }
18278
18454
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchInputComponent, deps: [{ token: i1$4.Router }, { token: i1.InventoryService }, { token: InventorySearchService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
18279
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SearchInputComponent, isStandalone: true, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", customPlaceholder: "customPlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick", onOpenToggle: "onOpenToggle" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' || mode === 'wildcardsearch' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [title]=\"(term ? RESET_TEXT : SEARCH_TEXT) | translate\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n [highlightFirstItem]=\"false\"\n >\n <div *ngIf=\"enableCustomTemplatePlaceholder\">\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0 && mode === 'search'\"\n [selectable]=\"false\"\n >\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recent search views\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recently registered devices\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Search results\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' || mode === 'wildcardsearch' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select' || mode === 'wildcardsearch'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: DeviceStatusComponent, selector: "device-status, c8y-device-status", inputs: ["mo", "size"] }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: GetGroupIconPipe, name: "getGroupIcon" }] }); }
18455
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SearchInputComponent, isStandalone: true, selector: "c8y-search-input", inputs: { mode: "mode", enableCustomTemplatePlaceholder: "enableCustomTemplatePlaceholder", customPlaceholder: "customPlaceholder", externalTerm: "externalTerm", customDataQuery: "customDataQuery", container: "container", groupsOnly: "groupsOnly" }, outputs: { filter: "filter", search: "search", reset: "reset", onClick: "onClick", onOpenToggle: "onOpenToggle" }, host: { listeners: { "document:keydown": "onKeydownHandler($event)" } }, viewQueries: [{ propertyName: "typeahead", first: true, predicate: TypeaheadComponent, descendants: true }, { propertyName: "dropdown", first: true, predicate: ["searchDropdown"], descendants: true }], ngImport: i0, template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' || mode === 'wildcardsearch' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [title]=\"(term ? RESET_TEXT : SEARCH_TEXT) | translate\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n [highlightFirstItem]=\"false\"\n [ngClass]=\"{ 'input-group-search input-group-lg': mode !== 'select' }\"\n >\n <div *ngIf=\"enableCustomTemplatePlaceholder\">\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0 && mode === 'search'\"\n [selectable]=\"false\"\n >\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recent search views\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recently registered devices\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Search results\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' || mode === 'wildcardsearch' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select' || mode === 'wildcardsearch'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: DeviceStatusComponent, selector: "device-status, c8y-device-status", inputs: ["mo", "size"] }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: ShouldShowMoPipe, name: "shouldShowMo" }, { kind: "pipe", type: GetGroupIconPipe, name: "getGroupIcon" }] }); }
18280
18456
  }
18281
18457
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchInputComponent, decorators: [{
18282
18458
  type: Component,
@@ -18301,7 +18477,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
18301
18477
  AsyncPipe,
18302
18478
  ShouldShowMoPipe,
18303
18479
  GetGroupIconPipe
18304
- ], template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' || mode === 'wildcardsearch' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [title]=\"(term ? RESET_TEXT : SEARCH_TEXT) | translate\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n [highlightFirstItem]=\"false\"\n >\n <div *ngIf=\"enableCustomTemplatePlaceholder\">\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0 && mode === 'search'\"\n [selectable]=\"false\"\n >\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recent search views\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recently registered devices\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Search results\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' || mode === 'wildcardsearch' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select' || mode === 'wildcardsearch'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n" }]
18480
+ ], template: "<div\n class=\"dropdown\"\n #searchDropdown=\"bs-dropdown\"\n [insideClick]=\"true\"\n (isOpenChange)=\"onOpenChange($event)\"\n [cdkTrapFocus]=\"searchDropdown.isOpen\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n dropdown\n>\n <button\n class=\"main-header-button dropdown-toggle c8y-dropdown\"\n [title]=\"'Search' | translate\"\n type=\"button\"\n dropdownToggle\n data-cy=\"search-input--search-btn\"\n >\n <i\n class=\"icon-2x\"\n c8yIcon=\"search\"\n ></i>\n </button>\n\n <div\n class=\"search-header-menu dropdown-menu dropdown-menu-right\"\n id=\"searchDropdown\"\n *dropdownMenu\n >\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n </div>\n</div>\n\n<div\n class=\"search-header-inline\"\n *ngIf=\"mode === 'select'\"\n>\n <ng-container *ngTemplateOutlet=\"form\"></ng-container>\n</div>\n<ng-template #form>\n <form\n [ngClass]=\"{ 'c8y-search-form': mode === 'search' || mode === 'wildcardsearch' }\"\n novalidate\n #searchForm=\"ngForm\"\n >\n <c8y-typeahead\n (onIconClick)=\"onReset($event)\"\n [icon]=\"term ? 'times' : 'search'\"\n [title]=\"(term ? RESET_TEXT : SEARCH_TEXT) | translate\"\n placeholder=\"{{ customPlaceholder ? customPlaceholder : defaultPlaceholder }}\"\n name=\"selected\"\n [(ngModel)]=\"selected\"\n (keydown)=\"keyDown($event)\"\n [allowFreeEntries]=\"false\"\n [container]=\"container\"\n [highlightFirstItem]=\"false\"\n [ngClass]=\"{ 'input-group-search input-group-lg': mode !== 'select' }\"\n >\n <div *ngIf=\"enableCustomTemplatePlaceholder\">\n <ng-content></ng-content>\n </div>\n\n <!-- filter buttons -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0 && mode === 'search'\"\n [selectable]=\"false\"\n >\n <div class=\"d-flex\">\n <p class=\"m-r-4 text-muted\">\n <em translate>Searching by exact match. Click for other search options:</em>\n </p>\n <div class=\"btn-group btn-group-sm\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Starts with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-starts-with\"\n (click)=\"onFilter(term + '*')\"\n >\n {{ 'Starts with' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Contains' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-contains\"\n (click)=\"onFilter('*' + term + '*')\"\n >\n {{ 'Contains' | translate }}\n </button>\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Ends with' | translate }}\"\n type=\"button\"\n data-cy=\"search-input--search-ends-with\"\n (click)=\"onFilter('*' + term)\"\n >\n {{ 'Ends with' | translate }}\n </button>\n </div>\n </div>\n </c8y-li>\n\n <!-- Recent search -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length === 0 && recentSearchResults.length > 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recent search views\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *ngFor=\"let result of term.length === 0 ? recentSearchResults : []\"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Recently registered devices -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"\n term.length === 0 && (recentlyRegisteredResults$ | async)?.data?.length > 0 && !groupsOnly\n \"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Recently registered devices\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n *c8yFor=\"\n let result of term.length === 0 && !groupsOnly\n ? recentlyRegisteredResults$\n : { data: [] };\n loadMore: 'none'\n \"\n (click)=\"open($event, result, result.name)\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- Search results -->\n <c8y-li\n class=\"m-l-32 m-r-32\"\n *ngIf=\"term.length !== 0\"\n [selectable]=\"false\"\n >\n <div class=\"legend\">\n <span\n class=\"text-bold text-muted\"\n translate\n >\n Search results\n </span>\n </div>\n </c8y-li>\n <c8y-li\n class=\"c8y-list__item--link m-l-32 m-r-32\"\n [title]=\"result.name\"\n *c8yFor=\"\n let result of results$;\n loadMore: 'auto';\n notFound: notFoundTemplate;\n loadingTemplate: loading;\n loadNextLabel: 'Find more\u2026'\n \"\n (click)=\"open($event, result, result.name)\"\n data-cy=\"search-input--search-results\"\n >\n <c8y-li-icon>\n <ng-container *ngIf=\"result | shouldShowMo: deviceType.DEVICE; else group\">\n <device-status [mo]=\"result\"></device-status>\n </ng-container>\n <ng-template #group>\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"result | getGroupIcon | async\"\n ></i>\n </ng-template>\n </c8y-li-icon>\n {{ result.name || '--' }}\n </c8y-li>\n\n <!-- No search results found entry -->\n <ng-template #notFoundTemplate>\n <c8y-ui-empty-state\n [icon]=\"'search'\"\n [title]=\"'No match found.' | translate\"\n data-cy=\"search-input--empty-state\"\n [ngClass]=\"{ 'p-4': mode === 'search' || mode === 'wildcardsearch' }\"\n [horizontal]=\"true\"\n *ngIf=\"noMatch\"\n >\n <small\n translate\n *ngIf=\"mode === 'search'\"\n >\n Try to filter or open the asset grid to show all devices and groups.\n </small>\n <small\n translate\n *ngIf=\"mode === 'select' || mode === 'wildcardsearch'\"\n >\n Try to rephrase your search word.\n </small>\n </c8y-ui-empty-state>\n </ng-template>\n\n <!-- loading bar first entries -->\n <c8y-li *ngIf=\"isLoading\">\n <c8y-loading></c8y-loading>\n </c8y-li>\n\n <!-- loading bar for loading more entries (inventory roles) -->\n <ng-template #loading>\n <c8y-li>\n <c8y-loading></c8y-loading>\n </c8y-li>\n </ng-template>\n\n <!-- more filter possibilities -->\n <c8y-li\n class=\"m-t-24 bg-level-2 p-t-16 p-b-16 p-l-24 p-r-24 sticky-bottom\"\n [selectable]=\"false\"\n *ngIf=\"mode === 'search' || mode === 'wildcardsearch'\"\n >\n <div class=\"d-flex a-i-center\">\n <i\n class=\"text-info m-r-4\"\n c8yIcon=\"info-circle\"\n ></i>\n <p\n class=\"m-r-8\"\n translate\n >\n Need more filter possibilities?\n </p>\n <button\n class=\"m-l-16 btn btn-default btn-sm\"\n title=\"{{ 'Go to the asset data table' | translate }}\"\n type=\"button\"\n (mousedown)=\"onOpenAssetTable()\"\n data-cy=\"search-input--asset-table-btn\"\n >\n {{ 'Go to the asset data table' | translate }}\n </button>\n </div>\n </c8y-li>\n </c8y-typeahead>\n </form>\n</ng-template>\n" }]
18305
18481
  }], ctorParameters: () => [{ type: i1$4.Router }, { type: i1.InventoryService }, { type: InventorySearchService }, { type: i0.ChangeDetectorRef }], propDecorators: { mode: [{
18306
18482
  type: Input
18307
18483
  }], enableCustomTemplatePlaceholder: [{
@@ -20445,6 +20621,312 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
20445
20621
  }]
20446
20622
  }] });
20447
20623
 
20624
+ /**
20625
+ * Service to show a modal.
20626
+ */
20627
+ class ModalService {
20628
+ constructor(modalService, gainsightService) {
20629
+ this.modalService = modalService;
20630
+ this.gainsightService = gainsightService;
20631
+ }
20632
+ /**
20633
+ * Shows a quick confirm message modal.
20634
+ * @param title The title of that modal.
20635
+ * @param body The text body to display.
20636
+ * @param status The status.
20637
+ * @param labels The labels to use. Default: { ok: 'Confirm', cancel: 'Cancel'}
20638
+ * @param confirmOptions Selection options to display as checkbox list.
20639
+ * @param productExperienceEvent Additional data to attach to custom product experience events.
20640
+ */
20641
+ async confirm(title, body, status = Status.INFO, labels = {}, confirmOptions = {}, productExperienceEvent = { eventName: 'confirmModal' }) {
20642
+ const modalLabels = {
20643
+ ok: labels.ok || gettext$1('Confirm'),
20644
+ cancel: labels.cancel || gettext$1('Cancel')
20645
+ };
20646
+ const modalRef = this.modalService.show(ConfirmModalComponent, {
20647
+ initialState: { title, body, labels: modalLabels, status, confirmOptions },
20648
+ ariaDescribedby: 'modal-body',
20649
+ ariaLabelledBy: 'modal-title',
20650
+ ignoreBackdropClick: true
20651
+ });
20652
+ if (productExperienceEvent) {
20653
+ productExperienceEvent.data = { ...productExperienceEvent.data, title };
20654
+ }
20655
+ this.triggerEvent(modalRef.content.result, modalLabels, productExperienceEvent);
20656
+ return await modalRef.content.result;
20657
+ }
20658
+ /**
20659
+ * Shows a quick acknowledge message modal.
20660
+ * @param title The title of that modal.
20661
+ * @param body The text body to display.
20662
+ * @param status The status.
20663
+ * @param acknowledgeLabel The label to use.
20664
+ * @param productExperienceEvent Additional data to attach to custom product experience events.
20665
+ */
20666
+ async acknowledge(title, body, status = Status.INFO, acknowledgeLabel = gettext$1('Confirm'), productExperienceEvent = { eventName: 'confirmModal' }) {
20667
+ const labels = { ok: acknowledgeLabel, cancel: null };
20668
+ const modalRef = this.modalService.show(ConfirmModalComponent, {
20669
+ initialState: { title, body, labels, status },
20670
+ ariaDescribedby: 'modal-body',
20671
+ ariaLabelledBy: 'modal-title',
20672
+ ignoreBackdropClick: true
20673
+ });
20674
+ if (productExperienceEvent) {
20675
+ productExperienceEvent.data = { ...productExperienceEvent.data, title };
20676
+ }
20677
+ this.triggerEvent(modalRef.content.result, labels, productExperienceEvent);
20678
+ return await modalRef.content.result;
20679
+ }
20680
+ /**
20681
+ * Shows a quick logout confirmation modal.
20682
+ * @param body The text body to display. Default: 'You will be logged out to apply your changes. Do you want to proceed?'
20683
+ * @param status The status.
20684
+ * @param labels The labels to use. Default: { ok: 'Confirm and log out', cancel: 'Cancel' }
20685
+ */
20686
+ async confirmLogout(body, status = Status.WARNING, labels = {}) {
20687
+ const modalLabels = {
20688
+ ok: labels.ok || gettext$1('Confirm and log out'),
20689
+ cancel: labels.cancel || gettext$1('Cancel')
20690
+ };
20691
+ const modalBody = body || gettext$1('You must log out to apply your changes. Do you want to proceed?');
20692
+ return await this.confirm(gettext$1('Logout required'), modalBody, status, modalLabels);
20693
+ }
20694
+ triggerEvent(result, labels, productExperienceEvent) {
20695
+ const data = { ...productExperienceEvent.data, url: window.location.href };
20696
+ result
20697
+ .then(() => {
20698
+ this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
20699
+ ...data,
20700
+ result: labels.ok
20701
+ });
20702
+ })
20703
+ .catch(() => {
20704
+ this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
20705
+ ...data,
20706
+ result: labels.cancel
20707
+ });
20708
+ });
20709
+ }
20710
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, deps: [{ token: i1$7.BsModalService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Injectable }); }
20711
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, providedIn: 'root' }); }
20712
+ }
20713
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, decorators: [{
20714
+ type: Injectable,
20715
+ args: [{
20716
+ providedIn: 'root'
20717
+ }]
20718
+ }], ctorParameters: () => [{ type: i1$7.BsModalService }, { type: GainsightService }] });
20719
+
20720
+ class ThemeSwitcherService {
20721
+ constructor(options) {
20722
+ this.options = options;
20723
+ this.darkThemeClass = `c8y-dark-theme`;
20724
+ this.themeOptions = [
20725
+ {
20726
+ label: gettext$1('Light'),
20727
+ value: 'light',
20728
+ icon: 'sun'
20729
+ },
20730
+ {
20731
+ label: gettext$1('Dark'),
20732
+ value: 'dark',
20733
+ icon: 'moon'
20734
+ },
20735
+ {
20736
+ label: gettext$1('System'),
20737
+ value: 'system',
20738
+ icon: 'imac-settings'
20739
+ }
20740
+ ];
20741
+ this._userSelectedThemePreference$ = new BehaviorSubject(this.getCurrentThemePreference());
20742
+ this._temporaryThemePreference$ = new BehaviorSubject('none');
20743
+ this.userSelectedThemePreference$ = this._userSelectedThemePreference$.asObservable();
20744
+ const userSelectedTheme$ = this.userSelectedThemePreference$.pipe(switchMap(preference => {
20745
+ if (preference === 'system') {
20746
+ return this.getUsersSystemPreferenceForTheme$();
20747
+ }
20748
+ return of(preference);
20749
+ }));
20750
+ this.disableThemeSelection$ = this._temporaryThemePreference$.pipe(map(preference => preference !== 'none'));
20751
+ this.currentlyAppliedTheme$ = this._temporaryThemePreference$.pipe(switchMap(temporaryPreference => {
20752
+ if (temporaryPreference !== 'none') {
20753
+ return of(temporaryPreference);
20754
+ }
20755
+ return userSelectedTheme$;
20756
+ }));
20757
+ this.darkThemeAvailable$ = this.options.get$('darkThemeAvailable').pipe(map(value => !!value));
20758
+ }
20759
+ getCurrentThemePreference() {
20760
+ const value = getThemePreference();
20761
+ if (value === 'system' || value === 'dark') {
20762
+ return value;
20763
+ }
20764
+ return 'light';
20765
+ }
20766
+ getUsersSystemPreferenceForTheme$() {
20767
+ return fromEvent(window.matchMedia('(prefers-color-scheme: dark)'), 'change').pipe(startWith(window.matchMedia('(prefers-color-scheme: dark)')), map((e) => (e.matches ? 'dark' : 'light')));
20768
+ }
20769
+ changeUserPreference(preference) {
20770
+ setThemePreference(preference);
20771
+ this._userSelectedThemePreference$.next(preference);
20772
+ this.applyTheme(preference);
20773
+ }
20774
+ temporaryChangeTheme(preference) {
20775
+ this._temporaryThemePreference$.next(preference);
20776
+ this.applyTheme(preference);
20777
+ }
20778
+ resetTemporaryTheme() {
20779
+ this._temporaryThemePreference$.next('none');
20780
+ this.applyTheme(this.getCurrentThemePreference());
20781
+ }
20782
+ applyTheme(preference) {
20783
+ applyTheme(preference);
20784
+ }
20785
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, deps: [{ token: OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
20786
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, providedIn: 'root' }); }
20787
+ }
20788
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, decorators: [{
20789
+ type: Injectable,
20790
+ args: [{
20791
+ providedIn: 'root'
20792
+ }]
20793
+ }], ctorParameters: () => [{ type: OptionsService }] });
20794
+
20795
+ class UiSettingsComponent {
20796
+ constructor(translate, state, ui, userPreferences, c8yModalService, headerService, themeSwitcher) {
20797
+ this.translate = translate;
20798
+ this.state = state;
20799
+ this.ui = ui;
20800
+ this.userPreferences = userPreferences;
20801
+ this.c8yModalService = c8yModalService;
20802
+ this.headerService = headerService;
20803
+ this.themeSwitcher = themeSwitcher;
20804
+ this.destroyed$ = new Subject();
20805
+ this.currentLang = this.ui.state.lang;
20806
+ this.ui.state$
20807
+ .pipe(filter(({ lang }) => lang !== this.currentLang), takeUntil(this.destroyed$), first$1())
20808
+ .subscribe(({ lang }) => (this.currentLang = lang));
20809
+ this.open$ = this.headerService.rightDrawerOpen$;
20810
+ }
20811
+ ngOnInit() {
20812
+ this.languages = this.state.state.langs.map(l => ({
20813
+ lang: l,
20814
+ nativeLanguage: this.translate.getNativeLanguage(l)
20815
+ }));
20816
+ }
20817
+ ngOnDestroy() {
20818
+ this.destroyed$.next();
20819
+ this.destroyed$.complete();
20820
+ }
20821
+ async onLanguageChange(changedLang) {
20822
+ if (!changedLang) {
20823
+ return;
20824
+ }
20825
+ await this.translate.switchToLanguage(changedLang);
20826
+ if (await this.persistLanguage(changedLang)) {
20827
+ location.reload();
20828
+ }
20829
+ }
20830
+ async persistLanguage(lang) {
20831
+ let shouldReload = true;
20832
+ try {
20833
+ await this.c8yModalService.confirm(gettext$1('Reload recommended'), gettext$1('To change the language in the entire application, we recommend you to reload the page. If you have any unsaved changes, you can reload later. How would you like to proceed?'), Status.WARNING, {
20834
+ ok: gettext$1('Reload now'),
20835
+ cancel: gettext$1('Reload later')
20836
+ });
20837
+ }
20838
+ catch (ex) {
20839
+ shouldReload = false;
20840
+ }
20841
+ finally {
20842
+ this.translate.saveInLocalStorage(lang);
20843
+ await this.userPreferences.set('language', lang);
20844
+ this.currentLang = lang;
20845
+ }
20846
+ return shouldReload;
20847
+ }
20848
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsComponent, deps: [{ token: TranslateService }, { token: AppStateService }, { token: AppStateService }, { token: UserPreferencesService }, { token: ModalService }, { token: HeaderService }, { token: ThemeSwitcherService }], target: i0.ɵɵFactoryTarget.Component }); }
20849
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UiSettingsComponent, isStandalone: true, selector: "c8y-ui-settings", 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=\"eyedropper\"></i>\n <span class=\"text-bold\">{{ 'UI settings' | translate }}</span>\n </div>\n\n <div\n class=\"p-l-16 p-r-16 p-b-16\"\n *ngIf=\"themeSwitcher.darkThemeAvailable$ | async\"\n >\n <p translate>Theme</p>\n <div\n class=\"c8y-switch-multistate\"\n *ngIf=\"themeSwitcher.userSelectedThemePreference$ | async as themePreference\"\n >\n <ng-container *ngFor=\"let themeOption of themeSwitcher.themeOptions; index as i\">\n <input\n [attr.aria-label]=\"themeOption.label\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n name=\"theme-switcher\"\n type=\"radio\"\n [id]=\"'theme-option-' + i\"\n [disabled]=\"themeSwitcher.disableThemeSelection$ | async\"\n [checked]=\"themePreference === themeOption.value\"\n (click)=\"themeSwitcher.changeUserPreference(themeOption.value)\"\n />\n <label\n title=\"{{ themeOption.label | translate }}\"\n [for]=\"'theme-option-' + i\"\n >\n <i [c8yIcon]=\"themeOption.icon\"></i>\n </label>\n </ng-container>\n <div class=\"c8y-switch-multistate__handle\"></div>\n </div>\n </div>\n\n <div class=\"form-group p-l-16 p-r-16\">\n <label\n for=\"userLang\"\n translate\n >\n Language\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n #selectLang\n [ngModel]=\"currentLang\"\n (change)=\"onLanguageChange(selectLang.value)\"\n >\n <option\n *ngFor=\"let language of languages\"\n [value]=\"language.lang\"\n >\n {{ language.nativeLanguage }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\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: "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: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
20850
+ }
20851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsComponent, decorators: [{
20852
+ type: Component,
20853
+ args: [{ selector: 'c8y-ui-settings', standalone: true, imports: [
20854
+ IconDirective,
20855
+ NgIf,
20856
+ C8yTranslateDirective,
20857
+ NgFor,
20858
+ FormsModule$1,
20859
+ C8yTranslatePipe,
20860
+ AsyncPipe
20861
+ ], template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"eyedropper\"></i>\n <span class=\"text-bold\">{{ 'UI settings' | translate }}</span>\n </div>\n\n <div\n class=\"p-l-16 p-r-16 p-b-16\"\n *ngIf=\"themeSwitcher.darkThemeAvailable$ | async\"\n >\n <p translate>Theme</p>\n <div\n class=\"c8y-switch-multistate\"\n *ngIf=\"themeSwitcher.userSelectedThemePreference$ | async as themePreference\"\n >\n <ng-container *ngFor=\"let themeOption of themeSwitcher.themeOptions; index as i\">\n <input\n [attr.aria-label]=\"themeOption.label\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n name=\"theme-switcher\"\n type=\"radio\"\n [id]=\"'theme-option-' + i\"\n [disabled]=\"themeSwitcher.disableThemeSelection$ | async\"\n [checked]=\"themePreference === themeOption.value\"\n (click)=\"themeSwitcher.changeUserPreference(themeOption.value)\"\n />\n <label\n title=\"{{ themeOption.label | translate }}\"\n [for]=\"'theme-option-' + i\"\n >\n <i [c8yIcon]=\"themeOption.icon\"></i>\n </label>\n </ng-container>\n <div class=\"c8y-switch-multistate__handle\"></div>\n </div>\n </div>\n\n <div class=\"form-group p-l-16 p-r-16\">\n <label\n for=\"userLang\"\n translate\n >\n Language\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n #selectLang\n [ngModel]=\"currentLang\"\n (change)=\"onLanguageChange(selectLang.value)\"\n >\n <option\n *ngFor=\"let language of languages\"\n [value]=\"language.lang\"\n >\n {{ language.nativeLanguage }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n</div>\n" }]
20862
+ }], ctorParameters: () => [{ type: TranslateService }, { type: AppStateService }, { type: AppStateService }, { type: UserPreferencesService }, { type: ModalService }, { type: HeaderService }, { type: ThemeSwitcherService }] });
20863
+
20864
+ class UiSettingsModule {
20865
+ static providers() {
20866
+ return [
20867
+ hookDrawer({
20868
+ component: UiSettingsComponent,
20869
+ position: 'right',
20870
+ priority: 90,
20871
+ id: 'uiSettings'
20872
+ })
20873
+ ];
20874
+ }
20875
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
20876
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, imports: [CommonModule, FormsModule$1, UiSettingsComponent], exports: [UiSettingsComponent] }); }
20877
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, imports: [CommonModule, FormsModule$1, UiSettingsComponent] }); }
20878
+ }
20879
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, decorators: [{
20880
+ type: NgModule,
20881
+ args: [{
20882
+ imports: [CommonModule, FormsModule$1, UiSettingsComponent],
20883
+ exports: [UiSettingsComponent]
20884
+ }]
20885
+ }] });
20886
+
20887
+ class UserMenuItemComponent {
20888
+ constructor(userService, headerService) {
20889
+ this.userService = userService;
20890
+ this.headerService = headerService;
20891
+ this.priority = 0;
20892
+ this.click = new EventEmitter();
20893
+ this.open$ = this.headerService.rightDrawerOpen$;
20894
+ }
20895
+ ngAfterViewInit() {
20896
+ this.viewInitTimeout = setTimeout(() => this.userService.add(this));
20897
+ }
20898
+ ngOnDestroy() {
20899
+ clearTimeout(this.viewInitTimeout);
20900
+ this.userService.remove(this);
20901
+ }
20902
+ onClick() {
20903
+ this.click.emit(this);
20904
+ }
20905
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserMenuItemComponent, deps: [{ token: UserMenuService }, { token: HeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
20906
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UserMenuItemComponent, isStandalone: true, selector: "c8y-user-menu-item", inputs: { icon: "icon", label: "label", link: "link", target: "target", priority: "priority", dataCy: "dataCy" }, outputs: { click: "click" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li>\n <a\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n *ngIf=\"link\"\n [attr.href]=\"link\"\n [attr.target]=\"target\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n *ngIf=\"!link\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
20907
+ }
20908
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserMenuItemComponent, decorators: [{
20909
+ type: Component,
20910
+ args: [{ selector: 'c8y-user-menu-item', standalone: true, imports: [NgIf, C8yTranslatePipe, AsyncPipe], template: "<ng-template #template>\n <li>\n <a\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n *ngIf=\"link\"\n [attr.href]=\"link\"\n [attr.target]=\"target\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n *ngIf=\"!link\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n" }]
20911
+ }], ctorParameters: () => [{ type: UserMenuService }, { type: HeaderService }], propDecorators: { icon: [{
20912
+ type: Input
20913
+ }], label: [{
20914
+ type: Input
20915
+ }], link: [{
20916
+ type: Input
20917
+ }], target: [{
20918
+ type: Input
20919
+ }], priority: [{
20920
+ type: Input
20921
+ }], dataCy: [{
20922
+ type: Input
20923
+ }], template: [{
20924
+ type: ViewChild,
20925
+ args: ['template', { static: false }]
20926
+ }], click: [{
20927
+ type: Output
20928
+ }] } });
20929
+
20448
20930
  class PasswordConfirmModalComponent {
20449
20931
  constructor(user, ui, client, alert) {
20450
20932
  this.user = user;
@@ -21447,319 +21929,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
21447
21929
  args: [{ selector: 'c8y-user-edit-modal', standalone: true, imports: [ModalComponent, UserEditComponent, C8yTranslatePipe, AsyncPipe], template: "<c8y-modal\n [title]=\"'Edit user' | translate\"\n [customFooter]=\"true\"\n (onDismiss)=\"onDismiss()\"\n>\n <c8y-user-edit\n [user]=\"ui.currentUser | async\"\n [loading]=\"loading\"\n [isUsageTrackingEnabled]=\"currentUsageTrackingState\"\n [isUserEngagementPreferenceEnabled]=\"currentUserEngagementPreferenceInitialState\"\n [showProductExperienceOptions]=\"showProductExperienceOptions\"\n [focusOnNewPassword]=\"passwordChange\"\n (onUsageTrackingChange)=\"onUsageTrackingChange($event)\"\n (onUserEngagementPreferenceChange)=\"onUserEngagementPreferenceChange($event)\"\n (onUser)=\"updateAndClose($event)\"\n (onCancel)=\"onDismiss()\"\n ></c8y-user-edit>\n</c8y-modal>\n" }]
21448
21930
  }], ctorParameters: () => [{ type: i1$7.BsModalRef }, { type: i1.UserService }, { type: AppStateService }, { type: i1.BasicAuth }, { type: i1.FetchClient }, { type: AlertService }, { type: UserPreferencesService }, { type: ModalService }, { type: GainsightService }, { type: CookieBannerService }, { type: PasswordService }, { type: UserEngagementsService }] });
21449
21931
 
21450
- /**
21451
- * Service to show a modal.
21452
- */
21453
- class ModalService {
21454
- constructor(modalService, gainsightService) {
21455
- this.modalService = modalService;
21456
- this.gainsightService = gainsightService;
21457
- }
21458
- /**
21459
- * Shows a quick confirm message modal.
21460
- * @param title The title of that modal.
21461
- * @param body The text body to display.
21462
- * @param status The status.
21463
- * @param labels The labels to use. Default: { ok: 'Confirm', cancel: 'Cancel'}
21464
- * @param confirmOptions Selection options to display as checkbox list.
21465
- * @param productExperienceEvent Additional data to attach to custom product experience events.
21466
- */
21467
- async confirm(title, body, status = Status.INFO, labels = {}, confirmOptions = {}, productExperienceEvent = { eventName: 'confirmModal' }) {
21468
- const modalLabels = {
21469
- ok: labels.ok || gettext$1('Confirm'),
21470
- cancel: labels.cancel || gettext$1('Cancel')
21471
- };
21472
- const modalRef = this.modalService.show(ConfirmModalComponent, {
21473
- initialState: { title, body, labels: modalLabels, status, confirmOptions },
21474
- ariaDescribedby: 'modal-body',
21475
- ariaLabelledBy: 'modal-title',
21476
- ignoreBackdropClick: true
21477
- });
21478
- if (productExperienceEvent) {
21479
- productExperienceEvent.data = { ...productExperienceEvent.data, title };
21480
- }
21481
- this.triggerEvent(modalRef.content.result, modalLabels, productExperienceEvent);
21482
- return await modalRef.content.result;
21483
- }
21484
- /**
21485
- * Shows a quick acknowledge message modal.
21486
- * @param title The title of that modal.
21487
- * @param body The text body to display.
21488
- * @param status The status.
21489
- * @param acknowledgeLabel The label to use.
21490
- * @param productExperienceEvent Additional data to attach to custom product experience events.
21491
- */
21492
- async acknowledge(title, body, status = Status.INFO, acknowledgeLabel = gettext$1('Confirm'), productExperienceEvent = { eventName: 'confirmModal' }) {
21493
- const labels = { ok: acknowledgeLabel, cancel: null };
21494
- const modalRef = this.modalService.show(ConfirmModalComponent, {
21495
- initialState: { title, body, labels, status },
21496
- ariaDescribedby: 'modal-body',
21497
- ariaLabelledBy: 'modal-title',
21498
- ignoreBackdropClick: true
21499
- });
21500
- if (productExperienceEvent) {
21501
- productExperienceEvent.data = { ...productExperienceEvent.data, title };
21502
- }
21503
- this.triggerEvent(modalRef.content.result, labels, productExperienceEvent);
21504
- return await modalRef.content.result;
21505
- }
21506
- /**
21507
- * Shows a quick logout confirmation modal.
21508
- * @param body The text body to display. Default: 'You will be logged out to apply your changes. Do you want to proceed?'
21509
- * @param status The status.
21510
- * @param labels The labels to use. Default: { ok: 'Confirm and log out', cancel: 'Cancel' }
21511
- */
21512
- async confirmLogout(body, status = Status.WARNING, labels = {}) {
21513
- const modalLabels = {
21514
- ok: labels.ok || gettext$1('Confirm and log out'),
21515
- cancel: labels.cancel || gettext$1('Cancel')
21516
- };
21517
- const modalBody = body || gettext$1('You must log out to apply your changes. Do you want to proceed?');
21518
- return await this.confirm(gettext$1('Logout required'), modalBody, status, modalLabels);
21519
- }
21520
- async changeCurrentUserPassword() {
21521
- this.modalService.show(UserEditModalComponent, {
21522
- initialState: { passwordChange: true },
21523
- ariaDescribedby: 'modal-body',
21524
- ariaLabelledBy: 'modal-title'
21525
- });
21526
- }
21527
- triggerEvent(result, labels, productExperienceEvent) {
21528
- const data = { ...productExperienceEvent.data, url: window.location.href };
21529
- result
21530
- .then(() => {
21531
- this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
21532
- ...data,
21533
- result: labels.ok
21534
- });
21535
- })
21536
- .catch(() => {
21537
- this.gainsightService.triggerEvent(productExperienceEvent.eventName, {
21538
- ...data,
21539
- result: labels.cancel
21540
- });
21541
- });
21542
- }
21543
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, deps: [{ token: i1$7.BsModalService }, { token: GainsightService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21544
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, providedIn: 'root' }); }
21545
- }
21546
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalService, decorators: [{
21547
- type: Injectable,
21548
- args: [{
21549
- providedIn: 'root'
21550
- }]
21551
- }], ctorParameters: () => [{ type: i1$7.BsModalService }, { type: GainsightService }] });
21552
-
21553
- class ThemeSwitcherService {
21554
- constructor(options) {
21555
- this.options = options;
21556
- this.darkThemeClass = `c8y-dark-theme`;
21557
- this.themeOptions = [
21558
- {
21559
- label: gettext$1('Light'),
21560
- value: 'light',
21561
- icon: 'sun'
21562
- },
21563
- {
21564
- label: gettext$1('Dark'),
21565
- value: 'dark',
21566
- icon: 'moon'
21567
- },
21568
- {
21569
- label: gettext$1('System'),
21570
- value: 'system',
21571
- icon: 'imac-settings'
21572
- }
21573
- ];
21574
- this._userSelectedThemePreference$ = new BehaviorSubject(this.getCurrentThemePreference());
21575
- this._temporaryThemePreference$ = new BehaviorSubject('none');
21576
- this.userSelectedThemePreference$ = this._userSelectedThemePreference$.asObservable();
21577
- const userSelectedTheme$ = this.userSelectedThemePreference$.pipe(switchMap(preference => {
21578
- if (preference === 'system') {
21579
- return this.getUsersSystemPreferenceForTheme$();
21580
- }
21581
- return of(preference);
21582
- }));
21583
- this.disableThemeSelection$ = this._temporaryThemePreference$.pipe(map(preference => preference !== 'none'));
21584
- this.currentlyAppliedTheme$ = this._temporaryThemePreference$.pipe(switchMap(temporaryPreference => {
21585
- if (temporaryPreference !== 'none') {
21586
- return of(temporaryPreference);
21587
- }
21588
- return userSelectedTheme$;
21589
- }));
21590
- this.darkThemeAvailable$ = this.options.get$('darkThemeAvailable').pipe(map(value => !!value));
21591
- }
21592
- getCurrentThemePreference() {
21593
- const value = getThemePreference();
21594
- if (value === 'system' || value === 'dark') {
21595
- return value;
21596
- }
21597
- return 'light';
21598
- }
21599
- getUsersSystemPreferenceForTheme$() {
21600
- return fromEvent(window.matchMedia('(prefers-color-scheme: dark)'), 'change').pipe(startWith(window.matchMedia('(prefers-color-scheme: dark)')), map((e) => (e.matches ? 'dark' : 'light')));
21601
- }
21602
- changeUserPreference(preference) {
21603
- setThemePreference(preference);
21604
- this._userSelectedThemePreference$.next(preference);
21605
- this.applyTheme(preference);
21606
- }
21607
- temporaryChangeTheme(preference) {
21608
- this._temporaryThemePreference$.next(preference);
21609
- this.applyTheme(preference);
21610
- }
21611
- resetTemporaryTheme() {
21612
- this._temporaryThemePreference$.next('none');
21613
- this.applyTheme(this.getCurrentThemePreference());
21614
- }
21615
- applyTheme(preference) {
21616
- applyTheme(preference);
21617
- }
21618
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, deps: [{ token: OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
21619
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, providedIn: 'root' }); }
21620
- }
21621
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ThemeSwitcherService, decorators: [{
21622
- type: Injectable,
21623
- args: [{
21624
- providedIn: 'root'
21625
- }]
21626
- }], ctorParameters: () => [{ type: OptionsService }] });
21627
-
21628
- class UiSettingsComponent {
21629
- constructor(translate, state, ui, userPreferences, c8yModalService, headerService, themeSwitcher) {
21630
- this.translate = translate;
21631
- this.state = state;
21632
- this.ui = ui;
21633
- this.userPreferences = userPreferences;
21634
- this.c8yModalService = c8yModalService;
21635
- this.headerService = headerService;
21636
- this.themeSwitcher = themeSwitcher;
21637
- this.destroyed$ = new Subject();
21638
- this.currentLang = this.ui.state.lang;
21639
- this.ui.state$
21640
- .pipe(filter(({ lang }) => lang !== this.currentLang), takeUntil(this.destroyed$), first$1())
21641
- .subscribe(({ lang }) => (this.currentLang = lang));
21642
- this.open$ = this.headerService.rightDrawerOpen$;
21643
- }
21644
- ngOnInit() {
21645
- this.languages = this.state.state.langs.map(l => ({
21646
- lang: l,
21647
- nativeLanguage: this.translate.getNativeLanguage(l)
21648
- }));
21649
- }
21650
- ngOnDestroy() {
21651
- this.destroyed$.next();
21652
- this.destroyed$.complete();
21653
- }
21654
- async onLanguageChange(changedLang) {
21655
- if (!changedLang) {
21656
- return;
21657
- }
21658
- await this.translate.switchToLanguage(changedLang);
21659
- if (await this.persistLanguage(changedLang)) {
21660
- location.reload();
21661
- }
21662
- }
21663
- async persistLanguage(lang) {
21664
- let shouldReload = true;
21665
- try {
21666
- await this.c8yModalService.confirm(gettext$1('Reload recommended'), gettext$1('To change the language in the entire application, we recommend you to reload the page. If you have any unsaved changes, you can reload later. How would you like to proceed?'), Status.WARNING, {
21667
- ok: gettext$1('Reload now'),
21668
- cancel: gettext$1('Reload later')
21669
- });
21670
- }
21671
- catch (ex) {
21672
- shouldReload = false;
21673
- }
21674
- finally {
21675
- this.translate.saveInLocalStorage(lang);
21676
- await this.userPreferences.set('language', lang);
21677
- this.currentLang = lang;
21678
- }
21679
- return shouldReload;
21680
- }
21681
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsComponent, deps: [{ token: TranslateService }, { token: AppStateService }, { token: AppStateService }, { token: UserPreferencesService }, { token: ModalService }, { token: HeaderService }, { token: ThemeSwitcherService }], target: i0.ɵɵFactoryTarget.Component }); }
21682
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UiSettingsComponent, isStandalone: true, selector: "c8y-ui-settings", 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=\"eyedropper\"></i>\n <span class=\"text-bold\">{{ 'UI settings' | translate }}</span>\n </div>\n\n <div\n class=\"p-l-16 p-r-16 p-b-16\"\n *ngIf=\"themeSwitcher.darkThemeAvailable$ | async\"\n >\n <p translate>Theme</p>\n <div\n class=\"c8y-switch-multistate\"\n *ngIf=\"themeSwitcher.userSelectedThemePreference$ | async as themePreference\"\n >\n <ng-container *ngFor=\"let themeOption of themeSwitcher.themeOptions; index as i\">\n <input\n [attr.aria-label]=\"themeOption.label\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n name=\"theme-switcher\"\n type=\"radio\"\n [id]=\"'theme-option-' + i\"\n [disabled]=\"themeSwitcher.disableThemeSelection$ | async\"\n [checked]=\"themePreference === themeOption.value\"\n (click)=\"themeSwitcher.changeUserPreference(themeOption.value)\"\n />\n <label\n title=\"{{ themeOption.label | translate }}\"\n [for]=\"'theme-option-' + i\"\n >\n <i [c8yIcon]=\"themeOption.icon\"></i>\n </label>\n </ng-container>\n <div class=\"c8y-switch-multistate__handle\"></div>\n </div>\n </div>\n\n <div class=\"form-group p-l-16 p-r-16\">\n <label\n for=\"userLang\"\n translate\n >\n Language\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n #selectLang\n [ngModel]=\"currentLang\"\n (change)=\"onLanguageChange(selectLang.value)\"\n >\n <option\n *ngFor=\"let language of languages\"\n [value]=\"language.lang\"\n >\n {{ language.nativeLanguage }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\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: "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: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
21683
- }
21684
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsComponent, decorators: [{
21685
- type: Component,
21686
- args: [{ selector: 'c8y-ui-settings', standalone: true, imports: [
21687
- IconDirective,
21688
- NgIf,
21689
- C8yTranslateDirective,
21690
- NgFor,
21691
- FormsModule$1,
21692
- C8yTranslatePipe,
21693
- AsyncPipe
21694
- ], template: "<div class=\"separator-top p-t-8 p-b-8\">\n <div class=\"c8y-right-drawer__item sticky-top\">\n <i c8yIcon=\"eyedropper\"></i>\n <span class=\"text-bold\">{{ 'UI settings' | translate }}</span>\n </div>\n\n <div\n class=\"p-l-16 p-r-16 p-b-16\"\n *ngIf=\"themeSwitcher.darkThemeAvailable$ | async\"\n >\n <p translate>Theme</p>\n <div\n class=\"c8y-switch-multistate\"\n *ngIf=\"themeSwitcher.userSelectedThemePreference$ | async as themePreference\"\n >\n <ng-container *ngFor=\"let themeOption of themeSwitcher.themeOptions; index as i\">\n <input\n [attr.aria-label]=\"themeOption.label\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n name=\"theme-switcher\"\n type=\"radio\"\n [id]=\"'theme-option-' + i\"\n [disabled]=\"themeSwitcher.disableThemeSelection$ | async\"\n [checked]=\"themePreference === themeOption.value\"\n (click)=\"themeSwitcher.changeUserPreference(themeOption.value)\"\n />\n <label\n title=\"{{ themeOption.label | translate }}\"\n [for]=\"'theme-option-' + i\"\n >\n <i [c8yIcon]=\"themeOption.icon\"></i>\n </label>\n </ng-container>\n <div class=\"c8y-switch-multistate__handle\"></div>\n </div>\n </div>\n\n <div class=\"form-group p-l-16 p-r-16\">\n <label\n for=\"userLang\"\n translate\n >\n Language\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n id=\"userLang\"\n tabindex=\"{{ (open$ | async) ? '0' : '-1' }}\"\n #selectLang\n [ngModel]=\"currentLang\"\n (change)=\"onLanguageChange(selectLang.value)\"\n >\n <option\n *ngFor=\"let language of languages\"\n [value]=\"language.lang\"\n >\n {{ language.nativeLanguage }}\n </option>\n </select>\n <span></span>\n </div>\n </div>\n</div>\n" }]
21695
- }], ctorParameters: () => [{ type: TranslateService }, { type: AppStateService }, { type: AppStateService }, { type: UserPreferencesService }, { type: ModalService }, { type: HeaderService }, { type: ThemeSwitcherService }] });
21696
-
21697
- class UiSettingsModule {
21698
- static providers() {
21699
- return [
21700
- hookDrawer({
21701
- component: UiSettingsComponent,
21702
- position: 'right',
21703
- priority: 90,
21704
- id: 'uiSettings'
21705
- })
21706
- ];
21707
- }
21708
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21709
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, imports: [CommonModule, FormsModule$1, UiSettingsComponent], exports: [UiSettingsComponent] }); }
21710
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, imports: [CommonModule, FormsModule$1, UiSettingsComponent] }); }
21711
- }
21712
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UiSettingsModule, decorators: [{
21713
- type: NgModule,
21714
- args: [{
21715
- imports: [CommonModule, FormsModule$1, UiSettingsComponent],
21716
- exports: [UiSettingsComponent]
21717
- }]
21718
- }] });
21719
-
21720
- class UserMenuItemComponent {
21721
- constructor(userService, headerService) {
21722
- this.userService = userService;
21723
- this.headerService = headerService;
21724
- this.priority = 0;
21725
- this.click = new EventEmitter();
21726
- this.open$ = this.headerService.rightDrawerOpen$;
21727
- }
21728
- ngAfterViewInit() {
21729
- this.viewInitTimeout = setTimeout(() => this.userService.add(this));
21730
- }
21731
- ngOnDestroy() {
21732
- clearTimeout(this.viewInitTimeout);
21733
- this.userService.remove(this);
21734
- }
21735
- onClick() {
21736
- this.click.emit(this);
21737
- }
21738
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserMenuItemComponent, deps: [{ token: UserMenuService }, { token: HeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
21739
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: UserMenuItemComponent, isStandalone: true, selector: "c8y-user-menu-item", inputs: { icon: "icon", label: "label", link: "link", target: "target", priority: "priority", dataCy: "dataCy" }, outputs: { click: "click" }, viewQueries: [{ propertyName: "template", first: true, predicate: ["template"], descendants: true }], ngImport: i0, template: "<ng-template #template>\n <li>\n <a\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n *ngIf=\"link\"\n [attr.href]=\"link\"\n [attr.target]=\"target\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n *ngIf=\"!link\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
21740
- }
21741
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: UserMenuItemComponent, decorators: [{
21742
- type: Component,
21743
- args: [{ selector: 'c8y-user-menu-item', standalone: true, imports: [NgIf, C8yTranslatePipe, AsyncPipe], template: "<ng-template #template>\n <li>\n <a\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n *ngIf=\"link\"\n [attr.href]=\"link\"\n [attr.target]=\"target\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </a>\n <button\n class=\"c8y-right-drawer__link\"\n [attr.tabindex]=\"(open$ | async) ? '0' : '-1'\"\n type=\"button\"\n *ngIf=\"!link\"\n (click)=\"onClick()\"\n [attr.data-cy]=\"dataCy\"\n >\n {{ label | translate }}\n <ng-content></ng-content>\n </button>\n </li>\n</ng-template>\n" }]
21744
- }], ctorParameters: () => [{ type: UserMenuService }, { type: HeaderService }], propDecorators: { icon: [{
21745
- type: Input
21746
- }], label: [{
21747
- type: Input
21748
- }], link: [{
21749
- type: Input
21750
- }], target: [{
21751
- type: Input
21752
- }], priority: [{
21753
- type: Input
21754
- }], dataCy: [{
21755
- type: Input
21756
- }], template: [{
21757
- type: ViewChild,
21758
- args: ['template', { static: false }]
21759
- }], click: [{
21760
- type: Output
21761
- }] } });
21762
-
21763
21932
  class UserMenuOutletComponent {
21764
21933
  constructor(ui, bsModalService, authService, userMenu, headerService) {
21765
21934
  this.ui = ui;
@@ -24527,7 +24696,7 @@ class DatePickerComponent {
24527
24696
  this.dateTo = null;
24528
24697
  }
24529
24698
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DatePickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24530
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DatePickerComponent, isStandalone: true, selector: "c8y-date-picker", inputs: { placeholder: "placeholder", dateInputFormat: "dateInputFormat" }, outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n [cdkTrapFocus]=\"datefilter.isOpen\"\n >\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <em *ngIf=\"!dateFrom && !dateTo\" class=\"text-muted\">\n {{ placeholder }}\n </em>\n </span>\n </button>\n\n <form [formGroup]=\"fgDatePicker\"\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\">\n <div class=\"dropdown-form p-b-0\">\n <c8y-form-group class=\"form-group-sm\">\n <label for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</label>\n <div class=\"form-group datepicker d-block m-b-0\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"form-group form-group-sm \">\n <label for=\"dateTo\" translate>Date to</label>\n <div class=\"form-group datepicker m-l-0 d-block m-b-0 \">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex separator-top gap-8\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\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: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: BsDatepickerModule }, { kind: "directive", type: i2.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i2.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "pipe", type: DatePipe$1, name: "date" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
24699
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DatePickerComponent, isStandalone: true, selector: "c8y-date-picker", inputs: { placeholder: "placeholder", dateInputFormat: "dateInputFormat" }, outputs: { onDateSelected: "onDateSelected" }, ngImport: i0, template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n [cdkTrapFocus]=\"datefilter.isOpen\"\n >\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | c8yDate }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | c8yDate }}\n </span>\n <em *ngIf=\"!dateFrom && !dateTo\" class=\"text-muted\">\n {{ placeholder }}\n </em>\n </span>\n </button>\n\n <form [formGroup]=\"fgDatePicker\"\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\">\n <div class=\"dropdown-form p-b-0\">\n <c8y-form-group class=\"form-group-sm\">\n <label for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</label>\n <div class=\"form-group datepicker d-block m-b-0\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"form-group form-group-sm \">\n <label for=\"dateTo\" translate>Date to</label>\n <div class=\"form-group datepicker m-l-0 d-block m-b-0 \">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex separator-top gap-8\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\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: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1$8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: BsDatepickerModule }, { kind: "directive", type: i2.BsDatepickerDirective, selector: "[bsDatepicker]", inputs: ["placement", "triggers", "outsideClick", "container", "outsideEsc", "isDisabled", "minDate", "maxDate", "ignoreMinMaxErrors", "minMode", "daysDisabled", "datesDisabled", "datesEnabled", "dateCustomClasses", "dateTooltipTexts", "isOpen", "bsValue", "bsConfig"], outputs: ["onShown", "onHidden", "bsValueChange"], exportAs: ["bsDatepicker"] }, { kind: "directive", type: i2.BsDatepickerInputDirective, selector: "input[bsDatepicker]" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
24531
24700
  }
24532
24701
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DatePickerComponent, decorators: [{
24533
24702
  type: Component,
@@ -24542,9 +24711,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
24542
24711
  C8yTranslateDirective,
24543
24712
  RequiredInputPlaceholderDirective,
24544
24713
  BsDatepickerModule,
24545
- DatePipe$1,
24714
+ DatePipe,
24546
24715
  C8yTranslatePipe
24547
- ], template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n [cdkTrapFocus]=\"datefilter.isOpen\"\n >\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | date }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | date }}\n </span>\n <em *ngIf=\"!dateFrom && !dateTo\" class=\"text-muted\">\n {{ placeholder }}\n </em>\n </span>\n </button>\n\n <form [formGroup]=\"fgDatePicker\"\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\">\n <div class=\"dropdown-form p-b-0\">\n <c8y-form-group class=\"form-group-sm\">\n <label for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</label>\n <div class=\"form-group datepicker d-block m-b-0\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"form-group form-group-sm \">\n <label for=\"dateTo\" translate>Date to</label>\n <div class=\"form-group datepicker m-l-0 d-block m-b-0 \">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex separator-top gap-8\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n</div>\n" }]
24716
+ ], template: "<div\n dropdown\n class=\"c8y-child-assets-selector dropdown\"\n #datefilter=\"bs-dropdown\"\n [insideClick]=\"true\"\n placement=\"bottom left\"\n [cdkTrapFocus]=\"datefilter.isOpen\"\n >\n <button\n id=\"date-range\"\n dropdownToggle\n title=\"{{ 'Date filter' | translate }}\"\n type=\"button\"\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n >\n <i c8yIcon=\"calendar-o\" class=\"m-r-4 text-primary\"></i>\n <span class=\"text-truncate\">\n <span *ngIf=\"dateFrom\">\n <span class=\"text-label-small\">{{ 'From`date`' | translate }}</span>\n {{ dateFrom | c8yDate }}\n </span>\n <span *ngIf=\"dateTo\">\n <span class=\"text-label-small\">{{ 'To`date`' | translate }}</span>\n {{ dateTo | c8yDate }}\n </span>\n <em *ngIf=\"!dateFrom && !dateTo\" class=\"text-muted\">\n {{ placeholder }}\n </em>\n </span>\n </button>\n\n <form [formGroup]=\"fgDatePicker\"\n id=\"dropdown-date-range\"\n *dropdownMenu\n class=\"dropdown-menu\">\n <div class=\"dropdown-form p-b-0\">\n <c8y-form-group class=\"form-group-sm\">\n <label for=\"dateFrom\" class=\"text-medium m-b-4\" translate>Date from</label>\n <div class=\"form-group datepicker d-block m-b-0\">\n <input\n id=\"dateFrom\"\n formControlName=\"dateFrom\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date from' | translate }}\"\n bsDatepicker\n [maxDate]=\"dateTo\"\n (bsValueChange)=\"dateFrom = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n <c8y-form-group class=\"form-group form-group-sm \">\n <label for=\"dateTo\" translate>Date to</label>\n <div class=\"form-group datepicker m-l-0 d-block m-b-0 \">\n <input\n name=\"dateTo\"\n id=\"dateTo\"\n formControlName=\"dateTo\"\n class=\"form-control fit-w text-left\"\n placeholder=\"{{ 'Date to' | translate }}\"\n bsDatepicker\n [minDate]=\"dateFrom\"\n (bsValueChange)=\"dateTo = $event\"\n [bsConfig]=\"{ customTodayClass: 'today', returnFocusToInput: true, dateInputFormat: dateInputFormat }\"\n />\n </div>\n </c8y-form-group>\n </div>\n <div class=\"p-16 d-flex separator-top gap-8\">\n <button\n title=\"{{ 'Clear selection' | translate }}\"\n type=\"button\"\n class=\"btn btn-default btn-sm flex-grow\"\n (click)=\"clearFilter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Clear`selection`' | translate }}\n </button>\n <button\n [disabled]=\"!fgDatePicker.get('dateFrom').value && !fgDatePicker.get('dateTo').value\"\n title=\"{{ 'Apply selection' | translate }}\"\n type=\"submit\"\n class=\"btn btn-primary btn-sm flex-grow\"\n (click)=\"filter(); datefilter.isOpen = !datefilter.isOpen\"\n >\n {{ 'Apply`selection`' | translate }}\n </button>\n </div>\n </form>\n</div>\n" }]
24548
24717
  }], propDecorators: { onDateSelected: [{
24549
24718
  type: Output
24550
24719
  }], placeholder: [{
@@ -24593,6 +24762,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImpo
24593
24762
  }]
24594
24763
  }] });
24595
24764
 
24765
+ class ChangeCurrentUserPasswordService {
24766
+ constructor(modalService) {
24767
+ this.modalService = modalService;
24768
+ }
24769
+ async changeCurrentUserPassword() {
24770
+ this.modalService.show(UserEditModalComponent, {
24771
+ initialState: { passwordChange: true },
24772
+ ariaDescribedby: 'modal-body',
24773
+ ariaLabelledBy: 'modal-title'
24774
+ });
24775
+ }
24776
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChangeCurrentUserPasswordService, deps: [{ token: i1$7.BsModalService }], target: i0.ɵɵFactoryTarget.Injectable }); }
24777
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChangeCurrentUserPasswordService, providedIn: 'root' }); }
24778
+ }
24779
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChangeCurrentUserPasswordService, decorators: [{
24780
+ type: Injectable,
24781
+ args: [{
24782
+ providedIn: 'root'
24783
+ }]
24784
+ }], ctorParameters: () => [{ type: i1$7.BsModalService }] });
24785
+
24596
24786
  /**
24597
24787
  * The context routes that are supported by the application.
24598
24788
  */
@@ -37332,5 +37522,5 @@ function colorValidator(allowedModes) {
37332
37522
  * Generated bundle index. Do not edit.
37333
37523
  */
37334
37524
 
37335
- export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationPickerComponent, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppHrefPipe, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetPropertyService, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangeIconComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DateFormatService, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FeatureCacheService, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_CURRENT_APPLICATION, HOOK_CURRENT_TENANT, HOOK_CURRENT_USER, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_PLUGIN, HOOK_PREVIEW, HOOK_QUERY_PARAM, HOOK_QUERY_PARAM_BOTTOM_DRAWER, HOOK_QUERY_PARAM_MODAL, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_ROUTER_STATE_PROP, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PREVIEW_FEATURE_PROVIDERS, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthService, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginLoadedPipe, PluginsExportScopes, PluginsLoaderService, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, PreviewFeatureButtonComponent, PreviewFeatureShowNotification, PreviewService, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QUERY_PARAM_HANDLER_PROVIDERS, QueryParamBottomDrawerFactory, QueryParamBottomDrawerStateService, QueryParamHandlerService, QueryParamModalFactory, QueryParamModalStateService, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeControlComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RelativeTimePipe, RequiredInputPlaceholderDirective, ResizableGridComponent, ResolverServerError, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SHOW_PREVIEW_FEATURES, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SimplifiedAuthService, SkipLinkDirective, StandalonePluginInjector, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TreeNodeCellRendererComponent, TreeNodeColumn, TreeNodeHeaderCellRendererComponent, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WIDGET_CONFIGURATION_GRID_SIZE, WIDGET_TYPE_VALUES, WILDCARD_SEARCH_FEATURE_KEY, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetTimeContextDateRangeService, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookCurrentApplication, hookCurrentTenant, hookCurrentUser, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookPlugin, hookPreview, hookQueryParam, hookQueryParamBottomDrawer, hookQueryParamModal, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookUserMenu, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, provideBootstrapMetadata, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, validateInternationalPhoneNumber, viewContextRoutes, wrapperLegendFieldConfig };
37525
+ export { ACTIONS_STEPPER, AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, ARRAY_VALIDATION_PREFIX, ASSET_PATH, AbstractConfigurationStrategy, ActionBarComponent, ActionBarItemComponent, ActionBarModule, ActionBarService, ActionComponent, ActionControlsExtensionService, ActionModule, ActionOutletComponent, ActionService, AggregationPickerComponent, AggregationService, AlarmRealtimeService, AlarmWithChildrenRealtimeService, AlertComponent, AlertDetailsComponent, AlertModule, AlertOutletBase, AlertOutletComponent, AlertService, AlertTextComponent, AppHrefPipe, AppIconComponent, AppStateService, AppSwitcherComponent, AppSwitcherInlineComponent, AppSwitcherService, ApplicationModule, ApplicationPluginStatus, AssetLinkPipe, AssetPropertyService, AssetTypesRealtimeService, AssetTypesService, AuditLogComponent, AuditLogModule, AuthenticationModule, BackendVersionFactory, BaseColumn, BaseFilteringFormRendererComponent, BooleanFilterMapper, BootstrapComponent, BootstrapModule, BottomDrawerComponent, BottomDrawerRef, BottomDrawerService, BreadcrumbComponent, BreadcrumbItemComponent, BreadcrumbModule, BreadcrumbOutletComponent, BreadcrumbService, BuiltInActionType, BytesPipe, C8Y_PLUGIN_CONTEXT_PATH, C8Y_PLUGIN_NAME, C8yComponentOutlet, C8yJSONSchema, C8yStepper, C8yStepperButtons, C8yStepperIcon, C8yStepperProgress, C8yTranslateDirective, C8yTranslateModule, C8yTranslatePipe, C8yValidators, CUSTOM, CachedLocaleDictionaryService, CellRendererComponent, CellRendererContext, CellRendererDefDirective, ChangeCurrentUserPasswordService, ChangeIconComponent, ClipboardModule, ClipboardService, ColorInputComponent, ColorService, ColumnDirective, CommonModule, ConditionalTabsOutletComponent, ConfigureCustomColumnComponent, ConfirmModalComponent, ContextRouteComponent, ContextRouteGuard, ContextRouteService, CookieBannerComponent, CopyDashboardDisabledReason, CoreModule, CoreSearchModule, CountdownIntervalComponent, CountdownIntervalModule, CurrentPasswordModalComponent, CustomColumn, DATA_GRID_CONFIGURATION_CONTEXT, DATA_GRID_CONFIGURATION_CONTEXT_PROVIDER, DATA_GRID_CONFIGURATION_STRATEGY, DEFAULT_INTERVAL_STATE, DEFAULT_INTERVAL_VALUE, DEFAULT_INTERVAL_VALUES, DRAWER_ANIMATION_TIME, DashboardChildActionComponent, DashboardChildChange, DashboardChildComponent, DashboardChildTitleComponent, DashboardComponent, DashboardModule, DataGridComponent, DataGridModule, DataGridService, DatapointLibraryValidationErrors, DateContextQueryParamNames, DateFilterMapper, DateFormatService, DatePickerComponent, DatePickerModule, DatePipe, DateTimePickerComponent, DateTimePickerModule, DefaultValidationDirective, DeviceBootstrapRealtimeService, DeviceService, DeviceStatusComponent, DeviceStatusModule, DismissAlertStrategy, DocsModule, DocsService, DrawerModule, DrawerOutletComponent, DrawerService, DropAreaComponent, DropAreaModule, DropdownDirectionDirective, DynamicBulkDetailsResolver, DynamicBulkIIdentifiedResolver, DynamicComponentAlert, DynamicComponentAlertAggregator, DynamicComponentAlertsComponent, DynamicComponentComponent, DynamicComponentErrorStrategy, DynamicComponentModule, DynamicComponentService, DynamicDatapointsResolver, DynamicFormsModule, DynamicManagedObjectResolver, DynamicResolverService, ES_MAX_TIME_MILLISECONDS, EmailsValidatorDirective, EmptyComponent, EmptyStateComponent, EmptyStateContextDirective, EventRealtimeService, ExpandableRowDirective, ExtensionPointForPlugins, ExtensionPointWithoutStateForPlugins, ExtractArrayValidationErrorsPipe, FeatureCacheService, FeedbackFormComponent, FilePickerComponent, FilePickerFormControlComponent, FilePickerFormControlModule, FilePickerModule, FilesService, FilterInputComponent, FilterMapperFactory, FilterMapperModule, FilterMapperPipe, FilterMapperService, FilterNonArrayValidationErrorsPipe, FilteringActionType, FilteringFormRendererComponent, FilteringFormRendererContext, FilteringFormRendererDefDirective, ForOfDirective, FormGroupComponent, FormsModule, GENERIC_FILE_TYPE, GLOBAL_CONTEXT_AUTO_REFRESH, GainsightService, GenericFileIconPipe, GeoService, GetGroupIconPipe, GlobalConfigService, GridDataSource, GroupFragment, GroupService, GroupedFilterChips, GuideDocsComponent, GuideHrefDirective, HOOK_ACTION, HOOK_ACTION_BAR, HOOK_BREADCRUMB, HOOK_COMPONENTS, HOOK_CURRENT_APPLICATION, HOOK_CURRENT_TENANT, HOOK_CURRENT_USER, HOOK_DOCS, HOOK_DYNAMIC_PROVIDER_CONFIG, HOOK_NAVIGATOR_NODES, HOOK_OPTIONS, HOOK_PATTERN_MESSAGES, HOOK_PLUGIN, HOOK_PREVIEW, HOOK_QUERY_PARAM, HOOK_QUERY_PARAM_BOTTOM_DRAWER, HOOK_QUERY_PARAM_MODAL, HOOK_ROUTE, HOOK_SEARCH, HOOK_STEPPER, HOOK_TABS, HOOK_VERSION, HOOK_WIZARD, HeaderBarComponent, HeaderCellRendererDefDirective, HeaderModule, HeaderService, HelpComponent, HelpModule, HighlightComponent, HookProviderTypes, HumanizeAppNamePipe, HumanizePipe, HumanizeValidationMessagePipe, I18nModule, INTERVAL_OPTIONS, IconDirective, IfAllowedDirective, InjectionType, InputGroupListComponent, InputGroupListContainerDirective, InterAppService, IntervalBasedReload, InventorySearchService, IpRangeInputListComponent, JsonValidationPrettifierDirective, LANGUAGES, LAST_DAY, LAST_HOUR, LAST_MINUTE, LAST_MONTH, LAST_WEEK, LOCALE_PATH, LegacyGridConfigMapperService, LegendFieldWrapper, ListDisplaySwitchComponent, ListDisplaySwitchModule, ListGroupComponent, ListGroupModule, ListItemActionComponent, ListItemBodyComponent, ListItemCheckboxComponent, ListItemCollapseComponent, ListItemComponent, ListItemDragHandleComponent, ListItemFooterComponent, ListItemIconComponent, ListItemRadioComponent, ListItemTimelineComponent, LoadMoreComponent, LoadingComponent, MAX_PAGE_SIZE, MESSAGES_CORE_I18N, ManagedObjectRealtimeService, ManagedObjectType, MapFunctionPipe, MarkdownToHtmlPipe, MaxValidationDirective, MeasurementRealtimeService, MessageBannerService, MessageDirective, MessagesComponent, MinValidationDirective, MissingTranslationCustomHandler, MoNamePipe, ModalComponent, ModalModule, ModalSelectionMode, ModalService, NEEDED_ROLE_FOR_SETUP, NEW_DASHBOARD_ROUTER_STATE_PROP, NULL_VALUE_PLACEHOLDER, NUMBER_FORMAT_REGEXP, NameTransformPipe, NavigatorBottomModule, NavigatorIconComponent, NavigatorModule, NavigatorNode, NavigatorNodeComponent, NavigatorNodeRoot, NavigatorOutletComponent, NavigatorService, NavigatorTopModule, NewPasswordComponent, NumberPipe, OperationBulkRealtimeService, OperationRealtimeService, OperationResultComponent, OptionsService, OutletDirective, PREVIEW_FEATURE_PROVIDERS, PRODUCT_EXPERIENCE_EVENT_SOURCE, PX_ACTIONS, PX_EVENT_NAME, PackageType, PasswordCheckListComponent, PasswordConfirm, PasswordConfirmModalComponent, PasswordInputComponent, PasswordService, PasswordStrengthCheckerService, PasswordStrengthComponent, PasswordStrengthService, PatternMessagesService, Permissions, PhoneValidationDirective, PlatformDetailsService, PluginLoadedPipe, PluginsExportScopes, PluginsLoaderService, PluginsModule, PluginsResolveService, PluginsService, PopoverConfirmComponent, PreviewFeatureButtonComponent, PreviewFeatureShowNotification, PreviewService, ProductExperienceDirective, ProductExperienceModule, ProgressBarComponent, PropertiesListComponent, PropertiesListModule, PropertyValueTransformService, ProviderConfigurationComponent, ProviderConfigurationModule, ProviderConfigurationNodeFactory, ProviderConfigurationRouteFactory, ProviderConfigurationService, ProviderDefinitionsService, PushStatus, PushStatusLabels, QUERY_PARAM_HANDLER_PROVIDERS, QueryParamBottomDrawerFactory, QueryParamBottomDrawerStateService, QueryParamHandlerService, QueryParamModalFactory, QueryParamModalStateService, QuickLinkComponent, QuickLinkModule, RESOLVING_COMPONENT_WAIT_TIME, RadioFilterMapper, RangeComponent, RangeDirective, RangeDisplayComponent, RangeDisplayModule, RealtimeButtonComponent, RealtimeControlComponent, RealtimeMessage, RealtimeModule, RealtimeService, RealtimeSubjectService, RelativeTimePipe, RequiredInputPlaceholderDirective, ResizableGridComponent, ResolverServerError, RouterModule, RouterService, RouterTabsResolver, SETUP_FINISHED_STEP_ID, SHOW_PREVIEW_FEATURES, SearchComponent, SearchFilters, SearchInputComponent, SearchOutletComponent, SearchResultEmptyComponent, SearchService, SelectComponent, SelectFilterMapper, SelectItemDirective, SelectKeyboardService, SelectLegacyComponent, SelectModalComponent, SelectModalFilterPipe, SelectModalModule, SelectModule, SelectedItemsComponent, SelectedItemsDirective, SendStatus, SendStatusLabels, ServiceRegistry, SetupCompletedComponent, SetupComponent, SetupModule, SetupService, SetupState, SetupStepperFactory, ShortenUserNamePipe, ShouldShowMoPipe, ShowIfFilterPipe, SimpleJsonPathValidatorDirective, SimplifiedAuthService, SkipLinkDirective, StateService, Status, StepperModule, StepperOutletComponent, StepperService, Steppers, StringFilterMapper, StringifyObjectPipe, SupportedApps, TabComponent, TabsModule, TabsOutletComponent, TabsService, TabsetAriaDirective, TenantUiService, TextAreaRowHeightDirective, TextareaAutoresizeDirective, ThemeSwitcherService, TimeIntervalComponent, TimePickerComponent, TimePickerModule, TitleComponent, TitleOutletComponent, TotpChallengeComponent, TotpSetupComponent, TranslateParserCustom, TranslateService, TranslationLoaderService, TreeNodeCellRendererComponent, TreeNodeColumn, TreeNodeHeaderCellRendererComponent, TypeaheadComponent, TypeaheadFilterMapper, UiSettingsComponent, UiSettingsModule, UniqueInCollectionByPathValidationDirective, UserEditComponent, UserEditModalComponent, UserEngagementsService, UserMenuItemComponent, UserMenuOutletComponent, UserMenuService, UserModule, UserNameInitialsPipe, UserPreferencesConfigurationStrategy, UserPreferencesService, UserPreferencesStorageInventory, UserPreferencesStorageLocal, UserTotpRevokeComponent, UserTotpSetupComponent, VERSION_MODULE_CONFIG, ValidationPattern, VersionListComponent, VersionModule, VersionService, ViewContext, ViewContextServices, VirtualScrollWindowDirective, VirtualScrollWindowStrategy, VirtualScrollerWrapperComponent, VisibleControlsPipe, WIDGET_CONFIGURATION_GRID_SIZE, WIDGET_TYPE_VALUES, WILDCARD_SEARCH_FEATURE_KEY, WebSDKVersionFactory, WidgetGlobalAutoRefreshService, WidgetTimeContextActionBarPriority, WidgetTimeContextComponent, WidgetTimeContextDateRangeService, WidgetsDashboardComponent, WizardBodyComponent, WizardComponent, WizardFooterComponent, WizardHeaderComponent, WizardModalService, WizardModule, WizardOutletComponent, WizardService, ZipService, _virtualScrollWindowStrategyFactory, alertOnError, allEntriesAreEqual, asyncValidateArrayElements, colorValidator, deviceAvailabilityIconMap, extraRoutes, fromFactories, fromTrigger, fromTriggerOnce, getActivatedRoute, getAngularLocalesLanguageString, getBasicInputArrayFormFieldConfig, getDictionaryWithTrimmedKeys, getInjectedHooks, gettext, globalAutoRefreshLoading, hookAction, hookActionBar, hookBreadcrumb, hookComponent, hookCurrentApplication, hookCurrentTenant, hookCurrentUser, hookDataGridActionControls, hookDocs, hookDrawer, hookDynamicProviderConfig, hookFilterMapper, hookGeneric, hookNavigator, hookOptions, hookPatternMessages, hookPlugin, hookPreview, hookQueryParam, hookQueryParamBottomDrawer, hookQueryParamModal, hookRoute, hookSearch, hookService, hookStepper, hookTab, hookUserMenu, hookVersion, hookWidget, hookWizard, initializeServices, internalApps, isEagerDynamicComponents, isExtensionFactory, isLazyDynamicComponents, isPromise, languagesFactory, loadLocale, localeId, localePathFactory, memoize, minColumnGridTrackSize, operationStatusClasses, operationStatusIcons, provideBootstrapMetadata, ratiosByColumnTypes, removeDuplicatesIds, resolveInjectedFactories, retryWithDelay, simpleJsonPathValidator, sortByPriority, stateToFactory, statusAlert, statusClasses, statusIcons, throttle, toObservable, toObservableOfArrays, tooltips, trimTranslationKey, uniqueInCollectionByPathValidator, validateArrayElements, validateInternationalPhoneNumber, viewContextRoutes, wrapperLegendFieldConfig };
37336
37526
  //# sourceMappingURL=c8y-ngx-components.mjs.map