@c8y/ngx-components 1023.88.2 → 1023.90.1

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 (275) hide show
  1. package/context-dashboard/index.d.ts +4 -4
  2. package/context-dashboard/index.d.ts.map +1 -1
  3. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  4. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  5. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +12 -12
  6. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +24 -24
  7. package/fesm2022/c8y-ngx-components-ai.mjs +3 -3
  8. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +40 -40
  9. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  10. package/fesm2022/c8y-ngx-components-alarms.mjs +76 -76
  11. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  12. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  13. package/fesm2022/c8y-ngx-components-application-access-list.mjs +12 -12
  14. package/fesm2022/c8y-ngx-components-application-access-user-application-access-user-details-wrapper.mjs +3 -3
  15. package/fesm2022/c8y-ngx-components-asset-properties.mjs +48 -48
  16. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-BJOPTjF1.mjs → c8y-ngx-components-asset-property-grid.component-DsfLvryd.mjs} +13 -13
  17. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-BJOPTjF1.mjs.map → c8y-ngx-components-asset-property-grid.component-DsfLvryd.mjs.map} +1 -1
  18. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  19. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +120 -120
  20. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  21. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  22. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  23. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  24. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  25. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  26. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  27. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +17 -17
  28. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  29. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  30. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +36 -36
  31. package/fesm2022/c8y-ngx-components-branding-shared.mjs +13 -13
  32. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  33. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  34. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-tP8yUdy3.mjs → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Zygcid6r.mjs} +4 -4
  35. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-tP8yUdy3.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-Zygcid6r.mjs.map} +1 -1
  36. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-wNQ45CJ1.mjs → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-Cy9R6Ixb.mjs} +11 -11
  37. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-wNQ45CJ1.mjs.map → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-Cy9R6Ixb.mjs.map} +1 -1
  38. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BrYcCHYL.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-Dz3efcEU.mjs} +4 -4
  39. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-BrYcCHYL.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-Dz3efcEU.mjs.map} +1 -1
  40. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-BBKuA2rZ.mjs → c8y-ngx-components-computed-asset-properties-event-count-config.component-DzAGrG1d.mjs} +4 -4
  41. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-BBKuA2rZ.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-DzAGrG1d.mjs.map} +1 -1
  42. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-uEdtPWC0.mjs → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-LrmlAh6V.mjs} +5 -5
  43. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-uEdtPWC0.mjs.map → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-LrmlAh6V.mjs.map} +1 -1
  44. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BGhex-OP.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-f1u1TcCl.mjs} +5 -5
  45. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-BGhex-OP.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-f1u1TcCl.mjs.map} +1 -1
  46. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +1 -1
  47. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  48. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  49. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  50. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  51. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BkwPfkeK.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DxpivVU5.mjs} +4 -4
  52. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BkwPfkeK.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DxpivVU5.mjs.map} +1 -1
  53. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-4aO0U4qs.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-2HrOH9-8.mjs} +10 -10
  54. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-4aO0U4qs.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-2HrOH9-8.mjs.map} +1 -1
  55. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-1xx4pGiq.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-Cqy2OUcS.mjs} +4 -4
  56. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-1xx4pGiq.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-Cqy2OUcS.mjs.map} +1 -1
  57. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  58. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  59. package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
  60. package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
  61. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +127 -113
  62. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  63. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-C8QX6xlf.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-L0Ns8oOr.mjs} +16 -16
  64. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-C8QX6xlf.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-L0Ns8oOr.mjs.map} +1 -1
  65. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  66. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
  67. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  68. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  69. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  70. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  71. package/fesm2022/c8y-ngx-components-data-preparation.mjs +7 -7
  72. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
  73. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +13 -13
  74. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  75. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  76. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  77. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  78. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +43 -43
  79. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +36 -36
  80. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  81. package/fesm2022/c8y-ngx-components-device-enrolment-modal.mjs +9 -9
  82. package/fesm2022/c8y-ngx-components-device-enrolment.mjs +6 -6
  83. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  84. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  85. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  86. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  87. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  88. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  89. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  90. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  91. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  92. package/fesm2022/c8y-ngx-components-echart.mjs +30 -30
  93. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  94. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  95. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  96. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  97. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  98. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  99. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  100. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  101. package/fesm2022/c8y-ngx-components-events.mjs +33 -33
  102. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  103. package/fesm2022/c8y-ngx-components-feature-toggles-list.mjs +6 -6
  104. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  105. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  106. package/fesm2022/c8y-ngx-components-global-context.mjs +614 -479
  107. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-group-breadcrumbs.mjs +6 -6
  109. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  110. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  111. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  112. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  113. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  114. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  115. package/fesm2022/c8y-ngx-components-operation-picker.mjs +9 -9
  116. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  117. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  118. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  119. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  120. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  121. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  122. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  123. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
  124. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  125. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  126. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  127. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  128. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  129. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  130. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  131. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  132. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  133. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  134. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  135. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  136. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  137. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  138. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  139. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  140. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  141. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  142. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  143. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  144. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  145. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  146. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  147. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  148. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  149. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  150. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  151. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  152. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  153. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  154. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  155. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  156. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  157. package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
  158. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  159. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  160. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  161. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  162. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  163. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  164. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  165. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  166. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
  167. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
  168. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  169. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  170. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  171. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  172. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  173. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +6 -8
  174. package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
  175. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
  176. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  177. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  178. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  179. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  180. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  181. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +4 -5
  182. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  183. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  184. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  185. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  186. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  187. package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
  188. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  189. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -2
  190. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  191. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +1 -2
  192. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  193. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +1 -2
  194. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  195. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-table.mjs +6 -6
  196. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +4 -5
  197. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  198. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-list.mjs +0 -1
  199. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-list.mjs.map +1 -1
  200. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +0 -1
  201. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs +2 -89
  203. package/fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -3
  205. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
  206. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +0 -1
  207. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  208. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +23 -26
  209. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  211. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs +34 -34
  212. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs.map +1 -1
  213. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  214. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  215. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +7 -7
  216. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  217. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-list.mjs +12 -12
  218. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-list.mjs.map +1 -1
  219. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +21 -21
  220. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  221. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  222. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +10 -10
  223. package/fesm2022/c8y-ngx-components-widgets-implementations-events.mjs +8 -8
  224. package/fesm2022/c8y-ngx-components-widgets-implementations-events.mjs.map +1 -1
  225. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  226. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
  227. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  228. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  229. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  230. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +7 -7
  231. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  232. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  233. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  234. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  235. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs +9 -9
  236. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
  237. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  238. package/fesm2022/c8y-ngx-components.mjs +1432 -1412
  239. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  240. package/global-context/index.d.ts +59 -31
  241. package/global-context/index.d.ts.map +1 -1
  242. package/index.d.ts +26 -6
  243. package/index.d.ts.map +1 -1
  244. package/locales/de.po +77 -17
  245. package/locales/es.po +76 -17
  246. package/locales/fr.po +76 -17
  247. package/locales/ja_JP.po +72 -15
  248. package/locales/ko.po +76 -17
  249. package/locales/locales.pot +12 -9
  250. package/locales/nl.po +76 -17
  251. package/locales/pl.po +77 -17
  252. package/locales/pt_BR.po +77 -17
  253. package/locales/zh_CN.po +76 -17
  254. package/locales/zh_TW.po +76 -17
  255. package/package.json +1 -1
  256. package/static-assets/data/index.d.ts.map +1 -1
  257. package/translation-editor/data/index.d.ts.map +1 -1
  258. package/widgets/definitions/alarms/alarm-list/index.d.ts +0 -1
  259. package/widgets/definitions/alarms/alarm-list/index.d.ts.map +1 -1
  260. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +0 -1
  261. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  262. package/widgets/definitions/alarms/recent-alarms/index.d.ts +0 -1
  263. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  264. package/widgets/definitions/datapoints-list/index.d.ts +0 -1
  265. package/widgets/definitions/datapoints-list/index.d.ts.map +1 -1
  266. package/widgets/definitions/datapoints-table/index.d.ts +0 -1
  267. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  268. package/widgets/definitions/kpi/index.d.ts +0 -1
  269. package/widgets/definitions/kpi/index.d.ts.map +1 -1
  270. package/widgets/implementations/alarms/index.d.ts +5 -8
  271. package/widgets/implementations/alarms/index.d.ts.map +1 -1
  272. package/widgets/implementations/asset-table/index.d.ts +67 -1
  273. package/widgets/implementations/asset-table/index.d.ts.map +1 -1
  274. package/widgets/implementations/html-widget/index.d.ts +4 -6
  275. package/widgets/implementations/html-widget/index.d.ts.map +1 -1
@@ -23,7 +23,7 @@ class EventListWidgetConfigComponent {
23
23
  this.widgetConfigService = inject(WidgetConfigService);
24
24
  this.events = signal(undefined, ...(ngDevMode ? [{ debugName: "events" }] : []));
25
25
  this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
26
- this.controls = PRESET_NAME.ALARM_LIST;
26
+ this.controls = PRESET_NAME.LIFETIME_LIST;
27
27
  this.navigationOptions = {
28
28
  allowNavigationToEventsView: false,
29
29
  alwaysNavigateToAllEvents: false,
@@ -86,10 +86,10 @@ class EventListWidgetConfigComponent {
86
86
  this.isLoading.set(false);
87
87
  }
88
88
  }
89
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EventListWidgetConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
90
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: EventListWidgetConfigComponent, isStandalone: true, selector: "c8y-event-list-widget-config", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "eventListPreview", first: true, predicate: ["eventListPreview"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Type' | translate }}</legend>\n <c8y-form-group class=\"p-t-4 form-group-sm\">\n <div style=\"position: relative\">\n <input\n class=\"form-control\"\n [style.padding-right]=\"typeValue() ? '32px' : null\"\n formControlName=\"type\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' }\"\n />\n @if (typeValue()) {\n <button\n class=\"btn btn-clean\"\n style=\"position: absolute; right: 8px; top: 50%; transform: translateY(-50%)\"\n [title]=\"'Clear' | translate\"\n type=\"button\"\n (click)=\"clearType()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n }\n </div>\n </c8y-form-group>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n data-cy=\"c8y-event-list-widget-config--child-devices-section\"\n >\n <legend>{{ 'Child devices' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Show events from child devices' | translate\"\n data-cy=\"c8y-event-list-widget-config--child-devices-label\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"showEventsForChildren\"\n data-cy=\"c8y-event-list-widget-config--showEventsForChildren-checkbox\"\n />\n <span></span>\n <span>{{ 'Show events' | translate }}</span>\n <span class=\"sr-only\">{{ 'Show events' | translate }}</span>\n </label>\n </c8y-form-group>\n </fieldset>\n</div>\n\n<ng-template #eventListPreview>\n @let previewDisplayMode = configState()?.displayMode;\n @if (previewDisplayMode && previewDisplayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"previewDisplayMode\"\n [config]=\"{\n dateTimeContext: configState()?.dateTimeContext,\n aggregation: configState()?.aggregation,\n isAutoRefreshEnabled: configState()?.isAutoRefreshEnabled,\n refreshInterval: configState()?.refreshInterval,\n refreshOption: configState()?.refreshOption\n }\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n <c8y-events-list\n [events]=\"events()\"\n [isLoading]=\"isLoading()\"\n [navigationOptions]=\"navigationOptions\"\n ></c8y-events-list>\n</ng-template>\n", dependencies: [{ kind: "component", type: EventsListComponent, selector: "c8y-events-list", inputs: ["events", "isLoading", "loadMoreMode", "showPreview", "navigationOptions"], outputs: ["onScrollingStateChange", "onPreviewStateChange", "onSelectedEvent"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "emitRefresh"], outputs: ["configChange", "refresh"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
89
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EventListWidgetConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
90
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: EventListWidgetConfigComponent, isStandalone: true, selector: "c8y-event-list-widget-config", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "eventListPreview", first: true, predicate: ["eventListPreview"], descendants: true, isSignal: true }], ngImport: i0, template: "<div [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Type' | translate }}</legend>\n <c8y-form-group class=\"p-t-4 form-group-sm\">\n <div style=\"position: relative\">\n <input\n class=\"form-control\"\n [style.padding-right]=\"typeValue() ? '32px' : null\"\n formControlName=\"type\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' }\"\n />\n @if (typeValue()) {\n <button\n class=\"btn btn-clean\"\n style=\"position: absolute; right: 8px; top: 50%; transform: translateY(-50%)\"\n [title]=\"'Clear' | translate\"\n type=\"button\"\n (click)=\"clearType()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n }\n </div>\n </c8y-form-group>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n data-cy=\"c8y-event-list-widget-config--child-devices-section\"\n >\n <legend>{{ 'Child devices' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Show events from child devices' | translate\"\n data-cy=\"c8y-event-list-widget-config--child-devices-label\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"showEventsForChildren\"\n data-cy=\"c8y-event-list-widget-config--showEventsForChildren-checkbox\"\n />\n <span></span>\n <span>{{ 'Show events' | translate }}</span>\n <span class=\"sr-only\">{{ 'Show events' | translate }}</span>\n </label>\n </c8y-form-group>\n </fieldset>\n</div>\n\n<ng-template #eventListPreview>\n @let previewDisplayMode = configState()?.displayMode;\n @if (previewDisplayMode && previewDisplayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"previewDisplayMode\"\n [config]=\"{\n dateTimeContext: configState()?.dateTimeContext,\n aggregation: configState()?.aggregation,\n isAutoRefreshEnabled: configState()?.isAutoRefreshEnabled,\n refreshInterval: configState()?.refreshInterval,\n refreshOption: configState()?.refreshOption\n }\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n <c8y-events-list\n [events]=\"events()\"\n [isLoading]=\"isLoading()\"\n [navigationOptions]=\"navigationOptions\"\n ></c8y-events-list>\n</ng-template>\n", dependencies: [{ kind: "component", type: EventsListComponent, selector: "c8y-events-list", inputs: ["events", "isLoading", "loadMoreMode", "showPreview", "navigationOptions"], outputs: ["onScrollingStateChange", "onPreviewStateChange", "onSelectedEvent"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "emitRefresh", "dashboardChild"], outputs: ["configChange", "refresh"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
91
91
  }
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EventListWidgetConfigComponent, decorators: [{
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EventListWidgetConfigComponent, decorators: [{
93
93
  type: Component,
94
94
  args: [{ selector: 'c8y-event-list-widget-config', changeDetection: ChangeDetectionStrategy.OnPush, viewProviders: [{ provide: ControlContainer, useExisting: NgForm }], imports: [
95
95
  C8yTranslatePipe,
@@ -114,7 +114,7 @@ class EventListWidgetComponent {
114
114
  this.isLinkedToGlobal = signal(undefined, ...(ngDevMode ? [{ debugName: "isLinkedToGlobal" }] : []));
115
115
  this.events = signal(undefined, ...(ngDevMode ? [{ debugName: "events" }] : []));
116
116
  this.isLoading = signal(true, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
117
- this.widgetControls = signal(PRESET_NAME.ALARM_LIST, ...(ngDevMode ? [{ debugName: "widgetControls" }] : []));
117
+ this.widgetControls = signal(PRESET_NAME.LIFETIME_LIST, ...(ngDevMode ? [{ debugName: "widgetControls" }] : []));
118
118
  this.sourceId = '';
119
119
  this.GLOBAL_CONTEXT_DISPLAY_MODE = GLOBAL_CONTEXT_DISPLAY_MODE;
120
120
  this.REFRESH_OPTION = REFRESH_OPTION;
@@ -220,10 +220,10 @@ class EventListWidgetComponent {
220
220
  this.isLoading.set(false);
221
221
  }
222
222
  }
223
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EventListWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
224
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: EventListWidgetComponent, isStandalone: true, selector: "c8y-event-list-widget", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"dashboardChild\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n}\n\n<c8y-events-list\n [events]=\"events()\"\n [isLoading]=\"isLoading()\"\n [showPreview]=\"true\"\n [navigationOptions]=\"navigationOptions()\"\n (onScrollingStateChange)=\"onScrollingStateChange($event)\"\n (onPreviewStateChange)=\"onPreviewStateChange($event)\"\n></c8y-events-list>\n", dependencies: [{ kind: "component", type: EventsListComponent, selector: "c8y-events-list", inputs: ["events", "isLoading", "loadMoreMode", "showPreview", "navigationOptions"], outputs: ["onScrollingStateChange", "onPreviewStateChange", "onSelectedEvent"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "emitRefresh"], outputs: ["configChange", "refresh"] }, { kind: "component", type: GlobalContextConnectorComponent, selector: "c8y-global-context-connector", inputs: ["controls", "config", "isLoading", "dashboardChild", "linked", "emitRefresh"], outputs: ["configChange", "refresh", "linkedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EventListWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
224
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: EventListWidgetComponent, isStandalone: true, selector: "c8y-event-list-widget", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"dashboardChild\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n}\n\n<c8y-events-list\n [events]=\"events()\"\n [isLoading]=\"isLoading()\"\n [showPreview]=\"true\"\n [navigationOptions]=\"navigationOptions()\"\n (onScrollingStateChange)=\"onScrollingStateChange($event)\"\n (onPreviewStateChange)=\"onPreviewStateChange($event)\"\n></c8y-events-list>\n", dependencies: [{ kind: "component", type: EventsListComponent, selector: "c8y-events-list", inputs: ["events", "isLoading", "loadMoreMode", "showPreview", "navigationOptions"], outputs: ["onScrollingStateChange", "onPreviewStateChange", "onSelectedEvent"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "emitRefresh", "dashboardChild"], outputs: ["configChange", "refresh"] }, { kind: "component", type: GlobalContextConnectorComponent, selector: "c8y-global-context-connector", inputs: ["controls", "config", "isLoading", "dashboardChild", "linked", "emitRefresh"], outputs: ["configChange", "refresh", "linkedChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
225
225
  }
226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EventListWidgetComponent, decorators: [{
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: EventListWidgetComponent, decorators: [{
227
227
  type: Component,
228
228
  args: [{ selector: 'c8y-event-list-widget', changeDetection: ChangeDetectionStrategy.OnPush, imports: [EventsListComponent, LocalControlsComponent, GlobalContextConnectorComponent], template: "@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"dashboardChild\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n}\n\n<c8y-events-list\n [events]=\"events()\"\n [isLoading]=\"isLoading()\"\n [showPreview]=\"true\"\n [navigationOptions]=\"navigationOptions()\"\n (onScrollingStateChange)=\"onScrollingStateChange($event)\"\n (onPreviewStateChange)=\"onPreviewStateChange($event)\"\n></c8y-events-list>\n" }]
229
229
  }], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }] } });
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-widgets-implementations-events.mjs","sources":["../../widgets/implementations/events/event-list-widget-config/event-list-widget-config.component.ts","../../widgets/implementations/events/event-list-widget-config/event-list-widget-config.component.html","../../widgets/implementations/events/event-list-widget-view/event-list-widget.component.ts","../../widgets/implementations/events/event-list-widget-view/event-list-widget.component.html","../../widgets/implementations/events/c8y-ngx-components-widgets-implementations-events.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n ControlContainer,\n FormBuilder,\n FormsModule,\n NgForm,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IEvent, IResultList } from '@c8y/client';\nimport {\n AlertService,\n C8yTranslatePipe,\n FormGroupComponent,\n IconDirective\n} from '@c8y/ngx-components';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { EventsListComponent, EventsViewService } from '@c8y/ngx-components/events';\nimport {\n LocalControlsComponent,\n PRESET_NAME,\n PresetName\n} from '@c8y/ngx-components/global-context';\nimport { from } from 'rxjs';\nimport { debounceTime, shareReplay, switchMap } from 'rxjs/operators';\nimport { EventListWidgetConfig } from '../event-list-widget.model';\n\n@Component({\n selector: 'c8y-event-list-widget-config',\n templateUrl: './event-list-widget-config.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n imports: [\n C8yTranslatePipe,\n EventsListComponent,\n FormGroupComponent,\n FormsModule,\n IconDirective,\n LocalControlsComponent,\n ReactiveFormsModule\n ]\n})\nexport class EventListWidgetConfigComponent implements OnInit {\n config = input<EventListWidgetConfig>();\n eventListPreview = viewChild<TemplateRef<unknown>>('eventListPreview');\n\n private alertService = inject(AlertService);\n private destroyRef = inject(DestroyRef);\n private eventsViewService = inject(EventsViewService);\n private form = inject(NgForm);\n private formBuilder = inject(FormBuilder);\n private widgetConfigService = inject(WidgetConfigService);\n\n events = signal<IResultList<IEvent> | undefined>(undefined);\n isLoading = signal(false);\n controls: PresetName = PRESET_NAME.ALARM_LIST;\n\n readonly navigationOptions = {\n allowNavigationToEventsView: false,\n alwaysNavigateToAllEvents: false,\n queryParamsHandling: 'merge' as const\n };\n\n formGroup = this.formBuilder.group({\n type: [''],\n showEventsForChildren: [true]\n });\n typeValue = toSignal(this.formGroup.controls.type.valueChanges, {\n initialValue: this.formGroup.controls.type.value\n });\n\n private config$ = this.widgetConfigService.currentConfig$.pipe(\n takeUntilDestroyed(this.destroyRef),\n shareReplay(1)\n );\n configState = toSignal(this.config$);\n\n constructor() {\n effect(() => {\n const template = this.eventListPreview();\n this.widgetConfigService.setPreview(template ?? null);\n });\n }\n\n ngOnInit(): void {\n const cfg = this.config();\n this.formGroup.patchValue({\n type: cfg?.type ?? '',\n showEventsForChildren: cfg?.showEventsForChildren ?? true\n });\n this.form.form.addControl('config', this.formGroup);\n\n this.formGroup.valueChanges\n .pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef))\n .subscribe(value => {\n Object.assign(cfg, value);\n this.fetchEvents({ ...cfg, ...value } as EventListWidgetConfig);\n });\n\n this.widgetConfigService.addOnBeforeSave(config => {\n Object.assign(config, this.formGroup.value);\n return true;\n });\n\n this.config$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n switchMap(config =>\n from(this.fetchEvents({ ...config, ...this.formGroup.value } as EventListWidgetConfig))\n )\n )\n .subscribe();\n }\n\n clearType(): void {\n this.formGroup.controls.type.setValue('');\n }\n\n private async fetchEvents(config: EventListWidgetConfig): Promise<void> {\n try {\n this.isLoading.set(true);\n const filter = this.eventsViewService.buildEventsFilter({\n source: config.device?.id ?? null,\n withSourceChildren: config.showEventsForChildren ?? true,\n type: config.type ?? null,\n dateTimeContext: config.dateTimeContext\n });\n const result = await this.eventsViewService.retrieveEvents({ ...filter, pageSize: 10 });\n this.events.set(result);\n } catch (error: unknown) {\n this.alertService.addServerFailure(error);\n } finally {\n this.isLoading.set(false);\n }\n }\n}\n","<div [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Type' | translate }}</legend>\n <c8y-form-group class=\"p-t-4 form-group-sm\">\n <div style=\"position: relative\">\n <input\n class=\"form-control\"\n [style.padding-right]=\"typeValue() ? '32px' : null\"\n formControlName=\"type\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' }\"\n />\n @if (typeValue()) {\n <button\n class=\"btn btn-clean\"\n style=\"position: absolute; right: 8px; top: 50%; transform: translateY(-50%)\"\n [title]=\"'Clear' | translate\"\n type=\"button\"\n (click)=\"clearType()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n }\n </div>\n </c8y-form-group>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n data-cy=\"c8y-event-list-widget-config--child-devices-section\"\n >\n <legend>{{ 'Child devices' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Show events from child devices' | translate\"\n data-cy=\"c8y-event-list-widget-config--child-devices-label\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"showEventsForChildren\"\n data-cy=\"c8y-event-list-widget-config--showEventsForChildren-checkbox\"\n />\n <span></span>\n <span>{{ 'Show events' | translate }}</span>\n <span class=\"sr-only\">{{ 'Show events' | translate }}</span>\n </label>\n </c8y-form-group>\n </fieldset>\n</div>\n\n<ng-template #eventListPreview>\n @let previewDisplayMode = configState()?.displayMode;\n @if (previewDisplayMode && previewDisplayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"previewDisplayMode\"\n [config]=\"{\n dateTimeContext: configState()?.dateTimeContext,\n aggregation: configState()?.aggregation,\n isAutoRefreshEnabled: configState()?.isAutoRefreshEnabled,\n refreshInterval: configState()?.refreshInterval,\n refreshOption: configState()?.refreshOption\n }\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n <c8y-events-list\n [events]=\"events()\"\n [isLoading]=\"isLoading()\"\n [navigationOptions]=\"navigationOptions\"\n ></c8y-events-list>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n computed,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { IEvent, IResultList } from '@c8y/client';\nimport {\n AlertService,\n DashboardChildComponent,\n DismissAlertStrategy,\n DynamicComponentAlert,\n DynamicComponentAlertAggregator\n} from '@c8y/ngx-components';\nimport { EventsListComponent, EventsViewService } from '@c8y/ngx-components/events';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DisplayMode,\n GLOBAL_CONTEXT_DISPLAY_MODE,\n GlobalContextConnectorComponent,\n GlobalContextState,\n LocalControlsComponent,\n PRESET_NAME,\n PresetName,\n REFRESH_OPTION\n} from '@c8y/ngx-components/global-context';\nimport { EventListWidgetConfig } from '../event-list-widget.model';\n\n@Component({\n selector: 'c8y-event-list-widget',\n templateUrl: './event-list-widget.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [EventsListComponent, LocalControlsComponent, GlobalContextConnectorComponent]\n})\nexport class EventListWidgetComponent implements OnInit {\n config = input<EventListWidgetConfig>();\n\n private alertService = inject(AlertService);\n protected dashboardChild = inject(DashboardChildComponent);\n private eventsViewService = inject(EventsViewService);\n\n private isListScrolled = signal(false);\n\n displayMode = signal<DisplayMode>(GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD);\n contextConfig = signal<GlobalContextState>({});\n isLinkedToGlobal = signal<boolean | undefined>(undefined);\n events = signal<IResultList<IEvent> | undefined>(undefined);\n isLoading = signal(true);\n alerts: DynamicComponentAlertAggregator;\n widgetControls = signal<PresetName>(PRESET_NAME.ALARM_LIST);\n private sourceId = '';\n\n readonly GLOBAL_CONTEXT_DISPLAY_MODE = GLOBAL_CONTEXT_DISPLAY_MODE;\n readonly REFRESH_OPTION = REFRESH_OPTION;\n\n navigationOptions = computed(() => ({\n alwaysNavigateToAllEvents: !this.config()?.device,\n allowNavigationToEventsView: true,\n queryParamsHandling: '' as const\n }));\n\n private TIMEOUT_ERROR_TEXT = gettext(\n 'The request is taking longer than usual. We apologize for the inconvenience.'\n );\n private SERVER_ERROR_TEXT = gettext('Server error occurred.');\n\n async ngOnInit(): Promise<void> {\n this.alerts.setAlertGroupDismissStrategy(\n 'warning',\n DismissAlertStrategy.TEMPORARY_OR_PERMANENT\n );\n\n const cfg = this.config();\n this.migrateLegacyConfig(cfg);\n this.sourceId =\n cfg?.device?.id ??\n this.dashboardChild['data']?.device?.id ??\n this.dashboardChild['data']?.context?.id ??\n '';\n\n const displayMode = cfg?.displayMode || GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD;\n this.displayMode.set(displayMode as DisplayMode);\n\n const initialContextConfig: GlobalContextState = {\n dateTimeContext: cfg?.dateTimeContext,\n aggregation: cfg?.aggregation,\n isAutoRefreshEnabled: cfg?.isAutoRefreshEnabled,\n refreshInterval: cfg?.refreshInterval,\n refreshOption: cfg?.refreshOption\n };\n this.contextConfig.set(initialContextConfig);\n\n if (displayMode !== GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n await this.fetchEvents();\n }\n }\n\n onContextChange(event: { context: GlobalContextState; diff: GlobalContextState }): void {\n const { diff, context } = event;\n if (\n diff.isAutoRefreshEnabled === false &&\n Object.keys(diff).length === 1 &&\n context.refreshOption === REFRESH_OPTION.LIVE\n ) {\n return;\n }\n\n this.contextConfig.set(context);\n void this.fetchEvents();\n }\n\n onRefresh(): void {\n void this.fetchEvents();\n }\n\n onScrollingStateChange(isScrolling: boolean): void {\n this.isListScrolled.set(isScrolling);\n const current = this.contextConfig();\n\n if (current.refreshOption === REFRESH_OPTION.HISTORY) {\n return;\n }\n this.contextConfig.set({ ...current, isAutoRefreshEnabled: !isScrolling });\n this.isLinkedToGlobal.set(!isScrolling);\n }\n\n onPreviewStateChange(isOpen: boolean): void {\n const current = this.contextConfig();\n\n if (current.refreshOption === REFRESH_OPTION.HISTORY) {\n return;\n }\n if (isOpen || !this.isListScrolled()) {\n this.contextConfig.set({ ...current, isAutoRefreshEnabled: !isOpen });\n this.isLinkedToGlobal.set(!isOpen);\n }\n }\n\n private migrateLegacyConfig(cfg: EventListWidgetConfig | undefined): void {\n if (!cfg || cfg.type) {\n return;\n }\n const legacyType = (cfg as Record<string, unknown>)['options'];\n if (legacyType && typeof legacyType === 'object' && 'type' in legacyType) {\n cfg.type = (legacyType as { type: string }).type;\n }\n }\n\n private async fetchEvents(): Promise<void> {\n try {\n this.isLoading.set(true);\n const effectiveConfig = {\n ...this.config(),\n ...this.contextConfig()\n };\n\n const filter = this.eventsViewService.buildEventsFilter({\n source: this.sourceId || null,\n withSourceChildren: this.config()?.showEventsForChildren ?? true,\n type: effectiveConfig.type ?? null,\n dateTimeContext: effectiveConfig.dateTimeContext\n });\n const result = await this.eventsViewService.retrieveEvents({ ...filter, pageSize: 10 });\n this.events.set(result);\n } catch (error: unknown) {\n const err = error as { name?: string; message?: string };\n this.alerts.addAlerts(\n new DynamicComponentAlert({\n type: 'warning',\n text:\n err.name === 'TimeoutError'\n ? this.TIMEOUT_ERROR_TEXT\n : (err.message ?? this.SERVER_ERROR_TEXT)\n })\n );\n this.alertService.addServerFailure(error);\n } finally {\n this.isLoading.set(false);\n }\n }\n}\n","@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"dashboardChild\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n}\n\n<c8y-events-list\n [events]=\"events()\"\n [isLoading]=\"isLoading()\"\n [showPreview]=\"true\"\n [navigationOptions]=\"navigationOptions()\"\n (onScrollingStateChange)=\"onScrollingStateChange($event)\"\n (onPreviewStateChange)=\"onPreviewStateChange($event)\"\n></c8y-events-list>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-widgets-implementations-events.mjs","sources":["../../widgets/implementations/events/event-list-widget-config/event-list-widget-config.component.ts","../../widgets/implementations/events/event-list-widget-config/event-list-widget-config.component.html","../../widgets/implementations/events/event-list-widget-view/event-list-widget.component.ts","../../widgets/implementations/events/event-list-widget-view/event-list-widget.component.html","../../widgets/implementations/events/c8y-ngx-components-widgets-implementations-events.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n effect,\n inject,\n input,\n OnInit,\n signal,\n TemplateRef,\n viewChild\n} from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport {\n ControlContainer,\n FormBuilder,\n FormsModule,\n NgForm,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IEvent, IResultList } from '@c8y/client';\nimport {\n AlertService,\n C8yTranslatePipe,\n FormGroupComponent,\n IconDirective\n} from '@c8y/ngx-components';\nimport { WidgetConfigService } from '@c8y/ngx-components/context-dashboard';\nimport { EventsListComponent, EventsViewService } from '@c8y/ngx-components/events';\nimport {\n LocalControlsComponent,\n PRESET_NAME,\n PresetName\n} from '@c8y/ngx-components/global-context';\nimport { from } from 'rxjs';\nimport { debounceTime, shareReplay, switchMap } from 'rxjs/operators';\nimport { EventListWidgetConfig } from '../event-list-widget.model';\n\n@Component({\n selector: 'c8y-event-list-widget-config',\n templateUrl: './event-list-widget-config.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n imports: [\n C8yTranslatePipe,\n EventsListComponent,\n FormGroupComponent,\n FormsModule,\n IconDirective,\n LocalControlsComponent,\n ReactiveFormsModule\n ]\n})\nexport class EventListWidgetConfigComponent implements OnInit {\n config = input<EventListWidgetConfig>();\n eventListPreview = viewChild<TemplateRef<unknown>>('eventListPreview');\n\n private alertService = inject(AlertService);\n private destroyRef = inject(DestroyRef);\n private eventsViewService = inject(EventsViewService);\n private form = inject(NgForm);\n private formBuilder = inject(FormBuilder);\n private widgetConfigService = inject(WidgetConfigService);\n\n events = signal<IResultList<IEvent> | undefined>(undefined);\n isLoading = signal(false);\n controls: PresetName = PRESET_NAME.LIFETIME_LIST;\n\n readonly navigationOptions = {\n allowNavigationToEventsView: false,\n alwaysNavigateToAllEvents: false,\n queryParamsHandling: 'merge' as const\n };\n\n formGroup = this.formBuilder.group({\n type: [''],\n showEventsForChildren: [true]\n });\n typeValue = toSignal(this.formGroup.controls.type.valueChanges, {\n initialValue: this.formGroup.controls.type.value\n });\n\n private config$ = this.widgetConfigService.currentConfig$.pipe(\n takeUntilDestroyed(this.destroyRef),\n shareReplay(1)\n );\n configState = toSignal(this.config$);\n\n constructor() {\n effect(() => {\n const template = this.eventListPreview();\n this.widgetConfigService.setPreview(template ?? null);\n });\n }\n\n ngOnInit(): void {\n const cfg = this.config();\n this.formGroup.patchValue({\n type: cfg?.type ?? '',\n showEventsForChildren: cfg?.showEventsForChildren ?? true\n });\n this.form.form.addControl('config', this.formGroup);\n\n this.formGroup.valueChanges\n .pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef))\n .subscribe(value => {\n Object.assign(cfg, value);\n this.fetchEvents({ ...cfg, ...value } as EventListWidgetConfig);\n });\n\n this.widgetConfigService.addOnBeforeSave(config => {\n Object.assign(config, this.formGroup.value);\n return true;\n });\n\n this.config$\n .pipe(\n takeUntilDestroyed(this.destroyRef),\n switchMap(config =>\n from(this.fetchEvents({ ...config, ...this.formGroup.value } as EventListWidgetConfig))\n )\n )\n .subscribe();\n }\n\n clearType(): void {\n this.formGroup.controls.type.setValue('');\n }\n\n private async fetchEvents(config: EventListWidgetConfig): Promise<void> {\n try {\n this.isLoading.set(true);\n const filter = this.eventsViewService.buildEventsFilter({\n source: config.device?.id ?? null,\n withSourceChildren: config.showEventsForChildren ?? true,\n type: config.type ?? null,\n dateTimeContext: config.dateTimeContext\n });\n const result = await this.eventsViewService.retrieveEvents({ ...filter, pageSize: 10 });\n this.events.set(result);\n } catch (error: unknown) {\n this.alertService.addServerFailure(error);\n } finally {\n this.isLoading.set(false);\n }\n }\n}\n","<div [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Type' | translate }}</legend>\n <c8y-form-group class=\"p-t-4 form-group-sm\">\n <div style=\"position: relative\">\n <input\n class=\"form-control\"\n [style.padding-right]=\"typeValue() ? '32px' : null\"\n formControlName=\"type\"\n [placeholder]=\"'e.g. {{ example }}' | translate: { example: 'c8y_LocationUpdate' }\"\n />\n @if (typeValue()) {\n <button\n class=\"btn btn-clean\"\n style=\"position: absolute; right: 8px; top: 50%; transform: translateY(-50%)\"\n [title]=\"'Clear' | translate\"\n type=\"button\"\n (click)=\"clearType()\"\n >\n <i c8yIcon=\"times\"></i>\n </button>\n }\n </div>\n </c8y-form-group>\n </fieldset>\n <fieldset\n class=\"c8y-fieldset\"\n data-cy=\"c8y-event-list-widget-config--child-devices-section\"\n >\n <legend>{{ 'Child devices' | translate }}</legend>\n <c8y-form-group class=\"m-b-8\">\n <label\n class=\"c8y-switch\"\n [title]=\"'Show events from child devices' | translate\"\n data-cy=\"c8y-event-list-widget-config--child-devices-label\"\n >\n <input\n type=\"checkbox\"\n formControlName=\"showEventsForChildren\"\n data-cy=\"c8y-event-list-widget-config--showEventsForChildren-checkbox\"\n />\n <span></span>\n <span>{{ 'Show events' | translate }}</span>\n <span class=\"sr-only\">{{ 'Show events' | translate }}</span>\n </label>\n </c8y-form-group>\n </fieldset>\n</div>\n\n<ng-template #eventListPreview>\n @let previewDisplayMode = configState()?.displayMode;\n @if (previewDisplayMode && previewDisplayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"previewDisplayMode\"\n [config]=\"{\n dateTimeContext: configState()?.dateTimeContext,\n aggregation: configState()?.aggregation,\n isAutoRefreshEnabled: configState()?.isAutoRefreshEnabled,\n refreshInterval: configState()?.refreshInterval,\n refreshOption: configState()?.refreshOption\n }\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n <c8y-events-list\n [events]=\"events()\"\n [isLoading]=\"isLoading()\"\n [navigationOptions]=\"navigationOptions\"\n ></c8y-events-list>\n</ng-template>\n","import {\n ChangeDetectionStrategy,\n Component,\n OnInit,\n computed,\n inject,\n input,\n signal\n} from '@angular/core';\nimport { IEvent, IResultList } from '@c8y/client';\nimport {\n AlertService,\n DashboardChildComponent,\n DismissAlertStrategy,\n DynamicComponentAlert,\n DynamicComponentAlertAggregator\n} from '@c8y/ngx-components';\nimport { EventsListComponent, EventsViewService } from '@c8y/ngx-components/events';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n DisplayMode,\n GLOBAL_CONTEXT_DISPLAY_MODE,\n GlobalContextConnectorComponent,\n GlobalContextState,\n LocalControlsComponent,\n PRESET_NAME,\n PresetName,\n REFRESH_OPTION\n} from '@c8y/ngx-components/global-context';\nimport { EventListWidgetConfig } from '../event-list-widget.model';\n\n@Component({\n selector: 'c8y-event-list-widget',\n templateUrl: './event-list-widget.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [EventsListComponent, LocalControlsComponent, GlobalContextConnectorComponent]\n})\nexport class EventListWidgetComponent implements OnInit {\n config = input<EventListWidgetConfig>();\n\n private alertService = inject(AlertService);\n protected dashboardChild = inject(DashboardChildComponent);\n private eventsViewService = inject(EventsViewService);\n\n private isListScrolled = signal(false);\n\n displayMode = signal<DisplayMode>(GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD);\n contextConfig = signal<GlobalContextState>({});\n isLinkedToGlobal = signal<boolean | undefined>(undefined);\n events = signal<IResultList<IEvent> | undefined>(undefined);\n isLoading = signal(true);\n alerts: DynamicComponentAlertAggregator;\n widgetControls = signal<PresetName>(PRESET_NAME.LIFETIME_LIST);\n private sourceId = '';\n\n readonly GLOBAL_CONTEXT_DISPLAY_MODE = GLOBAL_CONTEXT_DISPLAY_MODE;\n readonly REFRESH_OPTION = REFRESH_OPTION;\n\n navigationOptions = computed(() => ({\n alwaysNavigateToAllEvents: !this.config()?.device,\n allowNavigationToEventsView: true,\n queryParamsHandling: '' as const\n }));\n\n private TIMEOUT_ERROR_TEXT = gettext(\n 'The request is taking longer than usual. We apologize for the inconvenience.'\n );\n private SERVER_ERROR_TEXT = gettext('Server error occurred.');\n\n async ngOnInit(): Promise<void> {\n this.alerts.setAlertGroupDismissStrategy(\n 'warning',\n DismissAlertStrategy.TEMPORARY_OR_PERMANENT\n );\n\n const cfg = this.config();\n this.migrateLegacyConfig(cfg);\n this.sourceId =\n cfg?.device?.id ??\n this.dashboardChild['data']?.device?.id ??\n this.dashboardChild['data']?.context?.id ??\n '';\n\n const displayMode = cfg?.displayMode || GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD;\n this.displayMode.set(displayMode as DisplayMode);\n\n const initialContextConfig: GlobalContextState = {\n dateTimeContext: cfg?.dateTimeContext,\n aggregation: cfg?.aggregation,\n isAutoRefreshEnabled: cfg?.isAutoRefreshEnabled,\n refreshInterval: cfg?.refreshInterval,\n refreshOption: cfg?.refreshOption\n };\n this.contextConfig.set(initialContextConfig);\n\n if (displayMode !== GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n await this.fetchEvents();\n }\n }\n\n onContextChange(event: { context: GlobalContextState; diff: GlobalContextState }): void {\n const { diff, context } = event;\n if (\n diff.isAutoRefreshEnabled === false &&\n Object.keys(diff).length === 1 &&\n context.refreshOption === REFRESH_OPTION.LIVE\n ) {\n return;\n }\n\n this.contextConfig.set(context);\n void this.fetchEvents();\n }\n\n onRefresh(): void {\n void this.fetchEvents();\n }\n\n onScrollingStateChange(isScrolling: boolean): void {\n this.isListScrolled.set(isScrolling);\n const current = this.contextConfig();\n\n if (current.refreshOption === REFRESH_OPTION.HISTORY) {\n return;\n }\n this.contextConfig.set({ ...current, isAutoRefreshEnabled: !isScrolling });\n this.isLinkedToGlobal.set(!isScrolling);\n }\n\n onPreviewStateChange(isOpen: boolean): void {\n const current = this.contextConfig();\n\n if (current.refreshOption === REFRESH_OPTION.HISTORY) {\n return;\n }\n if (isOpen || !this.isListScrolled()) {\n this.contextConfig.set({ ...current, isAutoRefreshEnabled: !isOpen });\n this.isLinkedToGlobal.set(!isOpen);\n }\n }\n\n private migrateLegacyConfig(cfg: EventListWidgetConfig | undefined): void {\n if (!cfg || cfg.type) {\n return;\n }\n const legacyType = (cfg as Record<string, unknown>)['options'];\n if (legacyType && typeof legacyType === 'object' && 'type' in legacyType) {\n cfg.type = (legacyType as { type: string }).type;\n }\n }\n\n private async fetchEvents(): Promise<void> {\n try {\n this.isLoading.set(true);\n const effectiveConfig = {\n ...this.config(),\n ...this.contextConfig()\n };\n\n const filter = this.eventsViewService.buildEventsFilter({\n source: this.sourceId || null,\n withSourceChildren: this.config()?.showEventsForChildren ?? true,\n type: effectiveConfig.type ?? null,\n dateTimeContext: effectiveConfig.dateTimeContext\n });\n const result = await this.eventsViewService.retrieveEvents({ ...filter, pageSize: 10 });\n this.events.set(result);\n } catch (error: unknown) {\n const err = error as { name?: string; message?: string };\n this.alerts.addAlerts(\n new DynamicComponentAlert({\n type: 'warning',\n text:\n err.name === 'TimeoutError'\n ? this.TIMEOUT_ERROR_TEXT\n : (err.message ?? this.SERVER_ERROR_TEXT)\n })\n );\n this.alertService.addServerFailure(error);\n } finally {\n this.isLoading.set(false);\n }\n }\n}\n","@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"widgetControls()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"dashboardChild\"\n [linked]=\"isLinkedToGlobal()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"widgetControls()\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n ></c8y-local-controls>\n}\n\n<c8y-events-list\n [events]=\"events()\"\n [isLoading]=\"isLoading()\"\n [showPreview]=\"true\"\n [navigationOptions]=\"navigationOptions()\"\n (onScrollingStateChange)=\"onScrollingStateChange($event)\"\n (onPreviewStateChange)=\"onPreviewStateChange($event)\"\n></c8y-events-list>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -95,10 +95,10 @@ class HelpAndServiceViewComponent {
95
95
  findNavigatorNode(nodeName, navNodes = []) {
96
96
  return navNodes.find((node) => node.label === nodeName);
97
97
  }
98
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HelpAndServiceViewComponent, deps: [{ token: i1.DocsService }, { token: i1.AppStateService }, { token: i1.NavigatorService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
99
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: HelpAndServiceViewComponent, isStandalone: true, selector: "c8y-help-and-service-view", ngImport: i0, template: "<div class=\"card-group-block\">\n <a\n class=\"card card--btn\"\n title=\"{{ link.label | translate }}\"\n role=\"button\"\n [attr.target]=\"link.target\"\n *ngFor=\"let link of links$ | async\"\n rel=\"noopener noreferrer\"\n [href]=\"link.url ? link.url : '#'\"\n (click)=\"openLink(link, $event)\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.HELP_AND_SERVICE_LINKS.EVENTS.HELP_AND_SERVICE_LINKS\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.HELP_AND_SERVICE_LINKS.COMPONENTS.HELP_AND_SERVICE_COMPONENT,\n action: link.label\n }\"\n >\n <div class=\"card-block text-center\">\n <div class=\"icon-32\">\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"link.icon\"\n ></i>\n </div>\n <small class=\"text-muted\">{{ link.label | translate }}</small>\n </div>\n </a>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
98
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HelpAndServiceViewComponent, deps: [{ token: i1.DocsService }, { token: i1.AppStateService }, { token: i1.NavigatorService }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
99
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: HelpAndServiceViewComponent, isStandalone: true, selector: "c8y-help-and-service-view", ngImport: i0, template: "<div class=\"card-group-block\">\n <a\n class=\"card card--btn\"\n title=\"{{ link.label | translate }}\"\n role=\"button\"\n [attr.target]=\"link.target\"\n *ngFor=\"let link of links$ | async\"\n rel=\"noopener noreferrer\"\n [href]=\"link.url ? link.url : '#'\"\n (click)=\"openLink(link, $event)\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.HELP_AND_SERVICE_LINKS.EVENTS.HELP_AND_SERVICE_LINKS\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.HELP_AND_SERVICE_LINKS.COMPONENTS.HELP_AND_SERVICE_COMPONENT,\n action: link.label\n }\"\n >\n <div class=\"card-block text-center\">\n <div class=\"icon-32\">\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"link.icon\"\n ></i>\n </div>\n <small class=\"text-muted\">{{ link.label | translate }}</small>\n </div>\n </a>\n</div>\n", dependencies: [{ kind: "ngmodule", type: CoreModule }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
100
100
  }
101
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HelpAndServiceViewComponent, decorators: [{
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HelpAndServiceViewComponent, decorators: [{
102
102
  type: Component,
103
103
  args: [{ selector: 'c8y-help-and-service-view', standalone: true, imports: [CoreModule, ReactiveFormsModule], template: "<div class=\"card-group-block\">\n <a\n class=\"card card--btn\"\n title=\"{{ link.label | translate }}\"\n role=\"button\"\n [attr.target]=\"link.target\"\n *ngFor=\"let link of links$ | async\"\n rel=\"noopener noreferrer\"\n [href]=\"link.url ? link.url : '#'\"\n (click)=\"openLink(link, $event)\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.HELP_AND_SERVICE_LINKS.EVENTS.HELP_AND_SERVICE_LINKS\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.HELP_AND_SERVICE_LINKS.COMPONENTS.HELP_AND_SERVICE_COMPONENT,\n action: link.label\n }\"\n >\n <div class=\"card-block text-center\">\n <div class=\"icon-32\">\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"link.icon\"\n ></i>\n </div>\n <small class=\"text-muted\">{{ link.label | translate }}</small>\n </div>\n </a>\n</div>\n" }]
104
104
  }], ctorParameters: () => [{ type: i1.DocsService }, { type: i1.AppStateService }, { type: i1.NavigatorService }, { type: i2.Router }] });
@@ -274,10 +274,10 @@ class HtmlWidgetConfigService {
274
274
  }
275
275
  };
276
276
  }
277
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlWidgetConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
278
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlWidgetConfigService }); }
277
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlWidgetConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
278
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlWidgetConfigService }); }
279
279
  }
280
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlWidgetConfigService, decorators: [{
280
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlWidgetConfigService, decorators: [{
281
281
  type: Injectable
282
282
  }] });
283
283
 
@@ -317,10 +317,10 @@ class AdvancedSettingsComponent {
317
317
  this.htmlWidgetConfigService.save(config);
318
318
  this.htmlWidgetConfigService.configChanged$.next(config);
319
319
  }
320
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AdvancedSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
321
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: AdvancedSettingsComponent, isStandalone: true, selector: "c8y-html-widget-advanced-settings", inputs: { devMode: "devMode", cssEncapsulation: "cssEncapsulation" }, ngImport: i0, template: "<fieldset class=\"c8y-fieldset m-t-0\">\n <legend>{{ 'Developer mode' | translate }}</legend>\n\n <div class=\"d-flex a-i-center p-b-16\">\n <label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n [ngModel]=\"devMode\"\n (change)=\"toggleAdvancedMode()\"\n [disabled]=\"!canChangeSettings\"\n />\n <span></span>\n <span>{{ 'Advanced developer mode' | translate }}</span>\n </label>\n\n <button class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"devMode ? disableAdvanced : enableAdvanced\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n\n <ng-template #enableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n <i [c8yIcon]=\"'imac-settings'\"></i>\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n Create custom widgets by modifying a basic WebComponent with HTML and JavaScript. This\n <strong>unsupported</strong>\n feature is ideal for rapid prototyping and simple customizations.\n </p>\n <p class=\"p-b-8\" translate>\n For production environments, we recommend our fully-supported Angular-based\n <a href=\"https://styleguide.cumulocity.com\" target=\"_blank\">Web SDK</a>.\n <br />\n Enable advanced developer mode to start coding!\n </p>\n </ng-template>\n\n <ng-template #disableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n The advanced developer mode is enabled for this widget allowing to build extensive Web\n Components.\n </p>\n <p class=\"p-b-8\" translate>\n You can disable this mode again, but it will reset the current code.\n </p>\n </ng-template>\n\n <ng-container *ngIf=\"!devMode\">\n <label\n class=\"c8y-switch m-l-auto\"\n >\n <input\n type=\"checkbox\"\n (change)=\"changeOption('cssEncapsulation')\"\n [disabled]=\"!canChangeSettings\"\n [ngModel]=\"cssEncapsulation\"\n />\n <span></span>\n <span>{{ 'CSS encapsulation' | translate }}</span>\n </label>\n <button\n class=\"btn-help m-0\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CSS_ENCAPSULATION_HELP_CONTEXT | translate }}\"\n triggers=\"focus\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n ></button>\n </ng-container>\n\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
320
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedSettingsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
321
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: AdvancedSettingsComponent, isStandalone: true, selector: "c8y-html-widget-advanced-settings", inputs: { devMode: "devMode", cssEncapsulation: "cssEncapsulation" }, ngImport: i0, template: "<fieldset class=\"c8y-fieldset m-t-0\">\n <legend>{{ 'Developer mode' | translate }}</legend>\n\n <div class=\"d-flex a-i-center p-b-16\">\n <label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n [ngModel]=\"devMode\"\n (change)=\"toggleAdvancedMode()\"\n [disabled]=\"!canChangeSettings\"\n />\n <span></span>\n <span>{{ 'Advanced developer mode' | translate }}</span>\n </label>\n\n <button class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"devMode ? disableAdvanced : enableAdvanced\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n\n <ng-template #enableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n <i [c8yIcon]=\"'imac-settings'\"></i>\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n Create custom widgets by modifying a basic WebComponent with HTML and JavaScript. This\n <strong>unsupported</strong>\n feature is ideal for rapid prototyping and simple customizations.\n </p>\n <p class=\"p-b-8\" translate>\n For production environments, we recommend our fully-supported Angular-based\n <a href=\"https://styleguide.cumulocity.com\" target=\"_blank\">Web SDK</a>.\n <br />\n Enable advanced developer mode to start coding!\n </p>\n </ng-template>\n\n <ng-template #disableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n The advanced developer mode is enabled for this widget allowing to build extensive Web\n Components.\n </p>\n <p class=\"p-b-8\" translate>\n You can disable this mode again, but it will reset the current code.\n </p>\n </ng-template>\n\n <ng-container *ngIf=\"!devMode\">\n <label\n class=\"c8y-switch m-l-auto\"\n >\n <input\n type=\"checkbox\"\n (change)=\"changeOption('cssEncapsulation')\"\n [disabled]=\"!canChangeSettings\"\n [ngModel]=\"cssEncapsulation\"\n />\n <span></span>\n <span>{{ 'CSS encapsulation' | translate }}</span>\n </label>\n <button\n class=\"btn-help m-0\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CSS_ENCAPSULATION_HELP_CONTEXT | translate }}\"\n triggers=\"focus\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n ></button>\n </ng-container>\n\n </div>\n</fieldset>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
322
322
  }
323
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: AdvancedSettingsComponent, decorators: [{
323
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: AdvancedSettingsComponent, decorators: [{
324
324
  type: Component,
325
325
  args: [{ standalone: true, imports: [IconDirective, NgIf, TooltipModule, PopoverModule, C8yTranslatePipe, FormsModule], selector: 'c8y-html-widget-advanced-settings', template: "<fieldset class=\"c8y-fieldset m-t-0\">\n <legend>{{ 'Developer mode' | translate }}</legend>\n\n <div class=\"d-flex a-i-center p-b-16\">\n <label class=\"c8y-switch\">\n <input\n type=\"checkbox\"\n [ngModel]=\"devMode\"\n (change)=\"toggleAdvancedMode()\"\n [disabled]=\"!canChangeSettings\"\n />\n <span></span>\n <span>{{ 'Advanced developer mode' | translate }}</span>\n </label>\n\n <button class=\"btn-help\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"devMode ? disableAdvanced : enableAdvanced\"\n container=\"body\"\n placement=\"right\"\n triggers=\"focus\"\n type=\"button\"\n ></button>\n\n <ng-template #enableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n <i [c8yIcon]=\"'imac-settings'\"></i>\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n Create custom widgets by modifying a basic WebComponent with HTML and JavaScript. This\n <strong>unsupported</strong>\n feature is ideal for rapid prototyping and simple customizations.\n </p>\n <p class=\"p-b-8\" translate>\n For production environments, we recommend our fully-supported Angular-based\n <a href=\"https://styleguide.cumulocity.com\" target=\"_blank\">Web SDK</a>.\n <br />\n Enable advanced developer mode to start coding!\n </p>\n </ng-template>\n\n <ng-template #disableAdvanced>\n <p class=\"text-16 text-bold p-b-8\">\n {{ 'Advanced developer mode' | translate }}\n </p>\n <p class=\"p-b-8\" translate>\n The advanced developer mode is enabled for this widget allowing to build extensive Web\n Components.\n </p>\n <p class=\"p-b-8\" translate>\n You can disable this mode again, but it will reset the current code.\n </p>\n </ng-template>\n\n <ng-container *ngIf=\"!devMode\">\n <label\n class=\"c8y-switch m-l-auto\"\n >\n <input\n type=\"checkbox\"\n (change)=\"changeOption('cssEncapsulation')\"\n [disabled]=\"!canChangeSettings\"\n [ngModel]=\"cssEncapsulation\"\n />\n <span></span>\n <span>{{ 'CSS encapsulation' | translate }}</span>\n </label>\n <button\n class=\"btn-help m-0\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{ CSS_ENCAPSULATION_HELP_CONTEXT | translate }}\"\n triggers=\"focus\"\n placement=\"left\"\n container=\"body\"\n type=\"button\"\n ></button>\n </ng-container>\n\n </div>\n</fieldset>\n" }]
326
326
  }], propDecorators: { devMode: [{
@@ -353,10 +353,10 @@ class HtmlAiChatToolDetailsComponent {
353
353
  this.htmlWidgetConfigService.configChanged$.next(newConfig);
354
354
  this.htmlWidgetConfigService.widgetConfigService.updateConfig({ config: newConfig });
355
355
  }
356
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlAiChatToolDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
357
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: HtmlAiChatToolDetailsComponent, isStandalone: true, selector: "c8y-html-ai-chat-tool-details", inputs: { tool: { classPropertyName: "tool", publicName: "tool", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<pre\n class=\"fit-w\"\n style=\"max-height: 320px\"\n >{{ code() }}</pre\n>\n@if (!isExecuting()) {\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Revert to this version' | translate\"\n [tooltip]=\"'Revert to this version' | translate\"\n container=\"body\"\n (click)=\"revert()\"\n >\n <i c8yIcon=\"undo\"></i>\n </button>\n}\n", dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
356
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlAiChatToolDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
357
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: HtmlAiChatToolDetailsComponent, isStandalone: true, selector: "c8y-html-ai-chat-tool-details", inputs: { tool: { classPropertyName: "tool", publicName: "tool", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<pre\n class=\"fit-w\"\n style=\"max-height: 320px\"\n >{{ code() }}</pre\n>\n@if (!isExecuting()) {\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Revert to this version' | translate\"\n [tooltip]=\"'Revert to this version' | translate\"\n container=\"body\"\n (click)=\"revert()\"\n >\n <i c8yIcon=\"undo\"></i>\n </button>\n}\n", dependencies: [{ kind: "directive", type: TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
358
358
  }
359
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlAiChatToolDetailsComponent, decorators: [{
359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlAiChatToolDetailsComponent, decorators: [{
360
360
  type: Component,
361
361
  args: [{ selector: 'c8y-html-ai-chat-tool-details', imports: [TooltipDirective, C8yTranslatePipe, IconDirective], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<pre\n class=\"fit-w\"\n style=\"max-height: 320px\"\n >{{ code() }}</pre\n>\n@if (!isExecuting()) {\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Revert to this version' | translate\"\n [tooltip]=\"'Revert to this version' | translate\"\n container=\"body\"\n (click)=\"revert()\"\n >\n <i c8yIcon=\"undo\"></i>\n </button>\n}\n" }]
362
362
  }], propDecorators: { tool: [{ type: i0.Input, args: [{ isSignal: true, alias: "tool", required: true }] }] } });
@@ -529,10 +529,10 @@ class HtmlFrameComponent {
529
529
  : this.config.css, this.config.options.cssEncapsulation);
530
530
  return webComponentScript;
531
531
  }
532
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
533
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: HtmlFrameComponent, isStandalone: true, selector: "c8y-html-frame", inputs: { config: "config", device: "device", propertyValues$: "propertyValues$", useSalt: "useSalt" }, host: { classAttribute: "d-contents" }, viewQueries: [{ propertyName: "hostElement", first: true, predicate: ["hostElement"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@for (alert of alerts; track alert) {\n <div\n class=\"alert m-8\"\n role=\"alert\"\n [ngClass]=\"{\n 'alert-danger': alert.type === 'danger',\n 'alert-warning': alert.type === 'warning',\n 'alert-info': alert.type === 'info',\n 'alert-success': alert.type === 'success'\n }\"\n >\n <p><strong translate>There was an issue in the HTML widget:</strong></p>\n <pre>{{ alert.text }}</pre>\n </div>\n}\n<div\n class=\"fit-w fit-h\"\n #hostElement\n></div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
532
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlFrameComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
533
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: HtmlFrameComponent, isStandalone: true, selector: "c8y-html-frame", inputs: { config: "config", device: "device", propertyValues$: "propertyValues$", useSalt: "useSalt" }, host: { classAttribute: "d-contents" }, viewQueries: [{ propertyName: "hostElement", first: true, predicate: ["hostElement"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "@for (alert of alerts; track alert) {\n <div\n class=\"alert m-8\"\n role=\"alert\"\n [ngClass]=\"{\n 'alert-danger': alert.type === 'danger',\n 'alert-warning': alert.type === 'warning',\n 'alert-info': alert.type === 'info',\n 'alert-success': alert.type === 'success'\n }\"\n >\n <p><strong translate>There was an issue in the HTML widget:</strong></p>\n <pre>{{ alert.text }}</pre>\n </div>\n}\n<div\n class=\"fit-w fit-h\"\n #hostElement\n></div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
534
534
  }
535
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlFrameComponent, decorators: [{
535
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlFrameComponent, decorators: [{
536
536
  type: Component,
537
537
  args: [{ standalone: true, imports: [NgClass], selector: 'c8y-html-frame', host: { class: 'd-contents' }, template: "@for (alert of alerts; track alert) {\n <div\n class=\"alert m-8\"\n role=\"alert\"\n [ngClass]=\"{\n 'alert-danger': alert.type === 'danger',\n 'alert-warning': alert.type === 'warning',\n 'alert-info': alert.type === 'info',\n 'alert-success': alert.type === 'success'\n }\"\n >\n <p><strong translate>There was an issue in the HTML widget:</strong></p>\n <pre>{{ alert.text }}</pre>\n </div>\n}\n<div\n class=\"fit-w fit-h\"\n #hostElement\n></div>\n" }]
538
538
  }], ctorParameters: () => [], propDecorators: { config: [{
@@ -738,10 +738,10 @@ class WidgetCodeEditorComponent {
738
738
  const formattedKey = nonAlphanumericRegex.test(key) ? `[${quoteAndEscape(key)}]` : `${key}`;
739
739
  return '${this.c8yProperties?.' + formattedKey + '}';
740
740
  }
741
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: WidgetCodeEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
742
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: WidgetCodeEditorComponent, isStandalone: true, selector: "c8y-widget-code-editor", inputs: { mode: "mode", config: "config" }, viewQueries: [{ propertyName: "editorComponent", first: true, predicate: EditorComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-widget-config-feedback>\n <div class=\"d-flex\">\n @if (config?.devMode && !config?.legacy) {\n <span\n class=\"tag tag--warning text-12\"\n translate\n >\n Advanced developer mode\n </span>\n }\n </div>\n <div class=\"d-flex\">\n @if (config?.legacy) {\n <span\n class=\"tag tag--warning text-12\"\n [title]=\"\n 'This widget is in legacy mode. Consider to upgrade this to a new HTML widget. Read our documentation on details to transform your widget'\n | translate\n \"\n translate\n >\n Legacy mode\n </span>\n }\n </div>\n</c8y-widget-config-feedback>\n\n<div class=\"d-flex d-col fit-h fit-w\">\n <c8y-html-widget-advanced-settings\n [devMode]=\"config?.devMode\"\n [cssEncapsulation]=\"config?.options?.cssEncapsulation\"\n ></c8y-html-widget-advanced-settings>\n\n <fieldset class=\"c8y-fieldset p-0 overflow-hidden\">\n <legend class=\"m-l-16 p-l-0\">{{ 'Code' | translate }}</legend>\n\n <div class=\"btn-group btn-group-sm m-l-0 p-t-8 p-b-8 p-l-16 p-r-16 fit-w d-flex\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Undo' | translate\"\n [tooltip]=\"'Undo' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"undo()\"\n >\n <i [c8yIcon]=\"'undo'\"></i>\n </button>\n\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Redo' | translate\"\n [tooltip]=\"'Redo' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"redo()\"\n >\n <i [c8yIcon]=\"'redo'\"></i>\n </button>\n\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Format code' | translate\"\n [tooltip]=\"'Format code' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"formatCode()\"\n >\n <i [c8yIcon]=\"'format-align-left'\"></i>\n </button>\n\n @let propertyKeys = propertyKeys$ | async;\n @if (mode !== 'css' && propertyKeys?.length) {\n <div\n class=\"btn-group btn-group-sm m-l-4\"\n container=\"body\"\n dropdown\n >\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Insert property' | translate\"\n [tooltip]=\"'Insert property' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i [c8yIcon]=\"'plus-circle'\"></i>\n </button>\n <ul\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n @for (key of propertyKeys; track key) {\n <li>\n <button\n class=\"dropdown-item\"\n type=\"button\"\n (click)=\"insertPropertyAtCursor(key)\"\n >\n {{ key }}\n </button>\n </li>\n }\n </ul>\n </div>\n }\n\n <label class=\"c8y-switch m-l-auto\">\n <input\n type=\"checkbox\"\n [checked]=\"isAutoSaveEnabled\"\n (change)=\"isAutoSaveEnabled = !isAutoSaveEnabled\"\n />\n <span></span>\n <span translate>Auto save</span>\n </label>\n </div>\n\n <div\n class=\"btn-toolbar m-0 p-relative\"\n role=\"toolbar\"\n >\n <c8y-tabs-outlet\n class=\"elevation-none\"\n [outletName]=\"TAB_OUTLET_NAME\"\n [orientation]=\"'horizontal'\"\n [openFirstTab]=\"false\"\n ></c8y-tabs-outlet>\n <c8y-tab\n [icon]=\"'code'\"\n [label]=\"(config?.devMode ? TAB_WEBCOMPONENT_LABEL : TAB_HTML_LABEL) | translate\"\n [priority]=\"100\"\n [showAlways]=\"true\"\n [tabsOutlet]=\"TAB_OUTLET_NAME\"\n [isActive]=\"mode === 'code'\"\n (onSelect)=\"switchMode('code')\"\n ></c8y-tab>\n @if (!config?.devMode && !config?.legacy) {\n <c8y-tab\n [icon]=\"'c8y-css'\"\n [label]=\"TAB_CSS_LABEL | translate\"\n [priority]=\"0\"\n [tabsOutlet]=\"TAB_OUTLET_NAME\"\n [isActive]=\"mode === 'css'\"\n (onSelect)=\"switchMode('css')\"\n ></c8y-tab>\n }\n </div>\n\n @if (!isLoading) {\n @if (!(mode === 'css' && config?.devMode)) {\n <c8y-editor\n class=\"flex-grow d-block\"\n style=\"height: 450px\"\n [ngModel]=\"value\"\n (ngModelChange)=\"changeCode($event)\"\n [editorOptions]=\"{\n language,\n tabSize: 2,\n insertSpaces: true,\n minimap: { enabled: false }\n }\"\n (editorInit)=\"editorLoaded($event)\"\n ></c8y-editor>\n }\n } @else {\n <c8y-loading></c8y-loading>\n }\n </fieldset>\n</div>\n", dependencies: [{ kind: "component", type: EditorComponent, selector: "c8y-editor", inputs: ["editorOptions", "theme"], outputs: ["editorInit"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: WidgetConfigFeedbackComponent, selector: "c8y-widget-config-feedback" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i2$1.TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "openFirstTab", "hasHeader"] }, { kind: "component", type: i2$1.TabComponent, selector: "c8y-tab", inputs: ["path", "label", "icon", "priority", "orientation", "injector", "tabsOutlet", "isActive", "text", "showAlways"], outputs: ["onSelect"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i4.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i4.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i4.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: AdvancedSettingsComponent, selector: "c8y-html-widget-advanced-settings", inputs: ["devMode", "cssEncapsulation"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
741
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: WidgetCodeEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
742
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: WidgetCodeEditorComponent, isStandalone: true, selector: "c8y-widget-code-editor", inputs: { mode: "mode", config: "config" }, viewQueries: [{ propertyName: "editorComponent", first: true, predicate: EditorComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<c8y-widget-config-feedback>\n <div class=\"d-flex\">\n @if (config?.devMode && !config?.legacy) {\n <span\n class=\"tag tag--warning text-12\"\n translate\n >\n Advanced developer mode\n </span>\n }\n </div>\n <div class=\"d-flex\">\n @if (config?.legacy) {\n <span\n class=\"tag tag--warning text-12\"\n [title]=\"\n 'This widget is in legacy mode. Consider to upgrade this to a new HTML widget. Read our documentation on details to transform your widget'\n | translate\n \"\n translate\n >\n Legacy mode\n </span>\n }\n </div>\n</c8y-widget-config-feedback>\n\n<div class=\"d-flex d-col fit-h fit-w\">\n <c8y-html-widget-advanced-settings\n [devMode]=\"config?.devMode\"\n [cssEncapsulation]=\"config?.options?.cssEncapsulation\"\n ></c8y-html-widget-advanced-settings>\n\n <fieldset class=\"c8y-fieldset p-0 overflow-hidden\">\n <legend class=\"m-l-16 p-l-0\">{{ 'Code' | translate }}</legend>\n\n <div class=\"btn-group btn-group-sm m-l-0 p-t-8 p-b-8 p-l-16 p-r-16 fit-w d-flex\">\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Undo' | translate\"\n [tooltip]=\"'Undo' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"undo()\"\n >\n <i [c8yIcon]=\"'undo'\"></i>\n </button>\n\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Redo' | translate\"\n [tooltip]=\"'Redo' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"redo()\"\n >\n <i [c8yIcon]=\"'redo'\"></i>\n </button>\n\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Format code' | translate\"\n [tooltip]=\"'Format code' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"formatCode()\"\n >\n <i [c8yIcon]=\"'format-align-left'\"></i>\n </button>\n\n @let propertyKeys = propertyKeys$ | async;\n @if (mode !== 'css' && propertyKeys?.length) {\n <div\n class=\"btn-group btn-group-sm m-l-4\"\n container=\"body\"\n dropdown\n >\n <button\n class=\"btn btn-default\"\n [attr.aria-label]=\"'Insert property' | translate\"\n [tooltip]=\"'Insert property' | translate\"\n placement=\"top\"\n container=\"body\"\n type=\"button\"\n [delay]=\"500\"\n dropdownToggle\n >\n <i [c8yIcon]=\"'plus-circle'\"></i>\n </button>\n <ul\n class=\"dropdown-menu\"\n *dropdownMenu\n >\n @for (key of propertyKeys; track key) {\n <li>\n <button\n class=\"dropdown-item\"\n type=\"button\"\n (click)=\"insertPropertyAtCursor(key)\"\n >\n {{ key }}\n </button>\n </li>\n }\n </ul>\n </div>\n }\n\n <label class=\"c8y-switch m-l-auto\">\n <input\n type=\"checkbox\"\n [checked]=\"isAutoSaveEnabled\"\n (change)=\"isAutoSaveEnabled = !isAutoSaveEnabled\"\n />\n <span></span>\n <span translate>Auto save</span>\n </label>\n </div>\n\n <div\n class=\"btn-toolbar m-0 p-relative\"\n role=\"toolbar\"\n >\n <c8y-tabs-outlet\n class=\"elevation-none\"\n [outletName]=\"TAB_OUTLET_NAME\"\n [orientation]=\"'horizontal'\"\n [openFirstTab]=\"false\"\n ></c8y-tabs-outlet>\n <c8y-tab\n [icon]=\"'code'\"\n [label]=\"(config?.devMode ? TAB_WEBCOMPONENT_LABEL : TAB_HTML_LABEL) | translate\"\n [priority]=\"100\"\n [showAlways]=\"true\"\n [tabsOutlet]=\"TAB_OUTLET_NAME\"\n [isActive]=\"mode === 'code'\"\n (onSelect)=\"switchMode('code')\"\n ></c8y-tab>\n @if (!config?.devMode && !config?.legacy) {\n <c8y-tab\n [icon]=\"'c8y-css'\"\n [label]=\"TAB_CSS_LABEL | translate\"\n [priority]=\"0\"\n [tabsOutlet]=\"TAB_OUTLET_NAME\"\n [isActive]=\"mode === 'css'\"\n (onSelect)=\"switchMode('css')\"\n ></c8y-tab>\n }\n </div>\n\n @if (!isLoading) {\n @if (!(mode === 'css' && config?.devMode)) {\n <c8y-editor\n class=\"flex-grow d-block\"\n style=\"height: 450px\"\n [ngModel]=\"value\"\n (ngModelChange)=\"changeCode($event)\"\n [editorOptions]=\"{\n language,\n tabSize: 2,\n insertSpaces: true,\n minimap: { enabled: false }\n }\"\n (editorInit)=\"editorLoaded($event)\"\n ></c8y-editor>\n }\n } @else {\n <c8y-loading></c8y-loading>\n }\n </fieldset>\n</div>\n", dependencies: [{ kind: "component", type: EditorComponent, selector: "c8y-editor", inputs: ["editorOptions", "theme"], outputs: ["editorInit"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: WidgetConfigFeedbackComponent, selector: "c8y-widget-config-feedback" }, { kind: "ngmodule", type: TabsModule }, { kind: "component", type: i2$1.TabsOutletComponent, selector: "c8y-tabs-outlet,c8y-ui-tabs", inputs: ["tabs", "orientation", "navigatorOpen", "outletName", "context", "openFirstTab", "hasHeader"] }, { kind: "component", type: i2$1.TabComponent, selector: "c8y-tab", inputs: ["path", "label", "icon", "priority", "orientation", "injector", "tabsOutlet", "isActive", "text", "showAlways"], outputs: ["onSelect"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "ngmodule", type: PopoverModule }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "directive", type: i4.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i4.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i4.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: AdvancedSettingsComponent, selector: "c8y-html-widget-advanced-settings", inputs: ["devMode", "cssEncapsulation"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
743
743
  }
744
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: WidgetCodeEditorComponent, decorators: [{
744
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: WidgetCodeEditorComponent, decorators: [{
745
745
  type: Component,
746
746
  args: [{ standalone: true, imports: [
747
747
  AsyncPipe,
@@ -811,10 +811,10 @@ class HtmlWidgetConfigComponent {
811
811
  this.htmlWidgetConfigService.configChanged$.next(updated);
812
812
  this.alert.success(gettext('Renamed asset property and updated references in HTML code.'));
813
813
  }
814
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlWidgetConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
815
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: HtmlWidgetConfigComponent, isStandalone: true, selector: "c8y-html-widget-config", viewQueries: [{ propertyName: "htmlPreviewTemplate", first: true, predicate: ["htmlPreview"], descendants: true }], ngImport: i0, template: "<c8y-widget-code-editor\n [config]=\"htmlWidgetConfigService.config$ | async\"\n [mode]=\"'code'\"\n></c8y-widget-code-editor>\n\n<ng-template #htmlPreview>\n @if ((widgetConfigService.currentConfig$ | async)?.displayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"(widgetConfigService.currentConfig$ | async)?.displayMode\"\n [config]=\"globalContextState$ | async\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n <c8y-html-frame\n [config]=\"htmlWidgetConfigService.codeEditorChangeConfig$ | async\"\n [device]=\"(widgetConfigService.currentConfig$ | async).device\"\n [propertyValues$]=\"propertyValues$\"\n [useSalt]=\"true\"\n ></c8y-html-frame>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: HtmlFrameComponent, selector: "c8y-html-frame", inputs: ["config", "device", "propertyValues$", "useSalt"] }, { kind: "component", type: WidgetCodeEditorComponent, selector: "c8y-widget-code-editor", inputs: ["mode", "config"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "emitRefresh"], outputs: ["configChange", "refresh"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
814
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlWidgetConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
815
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: HtmlWidgetConfigComponent, isStandalone: true, selector: "c8y-html-widget-config", viewQueries: [{ propertyName: "htmlPreviewTemplate", first: true, predicate: ["htmlPreview"], descendants: true }], ngImport: i0, template: "<c8y-widget-code-editor\n [config]=\"htmlWidgetConfigService.config$ | async\"\n [mode]=\"'code'\"\n></c8y-widget-code-editor>\n\n<ng-template #htmlPreview>\n @if ((widgetConfigService.currentConfig$ | async)?.displayMode !== 'dashboard') {\n <c8y-local-controls\n [controls]=\"controls\"\n [displayMode]=\"(widgetConfigService.currentConfig$ | async)?.displayMode\"\n [config]=\"globalContextState$ | async\"\n [disabled]=\"true\"\n ></c8y-local-controls>\n }\n <c8y-html-frame\n [config]=\"htmlWidgetConfigService.codeEditorChangeConfig$ | async\"\n [device]=\"(widgetConfigService.currentConfig$ | async).device\"\n [propertyValues$]=\"propertyValues$\"\n [useSalt]=\"true\"\n ></c8y-html-frame>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: HtmlFrameComponent, selector: "c8y-html-frame", inputs: ["config", "device", "propertyValues$", "useSalt"] }, { kind: "component", type: WidgetCodeEditorComponent, selector: "c8y-widget-code-editor", inputs: ["mode", "config"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "emitRefresh", "dashboardChild"], outputs: ["configChange", "refresh"] }, { kind: "pipe", type: AsyncPipe, name: "async" }] }); }
816
816
  }
817
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlWidgetConfigComponent, decorators: [{
817
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlWidgetConfigComponent, decorators: [{
818
818
  type: Component,
819
819
  args: [{ selector: 'c8y-html-widget-config', standalone: true, imports: [
820
820
  RouterModule,
@@ -853,10 +853,10 @@ class HtmlWidgetPropertiesSelectorComponent {
853
853
  const content = '${this.c8yContext' + path + '}';
854
854
  await this.clipboardService.writeText(content);
855
855
  }
856
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlWidgetPropertiesSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
857
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: HtmlWidgetPropertiesSelectorComponent, isStandalone: true, selector: "c8y-html-widget-properties-selector", host: { classAttribute: "bg-level-1" }, ngImport: i0, template: "<div\n class=\"d-flex m-b-8\"\n style=\"margin-top: -16px\"\n>\n <em\n class=\"m-l-24 text-muted\"\n translate\n >\n How to use properties in the widget\n </em>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"helpContent\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n</div>\n<c8y-asset-property-list\n class=\"inner-scroll bg-inherit d-block\"\n style=\"max-height: 450px\"\n [asset]=\"(widgetConfigService.currentConfig$ | async).device\"\n [config]=\"{\n selectMode: 'none',\n expansionMode: 'expandedByDefault',\n filterable: false,\n allowDragAndDrop: true\n }\"\n>\n <button\n class=\"btn-dot btn fit-h\"\n [attr.aria-label]=\"'Copy' | translate\"\n tooltip=\"{{ 'Copy' | translate }}\"\n type=\"button\"\n *c8yAssetPropertyAction=\"let context\"\n [delay]=\"500\"\n (click)=\"copyProperty(context)\"\n >\n <i class=\"dlt-c8y-icon-copy\"></i>\n </button>\n</c8y-asset-property-list>\n\n<ng-template #helpContent>\n <p\n class=\"p-b-8\"\n translate\n >\n Click the copy icon next to a property, then paste it into the HTML editor below as a template\n literal.\n </p>\n</ng-template>\n", dependencies: [{ kind: "component", type: AssetPropertyListComponent, selector: "c8y-asset-property-list", inputs: ["config", "asset", "extraProperties"], outputs: ["selectedProperties"] }, { kind: "directive", type: AssetPropertyActionDirective, selector: "[c8yAssetPropertyAction]" }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
856
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlWidgetPropertiesSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
857
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: HtmlWidgetPropertiesSelectorComponent, isStandalone: true, selector: "c8y-html-widget-properties-selector", host: { classAttribute: "bg-level-1" }, ngImport: i0, template: "<div\n class=\"d-flex m-b-8\"\n style=\"margin-top: -16px\"\n>\n <em\n class=\"m-l-24 text-muted\"\n translate\n >\n How to use properties in the widget\n </em>\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"helpContent\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n ></button>\n</div>\n<c8y-asset-property-list\n class=\"inner-scroll bg-inherit d-block\"\n style=\"max-height: 450px\"\n [asset]=\"(widgetConfigService.currentConfig$ | async).device\"\n [config]=\"{\n selectMode: 'none',\n expansionMode: 'expandedByDefault',\n filterable: false,\n allowDragAndDrop: true\n }\"\n>\n <button\n class=\"btn-dot btn fit-h\"\n [attr.aria-label]=\"'Copy' | translate\"\n tooltip=\"{{ 'Copy' | translate }}\"\n type=\"button\"\n *c8yAssetPropertyAction=\"let context\"\n [delay]=\"500\"\n (click)=\"copyProperty(context)\"\n >\n <i class=\"dlt-c8y-icon-copy\"></i>\n </button>\n</c8y-asset-property-list>\n\n<ng-template #helpContent>\n <p\n class=\"p-b-8\"\n translate\n >\n Click the copy icon next to a property, then paste it into the HTML editor below as a template\n literal.\n </p>\n</ng-template>\n", dependencies: [{ kind: "component", type: AssetPropertyListComponent, selector: "c8y-asset-property-list", inputs: ["config", "asset", "extraProperties"], outputs: ["selectedProperties"] }, { kind: "directive", type: AssetPropertyActionDirective, selector: "[c8yAssetPropertyAction]" }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.TooltipDirective, selector: "[tooltip], [tooltipHtml]", inputs: ["adaptivePosition", "tooltip", "placement", "triggers", "container", "containerClass", "boundariesElement", "isOpen", "isDisabled", "delay", "tooltipHtml", "tooltipPlacement", "tooltipIsOpen", "tooltipEnable", "tooltipAppendToBody", "tooltipAnimation", "tooltipClass", "tooltipContext", "tooltipPopupDelay", "tooltipFadeDuration", "tooltipTrigger"], outputs: ["tooltipChange", "onShown", "onHidden", "tooltipStateChanged"], exportAs: ["bs-tooltip"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
858
858
  }
859
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlWidgetPropertiesSelectorComponent, decorators: [{
859
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlWidgetPropertiesSelectorComponent, decorators: [{
860
860
  type: Component,
861
861
  args: [{ selector: 'c8y-html-widget-properties-selector', host: {
862
862
  class: 'bg-level-1'
@@ -937,10 +937,10 @@ class HtmlWidgetComponent {
937
937
  }
938
938
  };
939
939
  }
940
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
941
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.19", type: HtmlWidgetComponent, isStandalone: true, selector: "c8y-html-widget", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"getDashboardChild()\"\n [linked]=\"isLinkedToGlobal()\"\n [emitRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n >\n </c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [emitRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n >\n </c8y-local-controls>\n}\n\n<div class=\"p-16\">\n <c8y-html-frame\n [config]=\"config().config\"\n [device]=\"config().device\"\n [propertyValues$]=\"propertyValues$()\"\n ></c8y-html-frame>\n</div>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "component", type: HtmlFrameComponent, selector: "c8y-html-frame", inputs: ["config", "device", "propertyValues$", "useSalt"] }, { kind: "component", type: GlobalContextConnectorComponent, selector: "c8y-global-context-connector", inputs: ["controls", "config", "isLoading", "dashboardChild", "linked", "emitRefresh"], outputs: ["configChange", "refresh", "linkedChange"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "emitRefresh"], outputs: ["configChange", "refresh"] }] }); }
940
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlWidgetComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
941
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.25", type: HtmlWidgetComponent, isStandalone: true, selector: "c8y-html-widget", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n <c8y-global-context-connector\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"getDashboardChild()\"\n [linked]=\"isLinkedToGlobal()\"\n [emitRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n >\n </c8y-global-context-connector>\n} @else {\n <c8y-local-controls\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY\"\n [displayMode]=\"displayMode()\"\n [config]=\"contextConfig()\"\n [isLoading]=\"isLoading()\"\n [emitRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n >\n </c8y-local-controls>\n}\n\n<div class=\"p-16\">\n <c8y-html-frame\n [config]=\"config().config\"\n [device]=\"config().device\"\n [propertyValues$]=\"propertyValues$()\"\n ></c8y-html-frame>\n</div>\n", dependencies: [{ kind: "ngmodule", type: RouterModule }, { kind: "component", type: HtmlFrameComponent, selector: "c8y-html-frame", inputs: ["config", "device", "propertyValues$", "useSalt"] }, { kind: "component", type: GlobalContextConnectorComponent, selector: "c8y-global-context-connector", inputs: ["controls", "config", "isLoading", "dashboardChild", "linked", "emitRefresh"], outputs: ["configChange", "refresh", "linkedChange"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "emitRefresh", "dashboardChild"], outputs: ["configChange", "refresh"] }] }); }
942
942
  }
943
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: HtmlWidgetComponent, decorators: [{
943
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: HtmlWidgetComponent, decorators: [{
944
944
  type: Component,
945
945
  args: [{ selector: 'c8y-html-widget', standalone: true, imports: [
946
946
  RouterModule,