@c8y/ngx-components 1022.28.2 → 1022.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/asset-properties/asset-properties.model.d.ts +12 -3
  2. package/asset-properties/asset-properties.model.d.ts.map +1 -1
  3. package/asset-properties/asset-properties.service.d.ts +20 -2
  4. package/asset-properties/asset-properties.service.d.ts.map +1 -1
  5. package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts +14 -0
  6. package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts.map +1 -0
  7. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
  8. package/asset-properties/asset-property-list/asset-property-list.component.d.ts +28 -18
  9. package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
  10. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts +2 -2
  11. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
  12. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +97 -0
  13. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -0
  14. package/asset-properties/custom-properties-drawer.service.d.ts +12 -0
  15. package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -0
  16. package/asset-properties/index.d.ts +1 -0
  17. package/asset-properties/index.d.ts.map +1 -1
  18. package/context-dashboard/dashboard-detail.service.d.ts +2 -2
  19. package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts +2 -1
  20. package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts.map +1 -1
  21. package/context-dashboard/widget-config.component.d.ts +3 -1
  22. package/context-dashboard/widget-config.component.d.ts.map +1 -1
  23. package/context-dashboard/widget-config.service.d.ts +14 -8
  24. package/context-dashboard/widget-config.service.d.ts.map +1 -1
  25. package/core/dynamic-component/dynamic-component.model.d.ts +26 -0
  26. package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
  27. package/core/i18n/pattern-messages.data.d.ts +7 -0
  28. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  29. package/core/index.d.ts +1 -0
  30. package/core/index.d.ts.map +1 -1
  31. package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
  32. package/core/query-param-handler/query-param-handler.service.d.ts.map +1 -1
  33. package/core/query-param-handler/query-param-modal-handler.service.d.ts +16 -5
  34. package/core/query-param-handler/query-param-modal-handler.service.d.ts.map +1 -1
  35. package/core/resizable-grid/index.d.ts +2 -0
  36. package/core/resizable-grid/index.d.ts.map +1 -0
  37. package/core/resizable-grid/resizable-grid.component.d.ts +114 -0
  38. package/core/resizable-grid/resizable-grid.component.d.ts.map +1 -0
  39. package/dashboard-manager/devicemanagement/c8y-ngx-components-dashboard-manager-devicemanagement.d.ts.map +1 -0
  40. package/dashboard-manager/devicemanagement/index.d.ts +2 -0
  41. package/dashboard-manager/devicemanagement/index.d.ts.map +1 -0
  42. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  43. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  44. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  46. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
  48. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  50. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-alarms.mjs +73 -73
  53. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  55. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  57. package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
  58. package/fesm2022/c8y-ngx-components-asset-properties.mjs +427 -66
  59. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  60. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs} +13 -13
  61. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs.map → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map} +1 -1
  62. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  63. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  64. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
  65. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  66. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  67. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  68. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  69. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  70. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  71. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  72. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  73. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  74. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  75. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  76. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs.map +1 -1
  77. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  78. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  79. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  80. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  81. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  82. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +33 -33
  84. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  85. package/fesm2022/c8y-ngx-components-branding-shared.mjs +10 -10
  86. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  87. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  88. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  89. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  90. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  91. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  92. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  94. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  96. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
  97. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  98. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  99. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs} +4 -4
  100. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs.map} +1 -1
  101. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs} +10 -10
  102. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map} +1 -1
  103. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs} +4 -4
  104. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map} +1 -1
  105. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  106. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs.map +1 -1
  107. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  108. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
  109. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +133 -116
  110. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  111. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs} +16 -16
  112. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map} +1 -1
  113. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  114. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +19 -0
  116. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs.map +1 -0
  117. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  118. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  120. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  121. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  122. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  123. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  124. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  125. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
  127. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +7 -7
  129. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  131. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  133. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  134. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  135. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  137. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  138. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
  139. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  140. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +41 -40
  141. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  142. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  143. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  144. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  145. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  146. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  147. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  148. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  149. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  151. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  153. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  155. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  157. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  158. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  159. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  160. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  161. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  162. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  163. package/fesm2022/c8y-ngx-components-echart.mjs +27 -27
  164. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  165. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  166. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  167. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  168. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
  169. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  170. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  171. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  172. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  173. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  174. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  175. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  176. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  177. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  178. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  179. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  180. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
  181. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  182. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  183. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  184. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  185. package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
  186. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  187. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  188. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  189. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  190. package/fesm2022/c8y-ngx-components-icon-selector-icons-arrows.mjs.map +1 -1
  191. package/fesm2022/c8y-ngx-components-icon-selector-icons-city.mjs.map +1 -1
  192. package/fesm2022/c8y-ngx-components-icon-selector-icons-data.mjs.map +1 -1
  193. package/fesm2022/c8y-ngx-components-icon-selector-icons-dateAndTime.mjs.map +1 -1
  194. package/fesm2022/c8y-ngx-components-icon-selector-icons-devicesAndSensors.mjs.map +1 -1
  195. package/fesm2022/c8y-ngx-components-icon-selector-icons-ecommerce.mjs.map +1 -1
  196. package/fesm2022/c8y-ngx-components-icon-selector-icons-editing.mjs.map +1 -1
  197. package/fesm2022/c8y-ngx-components-icon-selector-icons-filesAndFolders.mjs.map +1 -1
  198. package/fesm2022/c8y-ngx-components-icon-selector-icons-finance.mjs.map +1 -1
  199. package/fesm2022/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
  200. package/fesm2022/c8y-ngx-components-icon-selector-icons-location.mjs.map +1 -1
  201. package/fesm2022/c8y-ngx-components-icon-selector-icons-messaging.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-icon-selector-icons-multimedia.mjs.map +1 -1
  203. package/fesm2022/c8y-ngx-components-icon-selector-icons-network.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-icon-selector-icons-office.mjs.map +1 -1
  205. package/fesm2022/c8y-ngx-components-icon-selector-icons-people.mjs.map +1 -1
  206. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs +1 -0
  207. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs.map +1 -1
  208. package/fesm2022/c8y-ngx-components-icon-selector-icons-programming.mjs.map +1 -1
  209. package/fesm2022/c8y-ngx-components-icon-selector-icons-security.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-icon-selector-icons-transport.mjs.map +1 -1
  211. package/fesm2022/c8y-ngx-components-icon-selector-icons-userInterface.mjs.map +1 -1
  212. package/fesm2022/c8y-ngx-components-icon-selector-icons-weather.mjs.map +1 -1
  213. package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
  214. package/fesm2022/c8y-ngx-components-icon-selector-model.mjs.map +1 -1
  215. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  216. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  217. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  218. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  219. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  220. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  221. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  222. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  223. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  224. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  225. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  226. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  227. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  228. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  229. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  230. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  231. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  232. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  233. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  234. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  235. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  236. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  237. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  238. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs.map +1 -1
  239. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  240. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  241. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +10 -10
  242. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  243. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  244. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  245. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  246. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  247. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  248. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  249. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  250. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  251. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  252. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  253. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  254. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  255. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  256. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  257. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  258. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  259. package/fesm2022/c8y-ngx-components-operations-product-experience.mjs.map +1 -1
  260. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  261. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  262. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  263. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  264. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  265. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  266. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  267. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  268. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  269. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  270. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  271. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  272. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  273. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  274. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  275. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  276. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  277. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  278. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  279. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  280. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  281. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  282. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
  283. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  284. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  285. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  286. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  287. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  288. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  289. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  290. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
  291. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  292. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  293. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  294. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  295. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  296. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
  297. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  298. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  299. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  300. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  301. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  302. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
  303. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  304. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
  305. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  306. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  307. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  308. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  309. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  310. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  311. package/fesm2022/c8y-ngx-components-replace-device.mjs +13 -29
  312. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  313. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  314. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  315. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  316. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  317. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  318. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  319. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  320. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  321. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  322. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  323. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  324. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  325. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  326. package/fesm2022/c8y-ngx-components-repository.mjs.map +1 -1
  327. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  328. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  329. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +33 -27
  330. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  331. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +17 -320
  332. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  333. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  334. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  335. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  336. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  337. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  338. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  339. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  340. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  341. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  342. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  343. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  344. package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
  345. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +3 -3
  346. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
  347. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  348. package/fesm2022/c8y-ngx-components-static-assets.mjs.map +1 -1
  349. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  350. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  351. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  352. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  353. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  354. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  355. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  356. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  357. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  358. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  359. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  360. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  361. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  362. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
  363. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  364. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  366. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  367. package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
  368. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  370. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  372. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +4 -4
  373. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  374. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  375. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  376. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  377. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  378. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  379. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  380. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  381. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
  382. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  383. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  384. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  385. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  386. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  387. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +18 -14
  388. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  389. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +4 -2
  390. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  391. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  392. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  393. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  394. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  395. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +4 -2
  396. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  397. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
  398. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  399. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  400. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  401. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  402. package/fesm2022/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
  403. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +22 -22
  404. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  405. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  406. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  407. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  408. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs.map +1 -1
  409. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  410. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
  412. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +50 -36
  414. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  415. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  416. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  417. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
  418. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  419. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  420. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  421. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +22 -22
  422. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  423. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  424. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  425. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  426. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  427. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
  428. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  429. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  430. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  431. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  432. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  433. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  434. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  435. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
  436. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  437. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  438. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  439. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
  440. package/fesm2022/c8y-ngx-components-widgets.mjs +4 -4
  441. package/fesm2022/c8y-ngx-components-widgets.mjs.map +1 -1
  442. package/fesm2022/c8y-ngx-components.mjs +1658 -1315
  443. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  444. package/icon-selector/icons/index.d.ts +1 -1
  445. package/icon-selector/icons/platform/index.d.ts +2 -2
  446. package/icon-selector/icons/platform/index.d.ts.map +1 -1
  447. package/locales/de.po +26 -3
  448. package/locales/es.po +26 -3
  449. package/locales/fr.po +26 -3
  450. package/locales/ja_JP.po +25 -3
  451. package/locales/ko.po +26 -3
  452. package/locales/locales.pot +25 -2
  453. package/locales/nl.po +26 -3
  454. package/locales/pl.po +26 -3
  455. package/locales/pt_BR.po +26 -3
  456. package/locales/zh_CN.po +26 -3
  457. package/locales/zh_TW.po +26 -3
  458. package/package.json +1 -1
  459. package/replace-device/replace-device.module.d.ts.map +1 -1
  460. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts +6 -6
  461. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
  462. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts +0 -1
  463. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts.map +1 -1
  464. package/sensor-phone/sensor-phone.module.d.ts +2 -3
  465. package/sensor-phone/sensor-phone.module.d.ts.map +1 -1
  466. package/widgets/definitions/datapoints-table/index.d.ts +1 -2
  467. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  468. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts +1 -1
  469. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts.map +1 -1
  470. package/widgets/definitions/image/index.d.ts +1 -1
  471. package/widgets/definitions/image/index.d.ts.map +1 -1
  472. package/widgets/definitions/markdown/index.d.ts +1 -1
  473. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  474. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  475. package/widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.d.ts.map +1 -1
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Injectable, Component, inject, InjectionToken, EventEmitter, Output, Input, TemplateRef, ViewChild, Optional, Inject, HostListener, HostBinding, NgModule } from '@angular/core';
3
3
  import * as i2 from '@c8y/ngx-components';
4
- import { gettext, IconDirective, C8yTranslatePipe, Permissions, ContextRouteService, Status, NavigatorNode, NEW_DASHBOARD_ROUTER_STATE_PROP, getActivatedRoute, ViewContext, TabsOutletComponent, memoize, hookGeneric, ExtensionPointForPlugins, fromTriggerOnce, getInjectedHooks, stateToFactory, ListGroupModule, C8yComponentOutlet, AlertService, DynamicComponentModule, DynamicComponentComponent, sortByPriority, isPromise, CoreModule, C8yTranslateDirective, HighlightComponent, EmptyStateComponent, FormGroupComponent, RequiredInputPlaceholderDirective, ProductExperienceDirective, DashboardChildChange, CopyDashboardDisabledReason, TitleComponent, ActionBarItemComponent, HelpComponent, WidgetsDashboardComponent, DatePipe, hookRoute, hookTab, hookNavigator } from '@c8y/ngx-components';
4
+ import { gettext, IconDirective, C8yTranslatePipe, Permissions, ContextRouteService, Status, NavigatorNode, NEW_DASHBOARD_ROUTER_STATE_PROP, getActivatedRoute, ViewContext, TabsOutletComponent, memoize, hookGeneric, ExtensionPointForPlugins, fromTriggerOnce, getInjectedHooks, stateToFactory, ListGroupModule, C8yComponentOutlet, AlertService, DynamicComponentModule, DynamicComponentComponent, sortByPriority, isPromise, CoreModule, WIDGET_CONFIGURATION_GRID_SIZE, C8yTranslateDirective, HighlightComponent, EmptyStateComponent, FormGroupComponent, RequiredInputPlaceholderDirective, ProductExperienceDirective, ResizableGridComponent, DashboardChildChange, CopyDashboardDisabledReason, TitleComponent, ActionBarItemComponent, HelpComponent, WidgetsDashboardComponent, DatePipe, hookRoute, hookTab, hookNavigator } from '@c8y/ngx-components';
5
5
  import * as i1 from '@angular/router';
6
6
  import { RouterOutlet, ActivatedRoute, RouterModule } from '@angular/router';
7
7
  import { of, Subject, from, combineLatest, map as map$1, timer, BehaviorSubject, tap as tap$1, withLatestFrom, mergeMap as mergeMap$1, shareReplay as shareReplay$1, merge, scan, debounceTime, isObservable, iif } from 'rxjs';
@@ -18,6 +18,7 @@ import * as i2$3 from 'ngx-bootstrap/collapse';
18
18
  import { CollapseDirective, CollapseModule } from 'ngx-bootstrap/collapse';
19
19
  import * as i3 from '@angular/common';
20
20
  import { NgIf, NgTemplateOutlet, CommonModule, AsyncPipe, NgClass, NgFor, NgForOf } from '@angular/common';
21
+ import { gettext as gettext$1 } from '@c8y/ngx-components/gettext';
21
22
  import * as i1$2 from '@c8y/ngx-components/assets-navigator';
22
23
  import { AssetSelectorModule } from '@c8y/ngx-components/assets-navigator';
23
24
  import * as i2$2 from 'ngx-bootstrap/popover';
@@ -55,10 +56,10 @@ class NewDashboardGuard {
55
56
  }
56
57
  return of([this.tab]);
57
58
  }
58
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NewDashboardGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
59
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NewDashboardGuard, providedIn: 'root' }); }
59
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NewDashboardGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
60
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NewDashboardGuard, providedIn: 'root' }); }
60
61
  }
61
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NewDashboardGuard, decorators: [{
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: NewDashboardGuard, decorators: [{
62
63
  type: Injectable,
63
64
  args: [{ providedIn: 'root' }]
64
65
  }] });
@@ -79,10 +80,10 @@ class AddDashboardComponent {
79
80
  tempNewDashboardTab.priority = Infinity;
80
81
  this.tabsService.refresh();
81
82
  }
82
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AddDashboardComponent, deps: [{ token: i2.TabsService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
83
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AddDashboardComponent, isStandalone: true, selector: "[c8y-add-dashboard]", host: { classAttribute: "d-flex a-i-stretch sticky-right" }, ngImport: i0, template: "<div class=\"d-flex a-i-stretch m-b-8 m-t-8 p-l-8 hidden-xs\">\n <button\n class=\"btn btn-default btn-sm p-l-8 p-r-8 fit-h p-b-0 p-t-0 d-flex a-i-center\"\n title=\"{{ 'Add dashboard' | translate }}\"\n type=\"button\"\n (click)=\"addDashboard()\"\n >\n <i\n class=\"icon-20 m-r-4\"\n c8yIcon=\"add-circle-outline\"\n ></i>\n <span>{{ 'Add dashboard' | translate }}</span>\n </button>\n <div class=\"p-r-sm-40\"></div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
83
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AddDashboardComponent, deps: [{ token: i2.TabsService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
84
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: AddDashboardComponent, isStandalone: true, selector: "[c8y-add-dashboard]", host: { classAttribute: "d-flex a-i-stretch sticky-right" }, ngImport: i0, template: "<div class=\"d-flex a-i-stretch m-b-8 m-t-8 p-l-8 hidden-xs\">\n <button\n class=\"btn btn-default btn-sm p-l-8 p-r-8 fit-h p-b-0 p-t-0 d-flex a-i-center\"\n title=\"{{ 'Add dashboard' | translate }}\"\n type=\"button\"\n (click)=\"addDashboard()\"\n >\n <i\n class=\"icon-20 m-r-4\"\n c8yIcon=\"add-circle-outline\"\n ></i>\n <span>{{ 'Add dashboard' | translate }}</span>\n </button>\n <div class=\"p-r-sm-40\"></div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
84
85
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AddDashboardComponent, decorators: [{
86
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AddDashboardComponent, decorators: [{
86
87
  type: Component,
87
88
  args: [{ selector: '[c8y-add-dashboard]', host: { class: 'd-flex a-i-stretch sticky-right' }, imports: [IconDirective, C8yTranslatePipe], template: "<div class=\"d-flex a-i-stretch m-b-8 m-t-8 p-l-8 hidden-xs\">\n <button\n class=\"btn btn-default btn-sm p-l-8 p-r-8 fit-h p-b-0 p-t-0 d-flex a-i-center\"\n title=\"{{ 'Add dashboard' | translate }}\"\n type=\"button\"\n (click)=\"addDashboard()\"\n >\n <i\n class=\"icon-20 m-r-4\"\n c8yIcon=\"add-circle-outline\"\n ></i>\n <span>{{ 'Add dashboard' | translate }}</span>\n </button>\n <div class=\"p-r-sm-40\"></div>\n</div>\n" }]
88
89
  }], ctorParameters: () => [{ type: i2.TabsService }, { type: i1.Router }] });
@@ -975,10 +976,10 @@ class ContextDashboardService {
975
976
  [`c8y_Dashboard!name!${dashboardCfg.name}`]: {}
976
977
  };
977
978
  }
978
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ContextDashboardService, deps: [{ token: i1$1.InventoryService }, { token: i2.TabsService }, { token: i2.ModalService }, { token: i2$1.TranslateService }, { token: i1.Router }, { token: i2.NavigatorService }, { token: i2.Permissions }, { token: i2.AlertService }, { token: i2.DynamicComponentService }, { token: i2.GroupService }, { token: i2.OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
979
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ContextDashboardService, providedIn: 'root' }); }
979
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextDashboardService, deps: [{ token: i1$1.InventoryService }, { token: i2.TabsService }, { token: i2.ModalService }, { token: i2$1.TranslateService }, { token: i1.Router }, { token: i2.NavigatorService }, { token: i2.Permissions }, { token: i2.AlertService }, { token: i2.DynamicComponentService }, { token: i2.GroupService }, { token: i2.OptionsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
980
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextDashboardService, providedIn: 'root' }); }
980
981
  }
981
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ContextDashboardService, decorators: [{
982
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextDashboardService, decorators: [{
982
983
  type: Injectable,
983
984
  args: [{ providedIn: 'root' }]
984
985
  }], ctorParameters: () => [{ type: i1$1.InventoryService }, { type: i2.TabsService }, { type: i2.ModalService }, { type: i2$1.TranslateService }, { type: i1.Router }, { type: i2.NavigatorService }, { type: i2.Permissions }, { type: i2.AlertService }, { type: i2.DynamicComponentService }, { type: i2.GroupService }, { type: i2.OptionsService }] });
@@ -1125,10 +1126,10 @@ class DashboardDetailService {
1125
1126
  children: dashboard?.children || {}
1126
1127
  });
1127
1128
  }
1128
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardDetailService, deps: [{ token: i5.FormBuilder }, { token: i2$1.TranslateService }, { token: i2.TabsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1129
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardDetailService }); }
1129
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardDetailService, deps: [{ token: i5.FormBuilder }, { token: i2$1.TranslateService }, { token: i2.TabsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1130
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardDetailService }); }
1130
1131
  }
1131
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardDetailService, decorators: [{
1132
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardDetailService, decorators: [{
1132
1133
  type: Injectable
1133
1134
  }], ctorParameters: () => [{ type: i5.FormBuilder }, { type: i2$1.TranslateService }, { type: i2.TabsService }] });
1134
1135
 
@@ -1498,8 +1499,8 @@ class DashboardDetailComponent {
1498
1499
  this.dashboardDetailService.revertToDashboardFn = dashboard => this.revertDashboard(dashboard);
1499
1500
  this.tabs = this.dashboardDetailService.getTabs();
1500
1501
  }
1501
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardDetailComponent, deps: [{ token: ContextDashboardService }, { token: i2$1.TranslateService }, { token: i2.ContextRouteService }, { token: i1.ActivatedRoute }, { token: i2.TabsService }, { token: i1.Router }, { token: i1$1.InventoryService }, { token: i1.ActivatedRoute }, { token: DashboardDetailService }, { token: i2.AppStateService }, { token: i2.GroupService }, { token: i2.ModalService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
1502
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DashboardDetailComponent, isStandalone: true, selector: "c8y-dashboard-detail", inputs: { isReport: "isReport", deviceType: "deviceType", context: "context", mo: "mo", dashboard: "dashboard", isNamedDashboard: "isNamedDashboard", hideAvailability: "hideAvailability" }, outputs: { dashboardSaved: "dashboardSaved", previewChanged: "previewChanged" }, providers: [DashboardDetailService], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"collapse c8y-top-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <div class=\"p-t-16 p-b-16 p-l-24 p-r-24 separator-bottom\">\n <span class=\"h4\">{{ 'Dashboard settings' | translate }}</span>\n </div>\n\n <div\n class=\"d-flex\"\n *ngIf=\"!isCollapsed\"\n >\n <c8y-tabs-outlet\n class=\"c8y-top-drawer--tabs\"\n [tabs]=\"tabs\"\n [outletName]=\"TABS_OUTLET_NAME\"\n [orientation]=\"'vertical'\"\n [openFirstTab]=\"true\"\n ></c8y-tabs-outlet>\n\n <div\n class=\"inner-scroll c8y-top-drawer__tabs-container flex-grow p-l-24 p-r-lg-32 p-r-xs-24 p-r-sm-24\"\n >\n <router-outlet name=\"dashboard-details\"></router-outlet>\n </div>\n </div>\n\n <div class=\"c8y-top-drawer--footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n (click)=\"save()\"\n [disabled]=\"((dashboardDetailsForm?.invalid || dashboardDetailsForm?.pristine) && this.isEdit) || dashboardDetailService.saveButtonDisabled\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "openFirstTab", "hasHeader"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
1502
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardDetailComponent, deps: [{ token: ContextDashboardService }, { token: i2$1.TranslateService }, { token: i2.ContextRouteService }, { token: i1.ActivatedRoute }, { token: i2.TabsService }, { token: i1.Router }, { token: i1$1.InventoryService }, { token: i1.ActivatedRoute }, { token: DashboardDetailService }, { token: i2.AppStateService }, { token: i2.GroupService }, { token: i2.ModalService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Component }); }
1503
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DashboardDetailComponent, isStandalone: true, selector: "c8y-dashboard-detail", inputs: { isReport: "isReport", deviceType: "deviceType", context: "context", mo: "mo", dashboard: "dashboard", isNamedDashboard: "isNamedDashboard", hideAvailability: "hideAvailability" }, outputs: { dashboardSaved: "dashboardSaved", previewChanged: "previewChanged" }, providers: [DashboardDetailService], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"collapse c8y-top-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <div class=\"p-t-16 p-b-16 p-l-24 p-r-24 separator-bottom\">\n <span class=\"h4\">{{ 'Dashboard settings' | translate }}</span>\n </div>\n\n <div\n class=\"d-flex\"\n *ngIf=\"!isCollapsed\"\n >\n <c8y-tabs-outlet\n class=\"c8y-top-drawer--tabs\"\n [tabs]=\"tabs\"\n [outletName]=\"TABS_OUTLET_NAME\"\n [orientation]=\"'vertical'\"\n [openFirstTab]=\"true\"\n ></c8y-tabs-outlet>\n\n <div\n class=\"inner-scroll c8y-top-drawer__tabs-container flex-grow p-l-24 p-r-lg-32 p-r-xs-24 p-r-sm-24\"\n >\n <router-outlet name=\"dashboard-details\"></router-outlet>\n </div>\n </div>\n\n <div class=\"c8y-top-drawer--footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n (click)=\"save()\"\n [disabled]=\"((dashboardDetailsForm?.invalid || dashboardDetailsForm?.pristine) && this.isEdit) || dashboardDetailService.saveButtonDisabled\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "openFirstTab", "hasHeader"] }, { kind: "directive", type: RouterOutlet, selector: "router-outlet", inputs: ["name", "routerOutletData"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
1503
1504
  }
1504
1505
  __decorate([
1505
1506
  memoize(),
@@ -1507,7 +1508,7 @@ __decorate([
1507
1508
  __metadata("design:paramtypes", [String]),
1508
1509
  __metadata("design:returntype", Promise)
1509
1510
  ], DashboardDetailComponent.prototype, "convertStringToHash", null);
1510
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardDetailComponent, decorators: [{
1511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardDetailComponent, decorators: [{
1511
1512
  type: Component,
1512
1513
  args: [{ selector: 'c8y-dashboard-detail', providers: [DashboardDetailService], imports: [CollapseDirective, NgIf, TabsOutletComponent, RouterOutlet, C8yTranslatePipe], template: "<div\n class=\"collapse c8y-top-drawer\"\n [collapse]=\"isCollapsed\"\n [isAnimated]=\"true\"\n>\n <div class=\"p-t-16 p-b-16 p-l-24 p-r-24 separator-bottom\">\n <span class=\"h4\">{{ 'Dashboard settings' | translate }}</span>\n </div>\n\n <div\n class=\"d-flex\"\n *ngIf=\"!isCollapsed\"\n >\n <c8y-tabs-outlet\n class=\"c8y-top-drawer--tabs\"\n [tabs]=\"tabs\"\n [outletName]=\"TABS_OUTLET_NAME\"\n [orientation]=\"'vertical'\"\n [openFirstTab]=\"true\"\n ></c8y-tabs-outlet>\n\n <div\n class=\"inner-scroll c8y-top-drawer__tabs-container flex-grow p-l-24 p-r-lg-32 p-r-xs-24 p-r-sm-24\"\n >\n <router-outlet name=\"dashboard-details\"></router-outlet>\n </div>\n </div>\n\n <div class=\"c8y-top-drawer--footer\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--cancel-dashboard\"\n (click)=\"cancel()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"button\"\n data-cy=\"dashboard-detail--save-dashboard\"\n (click)=\"save()\"\n [disabled]=\"((dashboardDetailsForm?.invalid || dashboardDetailsForm?.pristine) && this.isEdit) || dashboardDetailService.saveButtonDisabled\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</div>\n" }]
1513
1514
  }], ctorParameters: () => [{ type: ContextDashboardService }, { type: i2$1.TranslateService }, { type: i2.ContextRouteService }, { type: i1.ActivatedRoute }, { type: i2.TabsService }, { type: i1.Router }, { type: i1$1.InventoryService }, { type: i1.ActivatedRoute }, { type: DashboardDetailService }, { type: i2.AppStateService }, { type: i2.GroupService }, { type: i2.ModalService }, { type: i2.GainsightService }], propDecorators: { isReport: [{
@@ -1560,10 +1561,10 @@ class DashboardOriginatorService {
1560
1561
  getState() {
1561
1562
  return cloneDeep(this.state);
1562
1563
  }
1563
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardOriginatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1564
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardOriginatorService, providedIn: 'root' }); }
1564
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardOriginatorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1565
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardOriginatorService, providedIn: 'root' }); }
1565
1566
  }
1566
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardOriginatorService, decorators: [{
1567
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardOriginatorService, decorators: [{
1567
1568
  type: Injectable,
1568
1569
  args: [{
1569
1570
  providedIn: 'root'
@@ -1643,10 +1644,10 @@ class DashboardCaretakerService {
1643
1644
  this.originator.initState(initialItem);
1644
1645
  return initialItem;
1645
1646
  }
1646
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardCaretakerService, deps: [{ token: DashboardOriginatorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1647
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardCaretakerService, providedIn: 'root' }); }
1647
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardCaretakerService, deps: [{ token: DashboardOriginatorService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1648
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardCaretakerService, providedIn: 'root' }); }
1648
1649
  }
1649
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardCaretakerService, decorators: [{
1650
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardCaretakerService, decorators: [{
1650
1651
  type: Injectable,
1651
1652
  args: [{
1652
1653
  providedIn: 'root'
@@ -1719,10 +1720,10 @@ class DashboardEditModeService {
1719
1720
  reset() {
1720
1721
  return this.caretaker.reset();
1721
1722
  }
1722
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardEditModeService, deps: [{ token: DashboardOriginatorService }, { token: DashboardCaretakerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1723
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardEditModeService, providedIn: 'root' }); }
1723
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardEditModeService, deps: [{ token: DashboardOriginatorService }, { token: DashboardCaretakerService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1724
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardEditModeService, providedIn: 'root' }); }
1724
1725
  }
1725
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardEditModeService, decorators: [{
1726
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardEditModeService, decorators: [{
1726
1727
  type: Injectable,
1727
1728
  args: [{
1728
1729
  providedIn: 'root'
@@ -1788,10 +1789,10 @@ class WidgetConfigSectionService extends ExtensionPointForPlugins {
1788
1789
  stateToFactory(this.state$)
1789
1790
  ]).pipe(distinctUntilChanged(), takeUntil(combineLatest([timer(this.DEFAULT_WAIT_TIME), remotesLoaded$])), shareReplay(1));
1790
1791
  }
1791
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigSectionService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1792
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigSectionService, providedIn: 'root' }); }
1792
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigSectionService, deps: [{ token: i0.Injector }, { token: i1.Router }, { token: i2.PluginsResolveService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1793
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigSectionService, providedIn: 'root' }); }
1793
1794
  }
1794
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigSectionService, decorators: [{
1795
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigSectionService, decorators: [{
1795
1796
  type: Injectable,
1796
1797
  args: [{
1797
1798
  providedIn: 'root'
@@ -1802,10 +1803,10 @@ class WidgetConfigSectionComponent {
1802
1803
  setFeedbackTemplate(template) {
1803
1804
  this.feedbackTemplate = template;
1804
1805
  }
1805
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1806
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: WidgetConfigSectionComponent, isStandalone: true, selector: "c8y-widget-config-section", inputs: { section: "section" }, ngImport: i0, template: "<c8y-li\n class=\"c8y-list__item--no-expand c8y-list__item--sticky-top c8y-list__item--dense full-w-collapse\"\n [collapsed]=\"!section.expanded\"\n #li\n>\n <div class=\"d-flex p-r-16 fit-w\">\n <button\n class=\"btn-clean flex-grow flex-no-shrink\"\n type=\"button\"\n [attr.data-cy]=\"section.label\"\n (click)=\"li.collapsed = !li.collapsed\"\n >\n <i\n class=\"p-r-4\"\n [c8yIcon]=\"li.collapsed ? 'chevron-right' : 'chevron-down'\"\n ></i>\n <span\n class=\"text-medium\"\n translate\n >\n {{ section.label }}\n </span>\n </button>\n <ng-container *ngTemplateOutlet=\"feedbackTemplate\"></ng-container>\n </div>\n <c8y-list-item-collapse>\n <ng-container\n *c8yComponentOutlet=\"\n section.component;\n initialState: section.initialState;\n environmentInjector: section.injector\n \"\n ></ng-container>\n </c8y-list-item-collapse>\n</c8y-li>\n", dependencies: [{ kind: "ngmodule", type: ListGroupModule }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector", "c8yComponentOutletProviders", "c8yComponentOutletInitialState"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: CommonModule }] }); }
1806
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigSectionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1807
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetConfigSectionComponent, isStandalone: true, selector: "c8y-widget-config-section", inputs: { section: "section" }, ngImport: i0, template: "<c8y-li\n class=\"c8y-list__item--no-expand c8y-list__item--sticky-top c8y-list__item--dense full-w-collapse\"\n [collapsed]=\"!section.expanded\"\n #li\n>\n <div class=\"d-flex p-r-16 fit-w\">\n <button\n class=\"btn-clean flex-grow flex-no-shrink\"\n type=\"button\"\n [attr.data-cy]=\"section.label\"\n (click)=\"li.collapsed = !li.collapsed\"\n >\n <i\n class=\"p-r-4\"\n [c8yIcon]=\"li.collapsed ? 'chevron-right' : 'chevron-down'\"\n ></i>\n <span\n class=\"text-medium\"\n translate\n >\n {{ section.label }}\n </span>\n </button>\n <ng-container *ngTemplateOutlet=\"feedbackTemplate\"></ng-container>\n </div>\n <c8y-list-item-collapse>\n <ng-container\n *c8yComponentOutlet=\"\n section.component;\n initialState: section.initialState;\n environmentInjector: section.injector\n \"\n ></ng-container>\n </c8y-list-item-collapse>\n</c8y-li>\n", dependencies: [{ kind: "ngmodule", type: ListGroupModule }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector", "c8yComponentOutletProviders", "c8yComponentOutletInitialState"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: CommonModule }] }); }
1807
1808
  }
1808
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigSectionComponent, decorators: [{
1809
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigSectionComponent, decorators: [{
1809
1810
  type: Component,
1810
1811
  args: [{ selector: 'c8y-widget-config-section', standalone: true, imports: [ListGroupModule, C8yComponentOutlet, IconDirective, NgTemplateOutlet, CommonModule], template: "<c8y-li\n class=\"c8y-list__item--no-expand c8y-list__item--sticky-top c8y-list__item--dense full-w-collapse\"\n [collapsed]=\"!section.expanded\"\n #li\n>\n <div class=\"d-flex p-r-16 fit-w\">\n <button\n class=\"btn-clean flex-grow flex-no-shrink\"\n type=\"button\"\n [attr.data-cy]=\"section.label\"\n (click)=\"li.collapsed = !li.collapsed\"\n >\n <i\n class=\"p-r-4\"\n [c8yIcon]=\"li.collapsed ? 'chevron-right' : 'chevron-down'\"\n ></i>\n <span\n class=\"text-medium\"\n translate\n >\n {{ section.label }}\n </span>\n </button>\n <ng-container *ngTemplateOutlet=\"feedbackTemplate\"></ng-container>\n </div>\n <c8y-list-item-collapse>\n <ng-container\n *c8yComponentOutlet=\"\n section.component;\n initialState: section.initialState;\n environmentInjector: section.injector\n \"\n ></ng-container>\n </c8y-list-item-collapse>\n</c8y-li>\n" }]
1811
1812
  }], propDecorators: { section: [{
@@ -1819,10 +1820,10 @@ class WidgetConfigFeedbackComponent {
1819
1820
  ngAfterViewInit() {
1820
1821
  this.widgetSection.setFeedbackTemplate(this.template);
1821
1822
  }
1822
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1823
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: WidgetConfigFeedbackComponent, isStandalone: true, selector: "c8y-widget-config-feedback", viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<ng-template #tpl>\n <ng-content></ng-content>\n</ng-template>\n" }); }
1823
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigFeedbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1824
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetConfigFeedbackComponent, isStandalone: true, selector: "c8y-widget-config-feedback", viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0, template: "<ng-template #tpl>\n <ng-content></ng-content>\n</ng-template>\n" }); }
1824
1825
  }
1825
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigFeedbackComponent, decorators: [{
1826
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigFeedbackComponent, decorators: [{
1826
1827
  type: Component,
1827
1828
  args: [{ selector: 'c8y-widget-config-feedback', standalone: true, imports: [WidgetConfigSectionComponent], template: "<ng-template #tpl>\n <ng-content></ng-content>\n</ng-template>\n" }]
1828
1829
  }], propDecorators: { template: [{
@@ -1901,10 +1902,10 @@ class WidgetAssetSelectorComponent {
1901
1902
  updateConfig(device) {
1902
1903
  this.widgetConfigService.updateConfig({ device });
1903
1904
  }
1904
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetAssetSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1905
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: WidgetAssetSelectorComponent, isStandalone: true, selector: "c8y-widget-asset-selector", inputs: { isRequired: "isRequired", showUnassigned: "showUnassigned", groupsSelectable: "groupsSelectable", assetSelectorConfig: "assetSelectorConfig", selectedDevice: "selectedDevice" }, host: { classAttribute: "bg-level-1" }, ngImport: i0, template: "<div class=\"card borderless\">\n <div\n class=\"card-block p-0 bg-inherit\"\n style=\"height: 315px\"\n >\n <!-- \n ngIf is needed to avoid a race condition as \n asset-selector seems not to support dynamic config changes\n -->\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n *ngIf=\"assetSelectorConfig\"\n (onSelected)=\"selectionChanged($event)\"\n [config]=\"assetSelectorConfig\"\n [asset]=\"(widgetConfigService.currentConfig$ | async).settings?.context\"\n [(ngModel)]=\"selectedDevice\"\n [required]=\"isRequired\"\n name=\"configAsset\"\n ></c8y-asset-selector-miller>\n </div>\n\n <c8y-widget-config-feedback>\n <span\n class=\"tag chip text-12 m-4\"\n [ngClass]=\"{\n 'tag--info': selectedDevice || !isRequired,\n 'tag--danger': !selectedDevice && isRequired\n }\"\n >\n <button\n class=\"btn-clean text-12 m-r-4\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"selectedDevice\"\n (click)=\"selectedDevice = null; updateConfig(null)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <span\n class=\"text-truncate\"\n title=\"{{ selectedDevice.name || 'Device ' + selectedDevice.id }}\"\n *ngIf=\"selectedDevice\"\n >\n {{ selectedDevice.name || 'Device ' + selectedDevice.id }}\n </span>\n <span\n *ngIf=\"!selectedDevice\"\n translate\n >\n No asset selected\n </span>\n </span>\n </c8y-widget-config-feedback>\n</div>\n", dependencies: [{ kind: "ngmodule", type: AssetSelectorModule }, { kind: "component", type: i1$2.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected", "onClearSelected"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: WidgetConfigFeedbackComponent, selector: "c8y-widget-config-feedback" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
1905
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetAssetSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1906
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetAssetSelectorComponent, isStandalone: true, selector: "c8y-widget-asset-selector", inputs: { isRequired: "isRequired", showUnassigned: "showUnassigned", groupsSelectable: "groupsSelectable", assetSelectorConfig: "assetSelectorConfig", selectedDevice: "selectedDevice" }, host: { classAttribute: "bg-level-1" }, ngImport: i0, template: "<div class=\"card borderless\">\n <div\n class=\"card-block p-0 bg-inherit\"\n style=\"height: 315px\"\n >\n <!-- \n ngIf is needed to avoid a race condition as \n asset-selector seems not to support dynamic config changes\n -->\n <c8y-asset-selector-miller\n class=\"d-block bg-inherit p-relative\"\n *ngIf=\"assetSelectorConfig\"\n (onSelected)=\"selectionChanged($event)\"\n [config]=\"assetSelectorConfig\"\n [asset]=\"(widgetConfigService.currentConfig$ | async).settings?.context\"\n [(ngModel)]=\"selectedDevice\"\n [required]=\"isRequired\"\n name=\"configAsset\"\n ></c8y-asset-selector-miller>\n </div>\n\n <c8y-widget-config-feedback>\n <span\n class=\"tag chip text-12 m-4\"\n [ngClass]=\"{\n 'tag--info': selectedDevice || !isRequired,\n 'tag--danger': !selectedDevice && isRequired\n }\"\n >\n <button\n class=\"btn-clean text-12 m-r-4\"\n title=\"{{ 'Deselect' | translate }}\"\n type=\"button\"\n *ngIf=\"selectedDevice\"\n (click)=\"selectedDevice = null; updateConfig(null)\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n <span\n class=\"text-truncate\"\n title=\"{{ selectedDevice.name || 'Device ' + selectedDevice.id }}\"\n *ngIf=\"selectedDevice\"\n >\n {{ selectedDevice.name || 'Device ' + selectedDevice.id }}\n </span>\n <span\n *ngIf=\"!selectedDevice\"\n translate\n >\n No asset selected\n </span>\n </span>\n </c8y-widget-config-feedback>\n</div>\n", dependencies: [{ kind: "ngmodule", type: AssetSelectorModule }, { kind: "component", type: i1$2.MillerViewComponent, selector: "c8y-asset-selector-miller", inputs: ["config", "asset", "selectedDevice", "rootNode", "container"], outputs: ["onSelected", "onClearSelected"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: WidgetConfigFeedbackComponent, selector: "c8y-widget-config-feedback" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
1906
1907
  }
1907
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetAssetSelectorComponent, decorators: [{
1908
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetAssetSelectorComponent, decorators: [{
1908
1909
  type: Component,
1909
1910
  args: [{ selector: 'c8y-widget-asset-selector', host: { class: 'bg-level-1' }, standalone: true, imports: [
1910
1911
  AssetSelectorModule,
@@ -1941,10 +1942,10 @@ class WidgetConfigGeneralComponent {
1941
1942
  ngOnDestroy() {
1942
1943
  this.widgetConfigService.selectedComponent$.next(null);
1943
1944
  }
1944
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigGeneralComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1945
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: WidgetConfigGeneralComponent, isStandalone: true, selector: "c8y-widget-config-general", inputs: { definition: "definition" }, viewQueries: [{ propertyName: "dynamicComponent", first: true, predicate: DynamicComponentComponent, descendants: true }], ngImport: i0, template: "<c8y-dynamic-component\n class=\"d-block p-l-16 p-r-16\"\n [componentId]=\"definition.id\"\n mode=\"config\"\n [config]=\"widgetConfigService.currentConfig$ | async\"\n></c8y-dynamic-component>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: DynamicComponentModule }, { kind: "component", type: i2.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }] }); }
1945
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigGeneralComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1946
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetConfigGeneralComponent, isStandalone: true, selector: "c8y-widget-config-general", inputs: { definition: "definition" }, viewQueries: [{ propertyName: "dynamicComponent", first: true, predicate: DynamicComponentComponent, descendants: true }], ngImport: i0, template: "<c8y-dynamic-component\n class=\"d-block p-l-16 p-r-16\"\n [componentId]=\"definition.id\"\n mode=\"config\"\n [config]=\"widgetConfigService.currentConfig$ | async\"\n></c8y-dynamic-component>\n", dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "ngmodule", type: DynamicComponentModule }, { kind: "component", type: i2.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }] }); }
1946
1947
  }
1947
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigGeneralComponent, decorators: [{
1948
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigGeneralComponent, decorators: [{
1948
1949
  type: Component,
1949
1950
  args: [{ standalone: true, imports: [AsyncPipe, DynamicComponentModule], selector: 'c8y-widget-config-general', template: "<c8y-dynamic-component\n class=\"d-block p-l-16 p-r-16\"\n [componentId]=\"definition.id\"\n mode=\"config\"\n [config]=\"widgetConfigService.currentConfig$ | async\"\n></c8y-dynamic-component>\n" }]
1950
1951
  }], propDecorators: { definition: [{
@@ -1965,6 +1966,11 @@ class WidgetConfigService {
1965
1966
  constructor(widgetConfigSectionService) {
1966
1967
  this.widgetConfigSectionService = widgetConfigSectionService;
1967
1968
  this._currentConfig$ = new BehaviorSubject(null);
1969
+ this._instanceId$ = new BehaviorSubject(null);
1970
+ /**
1971
+ * The unique identifier of the current widget instance.
1972
+ */
1973
+ this.instanceId$ = this._instanceId$.asObservable();
1968
1974
  /**
1969
1975
  * The preview of the currently selected widget. If `null` no preview is shown
1970
1976
  * (except if the selected widget has no configuration).
@@ -2005,7 +2011,11 @@ class WidgetConfigService {
2005
2011
  expanded: section.expanded || false,
2006
2012
  initialState: section.initialState,
2007
2013
  injector: section.injector,
2008
- providers: section.providers
2014
+ providers: Array.isArray(section.providers)
2015
+ ? section.providers
2016
+ : section.providers
2017
+ ? await section.providers()
2018
+ : []
2009
2019
  })));
2010
2020
  }), map$1(sections => sortByPriority(sections)), shareReplay$1(1));
2011
2021
  /**
@@ -2091,7 +2101,7 @@ class WidgetConfigService {
2091
2101
  * Updates the configuration of the selected widget.
2092
2102
  * @param change The change to apply to the configuration.
2093
2103
  * @param force If set to true, the configuration will be updated even if no changes are made. Also concurrency checks are ignored and no change is emitted on the component.
2094
- * Use with caution and only if you want to reset the configuration to some default.
2104
+ * Use with caution and only if you want to reset the configuration to some default.
2095
2105
  */
2096
2106
  updateConfig(change, force = false) {
2097
2107
  if (force) {
@@ -2110,9 +2120,11 @@ class WidgetConfigService {
2110
2120
  /**
2111
2121
  * Select a widget
2112
2122
  * @param selected The widget to select.
2123
+ * @param identifier An optional unique identifier for the widget instance. Only used if the widget is not new.
2113
2124
  */
2114
- selectWidget(selected) {
2125
+ selectWidget(selected, identifier = null) {
2115
2126
  this.selected$.next(selected);
2127
+ this._instanceId$.next(identifier);
2116
2128
  }
2117
2129
  /**
2118
2130
  * Deselect the currently selected.
@@ -2122,18 +2134,19 @@ class WidgetConfigService {
2122
2134
  this.preview$.next(null);
2123
2135
  this.configChangeReset$.next();
2124
2136
  this._currentConfig$.next(null);
2137
+ this._instanceId$.next(null);
2125
2138
  }
2126
2139
  /**
2127
2140
  * Enables a preview.
2128
2141
  * @param preview If set to true, the view component of the current widget will be taken to render the preview.
2129
- * If set to a DynamicComponentDefinition, the preview will be rendered with the given component.
2130
- * If set to a TemplateRef, the preview will be rendered with the given template.
2142
+ * If set to a DynamicComponentDefinition, the preview will be rendered with the given component.
2143
+ * If set to a TemplateRef, the preview will be rendered with the given template.
2131
2144
  */
2132
2145
  setPreview(preview) {
2133
2146
  this.preview$.next(preview);
2134
2147
  }
2135
2148
  /**
2136
- * By default, no sections are added to the configuration. However, to ensure
2149
+ * By default, no sections are added to the configuration. But to ensure
2137
2150
  * backwards compatibility with old plugins, we check if the default asset selector
2138
2151
  * and config section should be shown.
2139
2152
  * @param selectedWidget The currently selected widget.
@@ -2145,7 +2158,7 @@ class WidgetConfigService {
2145
2158
  if (this.isDefaultSettingSectionNeeded(selectedWidget)) {
2146
2159
  defaultWidgetConfigSections.push({
2147
2160
  widgetId: selectedWidget.id,
2148
- label: gettext('Settings'),
2161
+ label: gettext$1('Settings'),
2149
2162
  loadComponent: () => Promise.resolve(WidgetConfigGeneralComponent),
2150
2163
  initialState: {
2151
2164
  definition: selectedWidget
@@ -2158,7 +2171,7 @@ class WidgetConfigService {
2158
2171
  if (this.isDefaultDeviceSelectorNeeded(selectedWidget, config)) {
2159
2172
  defaultWidgetConfigSections.push({
2160
2173
  widgetId: selectedWidget.id,
2161
- label: gettext('Asset selection'),
2174
+ label: gettext$1('Asset selection'),
2162
2175
  loadComponent: () => Promise.resolve(WidgetAssetSelectorComponent),
2163
2176
  priority: 100,
2164
2177
  initialState: {
@@ -2173,9 +2186,9 @@ class WidgetConfigService {
2173
2186
  * Sections should not be added by default anymore. But to ensure backwards compatibility, we
2174
2187
  * check if the default selector should be shown. We assume that a default selector will be shown
2175
2188
  * when:
2176
- * 1. The widget has a dynamic component for configuration (which is also deprecated).
2177
- * OR
2178
- * 2. The widget has not disabled the default selector.
2189
+ * 1. The widget has a dynamic component for configuration (which is also deprecated).
2190
+ * OR
2191
+ * 2. The widget has not disabled the default selector.
2179
2192
  */
2180
2193
  isDefaultDeviceSelectorNeeded(selectedWidget, config) {
2181
2194
  if (!selectedWidget.loadConfigComponent && !selectedWidget.configComponent) {
@@ -2197,10 +2210,10 @@ class WidgetConfigService {
2197
2210
  }
2198
2211
  return selectedWidget.configComponent || selectedWidget.loadConfigComponent;
2199
2212
  }
2200
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigService, deps: [{ token: WidgetConfigSectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2201
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigService, providedIn: 'root' }); }
2213
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigService, deps: [{ token: WidgetConfigSectionService }], target: i0.ɵɵFactoryTarget.Injectable }); }
2214
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigService, providedIn: 'root' }); }
2202
2215
  }
2203
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigService, decorators: [{
2216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigService, decorators: [{
2204
2217
  type: Injectable,
2205
2218
  args: [{
2206
2219
  providedIn: 'root'
@@ -2211,10 +2224,10 @@ class WidgetConfigRootComponent {
2211
2224
  constructor() {
2212
2225
  this.widgetConfigService = inject(WidgetConfigService);
2213
2226
  }
2214
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2215
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: WidgetConfigRootComponent, isStandalone: true, selector: "c8y-widget-config-root", ngImport: i0, template: "<ng-container\n *ngFor=\"let section of widgetConfigService.currentSections$ | async\"\n>\n <c8y-widget-config-section [section]=\"section\"></c8y-widget-config-section>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: WidgetConfigSectionComponent, selector: "c8y-widget-config-section", inputs: ["section"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
2227
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigRootComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2228
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetConfigRootComponent, isStandalone: true, selector: "c8y-widget-config-root", ngImport: i0, template: "<ng-container\n *ngFor=\"let section of widgetConfigService.currentSections$ | async\"\n>\n <c8y-widget-config-section [section]=\"section\"></c8y-widget-config-section>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: WidgetConfigSectionComponent, selector: "c8y-widget-config-section", inputs: ["section"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
2216
2229
  }
2217
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigRootComponent, decorators: [{
2230
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigRootComponent, decorators: [{
2218
2231
  type: Component,
2219
2232
  args: [{ standalone: true, imports: [NgFor, WidgetConfigSectionComponent, AsyncPipe], selector: 'c8y-widget-config-root', template: "<ng-container\n *ngFor=\"let section of widgetConfigService.currentSections$ | async\"\n>\n <c8y-widget-config-section [section]=\"section\"></c8y-widget-config-section>\n</ng-container>\n" }]
2220
2233
  }] });
@@ -2268,10 +2281,10 @@ class WidgetService {
2268
2281
  }
2269
2282
  return widget;
2270
2283
  }
2271
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetService, deps: [{ token: i2.DynamicComponentService }, { token: i2$1.TranslateService }, { token: CONTEXT_DASHBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2272
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetService, providedIn: 'root' }); }
2284
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetService, deps: [{ token: i2.DynamicComponentService }, { token: i2$1.TranslateService }, { token: CONTEXT_DASHBOARD_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
2285
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetService, providedIn: 'root' }); }
2273
2286
  }
2274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetService, decorators: [{
2287
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetService, decorators: [{
2275
2288
  type: Injectable,
2276
2289
  args: [{
2277
2290
  providedIn: 'root'
@@ -2291,10 +2304,10 @@ class WidgetPreviewComponent {
2291
2304
  'panel-title-regular': true
2292
2305
  };
2293
2306
  }
2294
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2295
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: WidgetPreviewComponent, isStandalone: true, selector: "c8y-widget-preview", inputs: { previewClasses: "previewClasses" }, ngImport: i0, template: "<fieldset class=\"c8y-fieldset p-l-24 p-r-24 p-t-16 p-b-16\">\n <legend>{{ 'Preview' | translate }}</legend>\n <c8y-dashboard\n class=\"dashboard-preview-slot\"\n [columns]=\"1\"\n [ngClass]=\"previewClasses\"\n >\n <c8y-dashboard-child\n [title]=\"(widgetConfigService.selected$ | async)?.data?.title\"\n [isFrozen]=\"true\"\n [width]=\"1\"\n [height]=\"6\"\n >\n <c8y-dashboard-child-title>\n <span translate>{{ (widgetConfigService.selected$ | async)?.data?.title }}</span>\n </c8y-dashboard-child-title>\n\n <div\n class=\"fit-h d-flex d-col j-c-center a-i-center\"\n *ngIf=\"(widgetConfigService.previewViewState$ | async) === 'noPreview'\"\n >\n <c8y-ui-empty-state\n [icon]=\"'visibility-off'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'This widget does not provide any preview.' | translate\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-dynamic-component\n *ngIf=\"(widgetConfigService.previewViewState$ | async) === 'configPreview'\"\n [componentId]=\"(widgetConfigService.selected$ | async)?.id\"\n [config]=\"(widgetConfigService.currentConfig$ | async)?.config\"\n ></c8y-dynamic-component>\n\n <ng-template\n *ngIf=\"(widgetConfigService.previewViewState$ | async) === 'templatePreview'\"\n [ngTemplateOutlet]=\"widgetConfigService.preview$ | async\"\n ></ng-template>\n </c8y-dashboard-child>\n </c8y-dashboard>\n</fieldset>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CoreModule }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i2.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "component", type: i2.DashboardComponent, selector: "c8y-dashboard", inputs: ["columns", "gap", "rows"], outputs: ["dashboardChange"] }, { kind: "component", type: i2.DashboardChildComponent, selector: "c8y-dashboard-child", inputs: ["x", "y", "width", "height", "data", "margin", "useIntersection", "isFrozen", "canToggleFullscreen", "editMode", "class"], outputs: ["changeStart", "changeEnd", "toggleFullscreen"] }, { kind: "component", type: i2.DashboardChildTitleComponent, selector: "c8y-dashboard-child-title" }] }); }
2307
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetPreviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2308
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetPreviewComponent, isStandalone: true, selector: "c8y-widget-preview", inputs: { previewClasses: "previewClasses" }, ngImport: i0, template: "<fieldset class=\"c8y-fieldset p-l-24 p-r-24 p-t-16 p-b-16\">\n <legend>{{ 'Preview' | translate }}</legend>\n <c8y-dashboard\n class=\"dashboard-preview-slot\"\n [columns]=\"1\"\n [ngClass]=\"previewClasses\"\n >\n <c8y-dashboard-child\n [title]=\"(widgetConfigService.selected$ | async)?.data?.title\"\n [isFrozen]=\"true\"\n [width]=\"1\"\n [height]=\"6\"\n >\n <c8y-dashboard-child-title>\n <span translate>{{ (widgetConfigService.selected$ | async)?.data?.title }}</span>\n </c8y-dashboard-child-title>\n\n <div\n class=\"fit-h d-flex d-col j-c-center a-i-center\"\n *ngIf=\"(widgetConfigService.previewViewState$ | async) === 'noPreview'\"\n >\n <c8y-ui-empty-state\n [icon]=\"'visibility-off'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'This widget does not provide any preview.' | translate\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-dynamic-component\n *ngIf=\"(widgetConfigService.previewViewState$ | async) === 'configPreview'\"\n [componentId]=\"(widgetConfigService.selected$ | async)?.id\"\n [config]=\"(widgetConfigService.currentConfig$ | async)?.config\"\n ></c8y-dynamic-component>\n\n <ng-template\n *ngIf=\"(widgetConfigService.previewViewState$ | async) === 'templatePreview'\"\n [ngTemplateOutlet]=\"widgetConfigService.preview$ | async\"\n ></ng-template>\n </c8y-dashboard-child>\n </c8y-dashboard>\n</fieldset>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "ngmodule", type: CoreModule }, { kind: "component", type: i2.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: i2.DynamicComponentComponent, selector: "c8y-dynamic-component", inputs: ["componentId", "config", "mode", "notFoundError", "executeResolvers"], outputs: ["updateWidgetClasses"] }, { kind: "component", type: i2.DashboardComponent, selector: "c8y-dashboard", inputs: ["columns", "gap", "rows"], outputs: ["dashboardChange"] }, { kind: "component", type: i2.DashboardChildComponent, selector: "c8y-dashboard-child", inputs: ["x", "y", "width", "height", "data", "margin", "useIntersection", "isFrozen", "canToggleFullscreen", "editMode", "class"], outputs: ["changeStart", "changeEnd", "toggleFullscreen"] }, { kind: "component", type: i2.DashboardChildTitleComponent, selector: "c8y-dashboard-child-title" }] }); }
2296
2309
  }
2297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetPreviewComponent, decorators: [{
2310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetPreviewComponent, decorators: [{
2298
2311
  type: Component,
2299
2312
  args: [{ selector: 'c8y-widget-preview', standalone: true, imports: [NgIf, NgClass, C8yTranslatePipe, CommonModule, CoreModule], template: "<fieldset class=\"c8y-fieldset p-l-24 p-r-24 p-t-16 p-b-16\">\n <legend>{{ 'Preview' | translate }}</legend>\n <c8y-dashboard\n class=\"dashboard-preview-slot\"\n [columns]=\"1\"\n [ngClass]=\"previewClasses\"\n >\n <c8y-dashboard-child\n [title]=\"(widgetConfigService.selected$ | async)?.data?.title\"\n [isFrozen]=\"true\"\n [width]=\"1\"\n [height]=\"6\"\n >\n <c8y-dashboard-child-title>\n <span translate>{{ (widgetConfigService.selected$ | async)?.data?.title }}</span>\n </c8y-dashboard-child-title>\n\n <div\n class=\"fit-h d-flex d-col j-c-center a-i-center\"\n *ngIf=\"(widgetConfigService.previewViewState$ | async) === 'noPreview'\"\n >\n <c8y-ui-empty-state\n [icon]=\"'visibility-off'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'This widget does not provide any preview.' | translate\"\n [horizontal]=\"false\"\n ></c8y-ui-empty-state>\n </div>\n\n <c8y-dynamic-component\n *ngIf=\"(widgetConfigService.previewViewState$ | async) === 'configPreview'\"\n [componentId]=\"(widgetConfigService.selected$ | async)?.id\"\n [config]=\"(widgetConfigService.currentConfig$ | async)?.config\"\n ></c8y-dynamic-component>\n\n <ng-template\n *ngIf=\"(widgetConfigService.previewViewState$ | async) === 'templatePreview'\"\n [ngTemplateOutlet]=\"widgetConfigService.preview$ | async\"\n ></ng-template>\n </c8y-dashboard-child>\n </c8y-dashboard>\n</fieldset>\n" }]
2300
2313
  }], propDecorators: { previewClasses: [{
@@ -2331,10 +2344,10 @@ class AppearanceSettingsComponent {
2331
2344
  }
2332
2345
  return value;
2333
2346
  }
2334
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppearanceSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2335
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AppearanceSettingsComponent, isStandalone: true, selector: "c8y-appearance-settings", inputs: { themeClass: "themeClass", headerClass: "headerClass", defaultThemeClass: "defaultThemeClass", defaultHeaderClass: "defaultHeaderClass", dashboardSettings: "dashboardSettings", possibleStylingTheme: "possibleStylingTheme", possibleStylingHeader: "possibleStylingHeader", columns: "columns" }, outputs: { themeClassChange: "themeClassChange", headerClassChange: "headerClassChange", onChange: "onChange" }, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-lg-{{ 12 / columns }} col-xs-12\">\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg\">\n <legend *ngIf=\"dashboardSettings\">{{ 'Default theme' | translate }}</legend>\n <legend *ngIf=\"!dashboardSettings\">{{ 'Theme' | translate }}</legend>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0 fit-w\"\n *ngFor=\"let themeClassItem of possibleStylingTheme; let i = index\"\n >\n <div\n class=\"list-item-checkbox\"\n style=\"max-width: calc(100% - 24px)\"\n >\n <label class=\"c8y-radio\">\n <input\n name=\"content\"\n type=\"radio\"\n [id]=\"'groupradiocontentclass' + i\"\n [value]=\"themeClassItem.class\"\n [ngModel]=\"themeClass\"\n (click)=\"themeClassClick(themeClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ themeClassItem.label | translate }}{{\n themeClassItem.class === defaultThemeClass\n ? ' | ' + (dashboardDefaultLabel | translate)\n : ''\n }}\"\n >\n <span>{{ themeClassItem.label | translate }}</span>\n <br />\n <small\n class=\"text-muted\"\n *ngIf=\"themeClassItem.class === defaultThemeClass\"\n >\n {{ dashboardDefaultLabel | translate }}\n </small>\n </span>\n </label>\n </div>\n\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ themeClassItem.description | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </li>\n </ul>\n </fieldset>\n </div>\n <div class=\"col-lg-{{ 12 / columns }} col-xs-12\">\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg\">\n <legend *ngIf=\"dashboardSettings\">\n {{ 'Default widget header style' | translate }}\n </legend>\n <legend *ngIf=\"!dashboardSettings\">\n {{ 'Widget header style' | translate }}\n </legend>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0\"\n *ngFor=\"let headerClassItem of possibleStylingHeader; let i = index\"\n >\n <div\n class=\"list-item-checkbox\"\n style=\"max-width: calc(100% - 24px)\"\n >\n <label class=\"c8y-radio\">\n <input\n name=\"header\"\n type=\"radio\"\n [id]=\"'groupradioheaderclass' + i\"\n [value]=\"headerClassItem.class\"\n [ngModel]=\"headerClass\"\n (click)=\"headerClassClick(headerClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ headerClassItem.label | translate }}{{\n headerClassItem.class === defaultHeaderClass\n ? ' | ' + (dashboardDefaultLabel | translate)\n : ''\n }}\"\n >\n <span>{{ headerClassItem.label | translate }}</span>\n <br />\n <small\n class=\"text-muted\"\n *ngIf=\"headerClassItem.class === defaultHeaderClass\"\n >\n {{ dashboardDefaultLabel | translate }}\n </small>\n </span>\n </label>\n </div>\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ headerClassItem.description | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </li>\n </ul>\n </fieldset>\n </div>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
2347
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AppearanceSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2348
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: AppearanceSettingsComponent, isStandalone: true, selector: "c8y-appearance-settings", inputs: { themeClass: "themeClass", headerClass: "headerClass", defaultThemeClass: "defaultThemeClass", defaultHeaderClass: "defaultHeaderClass", dashboardSettings: "dashboardSettings", possibleStylingTheme: "possibleStylingTheme", possibleStylingHeader: "possibleStylingHeader", columns: "columns" }, outputs: { themeClassChange: "themeClassChange", headerClassChange: "headerClassChange", onChange: "onChange" }, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-lg-{{ 12 / columns }} col-xs-12\">\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg\">\n <legend *ngIf=\"dashboardSettings\">{{ 'Default theme' | translate }}</legend>\n <legend *ngIf=\"!dashboardSettings\">{{ 'Theme' | translate }}</legend>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0 fit-w\"\n *ngFor=\"let themeClassItem of possibleStylingTheme; let i = index\"\n >\n <div\n class=\"list-item-checkbox\"\n style=\"max-width: calc(100% - 24px)\"\n >\n <label class=\"c8y-radio\">\n <input\n name=\"content\"\n type=\"radio\"\n [id]=\"'groupradiocontentclass' + i\"\n [value]=\"themeClassItem.class\"\n [ngModel]=\"themeClass\"\n (click)=\"themeClassClick(themeClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ themeClassItem.label | translate }}{{\n themeClassItem.class === defaultThemeClass\n ? ' | ' + (dashboardDefaultLabel | translate)\n : ''\n }}\"\n >\n <span>{{ themeClassItem.label | translate }}</span>\n <br />\n <small\n class=\"text-muted\"\n *ngIf=\"themeClassItem.class === defaultThemeClass\"\n >\n {{ dashboardDefaultLabel | translate }}\n </small>\n </span>\n </label>\n </div>\n\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ themeClassItem.description | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </li>\n </ul>\n </fieldset>\n </div>\n <div class=\"col-lg-{{ 12 / columns }} col-xs-12\">\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg\">\n <legend *ngIf=\"dashboardSettings\">\n {{ 'Default widget header style' | translate }}\n </legend>\n <legend *ngIf=\"!dashboardSettings\">\n {{ 'Widget header style' | translate }}\n </legend>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0\"\n *ngFor=\"let headerClassItem of possibleStylingHeader; let i = index\"\n >\n <div\n class=\"list-item-checkbox\"\n style=\"max-width: calc(100% - 24px)\"\n >\n <label class=\"c8y-radio\">\n <input\n name=\"header\"\n type=\"radio\"\n [id]=\"'groupradioheaderclass' + i\"\n [value]=\"headerClassItem.class\"\n [ngModel]=\"headerClass\"\n (click)=\"headerClassClick(headerClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ headerClassItem.label | translate }}{{\n headerClassItem.class === defaultHeaderClass\n ? ' | ' + (dashboardDefaultLabel | translate)\n : ''\n }}\"\n >\n <span>{{ headerClassItem.label | translate }}</span>\n <br />\n <small\n class=\"text-muted\"\n *ngIf=\"headerClassItem.class === defaultHeaderClass\"\n >\n {{ dashboardDefaultLabel | translate }}\n </small>\n </span>\n </label>\n </div>\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ headerClassItem.description | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </li>\n </ul>\n </fieldset>\n </div>\n <ng-content></ng-content>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
2336
2349
  }
2337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AppearanceSettingsComponent, decorators: [{
2350
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AppearanceSettingsComponent, decorators: [{
2338
2351
  type: Component,
2339
2352
  args: [{ selector: 'c8y-appearance-settings', standalone: true, imports: [NgIf, NgForOf, FormsModule, PopoverModule, C8yTranslatePipe], template: "<div class=\"row\">\n <div class=\"col-lg-{{ 12 / columns }} col-xs-12\">\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg\">\n <legend *ngIf=\"dashboardSettings\">{{ 'Default theme' | translate }}</legend>\n <legend *ngIf=\"!dashboardSettings\">{{ 'Theme' | translate }}</legend>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0 fit-w\"\n *ngFor=\"let themeClassItem of possibleStylingTheme; let i = index\"\n >\n <div\n class=\"list-item-checkbox\"\n style=\"max-width: calc(100% - 24px)\"\n >\n <label class=\"c8y-radio\">\n <input\n name=\"content\"\n type=\"radio\"\n [id]=\"'groupradiocontentclass' + i\"\n [value]=\"themeClassItem.class\"\n [ngModel]=\"themeClass\"\n (click)=\"themeClassClick(themeClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ themeClassItem.label | translate }}{{\n themeClassItem.class === defaultThemeClass\n ? ' | ' + (dashboardDefaultLabel | translate)\n : ''\n }}\"\n >\n <span>{{ themeClassItem.label | translate }}</span>\n <br />\n <small\n class=\"text-muted\"\n *ngIf=\"themeClassItem.class === defaultThemeClass\"\n >\n {{ dashboardDefaultLabel | translate }}\n </small>\n </span>\n </label>\n </div>\n\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ themeClassItem.description | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </li>\n </ul>\n </fieldset>\n </div>\n <div class=\"col-lg-{{ 12 / columns }} col-xs-12\">\n <fieldset class=\"c8y-fieldset c8y-fieldset--lg\">\n <legend *ngIf=\"dashboardSettings\">\n {{ 'Default widget header style' | translate }}\n </legend>\n <legend *ngIf=\"!dashboardSettings\">\n {{ 'Widget header style' | translate }}\n </legend>\n <ul class=\"list-group\">\n <li\n class=\"list-group-item d-flex a-i-center p-l-0 p-r-0\"\n *ngFor=\"let headerClassItem of possibleStylingHeader; let i = index\"\n >\n <div\n class=\"list-item-checkbox\"\n style=\"max-width: calc(100% - 24px)\"\n >\n <label class=\"c8y-radio\">\n <input\n name=\"header\"\n type=\"radio\"\n [id]=\"'groupradioheaderclass' + i\"\n [value]=\"headerClassItem.class\"\n [ngModel]=\"headerClass\"\n (click)=\"headerClassClick(headerClassItem.class)\"\n />\n <span></span>\n <span\n class=\"text-truncate\"\n title=\"{{ headerClassItem.label | translate }}{{\n headerClassItem.class === defaultHeaderClass\n ? ' | ' + (dashboardDefaultLabel | translate)\n : ''\n }}\"\n >\n <span>{{ headerClassItem.label | translate }}</span>\n <br />\n <small\n class=\"text-muted\"\n *ngIf=\"headerClassItem.class === defaultHeaderClass\"\n >\n {{ dashboardDefaultLabel | translate }}\n </small>\n </span>\n </label>\n </div>\n <button\n class=\"btn-help btn-help--sm m-l-auto\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ headerClassItem.description | translate }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n </li>\n </ul>\n </fieldset>\n </div>\n <ng-content></ng-content>\n</div>\n" }]
2340
2353
  }], propDecorators: { themeClass: [{
@@ -2375,6 +2388,7 @@ class WidgetConfigComponent {
2375
2388
  this.widgetConfigService = widgetConfigService;
2376
2389
  this.searchChange$ = new Subject();
2377
2390
  this.searchTerm = '';
2391
+ this.identifier = crypto.randomUUID();
2378
2392
  this.styling = {
2379
2393
  headerClass: 'panel-title-regular',
2380
2394
  contentClass: 'panel-content-light'
@@ -2385,6 +2399,7 @@ class WidgetConfigComponent {
2385
2399
  };
2386
2400
  this.isUpgrade = false;
2387
2401
  this.possibleStyling = { WIDGET_HEADER_CLASSES, WIDGET_CONTENT_CLASSES };
2402
+ this.WIDGET_CONFIGURATION_GRID_SIZE = WIDGET_CONFIGURATION_GRID_SIZE;
2388
2403
  /**
2389
2404
  * Used as wrapper component to inject providers.
2390
2405
  */
@@ -2445,7 +2460,7 @@ class WidgetConfigComponent {
2445
2460
  config: omit(this.widgetConfig, ['settings', 'displaySettings']),
2446
2461
  title: this.selected.data.title,
2447
2462
  componentId: this.selected.id,
2448
- id: this.isEdit ? this.current.data.id : String(Math.random()).substr(2),
2463
+ id: this.isEdit ? this.current.data.id : this.identifier,
2449
2464
  classes: this.getStyle(),
2450
2465
  ...(!this.isEdit ? this.widgetConfig.settings.widgetDefaults : {})
2451
2466
  };
@@ -2465,14 +2480,15 @@ class WidgetConfigComponent {
2465
2480
  this.isUpgrade = !!get(cmp, 'data.settings.upgrade');
2466
2481
  this.contextDashboardService.formDisabled = this.isUpgrade;
2467
2482
  if (this.isEdit) {
2468
- const { _x, _y, _width, _height, classes, title } = this.current.data;
2483
+ const { id, _x, _y, _width, _height, classes, title } = this.current.data;
2469
2484
  this.selected.data = { ...this.selected.data, _x, _y, _width, _height, classes, title };
2485
+ this.identifier = id;
2470
2486
  }
2471
2487
  this.widgetConfig = cloneDeep(this.composeWidgetConfig(this.selected, this.context));
2472
2488
  this.selected.data.title = this.selected.data.title || cmp.label;
2473
2489
  this.componentLabel = cmp.label;
2474
2490
  this.widgetConfigService.initConfig(this.widgetConfig);
2475
- this.widgetConfigService.selectWidget(this.selected);
2491
+ this.widgetConfigService.selectWidget(this.selected, this.identifier);
2476
2492
  }
2477
2493
  search() {
2478
2494
  if (this.searchTerm.length > 0) {
@@ -2584,10 +2600,10 @@ class WidgetConfigComponent {
2584
2600
  }
2585
2601
  return widgetConfig;
2586
2602
  }
2587
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigComponent, deps: [{ token: WidgetService }, { token: i2.BottomDrawerRef }, { token: ContextDashboardService }, { token: WidgetConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
2588
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: WidgetConfigComponent, isStandalone: true, selector: "c8y-widget-config", host: { classAttribute: "d-contents" }, viewQueries: [{ propertyName: "configForm", first: true, predicate: ["configForm"], descendants: true }], ngImport: i0, template: "<!-- select widget -->\n<ng-container *ngIf=\"!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header j-c-center separator\">\n <div class=\"h4 text-center\">\n {{ 'Select widget' | translate }}\n </div>\n </div>\n <div class=\"card-inner-scroll fit-h bg-level-2\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0 elevation-md\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-group p-l-24 p-r-24 d-grid grid__col--auto-300 gap-24 card-select m-b-0\">\n <button\n class=\"btn-clean d-col card m-b-0\"\n [title]=\"cmp.description || cmp.label | translate\"\n type=\"button\"\n data-cy=\"widget-config--widget-list\"\n *ngFor=\"let cmp of searchResult || components\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"border-bottom\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt=\"{{ cmp.label | translate }}\"\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <div class=\"card-block\">\n <p class=\"card-title text-truncate text-medium\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n <p\n class=\"small text-default\"\n style=\"white-space: wrap\"\n >\n {{ cmp.description | translate }}\n </p>\n </div>\n </button>\n <c8y-ui-empty-state\n class=\"p-24 grid__col--fullspan\"\n [icon]=\"'search'\"\n [title]=\"'No widgets found.' | translate\"\n [subtitle]=\"' Rephrase your search term.' | translate\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </c8y-ui-empty-state>\n </div>\n </div>\n </div>\n <div class=\"card-footer text-center separator flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n </div>\n</ng-container>\n\n<!-- widget configuration -->\n<ng-container *ngIf=\"!!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header d-block separator-bottom flex-no-shrink\">\n <div\n class=\"h3 p-t-16\"\n title=\"{{ selected?.label | translate }}\"\n >\n <span>{{ selected?.label | translate }}</span>\n <button\n class=\"btn btn-default btn-sm m-l-8\"\n [title]=\"'Change widget' | translate\"\n (click)=\"backToWidgetSelection(); (false)\"\n >\n <i c8yIcon=\"replace\"></i>\n {{ 'Change widget' | translate }}\n </button>\n </div>\n <div\n class=\"p-t-8\"\n *ngIf=\"selected\"\n >\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n\n <div class=\"d-grid grid__col--560-auto min-height-0 flex-grow\">\n <div class=\"bg-level-1 inner-scroll\">\n <div class=\"p-16 flex-no-shrink separator-bottom bg-level-1\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Widget title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected?.data.title\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-ui-empty-state\n class=\"p-24\"\n [icon]=\"'settings'\"\n [title]=\"'No configuration needed.' | translate\"\n [subtitle]=\"'This widget does not need any specific configuration.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"!(widgetConfigService.hasConfig$ | async)\"\n ></c8y-ui-empty-state>\n <div>\n <form\n name=\"form\"\n #configForm=\"ngForm\"\n >\n <ng-container *ngIf=\"widgetConfigService.hasConfig$ | async\">\n <ng-container *ngIf=\"widgetConfigService.providers$ | async as providers\">\n <ng-container\n *c8yComponentOutlet=\"widgetConfigRoot; providers: providers\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n <div class=\"inner-scroll p-32 p-t-0\">\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n [columns]=\"2\"\n ></c8y-appearance-settings>\n </div>\n </div>\n\n <div class=\"card-footer separator text-center\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n data-cy=\"widget-config--save-widget\"\n (click)=\"save()\"\n [disabled]=\"(contextDashboardService.formDisabled$ | async) || isSaveDisabled()\"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector", "c8yComponentOutletProviders", "c8yComponentOutletInitialState"] }, { kind: "component", type: WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses"] }, { kind: "component", type: AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "dashboardSettings", "possibleStylingTheme", "possibleStylingHeader", "columns"], outputs: ["themeClassChange", "headerClassChange", "onChange"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
2603
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigComponent, deps: [{ token: WidgetService }, { token: i2.BottomDrawerRef }, { token: ContextDashboardService }, { token: WidgetConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
2604
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetConfigComponent, isStandalone: true, selector: "c8y-widget-config", host: { classAttribute: "d-contents" }, viewQueries: [{ propertyName: "configForm", first: true, predicate: ["configForm"], descendants: true }], ngImport: i0, template: "<!-- select widget -->\n<ng-container *ngIf=\"!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header j-c-center separator\">\n <div class=\"h4 text-center\">\n {{ 'Select widget' | translate }}\n </div>\n </div>\n <div class=\"card-inner-scroll fit-h bg-level-2\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0 elevation-md\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-group p-l-24 p-r-24 d-grid grid__col--auto-300 gap-24 card-select m-b-0\">\n <button\n class=\"btn-clean d-col card m-b-0\"\n [title]=\"cmp.description || cmp.label | translate\"\n type=\"button\"\n data-cy=\"widget-config--widget-list\"\n *ngFor=\"let cmp of searchResult || components\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"border-bottom\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt=\"{{ cmp.label | translate }}\"\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <div class=\"card-block\">\n <p class=\"card-title text-truncate text-medium\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n <p\n class=\"small text-default\"\n style=\"white-space: wrap\"\n >\n {{ cmp.description | translate }}\n </p>\n </div>\n </button>\n <c8y-ui-empty-state\n class=\"p-24 grid__col--fullspan\"\n [icon]=\"'search'\"\n [title]=\"'No widgets found.' | translate\"\n [subtitle]=\"' Rephrase your search term.' | translate\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </c8y-ui-empty-state>\n </div>\n </div>\n </div>\n <div class=\"card-footer text-center separator flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n </div>\n</ng-container>\n\n<!-- widget configuration -->\n<ng-container *ngIf=\"!!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header d-block separator-bottom flex-no-shrink\">\n <div\n class=\"h3 p-t-16\"\n title=\"{{ selected?.label | translate }}\"\n >\n <span>{{ selected?.label | translate }}</span>\n <button\n class=\"btn btn-default btn-sm m-l-8\"\n [title]=\"'Change widget' | translate\"\n (click)=\"backToWidgetSelection(); (false)\"\n >\n <i c8yIcon=\"replace\"></i>\n {{ 'Change widget' | translate }}\n </button>\n </div>\n <div\n class=\"p-t-8\"\n *ngIf=\"selected\"\n >\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n\n <c8y-resizable-grid\n class=\"min-height-0 flex-grow\"\n [trackId]=\"'c8y-widget-resizable-grid-size-' + (widgetConfigService.instanceId$ | async)\"\n [leftColumnWidth]=\"\n (widgetConfigService.currentConfig$ | async)?.settings?.configurationViewGridSize ||\n WIDGET_CONFIGURATION_GRID_SIZE.HALF\n \"\n >\n <div\n class=\"bg-level-1 inner-scroll\"\n left-pane\n >\n <div class=\"p-16 flex-no-shrink separator-bottom bg-level-1\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Widget title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected?.data.title\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-ui-empty-state\n class=\"p-24\"\n [icon]=\"'settings'\"\n [title]=\"'No configuration needed.' | translate\"\n [subtitle]=\"'This widget does not need any specific configuration.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"!(widgetConfigService.hasConfig$ | async)\"\n ></c8y-ui-empty-state>\n <div>\n <form\n name=\"form\"\n #configForm=\"ngForm\"\n >\n <ng-container *ngIf=\"widgetConfigService.hasConfig$ | async\">\n <ng-container *ngIf=\"widgetConfigService.providers$ | async as providers\">\n <ng-container\n *c8yComponentOutlet=\"widgetConfigRoot; providers: providers\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n <div\n class=\"inner-scroll p-32 p-t-0\"\n right-pane\n >\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n [columns]=\"2\"\n ></c8y-appearance-settings>\n </div>\n </c8y-resizable-grid>\n <div class=\"card-footer separator text-center\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n data-cy=\"widget-config--save-widget\"\n (click)=\"save()\"\n [disabled]=\"(contextDashboardService.formDisabled$ | async) || isSaveDisabled()\"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: C8yComponentOutlet, selector: "[c8yComponentOutlet]", inputs: ["c8yComponentOutlet", "c8yComponentOutletInjector", "c8yComponentOutletEnvironmentInjector", "c8yComponentOutletProviders", "c8yComponentOutletInitialState"] }, { kind: "component", type: WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses"] }, { kind: "component", type: AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "dashboardSettings", "possibleStylingTheme", "possibleStylingHeader", "columns"], outputs: ["themeClassChange", "headerClassChange", "onChange"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ResizableGridComponent, selector: "c8y-resizable-grid", inputs: ["leftColumnWidth", "trackId", "collapseThreshold"] }] }); }
2589
2605
  }
2590
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigComponent, decorators: [{
2606
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigComponent, decorators: [{
2591
2607
  type: Component,
2592
2608
  args: [{ selector: 'c8y-widget-config', host: { class: 'd-contents' }, imports: [
2593
2609
  NgIf,
@@ -2604,8 +2620,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
2604
2620
  AppearanceSettingsComponent,
2605
2621
  ProductExperienceDirective,
2606
2622
  C8yTranslatePipe,
2607
- AsyncPipe
2608
- ], template: "<!-- select widget -->\n<ng-container *ngIf=\"!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header j-c-center separator\">\n <div class=\"h4 text-center\">\n {{ 'Select widget' | translate }}\n </div>\n </div>\n <div class=\"card-inner-scroll fit-h bg-level-2\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0 elevation-md\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-group p-l-24 p-r-24 d-grid grid__col--auto-300 gap-24 card-select m-b-0\">\n <button\n class=\"btn-clean d-col card m-b-0\"\n [title]=\"cmp.description || cmp.label | translate\"\n type=\"button\"\n data-cy=\"widget-config--widget-list\"\n *ngFor=\"let cmp of searchResult || components\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"border-bottom\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt=\"{{ cmp.label | translate }}\"\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <div class=\"card-block\">\n <p class=\"card-title text-truncate text-medium\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n <p\n class=\"small text-default\"\n style=\"white-space: wrap\"\n >\n {{ cmp.description | translate }}\n </p>\n </div>\n </button>\n <c8y-ui-empty-state\n class=\"p-24 grid__col--fullspan\"\n [icon]=\"'search'\"\n [title]=\"'No widgets found.' | translate\"\n [subtitle]=\"' Rephrase your search term.' | translate\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </c8y-ui-empty-state>\n </div>\n </div>\n </div>\n <div class=\"card-footer text-center separator flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n </div>\n</ng-container>\n\n<!-- widget configuration -->\n<ng-container *ngIf=\"!!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header d-block separator-bottom flex-no-shrink\">\n <div\n class=\"h3 p-t-16\"\n title=\"{{ selected?.label | translate }}\"\n >\n <span>{{ selected?.label | translate }}</span>\n <button\n class=\"btn btn-default btn-sm m-l-8\"\n [title]=\"'Change widget' | translate\"\n (click)=\"backToWidgetSelection(); (false)\"\n >\n <i c8yIcon=\"replace\"></i>\n {{ 'Change widget' | translate }}\n </button>\n </div>\n <div\n class=\"p-t-8\"\n *ngIf=\"selected\"\n >\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n\n <div class=\"d-grid grid__col--560-auto min-height-0 flex-grow\">\n <div class=\"bg-level-1 inner-scroll\">\n <div class=\"p-16 flex-no-shrink separator-bottom bg-level-1\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Widget title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected?.data.title\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-ui-empty-state\n class=\"p-24\"\n [icon]=\"'settings'\"\n [title]=\"'No configuration needed.' | translate\"\n [subtitle]=\"'This widget does not need any specific configuration.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"!(widgetConfigService.hasConfig$ | async)\"\n ></c8y-ui-empty-state>\n <div>\n <form\n name=\"form\"\n #configForm=\"ngForm\"\n >\n <ng-container *ngIf=\"widgetConfigService.hasConfig$ | async\">\n <ng-container *ngIf=\"widgetConfigService.providers$ | async as providers\">\n <ng-container\n *c8yComponentOutlet=\"widgetConfigRoot; providers: providers\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n <div class=\"inner-scroll p-32 p-t-0\">\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n [columns]=\"2\"\n ></c8y-appearance-settings>\n </div>\n </div>\n\n <div class=\"card-footer separator text-center\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n data-cy=\"widget-config--save-widget\"\n (click)=\"save()\"\n [disabled]=\"(contextDashboardService.formDisabled$ | async) || isSaveDisabled()\"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</ng-container>\n" }]
2623
+ AsyncPipe,
2624
+ ResizableGridComponent
2625
+ ], standalone: true, template: "<!-- select widget -->\n<ng-container *ngIf=\"!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header j-c-center separator\">\n <div class=\"h4 text-center\">\n {{ 'Select widget' | translate }}\n </div>\n </div>\n <div class=\"card-inner-scroll fit-h bg-level-2\">\n <div\n class=\"bg-level-0 p-l-24 p-r-24 p-t-8 p-b-8 sticky-header-top-0 elevation-md\"\n style=\"z-index: 2\"\n >\n <div class=\"row\">\n <div class=\"col-sm-6 col-sm-offset-3\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n [attr.aria-label]=\"'Search' | translate\"\n placeholder=\"{{ 'Search\u2026' | translate }}\"\n type=\"text\"\n data-cy=\"widget-config--Search\"\n [(ngModel)]=\"searchTerm\"\n [ngModelOptions]=\"{ standalone: true }\"\n (keydown)=\"searchChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button\n class=\"btn btn-dot\"\n title=\"{{ 'Search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n <i [c8yIcon]=\"searchTerm.length === 0 ? 'search' : 'close'\"></i>\n </button>\n </span>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\">\n <div class=\"card-group p-l-24 p-r-24 d-grid grid__col--auto-300 gap-24 card-select m-b-0\">\n <button\n class=\"btn-clean d-col card m-b-0\"\n [title]=\"cmp.description || cmp.label | translate\"\n type=\"button\"\n data-cy=\"widget-config--widget-list\"\n *ngFor=\"let cmp of searchResult || components\"\n (click)=\"select(cmp)\"\n >\n <div\n class=\"border-bottom\"\n role=\"presentation\"\n >\n <ng-container *ngIf=\"!cmp.previewImage; else previewImage\">\n <div class=\"h1\"><i c8yIcon=\"file-image-o\"></i></div>\n <small translate>Preview not available</small>\n </ng-container>\n <ng-template #previewImage>\n <img\n class=\"widget-thumbnail\"\n alt=\"{{ cmp.label | translate }}\"\n [src]=\"cmp.previewImage\"\n />\n </ng-template>\n </div>\n <div class=\"card-block\">\n <p class=\"card-title text-truncate text-medium\">\n <c8y-highlight\n text=\"{{ cmp.label | translate }}\"\n [pattern]=\"searchTerm\"\n ></c8y-highlight>\n </p>\n <p\n class=\"small text-default\"\n style=\"white-space: wrap\"\n >\n {{ cmp.description | translate }}\n </p>\n </div>\n </button>\n <c8y-ui-empty-state\n class=\"p-24 grid__col--fullspan\"\n [icon]=\"'search'\"\n [title]=\"'No widgets found.' | translate\"\n [subtitle]=\"' Rephrase your search term.' | translate\"\n *ngIf=\"searchResult && searchResult.length === 0\"\n >\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Reset search' | translate }}\"\n type=\"button\"\n (click)=\"resetSearch()\"\n >\n {{ 'Reset search' | translate }}\n </button>\n </c8y-ui-empty-state>\n </div>\n </div>\n </div>\n <div class=\"card-footer text-center separator flex-no-shrink\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n </div>\n</ng-container>\n\n<!-- widget configuration -->\n<ng-container *ngIf=\"!!(widgetConfigService.selected$ | async)\">\n <div class=\"card-header d-block separator-bottom flex-no-shrink\">\n <div\n class=\"h3 p-t-16\"\n title=\"{{ selected?.label | translate }}\"\n >\n <span>{{ selected?.label | translate }}</span>\n <button\n class=\"btn btn-default btn-sm m-l-8\"\n [title]=\"'Change widget' | translate\"\n (click)=\"backToWidgetSelection(); (false)\"\n >\n <i c8yIcon=\"replace\"></i>\n {{ 'Change widget' | translate }}\n </button>\n </div>\n <div\n class=\"p-t-8\"\n *ngIf=\"selected\"\n >\n <p>\n {{ selected.description | translate }}\n </p>\n </div>\n </div>\n\n <c8y-resizable-grid\n class=\"min-height-0 flex-grow\"\n [trackId]=\"'c8y-widget-resizable-grid-size-' + (widgetConfigService.instanceId$ | async)\"\n [leftColumnWidth]=\"\n (widgetConfigService.currentConfig$ | async)?.settings?.configurationViewGridSize ||\n WIDGET_CONFIGURATION_GRID_SIZE.HALF\n \"\n >\n <div\n class=\"bg-level-1 inner-scroll\"\n left-pane\n >\n <div class=\"p-16 flex-no-shrink separator-bottom bg-level-1\">\n <c8y-form-group>\n <label\n for=\"widgetTitle\"\n translate\n >\n Widget title\n </label>\n <input\n class=\"form-control\"\n id=\"widgetTitle\"\n placeholder=\"{{ 'e.g.' | translate }} {{ componentLabel | translate }}\"\n name=\"title\"\n type=\"text\"\n required\n [(ngModel)]=\"selected?.data.title\"\n />\n </c8y-form-group>\n </div>\n\n <c8y-ui-empty-state\n class=\"p-24\"\n [icon]=\"'settings'\"\n [title]=\"'No configuration needed.' | translate\"\n [subtitle]=\"'This widget does not need any specific configuration.' | translate\"\n [horizontal]=\"true\"\n *ngIf=\"!(widgetConfigService.hasConfig$ | async)\"\n ></c8y-ui-empty-state>\n <div>\n <form\n name=\"form\"\n #configForm=\"ngForm\"\n >\n <ng-container *ngIf=\"widgetConfigService.hasConfig$ | async\">\n <ng-container *ngIf=\"widgetConfigService.providers$ | async as providers\">\n <ng-container\n *c8yComponentOutlet=\"widgetConfigRoot; providers: providers\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </form>\n </div>\n </div>\n <div\n class=\"inner-scroll p-32 p-t-0\"\n right-pane\n >\n <c8y-widget-preview [previewClasses]=\"getStyle(true)\"></c8y-widget-preview>\n\n <c8y-appearance-settings\n [(themeClass)]=\"styling.contentClass\"\n [(headerClass)]=\"styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"defaultStyling.contentClass\"\n [defaultHeaderClass]=\"defaultStyling.headerClass\"\n [columns]=\"2\"\n ></c8y-appearance-settings>\n </div>\n </c8y-resizable-grid>\n <div class=\"card-footer separator text-center\">\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Cancel' | translate }}\"\n type=\"button\"\n data-cy=\"widget-config--cancel-widget\"\n (click)=\"close()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ 'Save' | translate }}\"\n type=\"submit\"\n data-cy=\"widget-config--save-widget\"\n (click)=\"save()\"\n [disabled]=\"(contextDashboardService.formDisabled$ | async) || isSaveDisabled()\"\n c8yProductExperience\n [actionName]=\"current ? 'editWidget' : 'createWidget'\"\n [actionData]=\"{ widgetName: selected && selected.id }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n</ng-container>\n" }]
2609
2626
  }], ctorParameters: () => [{ type: WidgetService }, { type: i2.BottomDrawerRef }, { type: ContextDashboardService }, { type: WidgetConfigService }], propDecorators: { configForm: [{
2610
2627
  type: ViewChild,
2611
2628
  args: ['configForm', { static: false }]
@@ -3230,8 +3247,8 @@ class ContextDashboardComponent {
3230
3247
  ? str
3231
3248
  : this.gainsightService.hashGroupName(str);
3232
3249
  }
3233
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ContextDashboardComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: ContextDashboardService }, { token: i2.AlertService }, { token: i0.Renderer2 }, { token: CONTEXT_DASHBOARD_CONFIG }, { token: WidgetService }, { token: i2.BottomDrawerService }, { token: i2.GainsightService }, { token: i2.ActionBarService }, { token: i2$1.TranslateService }, { token: i2.ModalService }, { token: DashboardEditModeService }], target: i0.ɵɵFactoryTarget.Component }); }
3234
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: ContextDashboardComponent, isStandalone: true, selector: "c8y-context-dashboard", inputs: { name: "name", childrenClasses: "childrenClasses", context: "context", setTitle: "setTitle", defaultWidgets: "defaultWidgets", _canCopy: ["canCopy", "_canCopy"], canDelete: "canDelete", isLoading: "isLoading", breadcrumbSettings: "breadcrumbSettings", showContextHelpButton: "showContextHelpButton", translateWidgetTitle: "translateWidgetTitle", hideAvailability: "hideAvailability" }, host: { listeners: { "window:beforeunload": "beforeUnloadHandler($event)" }, properties: { "class": "this.class" }, styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, viewQueries: [{ propertyName: "dashboardDetails", first: true, predicate: DashboardDetailComponent, descendants: true, static: true }, { propertyName: "widgetsDashboard", first: true, predicate: WidgetsDashboardComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title *ngIf=\"title\">\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"10000\"\n *ngIf=\"dashboard?.deviceType && dashboard.deviceTypeValue\"\n>\n <button\n class=\"btn-clean btn-link\"\n popoverTitle=\"{{ 'Dashboard template' | translate }}\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"dashboardTypePopoverRef\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n >\n <span class=\"tag tag--info text-12\">\n <span class=\"dashboard-template-marker\"></span>\n {{ dashboardTypeLabel | translate: { dashboardType: dashboard.deviceTypeValue } }}\n </span>\n </button>\n <ng-template #dashboardTypePopoverRef>\n <div\n [innerHTML]=\"dashboardTypePopover | translate: { dashboardType: dashboard.deviceTypeValue }\"\n ></div>\n </ng-template>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"-1\"\n *ngIf=\"defaultWidgets.length > 0\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reset widgets' | translate }}\"\n type=\"button\"\n px-event=\"Reset dashboard\"\n (click)=\"restore()\"\n [disabled]=\"disabled || !mo?.id || (widgetsDashboard?.editMode$ | async)\"\n data-cy=\"context-dashboard--button-reset-dashboard\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"reset\"\n ></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Reset widgets' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/cockpit/working-with-dashboards/#working-with-dashboards\"\n *ngIf=\"showContextHelpButton\"\n></c8y-help>\n\n<c8y-dashboard-detail\n class=\"d-contents\"\n [isReport]=\"isReport\"\n [dashboard]=\"dashboard\"\n [mo]=\"mo\"\n [context]=\"context\"\n [deviceType]=\"context?.type\"\n [hideAvailability]=\"hideAvailability\"\n [isNamedDashboard]=\"isNamedDashboard\"\n (dashboardSaved)=\"reloadDashboard($event)\"\n (previewChanged)=\"dashboardPreview($event)\"\n></c8y-dashboard-detail>\n\n<c8y-widgets-dashboard\n [context]=\"context\"\n [contextDashboard]=\"dashboard\"\n [widgets]=\"widgets\"\n [isCopyDisabled]=\"isCopyDisabled\"\n [settings]=\"{\n isLoading: isLoading,\n isDisabled: disabled,\n canDelete: canDelete && !!dashboard,\n translateWidgetTitle: dashboard?.translateWidgetTitle ?? translateWidgetTitle,\n allowFullscreen: moduleConfig.allowFullscreen,\n title: setTitle ? dashboard?.name || title : undefined,\n widgetMargin: dashboard?.widgetMargin,\n canCopy: canCopy && !!dashboard,\n defaultWidth: dashboard?.columns >= 24 ? 8 : 4,\n columns: dashboard?.columns || 12\n }\"\n [breadcrumb]=\"breadcrumbSettings\"\n [editModeButtons]=\"{\n undoButtonDisabled: editModeService.undoButtonDisabled,\n changeToUndoName: editModeService.changeToUndoName,\n redoButtonDisabled: !editModeService.redoStackLastItem,\n changeToRedoName: editModeService.redoStackLastItem?.name\n }\"\n (onChangeDashboard)=\"positionOrWidgetDimensionChange($event)\"\n (onAddWidget)=\"addWidget()\"\n (onEditWidget)=\"editWidget($event)\"\n (onDeleteWidget)=\"deleteWidget($event)\"\n (onSaveDashboard)=\"saveWidgetsToDashboard()\"\n (onCancelDashboard)=\"cancelEditMode()\"\n (revertChange)=\"revertChange($event)\"\n (onChangeStart)=\"addDashboardClassToBody()\"\n (onChangeEnd)=\"removeDashboardClassFromBody()\"\n (onEditDashboard)=\"editDashboard()\"\n (onCopyDashboard)=\"copyDashboard()\"\n (onDeleteDashboard)=\"deleteDashboard()\"\n></c8y-widgets-dashboard>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: DashboardDetailComponent, selector: "c8y-dashboard-detail", inputs: ["isReport", "deviceType", "context", "mo", "dashboard", "isNamedDashboard", "hideAvailability"], outputs: ["dashboardSaved", "previewChanged"] }, { kind: "component", type: WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: ["widgets", "context", "contextDashboard", "settings", "isCopyDisabled", "breadcrumb", "editModeButtons"], outputs: ["onAddWidget", "onEditWidget", "onDeleteWidget", "onChangeDashboard", "onResize", "onEditDashboard", "onCopyDashboard", "onDeleteDashboard", "onChangeStart", "onChangeEnd", "onSaveDashboard", "onCancelDashboard", "revertChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
3250
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextDashboardComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: ContextDashboardService }, { token: i2.AlertService }, { token: i0.Renderer2 }, { token: CONTEXT_DASHBOARD_CONFIG }, { token: WidgetService }, { token: i2.BottomDrawerService }, { token: i2.GainsightService }, { token: i2.ActionBarService }, { token: i2$1.TranslateService }, { token: i2.ModalService }, { token: DashboardEditModeService }], target: i0.ɵɵFactoryTarget.Component }); }
3251
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: ContextDashboardComponent, isStandalone: true, selector: "c8y-context-dashboard", inputs: { name: "name", childrenClasses: "childrenClasses", context: "context", setTitle: "setTitle", defaultWidgets: "defaultWidgets", _canCopy: ["canCopy", "_canCopy"], canDelete: "canDelete", isLoading: "isLoading", breadcrumbSettings: "breadcrumbSettings", showContextHelpButton: "showContextHelpButton", translateWidgetTitle: "translateWidgetTitle", hideAvailability: "hideAvailability" }, host: { listeners: { "window:beforeunload": "beforeUnloadHandler($event)" }, properties: { "class": "this.class" }, styleAttribute: "\n display: block;\n ", classAttribute: "dashboard c8y-grid-dashboard" }, viewQueries: [{ propertyName: "dashboardDetails", first: true, predicate: DashboardDetailComponent, descendants: true, static: true }, { propertyName: "widgetsDashboard", first: true, predicate: WidgetsDashboardComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title *ngIf=\"title\">\n {{ title }}\n</c8y-title>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"10000\"\n *ngIf=\"dashboard?.deviceType && dashboard.deviceTypeValue\"\n>\n <button\n class=\"btn-clean btn-link\"\n popoverTitle=\"{{ 'Dashboard template' | translate }}\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"dashboardTypePopoverRef\"\n placement=\"bottom\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n >\n <span class=\"tag tag--info text-12\">\n <span class=\"dashboard-template-marker\"></span>\n {{ dashboardTypeLabel | translate: { dashboardType: dashboard.deviceTypeValue } }}\n </span>\n </button>\n <ng-template #dashboardTypePopoverRef>\n <div\n [innerHTML]=\"dashboardTypePopover | translate: { dashboardType: dashboard.deviceTypeValue }\"\n ></div>\n </ng-template>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item\n [placement]=\"'right'\"\n [priority]=\"-1\"\n *ngIf=\"defaultWidgets.length > 0\"\n>\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reset widgets' | translate }}\"\n type=\"button\"\n px-event=\"Reset dashboard\"\n (click)=\"restore()\"\n [disabled]=\"disabled || !mo?.id || (widgetsDashboard?.editMode$ | async)\"\n data-cy=\"context-dashboard--button-reset-dashboard\"\n >\n <i\n class=\"m-r-4\"\n c8yIcon=\"reset\"\n ></i>\n <span class=\"visible-xs-inline hidden-sm visible-md-inline visible-lg-inline\">\n {{ 'Reset widgets' | translate }}\n </span>\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/cockpit/working-with-dashboards/#working-with-dashboards\"\n *ngIf=\"showContextHelpButton\"\n></c8y-help>\n\n<c8y-dashboard-detail\n class=\"d-contents\"\n [isReport]=\"isReport\"\n [dashboard]=\"dashboard\"\n [mo]=\"mo\"\n [context]=\"context\"\n [deviceType]=\"context?.type\"\n [hideAvailability]=\"hideAvailability\"\n [isNamedDashboard]=\"isNamedDashboard\"\n (dashboardSaved)=\"reloadDashboard($event)\"\n (previewChanged)=\"dashboardPreview($event)\"\n></c8y-dashboard-detail>\n\n<c8y-widgets-dashboard\n [context]=\"context\"\n [contextDashboard]=\"dashboard\"\n [widgets]=\"widgets\"\n [isCopyDisabled]=\"isCopyDisabled\"\n [settings]=\"{\n isLoading: isLoading,\n isDisabled: disabled,\n canDelete: canDelete && !!dashboard,\n translateWidgetTitle: dashboard?.translateWidgetTitle ?? translateWidgetTitle,\n allowFullscreen: moduleConfig.allowFullscreen,\n title: setTitle ? dashboard?.name || title : undefined,\n widgetMargin: dashboard?.widgetMargin,\n canCopy: canCopy && !!dashboard,\n defaultWidth: dashboard?.columns >= 24 ? 8 : 4,\n columns: dashboard?.columns || 12\n }\"\n [breadcrumb]=\"breadcrumbSettings\"\n [editModeButtons]=\"{\n undoButtonDisabled: editModeService.undoButtonDisabled,\n changeToUndoName: editModeService.changeToUndoName,\n redoButtonDisabled: !editModeService.redoStackLastItem,\n changeToRedoName: editModeService.redoStackLastItem?.name\n }\"\n (onChangeDashboard)=\"positionOrWidgetDimensionChange($event)\"\n (onAddWidget)=\"addWidget()\"\n (onEditWidget)=\"editWidget($event)\"\n (onDeleteWidget)=\"deleteWidget($event)\"\n (onSaveDashboard)=\"saveWidgetsToDashboard()\"\n (onCancelDashboard)=\"cancelEditMode()\"\n (revertChange)=\"revertChange($event)\"\n (onChangeStart)=\"addDashboardClassToBody()\"\n (onChangeEnd)=\"removeDashboardClassFromBody()\"\n (onEditDashboard)=\"editDashboard()\"\n (onCopyDashboard)=\"copyDashboard()\"\n (onDeleteDashboard)=\"deleteDashboard()\"\n></c8y-widgets-dashboard>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: DashboardDetailComponent, selector: "c8y-dashboard-detail", inputs: ["isReport", "deviceType", "context", "mo", "dashboard", "isNamedDashboard", "hideAvailability"], outputs: ["dashboardSaved", "previewChanged"] }, { kind: "component", type: WidgetsDashboardComponent, selector: "c8y-widgets-dashboard", inputs: ["widgets", "context", "contextDashboard", "settings", "isCopyDisabled", "breadcrumb", "editModeButtons"], outputs: ["onAddWidget", "onEditWidget", "onDeleteWidget", "onChangeDashboard", "onResize", "onEditDashboard", "onCopyDashboard", "onDeleteDashboard", "onChangeStart", "onChangeEnd", "onSaveDashboard", "onCancelDashboard", "revertChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
3235
3252
  }
3236
3253
  __decorate([
3237
3254
  memoize(),
@@ -3239,7 +3256,7 @@ __decorate([
3239
3256
  __metadata("design:paramtypes", [String]),
3240
3257
  __metadata("design:returntype", Promise)
3241
3258
  ], ContextDashboardComponent.prototype, "convertStringToHash", null);
3242
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ContextDashboardComponent, decorators: [{
3259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextDashboardComponent, decorators: [{
3243
3260
  type: Component,
3244
3261
  args: [{ selector: 'c8y-context-dashboard', host: {
3245
3262
  style: `
@@ -3354,10 +3371,10 @@ class DashboardDetailsTabsFactory {
3354
3371
  }
3355
3372
  return [];
3356
3373
  }
3357
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardDetailsTabsFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3358
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardDetailsTabsFactory }); }
3374
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardDetailsTabsFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3375
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardDetailsTabsFactory }); }
3359
3376
  }
3360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DashboardDetailsTabsFactory, decorators: [{
3377
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DashboardDetailsTabsFactory, decorators: [{
3361
3378
  type: Injectable
3362
3379
  }] });
3363
3380
 
@@ -3421,8 +3438,8 @@ class PasteDashboardActionComponent {
3421
3438
  this.buttonTitle = gettext('Paste dashboard');
3422
3439
  this.pasteDisabled = false;
3423
3440
  }
3424
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasteDashboardActionComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.Router }, { token: ContextDashboardService }, { token: i1$1.InventoryService }], target: i0.ɵɵFactoryTarget.Component }); }
3425
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PasteDashboardActionComponent, isStandalone: true, selector: "c8y-paste-dashboard-action", viewQueries: [{ propertyName: "templatePaste", first: true, predicate: ["templatePaste"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
3441
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PasteDashboardActionComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.Router }, { token: ContextDashboardService }, { token: i1$1.InventoryService }], target: i0.ɵɵFactoryTarget.Component }); }
3442
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: PasteDashboardActionComponent, isStandalone: true, selector: "c8y-paste-dashboard-action", viewQueries: [{ propertyName: "templatePaste", first: true, predicate: ["templatePaste"], descendants: true, read: TemplateRef, static: true }], ngImport: i0, template: `
3426
3443
  <ng-template #templatePaste>
3427
3444
  <li>
3428
3445
  <button
@@ -3441,7 +3458,7 @@ class PasteDashboardActionComponent {
3441
3458
  </ng-template>
3442
3459
  `, isInline: true, dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
3443
3460
  }
3444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PasteDashboardActionComponent, decorators: [{
3461
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PasteDashboardActionComponent, decorators: [{
3445
3462
  type: Component,
3446
3463
  args: [{
3447
3464
  selector: 'c8y-paste-dashboard-action',
@@ -3491,10 +3508,10 @@ class TypeDashboardInfoComponent {
3491
3508
  this.asyncRenderFail?.();
3492
3509
  }
3493
3510
  }
3494
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardInfoComponent, deps: [{ token: i1$1.InventoryService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
3495
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: TypeDashboardInfoComponent, isStandalone: true, selector: "c8y-type-dashboard-info", inputs: { deviceTypeValue: "deviceTypeValue", displayDeviceTypeValue: "displayDeviceTypeValue", context: "context", asyncRenderSuccess: "asyncRenderSuccess", asyncRenderFail: "asyncRenderFail" }, ngImport: i0, template: "<ul class=\"list-unstyled small animated fadeIn\">\n <li class=\"p-t-4 p-b-4 d-flex separator-top-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Target asset model' | translate }}</label>\n <span class=\"m-l-auto\">\n <span class=\"label label-info\">\n {{ displayDeviceTypeValue || context.c8y_Dashboard.deviceTypeValue }}\n </span>\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Dashboard instances' | translate }}</label>\n <span class=\"m-l-auto\">{{ deviceTypeInstancesCount }}</span>\n </li>\n <ng-container *ngIf=\"context?.c8y_Dashboard\">\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Created' | translate }}</label>\n <span class=\"m-l-auto\">\n {{ context.creationTime | c8yDate }} {{ 'by`user`' | translate }} {{ context.owner }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\"\n *ngIf=\"context?.c8y_DashboardHistory?.length\"\n >\n <label class=\"small m-b-0 m-r-8\">{{ 'Last modified' | translate }}</label>\n <span class=\"m-l-auto\">\n {{ context.c8y_DashboardHistory[0].created | c8yDate }} {{ 'by`user`' | translate }}\n {{ context.c8y_DashboardHistory[0].author }}\n </span>\n </li>\n </ng-container>\n</ul>\n", dependencies: [{ kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
3511
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TypeDashboardInfoComponent, deps: [{ token: i1$1.InventoryService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
3512
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: TypeDashboardInfoComponent, isStandalone: true, selector: "c8y-type-dashboard-info", inputs: { deviceTypeValue: "deviceTypeValue", displayDeviceTypeValue: "displayDeviceTypeValue", context: "context", asyncRenderSuccess: "asyncRenderSuccess", asyncRenderFail: "asyncRenderFail" }, ngImport: i0, template: "<ul class=\"list-unstyled small animated fadeIn\">\n <li class=\"p-t-4 p-b-4 d-flex separator-top-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Target asset model' | translate }}</label>\n <span class=\"m-l-auto\">\n <span class=\"label label-info\">\n {{ displayDeviceTypeValue || context.c8y_Dashboard.deviceTypeValue }}\n </span>\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Dashboard instances' | translate }}</label>\n <span class=\"m-l-auto\">{{ deviceTypeInstancesCount }}</span>\n </li>\n <ng-container *ngIf=\"context?.c8y_Dashboard\">\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Created' | translate }}</label>\n <span class=\"m-l-auto\">\n {{ context.creationTime | c8yDate }} {{ 'by`user`' | translate }} {{ context.owner }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\"\n *ngIf=\"context?.c8y_DashboardHistory?.length\"\n >\n <label class=\"small m-b-0 m-r-8\">{{ 'Last modified' | translate }}</label>\n <span class=\"m-l-auto\">\n {{ context.c8y_DashboardHistory[0].created | c8yDate }} {{ 'by`user`' | translate }}\n {{ context.c8y_DashboardHistory[0].author }}\n </span>\n </li>\n </ng-container>\n</ul>\n", dependencies: [{ kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
3496
3513
  }
3497
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TypeDashboardInfoComponent, decorators: [{
3514
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TypeDashboardInfoComponent, decorators: [{
3498
3515
  type: Component,
3499
3516
  args: [{ selector: 'c8y-type-dashboard-info', standalone: true, imports: [C8yTranslatePipe, DatePipe, NgIf], template: "<ul class=\"list-unstyled small animated fadeIn\">\n <li class=\"p-t-4 p-b-4 d-flex separator-top-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Target asset model' | translate }}</label>\n <span class=\"m-l-auto\">\n <span class=\"label label-info\">\n {{ displayDeviceTypeValue || context.c8y_Dashboard.deviceTypeValue }}\n </span>\n </span>\n </li>\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Dashboard instances' | translate }}</label>\n <span class=\"m-l-auto\">{{ deviceTypeInstancesCount }}</span>\n </li>\n <ng-container *ngIf=\"context?.c8y_Dashboard\">\n <li class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\">\n <label class=\"small m-b-0 m-r-8\">{{ 'Created' | translate }}</label>\n <span class=\"m-l-auto\">\n {{ context.creationTime | c8yDate }} {{ 'by`user`' | translate }} {{ context.owner }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom text-nowrap\"\n *ngIf=\"context?.c8y_DashboardHistory?.length\"\n >\n <label class=\"small m-b-0 m-r-8\">{{ 'Last modified' | translate }}</label>\n <span class=\"m-l-auto\">\n {{ context.c8y_DashboardHistory[0].created | c8yDate }} {{ 'by`user`' | translate }}\n {{ context.c8y_DashboardHistory[0].author }}\n </span>\n </li>\n </ng-container>\n</ul>\n" }]
3500
3517
  }], ctorParameters: () => [{ type: i1$1.InventoryService }, { type: i2.AlertService }], propDecorators: { deviceTypeValue: [{
@@ -3520,10 +3537,10 @@ class WidgetPreviewWrapperComponent {
3520
3537
  }
3521
3538
  this.widgetConfigService.setPreview(null);
3522
3539
  }
3523
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetPreviewWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3524
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: WidgetPreviewWrapperComponent, isStandalone: true, selector: "c8y-widget-preview-wrapper", viewQueries: [{ propertyName: "previewSet", first: true, predicate: ["previewContent"], descendants: true }], ngImport: i0, template: '<ng-template #previewContent><ng-content></ng-content></ng-template>', isInline: true }); }
3540
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetPreviewWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3541
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetPreviewWrapperComponent, isStandalone: true, selector: "c8y-widget-preview-wrapper", viewQueries: [{ propertyName: "previewSet", first: true, predicate: ["previewContent"], descendants: true }], ngImport: i0, template: '<ng-template #previewContent><ng-content></ng-content></ng-template>', isInline: true }); }
3525
3542
  }
3526
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetPreviewWrapperComponent, decorators: [{
3543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetPreviewWrapperComponent, decorators: [{
3527
3544
  type: Component,
3528
3545
  args: [{
3529
3546
  selector: 'c8y-widget-preview-wrapper',
@@ -3559,8 +3576,8 @@ class ContextDashboardModule {
3559
3576
  ]
3560
3577
  };
3561
3578
  }
3562
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ContextDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3563
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ContextDashboardModule, imports: [CoreModule,
3579
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3580
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: ContextDashboardModule, imports: [CoreModule,
3564
3581
  TooltipModule,
3565
3582
  PopoverModule,
3566
3583
  AssetSelectorModule,
@@ -3581,7 +3598,7 @@ class ContextDashboardModule {
3581
3598
  WidgetConfigSectionComponent,
3582
3599
  AppearanceSettingsComponent,
3583
3600
  WidgetPreviewWrapperComponent] }); }
3584
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ContextDashboardModule, providers: [
3601
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextDashboardModule, providers: [
3585
3602
  {
3586
3603
  provide: CONTEXT_DASHBOARD_CONFIG,
3587
3604
  useValue: defaultConfig
@@ -3590,19 +3607,19 @@ class ContextDashboardModule {
3590
3607
  hookRoute([
3591
3608
  {
3592
3609
  path: DashboardDetailsTabId.GENERAL,
3593
- loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs').then(m => m.DashboardGeneralSettingsComponent),
3610
+ loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs').then(m => m.DashboardGeneralSettingsComponent),
3594
3611
  outlet: DASHBOARD_DETAILS_OUTLET,
3595
3612
  context: ViewContext.Dashboard
3596
3613
  },
3597
3614
  {
3598
3615
  path: DashboardDetailsTabId.APPEARANCE,
3599
- loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs').then(m => m.DashboardAppearanceSettingsComponent),
3616
+ loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs').then(m => m.DashboardAppearanceSettingsComponent),
3600
3617
  outlet: DASHBOARD_DETAILS_OUTLET,
3601
3618
  context: ViewContext.Dashboard
3602
3619
  },
3603
3620
  {
3604
3621
  path: DashboardDetailsTabId.VERSIONHISTORY,
3605
- loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs').then(m => m.DashboardVersionHistoryComponent),
3622
+ loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs').then(m => m.DashboardVersionHistoryComponent),
3606
3623
  outlet: DASHBOARD_DETAILS_OUTLET,
3607
3624
  context: ViewContext.Dashboard
3608
3625
  }
@@ -3622,7 +3639,7 @@ class ContextDashboardModule {
3622
3639
  WidgetConfigComponent,
3623
3640
  DashboardDetailComponent] }); }
3624
3641
  }
3625
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ContextDashboardModule, decorators: [{
3642
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ContextDashboardModule, decorators: [{
3626
3643
  type: NgModule,
3627
3644
  args: [{
3628
3645
  imports: [
@@ -3663,19 +3680,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
3663
3680
  hookRoute([
3664
3681
  {
3665
3682
  path: DashboardDetailsTabId.GENERAL,
3666
- loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs').then(m => m.DashboardGeneralSettingsComponent),
3683
+ loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs').then(m => m.DashboardGeneralSettingsComponent),
3667
3684
  outlet: DASHBOARD_DETAILS_OUTLET,
3668
3685
  context: ViewContext.Dashboard
3669
3686
  },
3670
3687
  {
3671
3688
  path: DashboardDetailsTabId.APPEARANCE,
3672
- loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs').then(m => m.DashboardAppearanceSettingsComponent),
3689
+ loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs').then(m => m.DashboardAppearanceSettingsComponent),
3673
3690
  outlet: DASHBOARD_DETAILS_OUTLET,
3674
3691
  context: ViewContext.Dashboard
3675
3692
  },
3676
3693
  {
3677
3694
  path: DashboardDetailsTabId.VERSIONHISTORY,
3678
- loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs').then(m => m.DashboardVersionHistoryComponent),
3695
+ loadComponent: () => import('./c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs').then(m => m.DashboardVersionHistoryComponent),
3679
3696
  outlet: DASHBOARD_DETAILS_OUTLET,
3680
3697
  context: ViewContext.Dashboard
3681
3698
  }
@@ -4029,10 +4046,10 @@ class DeviceInfoDashboardComponent {
4029
4046
  canDeactivate() {
4030
4047
  return this.contextDashboard?.canDeactivate();
4031
4048
  }
4032
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceInfoDashboardComponent, deps: [{ token: i1.ActivatedRoute }, { token: WidgetService }, { token: i2$1.TranslateService }, { token: i1$1.InventoryService }], target: i0.ɵɵFactoryTarget.Component }); }
4033
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DeviceInfoDashboardComponent, isStandalone: true, selector: "c8y-device-info-dashboard-dashboard", viewQueries: [{ propertyName: "contextDashboard", first: true, predicate: ContextDashboardComponent, descendants: true }], ngImport: i0, template: "<div *ngIf=\"!isLoading\">\n <c8y-title>\n {{ title }}\n </c8y-title>\n <c8y-context-dashboard\n [translateWidgetTitle]=\"true\"\n [name]=\"dashboardName\"\n [context]=\"currentContext\"\n [defaultWidgets]=\"widgetsList\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n [canCopy]=\"false\"\n ></c8y-context-dashboard>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton", "translateWidgetTitle", "hideAvailability"] }] }); }
4049
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceInfoDashboardComponent, deps: [{ token: i1.ActivatedRoute }, { token: WidgetService }, { token: i2$1.TranslateService }, { token: i1$1.InventoryService }], target: i0.ɵɵFactoryTarget.Component }); }
4050
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DeviceInfoDashboardComponent, isStandalone: true, selector: "c8y-device-info-dashboard-dashboard", viewQueries: [{ propertyName: "contextDashboard", first: true, predicate: ContextDashboardComponent, descendants: true }], ngImport: i0, template: "<div *ngIf=\"!isLoading\">\n <c8y-title>\n {{ title }}\n </c8y-title>\n <c8y-context-dashboard\n [translateWidgetTitle]=\"true\"\n [name]=\"dashboardName\"\n [context]=\"currentContext\"\n [defaultWidgets]=\"widgetsList\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n [canCopy]=\"false\"\n ></c8y-context-dashboard>\n</div>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton", "translateWidgetTitle", "hideAvailability"] }] }); }
4034
4051
  }
4035
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceInfoDashboardComponent, decorators: [{
4052
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceInfoDashboardComponent, decorators: [{
4036
4053
  type: Component,
4037
4054
  args: [{ selector: 'c8y-device-info-dashboard-dashboard', imports: [NgIf, TitleComponent, ContextDashboardComponent], template: "<div *ngIf=\"!isLoading\">\n <c8y-title>\n {{ title }}\n </c8y-title>\n <c8y-context-dashboard\n [translateWidgetTitle]=\"true\"\n [name]=\"dashboardName\"\n [context]=\"currentContext\"\n [defaultWidgets]=\"widgetsList\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n [canCopy]=\"false\"\n ></c8y-context-dashboard>\n</div>\n" }]
4038
4055
  }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: WidgetService }, { type: i2$1.TranslateService }, { type: i1$1.InventoryService }], propDecorators: { contextDashboard: [{
@@ -4041,9 +4058,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
4041
4058
  }] } });
4042
4059
 
4043
4060
  class DeviceInfoDashboardModule {
4044
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceInfoDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4045
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: DeviceInfoDashboardModule, imports: [CommonModule, CoreModule, ContextDashboardModule, DeviceInfoDashboardComponent] }); }
4046
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceInfoDashboardModule, providers: [
4061
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceInfoDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4062
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: DeviceInfoDashboardModule, imports: [CommonModule, CoreModule, ContextDashboardModule, DeviceInfoDashboardComponent] }); }
4063
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceInfoDashboardModule, providers: [
4047
4064
  hookRoute({
4048
4065
  context: ViewContext.Device,
4049
4066
  path: 'device-info',
@@ -4056,7 +4073,7 @@ class DeviceInfoDashboardModule {
4056
4073
  })
4057
4074
  ], imports: [CommonModule, CoreModule, ContextDashboardModule, DeviceInfoDashboardComponent] }); }
4058
4075
  }
4059
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceInfoDashboardModule, decorators: [{
4076
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceInfoDashboardModule, decorators: [{
4060
4077
  type: NgModule,
4061
4078
  args: [{
4062
4079
  imports: [CommonModule, CoreModule, ContextDashboardModule, DeviceInfoDashboardComponent],
@@ -4110,10 +4127,10 @@ class DeviceManagementHomeDashboardComponent {
4110
4127
  canDeactivate() {
4111
4128
  return this.contextDashboard?.canDeactivate();
4112
4129
  }
4113
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceManagementHomeDashboardComponent, deps: [{ token: WidgetService }], target: i0.ɵɵFactoryTarget.Component }); }
4114
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DeviceManagementHomeDashboardComponent, isStandalone: true, selector: "c8y-device-management-home-dashboard", viewQueries: [{ propertyName: "contextDashboard", first: true, predicate: ContextDashboardComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n></c8y-context-dashboard>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton", "translateWidgetTitle", "hideAvailability"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
4130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceManagementHomeDashboardComponent, deps: [{ token: WidgetService }], target: i0.ɵɵFactoryTarget.Component }); }
4131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DeviceManagementHomeDashboardComponent, isStandalone: true, selector: "c8y-device-management-home-dashboard", viewQueries: [{ propertyName: "contextDashboard", first: true, predicate: ContextDashboardComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n></c8y-context-dashboard>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: ContextDashboardComponent, selector: "c8y-context-dashboard", inputs: ["name", "childrenClasses", "context", "setTitle", "defaultWidgets", "canCopy", "canDelete", "isLoading", "breadcrumbSettings", "showContextHelpButton", "translateWidgetTitle", "hideAvailability"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
4115
4132
  }
4116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceManagementHomeDashboardComponent, decorators: [{
4133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceManagementHomeDashboardComponent, decorators: [{
4117
4134
  type: Component,
4118
4135
  args: [{ selector: 'c8y-device-management-home-dashboard', imports: [TitleComponent, ContextDashboardComponent, C8yTranslatePipe], template: "<c8y-title>\n {{ 'Home' | translate }}\n</c8y-title>\n\n<c8y-context-dashboard\n [name]=\"dashboardName\"\n [defaultWidgets]=\"defaultWidgets\"\n [canDelete]=\"false\"\n [hideAvailability]=\"true\"\n></c8y-context-dashboard>\n" }]
4119
4136
  }], ctorParameters: () => [{ type: WidgetService }], propDecorators: { contextDashboard: [{
@@ -4122,12 +4139,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
4122
4139
  }] } });
4123
4140
 
4124
4141
  class DeviceManagementHomeDashboardModule {
4125
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceManagementHomeDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4126
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: DeviceManagementHomeDashboardModule, imports: [CommonModule,
4142
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceManagementHomeDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4143
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: DeviceManagementHomeDashboardModule, imports: [CommonModule,
4127
4144
  CoreModule,
4128
4145
  ContextDashboardModule,
4129
4146
  DeviceManagementHomeDashboardComponent] }); }
4130
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceManagementHomeDashboardModule, providers: [
4147
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceManagementHomeDashboardModule, providers: [
4131
4148
  hookRoute({
4132
4149
  path: 'home',
4133
4150
  component: DeviceManagementHomeDashboardComponent,
@@ -4140,7 +4157,7 @@ class DeviceManagementHomeDashboardModule {
4140
4157
  ContextDashboardModule,
4141
4158
  DeviceManagementHomeDashboardComponent] }); }
4142
4159
  }
4143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceManagementHomeDashboardModule, decorators: [{
4160
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceManagementHomeDashboardModule, decorators: [{
4144
4161
  type: NgModule,
4145
4162
  args: [{
4146
4163
  imports: [
@@ -4167,10 +4184,10 @@ class WidgetConfigAppearanceComponent {
4167
4184
  this.widgetConfig = inject(WidgetConfigComponent);
4168
4185
  this.possibleStyling = { WIDGET_HEADER_CLASSES, WIDGET_CONTENT_CLASSES };
4169
4186
  }
4170
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigAppearanceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4171
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: WidgetConfigAppearanceComponent, isStandalone: true, selector: "c8y-widget-config-appearance", ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"widgetConfig.styling.contentClass\"\n [(headerClass)]=\"widgetConfig.styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"widgetConfig.defaultStyling.contentClass\"\n [defaultHeaderClass]=\"widgetConfig.defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"widgetConfig.getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "dashboardSettings", "possibleStylingTheme", "possibleStylingHeader", "columns"], outputs: ["themeClassChange", "headerClassChange", "onChange"] }, { kind: "component", type: WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses"] }] }); }
4187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigAppearanceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
4188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: WidgetConfigAppearanceComponent, isStandalone: true, selector: "c8y-widget-config-appearance", ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"widgetConfig.styling.contentClass\"\n [(headerClass)]=\"widgetConfig.styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"widgetConfig.defaultStyling.contentClass\"\n [defaultHeaderClass]=\"widgetConfig.defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"widgetConfig.getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: AppearanceSettingsComponent, selector: "c8y-appearance-settings", inputs: ["themeClass", "headerClass", "defaultThemeClass", "defaultHeaderClass", "dashboardSettings", "possibleStylingTheme", "possibleStylingHeader", "columns"], outputs: ["themeClassChange", "headerClassChange", "onChange"] }, { kind: "component", type: WidgetPreviewComponent, selector: "c8y-widget-preview", inputs: ["previewClasses"] }] }); }
4172
4189
  }
4173
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: WidgetConfigAppearanceComponent, decorators: [{
4190
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: WidgetConfigAppearanceComponent, decorators: [{
4174
4191
  type: Component,
4175
4192
  args: [{ standalone: true, imports: [AppearanceSettingsComponent, NgIf, WidgetPreviewComponent], selector: 'c8y-widget-config-appearance', template: "<div class=\"row\">\n <div class=\"col-xs-6\">\n <c8y-appearance-settings\n [(themeClass)]=\"widgetConfig.styling.contentClass\"\n [(headerClass)]=\"widgetConfig.styling.headerClass\"\n [possibleStylingTheme]=\"possibleStyling.WIDGET_CONTENT_CLASSES\"\n [possibleStylingHeader]=\"possibleStyling.WIDGET_HEADER_CLASSES\"\n [defaultThemeClass]=\"widgetConfig.defaultStyling.contentClass\"\n [defaultHeaderClass]=\"widgetConfig.defaultStyling.headerClass\"\n ></c8y-appearance-settings>\n </div>\n <div class=\"col-xs-6 sticky-header-top-0\">\n <c8y-widget-preview\n style=\"height: calc(100vh - 382px)\"\n [previewClasses]=\"widgetConfig.getStyle(true)\"\n ></c8y-widget-preview>\n </div>\n</div>\n" }]
4176
4193
  }] });