@c8y/ngx-components 1024.10.8 → 1024.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (250) hide show
  1. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  2. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  3. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs +51 -33
  4. package/fesm2022/c8y-ngx-components-ai-agent-chat.mjs.map +1 -1
  5. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs +25 -25
  6. package/fesm2022/c8y-ngx-components-ai-ai-chat.mjs.map +1 -1
  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-application-select.mjs +3 -3
  16. package/fesm2022/c8y-ngx-components-asset-properties.mjs +48 -48
  17. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-Ddva2QJW.mjs → c8y-ngx-components-asset-property-grid.component-DiyBj-XO.mjs} +13 -13
  18. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-Ddva2QJW.mjs.map → c8y-ngx-components-asset-property-grid.component-DiyBj-XO.mjs.map} +1 -1
  19. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  20. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +120 -120
  21. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  22. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  23. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  24. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  25. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  26. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  27. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  28. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  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-BSxOT0SU.mjs → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-QfHyUsqG.mjs} +4 -4
  35. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-BSxOT0SU.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-QfHyUsqG.mjs.map} +1 -1
  36. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-BSeGaS86.mjs → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-DreEjPAV.mjs} +11 -11
  37. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-BSeGaS86.mjs.map → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-DreEjPAV.mjs.map} +1 -1
  38. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C9_wOe7Q.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-vwNRqIEN.mjs} +4 -4
  39. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-C9_wOe7Q.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-vwNRqIEN.mjs.map} +1 -1
  40. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-BkWl-4Xt.mjs → c8y-ngx-components-computed-asset-properties-event-count-config.component-BTfPf6IZ.mjs} +4 -4
  41. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-BkWl-4Xt.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-BTfPf6IZ.mjs.map} +1 -1
  42. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-DXirzI0z.mjs → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-B2z2tGM7.mjs} +5 -5
  43. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-DXirzI0z.mjs.map → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-B2z2tGM7.mjs.map} +1 -1
  44. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DTOHhXlH.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CwWLXBUt.mjs} +5 -5
  45. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-DTOHhXlH.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CwWLXBUt.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 +12 -10
  50. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  52. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DVP1ld4m.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-ly9fklRG.mjs} +4 -4
  53. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DVP1ld4m.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-ly9fklRG.mjs.map} +1 -1
  54. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-B8yNG85v.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DA9DFUIL.mjs} +10 -10
  55. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-B8yNG85v.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DA9DFUIL.mjs.map} +1 -1
  56. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-BUCVA0RW.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-CiHrXzWC.mjs} +4 -4
  57. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-BUCVA0RW.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-CiHrXzWC.mjs.map} +1 -1
  58. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  59. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +12 -10
  60. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
  61. package/fesm2022/c8y-ngx-components-context-dashboard-devicemanagement.mjs +3 -3
  62. package/fesm2022/c8y-ngx-components-context-dashboard-state.mjs +3 -3
  63. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +131 -124
  64. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  65. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BZXZ_lDq.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-Nbg_Z47C.mjs} +16 -16
  66. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-BZXZ_lDq.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-Nbg_Z47C.mjs.map} +1 -1
  67. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  68. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +6 -6
  69. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +28 -28
  70. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  71. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  72. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  73. package/fesm2022/c8y-ngx-components-data-preparation.mjs +7 -7
  74. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +26 -26
  75. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  76. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +13 -13
  77. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  78. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  79. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  80. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  81. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +46 -46
  82. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +36 -36
  83. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  84. package/fesm2022/c8y-ngx-components-device-enrolment-modal.mjs +9 -9
  85. package/fesm2022/c8y-ngx-components-device-enrolment.mjs +6 -6
  86. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  87. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  88. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  89. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  90. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  91. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  92. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  93. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  94. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  95. package/fesm2022/c8y-ngx-components-echart.mjs +30 -30
  96. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  97. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  98. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  99. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  100. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  101. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  102. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  103. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  104. package/fesm2022/c8y-ngx-components-events.mjs +33 -33
  105. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  106. package/fesm2022/c8y-ngx-components-feature-toggles-list.mjs +6 -6
  107. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  108. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  109. package/fesm2022/c8y-ngx-components-global-context.mjs +136 -136
  110. package/fesm2022/c8y-ngx-components-group-breadcrumbs.mjs +6 -6
  111. package/fesm2022/c8y-ngx-components-icon-selector.mjs +51 -45
  112. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  114. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  115. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  116. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  117. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  118. package/fesm2022/c8y-ngx-components-operation-picker.mjs +9 -9
  119. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  120. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  121. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  122. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  123. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  124. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  125. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  126. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +3 -3
  127. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  128. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  129. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  130. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  131. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  132. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  133. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  134. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  135. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  136. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  137. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  138. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  139. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  140. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  141. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  142. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  143. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  144. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  145. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  146. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  147. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  148. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  149. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  150. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  151. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  152. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  153. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  154. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  155. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  156. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  157. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  158. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  159. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  160. package/fesm2022/c8y-ngx-components-replace-device.mjs +10 -10
  161. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +21 -19
  162. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  163. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  164. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  165. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  166. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  167. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  168. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  169. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  170. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +6 -6
  171. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +7 -7
  172. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  173. package/fesm2022/c8y-ngx-components-services-shared.mjs +5 -5
  174. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  175. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  176. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  177. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  178. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  179. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +9 -9
  180. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  181. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  182. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  183. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  184. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  185. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  186. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  187. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  188. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  189. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  190. package/fesm2022/c8y-ngx-components-upgrade.mjs +64 -47
  191. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  192. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  193. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-table.mjs +6 -6
  194. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
  195. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget-ai-config.mjs +3 -3
  196. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +6 -6
  197. package/fesm2022/c8y-ngx-components-widgets-definitions-scada.mjs +6 -6
  198. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +19 -19
  199. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  200. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs +51 -40
  201. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-table.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  203. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  204. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +8 -8
  205. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  206. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-list.mjs +12 -12
  207. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +21 -21
  208. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  209. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +10 -10
  210. package/fesm2022/c8y-ngx-components-widgets-implementations-events.mjs +6 -6
  211. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  212. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +24 -24
  213. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  214. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  215. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
  216. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  217. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  218. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  219. package/fesm2022/c8y-ngx-components-widgets-implementations-pie-chart.mjs +9 -9
  220. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
  221. package/fesm2022/c8y-ngx-components-widgets-implementations-scada.mjs +29 -25
  222. package/fesm2022/c8y-ngx-components-widgets-implementations-scada.mjs.map +1 -1
  223. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  224. package/fesm2022/c8y-ngx-components.mjs +1440 -1433
  225. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  226. package/locales/de.po +43 -51
  227. package/locales/es.po +42 -50
  228. package/locales/fr.po +44 -52
  229. package/locales/ja_JP.po +38 -45
  230. package/locales/ko.po +41 -49
  231. package/locales/locales.pot +35 -40
  232. package/locales/nl.po +43 -51
  233. package/locales/pl.po +41 -49
  234. package/locales/pt_BR.po +43 -51
  235. package/locales/zh_CN.po +40 -48
  236. package/locales/zh_TW.po +43 -51
  237. package/package.json +1 -1
  238. package/types/c8y-ngx-components-ai-agent-chat.d.ts +10 -2
  239. package/types/c8y-ngx-components-ai-agent-chat.d.ts.map +1 -1
  240. package/types/c8y-ngx-components-context-dashboard-asset-view.d.ts.map +1 -1
  241. package/types/c8y-ngx-components-context-dashboard-device-view.d.ts.map +1 -1
  242. package/types/c8y-ngx-components-context-dashboard.d.ts +4 -3
  243. package/types/c8y-ngx-components-context-dashboard.d.ts.map +1 -1
  244. package/types/c8y-ngx-components-icon-selector.d.ts +8 -2
  245. package/types/c8y-ngx-components-icon-selector.d.ts.map +1 -1
  246. package/types/c8y-ngx-components-report-dashboard.d.ts.map +1 -1
  247. package/types/c8y-ngx-components-widgets-implementations-scada.d.ts +2 -1
  248. package/types/c8y-ngx-components-widgets-implementations-scada.d.ts.map +1 -1
  249. package/types/c8y-ngx-components.d.ts +24 -7
  250. package/types/c8y-ngx-components.d.ts.map +1 -1
@@ -52,10 +52,10 @@ class CurrentMeasurementService {
52
52
  notFound: true
53
53
  })));
54
54
  }
55
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CurrentMeasurementService, deps: [{ token: i1.MeasurementRealtimeService }], target: i0.ɵɵFactoryTarget.Injectable }); }
56
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CurrentMeasurementService, providedIn: 'root' }); }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: CurrentMeasurementService, deps: [{ token: i1.MeasurementRealtimeService }], target: i0.ɵɵFactoryTarget.Injectable }); }
56
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: CurrentMeasurementService, providedIn: 'root' }); }
57
57
  }
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: CurrentMeasurementService, decorators: [{
58
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: CurrentMeasurementService, decorators: [{
59
59
  type: Injectable,
60
60
  args: [{ providedIn: 'root' }]
61
61
  }], ctorParameters: () => [{ type: i1.MeasurementRealtimeService }] });
@@ -239,14 +239,14 @@ class PieChartWidgetViewComponent {
239
239
  encodeHtml(text) {
240
240
  return echarts.format.encodeHTML(text);
241
241
  }
242
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PieChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
243
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: PieChartWidgetViewComponent, isStandalone: true, selector: "c8y-pie-chart", inputs: { config: "config" }, providers: [
242
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PieChartWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
243
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", type: PieChartWidgetViewComponent, isStandalone: true, selector: "c8y-pie-chart", inputs: { config: "config" }, providers: [
244
244
  MeasurementRealtimeService,
245
245
  CurrentMeasurementService,
246
246
  { provide: NGX_ECHARTS_CONFIG, useFactory: () => ({ echarts: () => import('echarts') }) }
247
247
  ], viewQueries: [{ propertyName: "chart", first: true, predicate: ["chart"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"p-relative fit-h overflow-hidden\">\n <div\n class=\"p-absolute fit-w fit-h\"\n #chart\n echarts\n [options]=\"chartOptions$ | async\"\n (chartInit)=\"onChartInit($event)\"\n ></div>\n\n <c8y-chart-alerts [alerts]=\"alerts\"></c8y-chart-alerts>\n</div>\n", dependencies: [{ kind: "ngmodule", type: NgxEchartsModule }, { kind: "directive", type: i1$1.NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }, { kind: "component", type: ChartAlertsComponent, selector: "c8y-chart-alerts", inputs: ["alerts"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
248
248
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PieChartWidgetViewComponent, decorators: [{
249
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PieChartWidgetViewComponent, decorators: [{
250
250
  type: Component,
251
251
  args: [{ selector: 'c8y-pie-chart', providers: [
252
252
  MeasurementRealtimeService,
@@ -305,10 +305,10 @@ class PieChartWidgetConfigComponent {
305
305
  });
306
306
  return form;
307
307
  }
308
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PieChartWidgetConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
309
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: PieChartWidgetConfigComponent, isStandalone: true, selector: "app-pie-chart-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMapSet", first: true, predicate: ["pieChartPreview"], descendants: true }], ngImport: i0, template: "@if (formGroup) {\n <div [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Pie chart options' | translate }}</legend>\n <div\n class=\"d-flex flex-column gap-8 form-group-sm p-b-8\"\n formGroupName=\"pieChartOptions\"\n >\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n formControlName=\"showLabels\"\n />\n <span></span>\n <span>\n {{ 'Show labels' | translate }}\n </span>\n </label>\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n formControlName=\"showLegend\"\n />\n <span></span>\n <span>\n {{ 'Show legend' | translate }}\n </span>\n </label>\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n formControlName=\"showTooltips\"\n />\n <span></span>\n <span>\n {{ 'Show tooltips' | translate }}\n </span>\n </label>\n </div>\n </fieldset>\n </div>\n\n <ng-template #pieChartPreview>\n @if (config.datapoints?.length > 0) {\n <c8y-pie-chart\n class=\"w-100 h-100\"\n [config]=\"{\n datapoints: config.datapoints,\n pieChartOptions: {\n showLabels: formGroup.value.pieChartOptions.showLabels,\n showLegend: formGroup.value.pieChartOptions.showLegend,\n showTooltips: formGroup.value.pieChartOptions.showTooltips\n }\n }\"\n ></c8y-pie-chart>\n } @else {\n <div class=\"col-md-6 d-col a-i-start j-c-center\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render content' | translate\"\n [horizontal]=\"false\"\n data-cy=\"kpi-widget--empty-state-no-data-point-selected\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#kpi\">user documentation</a>.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n }\n </ng-template>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: CoreModule }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: PieChartWidgetViewComponent, selector: "c8y-pie-chart", inputs: ["config"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
308
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PieChartWidgetConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
309
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: PieChartWidgetConfigComponent, isStandalone: true, selector: "app-pie-chart-config", inputs: { config: "config" }, viewQueries: [{ propertyName: "previewMapSet", first: true, predicate: ["pieChartPreview"], descendants: true }], ngImport: i0, template: "@if (formGroup) {\n <div [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Pie chart options' | translate }}</legend>\n <div\n class=\"d-flex flex-column gap-8 form-group-sm p-b-8\"\n formGroupName=\"pieChartOptions\"\n >\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n formControlName=\"showLabels\"\n />\n <span></span>\n <span>\n {{ 'Show labels' | translate }}\n </span>\n </label>\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n formControlName=\"showLegend\"\n />\n <span></span>\n <span>\n {{ 'Show legend' | translate }}\n </span>\n </label>\n <label class=\"c8y-checkbox\">\n <input\n type=\"checkbox\"\n formControlName=\"showTooltips\"\n />\n <span></span>\n <span>\n {{ 'Show tooltips' | translate }}\n </span>\n </label>\n </div>\n </fieldset>\n </div>\n\n <ng-template #pieChartPreview>\n @if (config.datapoints?.length > 0) {\n <c8y-pie-chart\n class=\"w-100 h-100\"\n [config]=\"{\n datapoints: config.datapoints,\n pieChartOptions: {\n showLabels: formGroup.value.pieChartOptions.showLabels,\n showLegend: formGroup.value.pieChartOptions.showLegend,\n showTooltips: formGroup.value.pieChartOptions.showTooltips\n }\n }\"\n ></c8y-pie-chart>\n } @else {\n <div class=\"col-md-6 d-col a-i-start j-c-center\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-data-points'\"\n [title]=\"'No data points selected' | translate\"\n [subtitle]=\"'Select data point to render content' | translate\"\n [horizontal]=\"false\"\n data-cy=\"kpi-widget--empty-state-no-data-point-selected\"\n >\n <p c8y-guide-docs>\n <small\n translate\n ngNonBindable\n >\n Find out more in the\n <a c8y-guide-href=\"/docs/cockpit/widgets-collection/#kpi\">user documentation</a>.\n </small>\n </p>\n </c8y-ui-empty-state>\n </div>\n }\n </ng-template>\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: CoreModule }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i1.GuideHrefDirective, selector: "[c8y-guide-href]", inputs: ["c8y-guide-href"] }, { kind: "component", type: i1.GuideDocsComponent, selector: "[c8y-guide-docs]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i2.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "ngmodule", type: DatapointSelectorModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: PieChartWidgetViewComponent, selector: "c8y-pie-chart", inputs: ["config"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
310
310
  }
311
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: PieChartWidgetConfigComponent, decorators: [{
311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: PieChartWidgetConfigComponent, decorators: [{
312
312
  type: Component,
313
313
  args: [{ selector: 'app-pie-chart-config', imports: [
314
314
  CommonModule,
@@ -77,10 +77,10 @@ class QuickLinksWidgetConfigAddLinkComponent {
77
77
  };
78
78
  return this.fb.group(controls);
79
79
  }
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksWidgetConfigAddLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.17", type: QuickLinksWidgetConfigAddLinkComponent, isStandalone: true, selector: "c8y-quick-links-widget-config-add-link", outputs: { onQuickLinkCreated: "onQuickLinkCreated", onCancel: "onCancel" }, ngImport: i0, template: "<form [formGroup]=\"addLinkFormGroup\">\n <div class=\"d-flex a-i-center gap-24\">\n <div class=\"form-group\">\n <label>{{ 'Icon' | translate }}</label>\n <c8y-change-icon\n class=\"form-control\"\n [currentIcon]=\"addLinkFormGroup.controls.icon.value\"\n (onButtonClick)=\"changeLinkIcon()\"\n ></c8y-change-icon>\n </div>\n <div class=\"form-group flex-grow\">\n <label for=\"ql-label\">{{ 'Label' | translate }}</label>\n <input\n class=\"form-control\"\n id=\"ql-label\"\n type=\"text\"\n formControlName=\"label\"\n maxlength=\"50\"\n [placeholder]=\"'e.g. my Quick Link' | translate\"\n />\n </div>\n </div>\n <div class=\"d-flex a-i-center gap-24\">\n <c8y-form-group class=\"flex-grow\">\n <label for=\"ql-url\">{{ 'URL' | translate }}</label>\n <input\n class=\"form-control\"\n id=\"ql-url\"\n type=\"text\"\n formControlName=\"url\"\n [placeholder]=\"'e.g. http://www.example.com' | translate\"\n />\n <c8y-messages>\n <c8y-message\n name=\"maxlength\"\n [text]=\"'The URL must not exceed {{ requiredLength }} characters.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <div class=\"form-group flex-noshrink\">\n <label>&nbsp;</label>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Open the link in a new browser tab' | translate }}\"\n >\n <input\n [attr.aria-label]=\"'Open in new tab' | translate\"\n type=\"checkbox\"\n formControlName=\"newTab\"\n checked=\"checked\"\n />\n <span></span>\n <span>{{ 'New tab' | translate }}</span>\n </label>\n </div>\n </div>\n</form>\n\n<button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n (click)=\"onCancel.emit()\"\n>\n {{ 'Cancel' | translate }}\n</button>\n<button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Create a quick link' | translate }}\"\n type=\"button\"\n (click)=\"createQuickLink()\"\n [disabled]=\"addLinkFormGroup.invalid\"\n>\n {{ 'Add quick link' | translate }}\n</button>\n", dependencies: [{ kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: "component", type: ChangeIconComponent, selector: "c8y-change-icon", inputs: ["currentIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage", "additionalMessages"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksWidgetConfigAddLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.2.19", type: QuickLinksWidgetConfigAddLinkComponent, isStandalone: true, selector: "c8y-quick-links-widget-config-add-link", outputs: { onQuickLinkCreated: "onQuickLinkCreated", onCancel: "onCancel" }, ngImport: i0, template: "<form [formGroup]=\"addLinkFormGroup\">\n <div class=\"d-flex a-i-center gap-24\">\n <div class=\"form-group\">\n <label>{{ 'Icon' | translate }}</label>\n <c8y-change-icon\n class=\"form-control\"\n [currentIcon]=\"addLinkFormGroup.controls.icon.value\"\n (onButtonClick)=\"changeLinkIcon()\"\n ></c8y-change-icon>\n </div>\n <div class=\"form-group flex-grow\">\n <label for=\"ql-label\">{{ 'Label' | translate }}</label>\n <input\n class=\"form-control\"\n id=\"ql-label\"\n type=\"text\"\n formControlName=\"label\"\n maxlength=\"50\"\n [placeholder]=\"'e.g. my Quick Link' | translate\"\n />\n </div>\n </div>\n <div class=\"d-flex a-i-center gap-24\">\n <c8y-form-group class=\"flex-grow\">\n <label for=\"ql-url\">{{ 'URL' | translate }}</label>\n <input\n class=\"form-control\"\n id=\"ql-url\"\n type=\"text\"\n formControlName=\"url\"\n [placeholder]=\"'e.g. http://www.example.com' | translate\"\n />\n <c8y-messages>\n <c8y-message\n name=\"maxlength\"\n [text]=\"'The URL must not exceed {{ requiredLength }} characters.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <div class=\"form-group flex-noshrink\">\n <label>&nbsp;</label>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Open the link in a new browser tab' | translate }}\"\n >\n <input\n [attr.aria-label]=\"'Open in new tab' | translate\"\n type=\"checkbox\"\n formControlName=\"newTab\"\n checked=\"checked\"\n />\n <span></span>\n <span>{{ 'New tab' | translate }}</span>\n </label>\n </div>\n </div>\n</form>\n\n<button\n class=\"btn btn-default btn-sm\"\n type=\"button\"\n (click)=\"onCancel.emit()\"\n>\n {{ 'Cancel' | translate }}\n</button>\n<button\n class=\"btn btn-primary btn-sm\"\n title=\"{{ 'Create a quick link' | translate }}\"\n type=\"button\"\n (click)=\"createQuickLink()\"\n [disabled]=\"addLinkFormGroup.invalid\"\n>\n {{ 'Add quick link' | translate }}\n</button>\n", dependencies: [{ kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { 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: "component", type: ChangeIconComponent, selector: "c8y-change-icon", inputs: ["currentIcon"], outputs: ["onButtonClick"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage", "additionalMessages"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
82
82
  }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksWidgetConfigAddLinkComponent, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksWidgetConfigAddLinkComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{ selector: 'c8y-quick-links-widget-config-add-link', imports: [
86
86
  TooltipModule,
@@ -383,10 +383,10 @@ class QuickLinksService {
383
383
  }
384
384
  return navNode;
385
385
  }
386
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
387
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksService, providedIn: 'root' }); }
386
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
387
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksService, providedIn: 'root' }); }
388
388
  }
389
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksService, decorators: [{
389
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksService, decorators: [{
390
390
  type: Injectable,
391
391
  args: [{ providedIn: 'root' }]
392
392
  }] });
@@ -429,10 +429,10 @@ class RelativeUrlParserPipe {
429
429
  isQueryParameter(url) {
430
430
  return url.startsWith('?');
431
431
  }
432
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: RelativeUrlParserPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
433
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.17", ngImport: i0, type: RelativeUrlParserPipe, isStandalone: true, name: "relativeUrlParser" }); }
432
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: RelativeUrlParserPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
433
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "21.2.19", ngImport: i0, type: RelativeUrlParserPipe, isStandalone: true, name: "relativeUrlParser" }); }
434
434
  }
435
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: RelativeUrlParserPipe, decorators: [{
435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: RelativeUrlParserPipe, decorators: [{
436
436
  type: Pipe,
437
437
  args: [{
438
438
  name: 'relativeUrlParser'
@@ -537,10 +537,10 @@ class QuickLinksWidgetViewComponent {
537
537
  ? this.dashboardChild['data']?.componentId
538
538
  : this.dashboardChild['data']?.name;
539
539
  }
540
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
541
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: QuickLinksWidgetViewComponent, isStandalone: true, selector: "c8y-quick-links-widget-view", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, isPreview: { classPropertyName: "isPreview", publicName: "isPreview", isSignal: true, isRequired: false, transformFunction: null } }, providers: [AppHrefPipe, HumanizeAppNamePipe, RelativeUrlParserPipe], ngImport: i0, template: "@let links = config().links;\n@let pointerNoneStylesPreview = isPreview() ? { 'pointer-events': 'none' } : null;\n\n@if (config().displayOption === DisplayOption.GRID) {\n @if (links?.length) {\n <div class=\"card-group-block interact-grid border-top m-b-0\">\n @for (link of links; track $index) {\n @let linkLabel = config().translateLinkLabels ? (link.label | translate) : link.label;\n <a\n class=\"card card--btn pointer\"\n [ngStyle]=\"pointerNoneStylesPreview\"\n [title]=\"linkLabel\"\n [ngClass]=\"{\n disabled: isPreview()\n }\"\n data-cy=\"c8y-quick-links-widget-view--quick-link-card\"\n [attr.role]=\"isPreview() ? null : 'button'\"\n [target]=\"!isPreview() && link.newTab ? '_blank' : '_self'\"\n [attr.rel]=\"isPreview() ? null : 'noopener noreferrer'\"\n [attr.href]=\"isPreview() ? null : (link.url | relativeUrlParser)\"\n >\n @if (link.newTab && !isPreview()) {\n <div\n class=\"card-actions showOnHover\"\n title=\"{{ 'Open in new tab' | translate }}\"\n >\n <span class=\"dropdown-toggle c8y-dropdown\">\n <i c8yIcon=\"external-link\"></i>\n </span>\n </div>\n }\n\n <div class=\"card-block text-center\">\n <div class=\"icon-32\">\n @if (link.icon) {\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"link.icon\"\n ></i>\n } @else {\n <c8y-app-icon\n [name]=\"link.app.name\"\n [app]=\"link.app\"\n [contextPath]=\"link.app.contextPath\"\n ></c8y-app-icon>\n }\n </div>\n <small class=\"text-muted\">\n {{ linkLabel }}\n </small>\n </div>\n </a>\n }\n </div>\n } @else {\n <c8y-ui-empty-state\n [icon]=\"DEFAULT_QUICK_LINK_ICON\"\n [title]=\"'No quick links to display.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n }\n} @else {\n @if (links?.length) {\n <div class=\"separator-top\">\n @for (link of links; track $index) {\n @let linkLabel = config().translateLinkLabels ? (link.label | translate) : link.label;\n <a\n class=\"d-flex a-i-center btn-clean gap-8 p-16 text-truncate separator-bottom\"\n [ngStyle]=\"pointerNoneStylesPreview\"\n [title]=\"linkLabel\"\n data-cy=\"c8y-quick-links-widget-view--quick-link-list-item\"\n [attr.role]=\"isPreview() ? null : 'button'\"\n [target]=\"!isPreview() && link.newTab ? '_blank' : '_self'\"\n [attr.rel]=\"isPreview() ? null : 'noopener noreferrer'\"\n [attr.href]=\"isPreview() ? null : (link.url | relativeUrlParser)\"\n >\n @if (link.icon) {\n <i\n class=\"c8y-icon-duocolor icon-24\"\n [c8yIcon]=\"link.icon\"\n ></i>\n } @else {\n <c8y-app-icon\n [name]=\"link.app.name\"\n [app]=\"link.app\"\n [contextPath]=\"link.app.contextPath\"\n ></c8y-app-icon>\n }\n\n <span\n class=\"text-truncate\"\n [title]=\"linkLabel\"\n >\n {{ linkLabel }}\n </span>\n @if (link.newTab) {\n <i\n class=\"text-muted m-l-auto showOnHover\"\n [c8yIcon]=\"'external-link'\"\n title=\"{{ 'Open in new tab' | translate }}\"\n ></i>\n }\n </a>\n }\n </div>\n } @else {\n <c8y-ui-empty-state\n [icon]=\"DEFAULT_QUICK_LINK_ICON\"\n [title]=\"'No quick links to display.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: RelativeUrlParserPipe, name: "relativeUrlParser" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
540
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
541
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: QuickLinksWidgetViewComponent, isStandalone: true, selector: "c8y-quick-links-widget-view", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, isPreview: { classPropertyName: "isPreview", publicName: "isPreview", isSignal: true, isRequired: false, transformFunction: null } }, providers: [AppHrefPipe, HumanizeAppNamePipe, RelativeUrlParserPipe], ngImport: i0, template: "@let links = config().links;\n@let pointerNoneStylesPreview = isPreview() ? { 'pointer-events': 'none' } : null;\n\n@if (config().displayOption === DisplayOption.GRID) {\n @if (links?.length) {\n <div class=\"card-group-block interact-grid border-top m-b-0\">\n @for (link of links; track $index) {\n @let linkLabel = config().translateLinkLabels ? (link.label | translate) : link.label;\n <a\n class=\"card card--btn pointer\"\n [ngStyle]=\"pointerNoneStylesPreview\"\n [title]=\"linkLabel\"\n [ngClass]=\"{\n disabled: isPreview()\n }\"\n data-cy=\"c8y-quick-links-widget-view--quick-link-card\"\n [attr.role]=\"isPreview() ? null : 'button'\"\n [target]=\"!isPreview() && link.newTab ? '_blank' : '_self'\"\n [attr.rel]=\"isPreview() ? null : 'noopener noreferrer'\"\n [attr.href]=\"isPreview() ? null : (link.url | relativeUrlParser)\"\n >\n @if (link.newTab && !isPreview()) {\n <div\n class=\"card-actions showOnHover\"\n title=\"{{ 'Open in new tab' | translate }}\"\n >\n <span class=\"dropdown-toggle c8y-dropdown\">\n <i c8yIcon=\"external-link\"></i>\n </span>\n </div>\n }\n\n <div class=\"card-block text-center\">\n <div class=\"icon-32\">\n @if (link.icon) {\n <i\n class=\"c8y-icon-duocolor\"\n [c8yIcon]=\"link.icon\"\n ></i>\n } @else {\n <c8y-app-icon\n [name]=\"link.app.name\"\n [app]=\"link.app\"\n [contextPath]=\"link.app.contextPath\"\n ></c8y-app-icon>\n }\n </div>\n <small class=\"text-muted\">\n {{ linkLabel }}\n </small>\n </div>\n </a>\n }\n </div>\n } @else {\n <c8y-ui-empty-state\n [icon]=\"DEFAULT_QUICK_LINK_ICON\"\n [title]=\"'No quick links to display.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n }\n} @else {\n @if (links?.length) {\n <div class=\"separator-top\">\n @for (link of links; track $index) {\n @let linkLabel = config().translateLinkLabels ? (link.label | translate) : link.label;\n <a\n class=\"d-flex a-i-center btn-clean gap-8 p-16 text-truncate separator-bottom\"\n [ngStyle]=\"pointerNoneStylesPreview\"\n [title]=\"linkLabel\"\n data-cy=\"c8y-quick-links-widget-view--quick-link-list-item\"\n [attr.role]=\"isPreview() ? null : 'button'\"\n [target]=\"!isPreview() && link.newTab ? '_blank' : '_self'\"\n [attr.rel]=\"isPreview() ? null : 'noopener noreferrer'\"\n [attr.href]=\"isPreview() ? null : (link.url | relativeUrlParser)\"\n >\n @if (link.icon) {\n <i\n class=\"c8y-icon-duocolor icon-24\"\n [c8yIcon]=\"link.icon\"\n ></i>\n } @else {\n <c8y-app-icon\n [name]=\"link.app.name\"\n [app]=\"link.app\"\n [contextPath]=\"link.app.contextPath\"\n ></c8y-app-icon>\n }\n\n <span\n class=\"text-truncate\"\n [title]=\"linkLabel\"\n >\n {{ linkLabel }}\n </span>\n @if (link.newTab) {\n <i\n class=\"text-muted m-l-auto showOnHover\"\n [c8yIcon]=\"'external-link'\"\n title=\"{{ 'Open in new tab' | translate }}\"\n ></i>\n }\n </a>\n }\n </div>\n } @else {\n <c8y-ui-empty-state\n [icon]=\"DEFAULT_QUICK_LINK_ICON\"\n [title]=\"'No quick links to display.' | translate\"\n [horizontal]=\"true\"\n ></c8y-ui-empty-state>\n }\n}\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "pipe", type: RelativeUrlParserPipe, name: "relativeUrlParser" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
542
542
  }
543
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksWidgetViewComponent, decorators: [{
543
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksWidgetViewComponent, decorators: [{
544
544
  type: Component,
545
545
  args: [{ selector: 'c8y-quick-links-widget-view', imports: [
546
546
  CommonModule,
@@ -594,10 +594,10 @@ class QuickLinksWidgetConfigListComponent {
594
594
  getQuickLinks() {
595
595
  return this.quickLinksForm().getRawValue().quickLinks;
596
596
  }
597
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksWidgetConfigListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
598
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: QuickLinksWidgetConfigListComponent, isStandalone: true, selector: "c8y-quick-links-widget-config-list", inputs: { quickLinksForm: { classPropertyName: "quickLinksForm", publicName: "quickLinksForm", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, quickLinksFormArray: { classPropertyName: "quickLinksFormArray", publicName: "quickLinksFormArray", isSignal: true, isRequired: false, transformFunction: null }, appsNameChanged: { classPropertyName: "appsNameChanged", publicName: "appsNameChanged", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "d-contents" }, ngImport: i0, template: "<c8y-list-group\n class=\"cdk-droplist no-border-last separator-top\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"getQuickLinks().length < 2\"\n>\n <form\n class=\"d-contents\"\n [formGroup]=\"quickLinksForm()\"\n >\n <div\n class=\"d-contents\"\n [formArrayName]=\"'quickLinks'\"\n >\n @for (link of quickLinksFormArray().controls; track link; let i = $index) {\n @let linkValue = link.getRawValue();\n\n <c8y-li\n [dense]=\"true\"\n [formGroupName]=\"i\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n <c8y-li-icon\n class=\"icon-24 p-relative changeIcon a-s-stretch\"\n [ngClass]=\"{\n 'm-l-16': getQuickLinks().length < 2\n }\"\n >\n @if (linkValue.icon) {\n <c8y-change-icon\n [currentIcon]=\"linkValue.icon\"\n (onButtonClick)=\"changeLinkIcon(link)\"\n ></c8y-change-icon>\n } @else {\n <c8y-change-icon (onButtonClick)=\"changeLinkIcon(link)\">\n <c8y-app-icon\n [name]=\"linkValue.app.name\"\n [app]=\"linkValue.app\"\n [contextPath]=\"linkValue.app.contextPath\"\n ></c8y-app-icon>\n </c8y-change-icon>\n }\n </c8y-li-icon>\n\n <div class=\"d-flex gap-8 a-i-center\">\n <div class=\"input-group input-group-editable\">\n <input\n class=\"form-control\"\n formControlName=\"label\"\n [placeholder]=\"'e.g. my Quick Link' | translate\"\n />\n <span></span>\n </div>\n\n <button\n class=\"showOnHover btn-dot btn-dot--danger m-l-auto\"\n [attr.aria-label]=\"'Delete' | translate\"\n tooltip=\"{{ 'Delete' | translate }}\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"removeLink(i)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <c8y-list-item-collapse>\n <div class=\"d-flex a-i-center gap-24\">\n <c8y-form-group class=\"flex-grow\">\n <label for=\"ql-url\">{{ 'URL' | translate }}</label>\n <input\n class=\"form-control\"\n id=\"ql-url\"\n type=\"text\"\n formControlName=\"url\"\n [placeholder]=\"'e.g. https://www.example.com' | translate\"\n />\n <c8y-messages>\n <c8y-message\n name=\"maxlength\"\n [text]=\"'The URL must not exceed {{ requiredLength }} characters.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <div class=\"form-group flex-noshrink\">\n <label>&nbsp;</label>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Open the link in a new browser tab' | translate }}\"\n >\n <input\n [attr.aria-label]=\"'Open in new tab' | translate\"\n type=\"checkbox\"\n formControlName=\"newTab\"\n checked=\"checked\"\n />\n <span></span>\n <span>{{ 'New tab' | translate }}</span>\n </label>\n </div>\n </div>\n </c8y-list-item-collapse>\n </c8y-li>\n }\n </div>\n </form>\n</c8y-list-group>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage", "additionalMessages"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.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: ListGroupModule }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i2.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "ngmodule", type: DynamicFormsModule }, { 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: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "ngmodule", type: C8yTranslateModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: ChangeIconComponent, selector: "c8y-change-icon", inputs: ["currentIcon"], outputs: ["onButtonClick"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
597
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksWidgetConfigListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
598
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: QuickLinksWidgetConfigListComponent, isStandalone: true, selector: "c8y-quick-links-widget-config-list", inputs: { quickLinksForm: { classPropertyName: "quickLinksForm", publicName: "quickLinksForm", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, quickLinksFormArray: { classPropertyName: "quickLinksFormArray", publicName: "quickLinksFormArray", isSignal: true, isRequired: false, transformFunction: null }, appsNameChanged: { classPropertyName: "appsNameChanged", publicName: "appsNameChanged", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "d-contents" }, ngImport: i0, template: "<c8y-list-group\n class=\"cdk-droplist no-border-last separator-top\"\n cdkDropList\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListDisabled]=\"getQuickLinks().length < 2\"\n>\n <form\n class=\"d-contents\"\n [formGroup]=\"quickLinksForm()\"\n >\n <div\n class=\"d-contents\"\n [formArrayName]=\"'quickLinks'\"\n >\n @for (link of quickLinksFormArray().controls; track link; let i = $index) {\n @let linkValue = link.getRawValue();\n\n <c8y-li\n [dense]=\"true\"\n [formGroupName]=\"i\"\n cdkDrag\n >\n <c8y-li-drag-handle\n title=\"{{ 'Drag to reorder' | translate }}\"\n cdkDragHandle\n >\n <i c8yIcon=\"drag-reorder\"></i>\n </c8y-li-drag-handle>\n <c8y-li-icon\n class=\"icon-24 p-relative changeIcon a-s-stretch\"\n [ngClass]=\"{\n 'm-l-16': getQuickLinks().length < 2\n }\"\n >\n @if (linkValue.icon) {\n <c8y-change-icon\n [currentIcon]=\"linkValue.icon\"\n (onButtonClick)=\"changeLinkIcon(link)\"\n ></c8y-change-icon>\n } @else {\n <c8y-change-icon (onButtonClick)=\"changeLinkIcon(link)\">\n <c8y-app-icon\n [name]=\"linkValue.app.name\"\n [app]=\"linkValue.app\"\n [contextPath]=\"linkValue.app.contextPath\"\n ></c8y-app-icon>\n </c8y-change-icon>\n }\n </c8y-li-icon>\n\n <div class=\"d-flex gap-8 a-i-center\">\n <div class=\"input-group input-group-editable\">\n <input\n class=\"form-control\"\n formControlName=\"label\"\n [placeholder]=\"'e.g. my Quick Link' | translate\"\n />\n <span></span>\n </div>\n\n <button\n class=\"showOnHover btn-dot btn-dot--danger m-l-auto\"\n [attr.aria-label]=\"'Delete' | translate\"\n tooltip=\"{{ 'Delete' | translate }}\"\n placement=\"top\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"removeLink(i)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n <c8y-list-item-collapse>\n <div class=\"d-flex a-i-center gap-24\">\n <c8y-form-group class=\"flex-grow\">\n <label for=\"ql-url\">{{ 'URL' | translate }}</label>\n <input\n class=\"form-control\"\n id=\"ql-url\"\n type=\"text\"\n formControlName=\"url\"\n [placeholder]=\"'e.g. https://www.example.com' | translate\"\n />\n <c8y-messages>\n <c8y-message\n name=\"maxlength\"\n [text]=\"'The URL must not exceed {{ requiredLength }} characters.' | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n <div class=\"form-group flex-noshrink\">\n <label>&nbsp;</label>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ 'Open the link in a new browser tab' | translate }}\"\n >\n <input\n [attr.aria-label]=\"'Open in new tab' | translate\"\n type=\"checkbox\"\n formControlName=\"newTab\"\n checked=\"checked\"\n />\n <span></span>\n <span>{{ 'New tab' | translate }}</span>\n </label>\n </div>\n </div>\n </c8y-list-item-collapse>\n </c8y-li>\n }\n </div>\n </form>\n</c8y-list-group>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage", "additionalMessages"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i4.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: ListGroupModule }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i2.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i2.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i2.ListItemDragHandleComponent, selector: "c8y-list-item-drag-handle, c8y-li-drag-handle" }, { kind: "ngmodule", type: DynamicFormsModule }, { 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: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "ngmodule", type: C8yTranslateModule }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: ChangeIconComponent, selector: "c8y-change-icon", inputs: ["currentIcon"], outputs: ["onButtonClick"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
599
599
  }
600
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksWidgetConfigListComponent, decorators: [{
600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksWidgetConfigListComponent, decorators: [{
601
601
  type: Component,
602
602
  args: [{ selector: 'c8y-quick-links-widget-config-list', host: {
603
603
  class: 'd-contents'
@@ -764,10 +764,10 @@ class QuickLinksWidgetConfigComponent {
764
764
  quickLinks: this.formBuilder.array([])
765
765
  });
766
766
  }
767
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksWidgetConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
768
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: QuickLinksWidgetConfigComponent, isStandalone: true, selector: "c8y-quick-links-widget-config", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, providers: [DashboardChildComponent, DashboardComponent], viewQueries: [{ propertyName: "previewSet", first: true, predicate: ["quickLinksPreview"], descendants: true }], ngImport: i0, template: "<fieldset class=\"c8y-fieldset\">\n <legend>{{ 'General' | translate }}</legend>\n <div class=\"d-flex a-i-center gap-8 p-b-8\">\n <label class=\"m-b-0 text-label-small\">{{ 'Display as' | translate }}</label>\n <div class=\"c8y-select-wrapper form-group-sm\">\n <select\n class=\"form-control\"\n title=\"{{ 'Refresh options`options for refreshing a view`' | translate }}\"\n [formControl]=\"displayOptionControl\"\n >\n <option [value]=\"DisplayOption.GRID\">\n {{ DisplayOption.GRID | translate }}\n </option>\n <option [value]=\"DisplayOption.LIST\">\n {{ DisplayOption.LIST | translate }}\n </option>\n </select>\n </div>\n <label\n class=\"c8y-checkbox m-l-auto\"\n title=\"{{ 'Translate labels if possible' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"translateLinkLabelsControl\"\n />\n <span></span>\n <span>{{ 'Translate labels if possible' | translate }}</span>\n </label>\n </div>\n</fieldset>\n\n<fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Links' | translate }}</legend>\n <div class=\"d-flex a-i-center gap-8 p-b-8\">\n <button\n class=\"btn btn-clean btn-sm\"\n title=\"{{ 'Add a quick link' | translate }}\"\n type=\"button\"\n (click)=\"addLinkIsCollapsed = !addLinkIsCollapsed\"\n >\n <i [c8yIcon]=\"'plus-circle'\"></i>\n {{ 'Add a quick link' | translate }}\n </button>\n\n <button\n class=\"btn btn-clean btn-sm\"\n title=\"{{ 'Reset links' | translate }}\"\n [popover]=\"confirmPopover\"\n placement=\"bottom\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [outsideClick]=\"true\"\n #pop=\"bs-popover\"\n >\n <i [c8yIcon]=\"'reset'\"></i>\n {{ 'Reset links' | translate }}\n </button>\n <ng-template #confirmPopover>\n <p class=\"m-b-8\">\n {{\n 'Resetting links removes all custom links and resets the widget to its default state.'\n | translate\n }}\n </p>\n <button\n class=\"btn btn-default btn-sm\"\n (click)=\"pop.hide()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"resetLinks(); pop.hide()\"\n >\n {{ 'Reset links' | translate }}\n </button>\n </ng-template>\n </div>\n <div\n class=\"collapse bg.component\"\n #collapse=\"bs-collapse\"\n [collapse]=\"addLinkIsCollapsed\"\n [isAnimated]=\"true\"\n >\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Add a quick link' | translate }}</legend>\n <c8y-quick-links-widget-config-add-link\n class=\"d-block p-b-16 p-l-8 p-r-8\"\n (onQuickLinkCreated)=\"addQuickLink($event); addLinkIsCollapsed = true\"\n (onCancel)=\"addLinkIsCollapsed = true\"\n ></c8y-quick-links-widget-config-add-link>\n </fieldset>\n </div>\n\n @if (config().links.length) {\n <c8y-quick-links-widget-config-list\n class=\"separator-top\"\n [quickLinksForm]=\"quickLinksForm\"\n [config]=\"config()\"\n [quickLinksFormArray]=\"quickLinksFormArray\"\n [appsNameChanged]=\"appsNameChanged\"\n ></c8y-quick-links-widget-config-list>\n } @else {\n <c8y-ui-empty-state\n [icon]=\"DEFAULT_QUICK_LINK_ICON\"\n [title]=\"'No quick links to display' | translate\"\n [horizontal]=\"true\"\n >\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Reset links' | translate }}\"\n type=\"button\"\n (click)=\"resetLinks()\"\n translate\n >\n Reset links\n </button>\n </div>\n </c8y-ui-empty-state>\n }\n</fieldset>\n\n<ng-template #quickLinksPreview>\n <c8y-quick-links-widget-view\n [config]=\"previewConfig()\"\n [isPreview]=\"true\"\n ></c8y-quick-links-widget-view>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: QuickLinksWidgetConfigAddLinkComponent, selector: "c8y-quick-links-widget-config-add-link", outputs: ["onQuickLinkCreated", "onCancel"] }, { kind: "component", type: QuickLinksWidgetViewComponent, selector: "c8y-quick-links-widget-view", inputs: ["config", "isPreview"] }, { kind: "component", type: QuickLinksWidgetConfigListComponent, selector: "c8y-quick-links-widget-config-list", inputs: ["quickLinksForm", "config", "quickLinksFormArray", "appsNameChanged"] }, { kind: "ngmodule", type: C8yTranslateModule }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: CollapseModule }, { kind: "directive", type: i4$1.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
767
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksWidgetConfigComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
768
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: QuickLinksWidgetConfigComponent, isStandalone: true, selector: "c8y-quick-links-widget-config", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, providers: [DashboardChildComponent, DashboardComponent], viewQueries: [{ propertyName: "previewSet", first: true, predicate: ["quickLinksPreview"], descendants: true }], ngImport: i0, template: "<fieldset class=\"c8y-fieldset\">\n <legend>{{ 'General' | translate }}</legend>\n <div class=\"d-flex a-i-center gap-8 p-b-8\">\n <label class=\"m-b-0 text-label-small\">{{ 'Display as' | translate }}</label>\n <div class=\"c8y-select-wrapper form-group-sm\">\n <select\n class=\"form-control\"\n title=\"{{ 'Refresh options`options for refreshing a view`' | translate }}\"\n [formControl]=\"displayOptionControl\"\n >\n <option [value]=\"DisplayOption.GRID\">\n {{ DisplayOption.GRID | translate }}\n </option>\n <option [value]=\"DisplayOption.LIST\">\n {{ DisplayOption.LIST | translate }}\n </option>\n </select>\n </div>\n <label\n class=\"c8y-checkbox m-l-auto\"\n title=\"{{ 'Translate labels if possible' | translate }}\"\n >\n <input\n type=\"checkbox\"\n [formControl]=\"translateLinkLabelsControl\"\n />\n <span></span>\n <span>{{ 'Translate labels if possible' | translate }}</span>\n </label>\n </div>\n</fieldset>\n\n<fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Links' | translate }}</legend>\n <div class=\"d-flex a-i-center gap-8 p-b-8\">\n <button\n class=\"btn btn-clean btn-sm\"\n title=\"{{ 'Add a quick link' | translate }}\"\n type=\"button\"\n (click)=\"addLinkIsCollapsed = !addLinkIsCollapsed\"\n >\n <i [c8yIcon]=\"'plus-circle'\"></i>\n {{ 'Add a quick link' | translate }}\n </button>\n\n <button\n class=\"btn btn-clean btn-sm\"\n title=\"{{ 'Reset links' | translate }}\"\n [popover]=\"confirmPopover\"\n placement=\"bottom\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"false\"\n [outsideClick]=\"true\"\n #pop=\"bs-popover\"\n >\n <i [c8yIcon]=\"'reset'\"></i>\n {{ 'Reset links' | translate }}\n </button>\n <ng-template #confirmPopover>\n <p class=\"m-b-8\">\n {{\n 'Resetting links removes all custom links and resets the widget to its default state.'\n | translate\n }}\n </p>\n <button\n class=\"btn btn-default btn-sm\"\n (click)=\"pop.hide()\"\n >\n {{ 'Cancel' | translate }}\n </button>\n <button\n class=\"btn btn-primary btn-sm\"\n (click)=\"resetLinks(); pop.hide()\"\n >\n {{ 'Reset links' | translate }}\n </button>\n </ng-template>\n </div>\n <div\n class=\"collapse bg.component\"\n #collapse=\"bs-collapse\"\n [collapse]=\"addLinkIsCollapsed\"\n [isAnimated]=\"true\"\n >\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Add a quick link' | translate }}</legend>\n <c8y-quick-links-widget-config-add-link\n class=\"d-block p-b-16 p-l-8 p-r-8\"\n (onQuickLinkCreated)=\"addQuickLink($event); addLinkIsCollapsed = true\"\n (onCancel)=\"addLinkIsCollapsed = true\"\n ></c8y-quick-links-widget-config-add-link>\n </fieldset>\n </div>\n\n @if (config().links.length) {\n <c8y-quick-links-widget-config-list\n class=\"separator-top\"\n [quickLinksForm]=\"quickLinksForm\"\n [config]=\"config()\"\n [quickLinksFormArray]=\"quickLinksFormArray\"\n [appsNameChanged]=\"appsNameChanged\"\n ></c8y-quick-links-widget-config-list>\n } @else {\n <c8y-ui-empty-state\n [icon]=\"DEFAULT_QUICK_LINK_ICON\"\n [title]=\"'No quick links to display' | translate\"\n [horizontal]=\"true\"\n >\n <div>\n <button\n class=\"btn btn-primary m-t-16\"\n title=\"{{ 'Reset links' | translate }}\"\n type=\"button\"\n (click)=\"resetLinks()\"\n translate\n >\n Reset links\n </button>\n </div>\n </c8y-ui-empty-state>\n }\n</fieldset>\n\n<ng-template #quickLinksPreview>\n <c8y-quick-links-widget-view\n [config]=\"previewConfig()\"\n [isPreview]=\"true\"\n ></c8y-quick-links-widget-view>\n</ng-template>\n", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i1$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: QuickLinksWidgetConfigAddLinkComponent, selector: "c8y-quick-links-widget-config-add-link", outputs: ["onQuickLinkCreated", "onCancel"] }, { kind: "component", type: QuickLinksWidgetViewComponent, selector: "c8y-quick-links-widget-view", inputs: ["config", "isPreview"] }, { kind: "component", type: QuickLinksWidgetConfigListComponent, selector: "c8y-quick-links-widget-config-list", inputs: ["quickLinksForm", "config", "quickLinksFormArray", "appsNameChanged"] }, { kind: "ngmodule", type: C8yTranslateModule }, { kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: CollapseModule }, { kind: "directive", type: i4$1.CollapseDirective, selector: "[collapse]", inputs: ["display", "isAnimated", "collapse"], outputs: ["collapsed", "collapses", "expanded", "expands"], exportAs: ["bs-collapse"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }], viewProviders: [{ provide: ControlContainer, useExisting: NgForm }] }); }
769
769
  }
770
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: QuickLinksWidgetConfigComponent, decorators: [{
770
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: QuickLinksWidgetConfigComponent, decorators: [{
771
771
  type: Component,
772
772
  args: [{ selector: 'c8y-quick-links-widget-config', imports: [
773
773
  CommonModule,
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, DestroyRef, input, computed, ChangeDetectionStrategy, Component, viewChild, signal, ElementRef, output, effect } from '@angular/core';
2
+ import { Injectable, inject, DestroyRef, input, computed, ChangeDetectionStrategy, Component, ChangeDetectorRef, viewChild, signal, ElementRef, output, effect } from '@angular/core';
3
3
  import { takeUntilDestroyed, toSignal, toObservable } from '@angular/core/rxjs-interop';
4
4
  import * as i2 from '@c8y/ngx-components';
5
5
  import { IconDirective, C8yTranslatePipe, AlertService, DropAreaComponent, FormGroupComponent, ListGroupModule, ModalModule, FormsModule as FormsModule$1, DashboardChildComponent, DynamicComponentAlertAggregator, DismissAlertStrategy, DynamicComponentAlert, ManagedObjectRealtimeService } from '@c8y/ngx-components';
@@ -349,10 +349,10 @@ class ScadaWidgetService {
349
349
  containerBoxSizing: 'border-box'
350
350
  };
351
351
  }
352
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
353
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetService }); }
352
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
353
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetService }); }
354
354
  }
355
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetService, decorators: [{
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetService, decorators: [{
356
356
  type: Injectable
357
357
  }] });
358
358
 
@@ -959,10 +959,10 @@ class ScadaWidgetConfigService {
959
959
  return assetProperty;
960
960
  }
961
961
  }
962
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
963
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetConfigService }); }
962
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
963
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetConfigService }); }
964
964
  }
965
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetConfigService, decorators: [{
965
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetConfigService, decorators: [{
966
966
  type: Injectable
967
967
  }], ctorParameters: () => [] });
968
968
 
@@ -1014,10 +1014,10 @@ class ScadaAiChatToolDetailsComponent {
1014
1014
  .replace(/\$\{this\.c8yScadaValues\?\.(\w+)[^}]*\}/g, '{$1}')
1015
1015
  .replace(/\$\{[^}]+\}/g, '');
1016
1016
  }
1017
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaAiChatToolDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1018
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ScadaAiChatToolDetailsComponent, isStandalone: true, selector: "c8y-scada-ai-chat-tool-details", inputs: { tool: { classPropertyName: "tool", publicName: "tool", isSignal: true, isRequired: true, transformFunction: null } }, host: { styleAttribute: "display: block" }, ngImport: i0, template: "@if (svgContent()) {\n <div\n class=\"m-b-8\"\n style=\"max-height: 320px; overflow: auto\"\n [innerHTML]=\"previewSvg()\"\n ></div>\n}\n@if (mappingRows(); as rows) {\n <div\n class=\"m-b-8\"\n style=\"max-height: 160px; overflow: auto\"\n >\n <table class=\"table table-condensed m-b-0\">\n <thead>\n <tr>\n <th>{{ 'Placeholder' | translate }}</th>\n <th>{{ 'Asset' | translate }}</th>\n <th>{{ 'Property' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (row of rows; track row.placeholder) {\n <tr>\n <td>\n <code>{{ row.placeholder }}</code>\n </td>\n <td>{{ row.asset }}</td>\n <td>{{ row.property }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n} @else if (mappingContent()) {\n <pre\n class=\"m-b-8\"\n style=\"max-height: 160px\"\n >{{ mappingContent() }}</pre\n >\n}\n@if (!isExecuting()) {\n <div class=\"d-flex j-c-end\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Apply' | translate\"\n [tooltip]=\"'Apply' | translate\"\n container=\"body\"\n (click)=\"apply()\"\n >\n <i c8yIcon=\"check\"></i>\n </button>\n </div>\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 }); }
1017
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaAiChatToolDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1018
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: ScadaAiChatToolDetailsComponent, isStandalone: true, selector: "c8y-scada-ai-chat-tool-details", inputs: { tool: { classPropertyName: "tool", publicName: "tool", isSignal: true, isRequired: true, transformFunction: null } }, host: { styleAttribute: "display: block" }, ngImport: i0, template: "@if (svgContent()) {\n <div\n class=\"m-b-8\"\n style=\"max-height: 320px; overflow: auto\"\n [innerHTML]=\"previewSvg()\"\n ></div>\n}\n@if (mappingRows(); as rows) {\n <div\n class=\"m-b-8\"\n style=\"max-height: 160px; overflow: auto\"\n >\n <table class=\"table table-condensed m-b-0\">\n <thead>\n <tr>\n <th>{{ 'Placeholder' | translate }}</th>\n <th>{{ 'Asset' | translate }}</th>\n <th>{{ 'Property' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (row of rows; track row.placeholder) {\n <tr>\n <td>\n <code>{{ row.placeholder }}</code>\n </td>\n <td>{{ row.asset }}</td>\n <td>{{ row.property }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n} @else if (mappingContent()) {\n <pre\n class=\"m-b-8\"\n style=\"max-height: 160px\"\n >{{ mappingContent() }}</pre\n >\n}\n@if (!isExecuting()) {\n <div class=\"d-flex j-c-end\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Apply' | translate\"\n [tooltip]=\"'Apply' | translate\"\n container=\"body\"\n (click)=\"apply()\"\n >\n <i c8yIcon=\"check\"></i>\n </button>\n </div>\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 }); }
1019
1019
  }
1020
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaAiChatToolDetailsComponent, decorators: [{
1020
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaAiChatToolDetailsComponent, decorators: [{
1021
1021
  type: Component,
1022
1022
  args: [{ selector: 'c8y-scada-ai-chat-tool-details', host: { style: 'display: block' }, imports: [TooltipDirective, C8yTranslatePipe, IconDirective], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (svgContent()) {\n <div\n class=\"m-b-8\"\n style=\"max-height: 320px; overflow: auto\"\n [innerHTML]=\"previewSvg()\"\n ></div>\n}\n@if (mappingRows(); as rows) {\n <div\n class=\"m-b-8\"\n style=\"max-height: 160px; overflow: auto\"\n >\n <table class=\"table table-condensed m-b-0\">\n <thead>\n <tr>\n <th>{{ 'Placeholder' | translate }}</th>\n <th>{{ 'Asset' | translate }}</th>\n <th>{{ 'Property' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n @for (row of rows; track row.placeholder) {\n <tr>\n <td>\n <code>{{ row.placeholder }}</code>\n </td>\n <td>{{ row.asset }}</td>\n <td>{{ row.property }}</td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n} @else if (mappingContent()) {\n <pre\n class=\"m-b-8\"\n style=\"max-height: 160px\"\n >{{ mappingContent() }}</pre\n >\n}\n@if (!isExecuting()) {\n <div class=\"d-flex j-c-end\">\n <button\n class=\"btn btn-default btn-sm\"\n [attr.aria-label]=\"'Apply' | translate\"\n [tooltip]=\"'Apply' | translate\"\n container=\"body\"\n (click)=\"apply()\"\n >\n <i c8yIcon=\"check\"></i>\n </button>\n </div>\n}\n" }]
1023
1023
  }], propDecorators: { tool: [{ type: i0.Input, args: [{ isSignal: true, alias: "tool", required: true }] }] } });
@@ -1040,6 +1040,7 @@ class ScadaWidgetSvgSelectorComponent {
1040
1040
  this.aiService = inject(AIService);
1041
1041
  this.formBuilder = inject(FormBuilder);
1042
1042
  this.destroyRef = inject(DestroyRef);
1043
+ this.cdRef = inject(ChangeDetectorRef);
1043
1044
  this.formGroup = this.formBuilder.group({
1044
1045
  source: this.formBuilder.nonNullable.control('file'),
1045
1046
  svgCode: this.formBuilder.nonNullable.control('', []),
@@ -1195,21 +1196,24 @@ class ScadaWidgetSvgSelectorComponent {
1195
1196
  });
1196
1197
  }
1197
1198
  async onSvgFileDropped(event) {
1198
- this.dropArea().loading = true;
1199
+ // Captured once: switching the Source radio away from "file" mid-upload destroys #dropArea.
1200
+ const dropArea = this.dropArea();
1201
+ dropArea.loading = true;
1199
1202
  try {
1200
1203
  const svgFile = event[0].file;
1201
1204
  const config = await firstValueFrom(this.scadaConfigService.config$);
1202
1205
  const updatedConfig = await this.scadaConfigService.updateConfigWithSvgFile(config, svgFile);
1203
1206
  this.scadaConfigService.save(updatedConfig);
1204
1207
  this.sectionComponent.section.expanded = false;
1205
- this.dropArea().files = null;
1208
+ dropArea.files = null;
1206
1209
  this.alertService.success(gettext('SVG file uploaded.'));
1207
1210
  }
1208
1211
  catch (e) {
1209
1212
  this.alertService.danger(gettext('Could not upload the selected SVG file.'), e?.message || e);
1210
1213
  }
1211
1214
  finally {
1212
- this.dropArea().loading = false;
1215
+ dropArea.loading = false;
1216
+ this.cdRef.markForCheck();
1213
1217
  }
1214
1218
  }
1215
1219
  async applySvgCode() {
@@ -1241,10 +1245,10 @@ class ScadaWidgetSvgSelectorComponent {
1241
1245
  async applyScadaOutput(content) {
1242
1246
  await this.scadaConfigService.applyScadaOutput(content);
1243
1247
  }
1244
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetSvgSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1245
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ScadaWidgetSvgSelectorComponent, isStandalone: true, selector: "c8y-scada-widget-svg-selector", viewQueries: [{ propertyName: "dropArea", first: true, predicate: ["dropArea"], descendants: true, isSignal: true }], ngImport: i0, template: "<form [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Source' | translate }}</legend>\n <div class=\"form-group\">\n <label\n class=\"c8y-radio radio-inline\"\n title=\"{{ 'Upload file' | translate }}\"\n >\n <input\n name=\"source\"\n type=\"radio\"\n value=\"file\"\n formControlName=\"source\"\n />\n <span></span>\n <span>{{ 'Upload file' | translate }}</span>\n </label>\n <label\n class=\"c8y-radio radio-inline m-l-8\"\n title=\"{{ 'Paste text' | translate }}\"\n >\n <input\n name=\"source\"\n type=\"radio\"\n value=\"text\"\n formControlName=\"source\"\n />\n <span></span>\n <span>\n {{ 'Paste text' | translate }}\n </span>\n </label>\n @if (isAiAvailable()) {\n <label\n class=\"c8y-radio radio-inline m-l-8\"\n title=\"{{ 'Generate with AI' | translate }}\"\n >\n <input\n name=\"source\"\n type=\"radio\"\n value=\"ai\"\n formControlName=\"source\"\n />\n <span></span>\n <div\n class=\"btn btn-ai btn-icon-dot btn-sm btn-ai-hint m-l-4 m-r-4\"\n aria-hidden=\"true\"\n >\n <span></span>\n </div>\n <span>\n {{ 'Generate with AI' | translate }}\n </span>\n </label>\n }\n </div>\n\n @switch (formGroup.get('source')?.value) {\n @case ('file') {\n <c8y-form-group class=\"m-b-24\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n [icon]=\"'upload'\"\n #dropArea\n [accept]=\"'.svg'\"\n [maxAllowedFiles]=\"1\"\n (dropped)=\"onSvgFileDropped($event)\"\n [message]=\"'Browse or drop file here\u2026' | translate\"\n ></c8y-drop-area>\n </c8y-form-group>\n }\n @case ('text') {\n <c8y-form-group class=\"m-b-24\">\n <textarea\n class=\"form-control\"\n aria-label=\"{{ 'Paste SVG code here' | translate }}\"\n id=\"svgCode\"\n placeholder=\"{{ placeholderText }}\"\n rows=\"6\"\n formControlName=\"svgCode\"\n ></textarea>\n </c8y-form-group>\n <button\n class=\"btn btn-default\"\n (click)=\"applySvgCode()\"\n translate\n [disabled]=\"!formGroup.get('svgCode')?.value?.trim()\"\n >\n Apply\n </button>\n }\n @case ('ai') {\n @if (isAiAvailable()) {\n <c8y-agent-chat\n #agentChat\n [chatConfig]=\"chatConfig\"\n [suggestions]=\"agentChat.isWelcoming() ? suggestions : []\"\n [agent]=\"agent\"\n [variables]=\"variables\"\n [preprocessAgentMessage]=\"preprocessAgentMessage\"\n [assistantMessageDisplayConfig]=\"assistantMessageDisplayConfig\"\n ></c8y-agent-chat>\n }\n }\n }\n </fieldset>\n\n <div formGroupName=\"svgDisplaySettings\">\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Image display' | translate }}\n </legend>\n <c8y-form-group class=\"form-group-sm m-b-0\">\n <c8y-list-group\n class=\"no-border-last p-b-16\"\n role=\"list\"\n >\n @for (displayOption of displayOptions; track displayOption.value) {\n <c8y-li role=\"listitem\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n formControlName=\"displayOption\"\n [value]=\"displayOption.value\"\n />\n <span></span>\n <span class=\"l-h-1\">\n {{ displayOption.label | translate }}\n <br />\n <small class=\"text-muted\">\n {{ displayOption.description | translate }}\n </small>\n </span>\n </label>\n </c8y-li>\n }\n </c8y-list-group>\n </c8y-form-group>\n </fieldset>\n @if (formGroup.get('svgDisplaySettings')?.get('displayOption')?.value === 'contain') {\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Image alignment' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\">\n <label>{{ 'Horizontal`alignment`' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"horizontalAlignment\"\n >\n @for (option of horizontalAlignmentOptions; track option.value) {\n <option [ngValue]=\"option.value\">\n {{ option.label | translate }}\n </option>\n }\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\">\n <label>{{ 'Vertical`alignment`' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"verticalAlignment\"\n >\n @for (option of verticalAlignmentOptions; track option.value) {\n <option [ngValue]=\"option.value\">\n {{ option.label | translate }}\n </option>\n }\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n }\n </div>\n</form>\n", dependencies: [{ kind: "component", type: DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { 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: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "ngmodule", type: A11yModule }, { kind: "component", type: AgentChatComponent, selector: "c8y-agent-chat", inputs: ["agent", "suggestions", "chatConfig", "welcomeTemplate", "autoCreateAgents", "variables", "assistantMessageComponent", "assistantMessageDisplayConfig", "preprocessAgentMessage", "pruneMessagesForAgent", "skipHealthCheck", "initialChatHistory", "groundingContextProvider", "userAnalyticsContext"], outputs: ["onMessageFinish", "onToolResult", "onFeedback", "onMessagesChange"] }, { kind: "ngmodule", type: ListGroupModule }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1248
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetSvgSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1249
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: ScadaWidgetSvgSelectorComponent, isStandalone: true, selector: "c8y-scada-widget-svg-selector", viewQueries: [{ propertyName: "dropArea", first: true, predicate: ["dropArea"], descendants: true, isSignal: true }], ngImport: i0, template: "<form [formGroup]=\"formGroup\">\n <fieldset class=\"c8y-fieldset\">\n <legend>{{ 'Source' | translate }}</legend>\n <div class=\"form-group\">\n <label\n class=\"c8y-radio radio-inline\"\n title=\"{{ 'Upload file' | translate }}\"\n >\n <input\n name=\"source\"\n type=\"radio\"\n value=\"file\"\n formControlName=\"source\"\n />\n <span></span>\n <span>{{ 'Upload file' | translate }}</span>\n </label>\n <label\n class=\"c8y-radio radio-inline m-l-8\"\n title=\"{{ 'Paste text' | translate }}\"\n >\n <input\n name=\"source\"\n type=\"radio\"\n value=\"text\"\n formControlName=\"source\"\n />\n <span></span>\n <span>\n {{ 'Paste text' | translate }}\n </span>\n </label>\n @if (isAiAvailable()) {\n <label\n class=\"c8y-radio radio-inline m-l-8\"\n title=\"{{ 'Generate with AI' | translate }}\"\n >\n <input\n name=\"source\"\n type=\"radio\"\n value=\"ai\"\n formControlName=\"source\"\n />\n <span></span>\n <div\n class=\"btn btn-ai btn-icon-dot btn-sm btn-ai-hint m-l-4 m-r-4\"\n aria-hidden=\"true\"\n >\n <span></span>\n </div>\n <span>\n {{ 'Generate with AI' | translate }}\n </span>\n </label>\n }\n </div>\n\n @switch (formGroup.get('source')?.value) {\n @case ('file') {\n <c8y-form-group class=\"m-b-24\">\n <c8y-drop-area\n class=\"drop-area-sm\"\n [icon]=\"'upload'\"\n #dropArea\n [accept]=\"'.svg'\"\n [maxAllowedFiles]=\"1\"\n (dropped)=\"onSvgFileDropped($event)\"\n [message]=\"'Browse or drop file here\u2026' | translate\"\n ></c8y-drop-area>\n </c8y-form-group>\n }\n @case ('text') {\n <c8y-form-group class=\"m-b-24\">\n <textarea\n class=\"form-control\"\n aria-label=\"{{ 'Paste SVG code here' | translate }}\"\n id=\"svgCode\"\n placeholder=\"{{ placeholderText }}\"\n rows=\"6\"\n formControlName=\"svgCode\"\n ></textarea>\n </c8y-form-group>\n <button\n class=\"btn btn-default\"\n (click)=\"applySvgCode()\"\n translate\n [disabled]=\"!formGroup.get('svgCode')?.value?.trim()\"\n >\n Apply\n </button>\n }\n @case ('ai') {\n @if (isAiAvailable()) {\n <c8y-agent-chat\n #agentChat\n [chatConfig]=\"chatConfig\"\n [suggestions]=\"agentChat.isWelcoming() ? suggestions : []\"\n [agent]=\"agent\"\n [variables]=\"variables\"\n [preprocessAgentMessage]=\"preprocessAgentMessage\"\n [assistantMessageDisplayConfig]=\"assistantMessageDisplayConfig\"\n ></c8y-agent-chat>\n }\n }\n }\n </fieldset>\n\n <div formGroupName=\"svgDisplaySettings\">\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Image display' | translate }}\n </legend>\n <c8y-form-group class=\"form-group-sm m-b-0\">\n <c8y-list-group\n class=\"no-border-last p-b-16\"\n role=\"list\"\n >\n @for (displayOption of displayOptions; track displayOption.value) {\n <c8y-li role=\"listitem\">\n <label class=\"c8y-radio\">\n <input\n type=\"radio\"\n formControlName=\"displayOption\"\n [value]=\"displayOption.value\"\n />\n <span></span>\n <span class=\"l-h-1\">\n {{ displayOption.label | translate }}\n <br />\n <small class=\"text-muted\">\n {{ displayOption.description | translate }}\n </small>\n </span>\n </label>\n </c8y-li>\n }\n </c8y-list-group>\n </c8y-form-group>\n </fieldset>\n @if (formGroup.get('svgDisplaySettings')?.get('displayOption')?.value === 'contain') {\n <fieldset class=\"c8y-fieldset\">\n <legend>\n {{ 'Image alignment' | translate }}\n </legend>\n <div class=\"row\">\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\">\n <label>{{ 'Horizontal`alignment`' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"horizontalAlignment\"\n >\n @for (option of horizontalAlignmentOptions; track option.value) {\n <option [ngValue]=\"option.value\">\n {{ option.label | translate }}\n </option>\n }\n </select>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"form-group-sm\">\n <label>{{ 'Vertical`alignment`' | translate }}</label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n formControlName=\"verticalAlignment\"\n >\n @for (option of verticalAlignmentOptions; track option.value) {\n <option [ngValue]=\"option.value\">\n {{ option.label | translate }}\n </option>\n }\n </select>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </fieldset>\n }\n </div>\n</form>\n", dependencies: [{ kind: "component", type: DropAreaComponent, selector: "c8y-drop-area", inputs: ["formControl", "title", "message", "icon", "loadingMessage", "forceHideList", "alwaysShow", "clickToOpen", "loading", "progress", "maxAllowedFiles", "files", "maxFileSizeInMegaBytes", "accept"], outputs: ["dropped"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { 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: "directive", type: i1.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "ngmodule", type: BsDropdownModule }, { kind: "ngmodule", type: A11yModule }, { kind: "component", type: AgentChatComponent, selector: "c8y-agent-chat", inputs: ["agent", "suggestions", "chatConfig", "welcomeTemplate", "autoCreateAgents", "variables", "assistantMessageComponent", "assistantMessageDisplayConfig", "preprocessAgentMessage", "pruneMessagesForAgent", "skipHealthCheck", "initialChatHistory", "groundingContextProvider", "userAnalyticsContext", "telemetry"], outputs: ["onMessageFinish", "onToolResult", "onFeedback", "onMessagesChange"] }, { kind: "ngmodule", type: ListGroupModule }, { kind: "component", type: i2.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i2.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1246
1250
  }
1247
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetSvgSelectorComponent, decorators: [{
1251
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetSvgSelectorComponent, decorators: [{
1248
1252
  type: Component,
1249
1253
  args: [{ selector: 'c8y-scada-widget-svg-selector', imports: [
1250
1254
  DropAreaComponent,
@@ -1287,8 +1291,8 @@ class ScadaWidgetPlaceholderModalComponent {
1287
1291
  this._close(this.form.get('placeholderName')?.value);
1288
1292
  this.modal()?._close();
1289
1293
  }
1290
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetPlaceholderModalComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
1291
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: ScadaWidgetPlaceholderModalComponent, isStandalone: true, selector: "c8y-scada-widget-placeholder-modal", viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true, isSignal: true }, { propertyName: "placeholderNameInput", first: true, predicate: ["placeholderNameInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
1294
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetPlaceholderModalComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
1295
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.19", type: ScadaWidgetPlaceholderModalComponent, isStandalone: true, selector: "c8y-scada-widget-placeholder-modal", viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true, isSignal: true }, { propertyName: "placeholderNameInput", first: true, predicate: ["placeholderNameInput"], descendants: true, isSignal: true }], ngImport: i0, template: `
1292
1296
  <c8y-modal
1293
1297
  [title]="'Add placeholder' | translate"
1294
1298
  [headerClasses]="'dialog-header'"
@@ -1332,7 +1336,7 @@ class ScadaWidgetPlaceholderModalComponent {
1332
1336
  </c8y-modal>
1333
1337
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: ModalModule }, { kind: "component", type: i2.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "ngmodule", type: FormsModule$1 }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: i2.MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage", "additionalMessages"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { 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" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1334
1338
  }
1335
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetPlaceholderModalComponent, decorators: [{
1339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetPlaceholderModalComponent, decorators: [{
1336
1340
  type: Component,
1337
1341
  args: [{
1338
1342
  selector: 'c8y-scada-widget-placeholder-modal',
@@ -1560,10 +1564,10 @@ class ScadaWidgetViewComponent {
1560
1564
  }));
1561
1565
  return this.refresh$.pipe(take(1));
1562
1566
  }
1563
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1564
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ScadaWidgetViewComponent, isStandalone: true, selector: "c8y-scada-widget-view", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, enablePotentialPlaceholders: { classPropertyName: "enablePotentialPlaceholders", publicName: "enablePotentialPlaceholders", isSignal: true, isRequired: false, transformFunction: null }, preview: { classPropertyName: "preview", publicName: "preview", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { potentialPlaceholderClick: "potentialPlaceholderClick" }, host: { classAttribute: "d-contents" }, providers: [ScadaWidgetService, ScadaWidgetConfigService, ManagedObjectRealtimeService], ngImport: i0, template: "@let cfg = effectiveConfig();\n@if (cfg) {\n @if (cfg.displayMode === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n @if (dashboardChild) {\n <c8y-global-context-connector\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY_CONFIG\"\n [config]=\"cfg\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"dashboardChild\"\n [linked]=\"isLinkedToGlobal()\"\n [propagateAutoRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n >\n </c8y-global-context-connector>\n }\n } @else {\n <c8y-local-controls\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY_CONFIG\"\n [displayMode]=\"cfg.displayMode\"\n [config]=\"cfg\"\n [isLoading]=\"isLoading()\"\n [propagateAutoRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n >\n </c8y-local-controls>\n }\n <c8y-html-frame\n [config]=\"htmlFrameConfig()\"\n [device]=\"device()\"\n [propertyValues$]=\"propertyValues$\"\n [realtimeControl$]=\"realtimeControl$\"\n ></c8y-html-frame>\n}\n", dependencies: [{ kind: "component", type: HtmlFrameComponent, selector: "c8y-html-frame", inputs: ["config", "device", "propertyValues$", "realtimeControl$", "useSalt"] }, { kind: "component", type: GlobalContextConnectorComponent, selector: "c8y-global-context-connector", inputs: ["controls", "config", "isLoading", "dashboardChild", "linked", "propagateAutoRefresh", "emitRefresh"], outputs: ["configChange", "refresh", "linkedChange"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "propagateAutoRefresh", "emitRefresh", "dashboardChild"], outputs: ["configChange", "refresh"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1567
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1568
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: ScadaWidgetViewComponent, isStandalone: true, selector: "c8y-scada-widget-view", inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, enablePotentialPlaceholders: { classPropertyName: "enablePotentialPlaceholders", publicName: "enablePotentialPlaceholders", isSignal: true, isRequired: false, transformFunction: null }, preview: { classPropertyName: "preview", publicName: "preview", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { potentialPlaceholderClick: "potentialPlaceholderClick" }, host: { classAttribute: "d-contents" }, providers: [ScadaWidgetService, ScadaWidgetConfigService, ManagedObjectRealtimeService], ngImport: i0, template: "@let cfg = effectiveConfig();\n@if (cfg) {\n @if (cfg.displayMode === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n @if (dashboardChild) {\n <c8y-global-context-connector\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY_CONFIG\"\n [config]=\"cfg\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"dashboardChild\"\n [linked]=\"isLinkedToGlobal()\"\n [propagateAutoRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n >\n </c8y-global-context-connector>\n }\n } @else {\n <c8y-local-controls\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY_CONFIG\"\n [displayMode]=\"cfg.displayMode\"\n [config]=\"cfg\"\n [isLoading]=\"isLoading()\"\n [propagateAutoRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n >\n </c8y-local-controls>\n }\n <c8y-html-frame\n [config]=\"htmlFrameConfig()\"\n [device]=\"device()\"\n [propertyValues$]=\"propertyValues$\"\n [realtimeControl$]=\"realtimeControl$\"\n ></c8y-html-frame>\n}\n", dependencies: [{ kind: "component", type: HtmlFrameComponent, selector: "c8y-html-frame", inputs: ["config", "device", "propertyValues$", "realtimeControl$", "useSalt"] }, { kind: "component", type: GlobalContextConnectorComponent, selector: "c8y-global-context-connector", inputs: ["controls", "config", "isLoading", "dashboardChild", "linked", "propagateAutoRefresh", "emitRefresh"], outputs: ["configChange", "refresh", "linkedChange"] }, { kind: "component", type: LocalControlsComponent, selector: "c8y-local-controls", inputs: ["controls", "displayMode", "config", "isLoading", "disabled", "propagateAutoRefresh", "emitRefresh", "dashboardChild"], outputs: ["configChange", "refresh"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1565
1569
  }
1566
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetViewComponent, decorators: [{
1570
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetViewComponent, decorators: [{
1567
1571
  type: Component,
1568
1572
  args: [{ selector: 'c8y-scada-widget-view', host: { class: 'd-contents' }, imports: [HtmlFrameComponent, GlobalContextConnectorComponent, LocalControlsComponent], providers: [ScadaWidgetService, ScadaWidgetConfigService, ManagedObjectRealtimeService], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let cfg = effectiveConfig();\n@if (cfg) {\n @if (cfg.displayMode === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {\n @if (dashboardChild) {\n <c8y-global-context-connector\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY_CONFIG\"\n [config]=\"cfg\"\n [isLoading]=\"isLoading()\"\n [dashboardChild]=\"dashboardChild\"\n [linked]=\"isLinkedToGlobal()\"\n [propagateAutoRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n >\n </c8y-global-context-connector>\n }\n } @else {\n <c8y-local-controls\n [controls]=\"PRESET_NAME.AUTO_REFRESH_ONLY_CONFIG\"\n [displayMode]=\"cfg.displayMode\"\n [config]=\"cfg\"\n [isLoading]=\"isLoading()\"\n [propagateAutoRefresh]=\"false\"\n (configChange)=\"onContextChange($event)\"\n (refresh)=\"onRefresh()\"\n >\n </c8y-local-controls>\n }\n <c8y-html-frame\n [config]=\"htmlFrameConfig()\"\n [device]=\"device()\"\n [propertyValues$]=\"propertyValues$\"\n [realtimeControl$]=\"realtimeControl$\"\n ></c8y-html-frame>\n}\n" }]
1569
1573
  }], ctorParameters: () => [], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], enablePotentialPlaceholders: [{ type: i0.Input, args: [{ isSignal: true, alias: "enablePotentialPlaceholders", required: false }] }], potentialPlaceholderClick: [{ type: i0.Output, args: ["potentialPlaceholderClick"] }], preview: [{ type: i0.Input, args: [{ isSignal: true, alias: "preview", required: false }] }] } });
@@ -1696,10 +1700,10 @@ class ScadaWidgetAdvancedEditorComponent {
1696
1700
  result += str.slice(lastIndex);
1697
1701
  return result;
1698
1702
  }
1699
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetAdvancedEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1700
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: ScadaWidgetAdvancedEditorComponent, isStandalone: true, selector: "c8y-scada-widget-advanced-editor", providers: [HtmlWidgetConfigService], viewQueries: [{ propertyName: "scadaWidgetPreview", first: true, predicate: ["scadaWidgetPreview"], descendants: true, isSignal: true }], ngImport: i0, template: "@let config = config$ | async;\n@if (config) {\n @let htmlWidgetConfig = config.config?.htmlWidgetConfig;\n @if (htmlWidgetConfig) {\n <c8y-widget-code-editor\n [config]=\"htmlWidgetConfig.config\"\n [mode]=\"'code'\"\n [showAdvancedSettings]=\"false\"\n [propertyKeys$]=\"propertyKeys$\"\n [getFormattedPropertyExpression]=\"getFormattedPropertyExpressionFn\"\n (codeChange)=\"changeCode($event)\"\n ></c8y-widget-code-editor>\n }\n\n <ng-template #scadaWidgetPreview>\n <c8y-scada-widget-view\n [config]=\"config\"\n [enablePotentialPlaceholders]=\"true\"\n (potentialPlaceholderClick)=\"addPlaceholder($event)\"\n [preview]=\"true\"\n ></c8y-scada-widget-view>\n </ng-template>\n}\n", dependencies: [{ kind: "component", type: ScadaWidgetViewComponent, selector: "c8y-scada-widget-view", inputs: ["config", "enablePotentialPlaceholders", "preview"], outputs: ["potentialPlaceholderClick"] }, { kind: "component", type: WidgetCodeEditorComponent, selector: "c8y-widget-code-editor", inputs: ["mode", "config", "showAdvancedSettings", "propertyKeys$", "propertyPrefix", "getFormattedPropertyExpression"], outputs: ["codeChange", "cssChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1703
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetAdvancedEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1704
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.19", type: ScadaWidgetAdvancedEditorComponent, isStandalone: true, selector: "c8y-scada-widget-advanced-editor", providers: [HtmlWidgetConfigService], viewQueries: [{ propertyName: "scadaWidgetPreview", first: true, predicate: ["scadaWidgetPreview"], descendants: true, isSignal: true }], ngImport: i0, template: "@let config = config$ | async;\n@if (config) {\n @let htmlWidgetConfig = config.config?.htmlWidgetConfig;\n @if (htmlWidgetConfig) {\n <c8y-widget-code-editor\n [config]=\"htmlWidgetConfig.config\"\n [mode]=\"'code'\"\n [showAdvancedSettings]=\"false\"\n [propertyKeys$]=\"propertyKeys$\"\n [getFormattedPropertyExpression]=\"getFormattedPropertyExpressionFn\"\n (codeChange)=\"changeCode($event)\"\n ></c8y-widget-code-editor>\n }\n\n <ng-template #scadaWidgetPreview>\n <c8y-scada-widget-view\n [config]=\"config\"\n [enablePotentialPlaceholders]=\"true\"\n (potentialPlaceholderClick)=\"addPlaceholder($event)\"\n [preview]=\"true\"\n ></c8y-scada-widget-view>\n </ng-template>\n}\n", dependencies: [{ kind: "component", type: ScadaWidgetViewComponent, selector: "c8y-scada-widget-view", inputs: ["config", "enablePotentialPlaceholders", "preview"], outputs: ["potentialPlaceholderClick"] }, { kind: "component", type: WidgetCodeEditorComponent, selector: "c8y-widget-code-editor", inputs: ["mode", "config", "showAdvancedSettings", "propertyKeys$", "propertyPrefix", "getFormattedPropertyExpression"], outputs: ["codeChange", "cssChange"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1701
1705
  }
1702
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: ScadaWidgetAdvancedEditorComponent, decorators: [{
1706
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.19", ngImport: i0, type: ScadaWidgetAdvancedEditorComponent, decorators: [{
1703
1707
  type: Component,
1704
1708
  args: [{ selector: 'c8y-scada-widget-advanced-editor', imports: [ScadaWidgetViewComponent, AsyncPipe, WidgetCodeEditorComponent], providers: [HtmlWidgetConfigService], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let config = config$ | async;\n@if (config) {\n @let htmlWidgetConfig = config.config?.htmlWidgetConfig;\n @if (htmlWidgetConfig) {\n <c8y-widget-code-editor\n [config]=\"htmlWidgetConfig.config\"\n [mode]=\"'code'\"\n [showAdvancedSettings]=\"false\"\n [propertyKeys$]=\"propertyKeys$\"\n [getFormattedPropertyExpression]=\"getFormattedPropertyExpressionFn\"\n (codeChange)=\"changeCode($event)\"\n ></c8y-widget-code-editor>\n }\n\n <ng-template #scadaWidgetPreview>\n <c8y-scada-widget-view\n [config]=\"config\"\n [enablePotentialPlaceholders]=\"true\"\n (potentialPlaceholderClick)=\"addPlaceholder($event)\"\n [preview]=\"true\"\n ></c8y-scada-widget-view>\n </ng-template>\n}\n" }]
1705
1709
  }], ctorParameters: () => [], propDecorators: { scadaWidgetPreview: [{ type: i0.ViewChild, args: ['scadaWidgetPreview', { isSignal: true }] }] } });