@c8y/ngx-components 1023.71.1 → 1023.76.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 (207) hide show
  1. package/asset-properties/index.d.ts +19 -1
  2. package/asset-properties/index.d.ts.map +1 -1
  3. package/cockpit-config/index.d.ts +4 -3
  4. package/cockpit-config/index.d.ts.map +1 -1
  5. package/context-dashboard/index.d.ts +202 -4
  6. package/context-dashboard/index.d.ts.map +1 -1
  7. package/datapoints-export-selector/index.d.ts +8 -1
  8. package/datapoints-export-selector/index.d.ts.map +1 -1
  9. package/device-profile/index.d.ts +8 -1
  10. package/device-profile/index.d.ts.map +1 -1
  11. package/events/cockpit/index.d.ts +6 -0
  12. package/events/cockpit/index.d.ts.map +1 -0
  13. package/events/devicemanagement/index.d.ts +6 -0
  14. package/events/devicemanagement/index.d.ts.map +1 -0
  15. package/events/events-timeline/index.d.ts +10 -10
  16. package/events/events-timeline/index.d.ts.map +1 -1
  17. package/events/index.d.ts +363 -5
  18. package/events/index.d.ts.map +1 -1
  19. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +1 -1
  20. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  21. package/fesm2022/c8y-ngx-components-alarms.mjs +1 -1
  22. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  23. package/fesm2022/c8y-ngx-components-asset-properties.mjs +2 -2
  24. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  25. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +1 -1
  26. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  27. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +1 -1
  28. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  29. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +1 -1
  30. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
  31. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +2 -2
  32. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  33. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +8 -11
  34. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  35. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-CPLDClTp.mjs → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-DX9Rgjgl.mjs} +2 -2
  36. package/fesm2022/{c8y-ngx-components-computed-asset-properties-alarm-count-config.component-CPLDClTp.mjs.map → c8y-ngx-components-computed-asset-properties-alarm-count-config.component-DX9Rgjgl.mjs.map} +1 -1
  37. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-9be_iMQg.mjs → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-CRpLJ5H7.mjs} +8 -8
  38. package/fesm2022/{c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-9be_iMQg.mjs.map → c8y-ngx-components-computed-asset-properties-c8y-ngx-components-computed-asset-properties-CRpLJ5H7.mjs.map} +1 -1
  39. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B2em01_W.mjs → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-2rDsrxcs.mjs} +2 -2
  40. package/fesm2022/{c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-B2em01_W.mjs.map → c8y-ngx-components-computed-asset-properties-configuration-snapshot-config.component-2rDsrxcs.mjs.map} +1 -1
  41. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-CQuGa1RI.mjs → c8y-ngx-components-computed-asset-properties-event-count-config.component-BJNoqWZf.mjs} +2 -2
  42. package/fesm2022/{c8y-ngx-components-computed-asset-properties-event-count-config.component-CQuGa1RI.mjs.map → c8y-ngx-components-computed-asset-properties-event-count-config.component-BJNoqWZf.mjs.map} +1 -1
  43. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CkmurxJv.mjs → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-DYac6foX.mjs} +3 -3
  44. package/fesm2022/{c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-CkmurxJv.mjs.map → c8y-ngx-components-computed-asset-properties-fieldbus-item-status-config.component-DYac6foX.mjs.map} +1 -1
  45. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CTK9zNUh.mjs → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-3yTe6lIr.mjs} +3 -3
  46. package/fesm2022/{c8y-ngx-components-computed-asset-properties-last-measurement-config.component-CTK9zNUh.mjs.map → c8y-ngx-components-computed-asset-properties-last-measurement-config.component-3yTe6lIr.mjs.map} +1 -1
  47. package/fesm2022/c8y-ngx-components-computed-asset-properties.mjs +1 -1
  48. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DsCDppJx.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C7yXSDYC.mjs} +3 -3
  49. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-DsCDppJx.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C7yXSDYC.mjs.map} +1 -1
  50. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RdLW5nde.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-w8N16Z3t.mjs} +4 -4
  51. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RdLW5nde.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-w8N16Z3t.mjs.map} +1 -1
  52. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +561 -21
  53. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  54. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-Cek3_qZQ.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DVEnCRzW.mjs} +2 -2
  55. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DVEnCRzW.mjs.map +1 -0
  56. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +2 -2
  57. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +2 -2
  58. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  59. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +1 -1
  60. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  61. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +1 -1
  62. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  63. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +41 -8
  64. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  65. package/fesm2022/c8y-ngx-components-device-profile.mjs +38 -12
  66. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  67. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +1 -1
  68. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  69. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +1 -1
  70. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  71. package/fesm2022/c8y-ngx-components-ecosystem.mjs +1 -1
  72. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  73. package/fesm2022/c8y-ngx-components-events-cockpit.mjs +54 -0
  74. package/fesm2022/c8y-ngx-components-events-cockpit.mjs.map +1 -0
  75. package/fesm2022/c8y-ngx-components-events-devicemanagement.mjs +79 -0
  76. package/fesm2022/c8y-ngx-components-events-devicemanagement.mjs.map +1 -0
  77. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +30 -23
  78. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
  79. package/fesm2022/c8y-ngx-components-events.mjs +1080 -4
  80. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  81. package/fesm2022/c8y-ngx-components-file-preview.mjs +48 -41
  82. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-files-repository.mjs +1 -1
  84. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  85. package/fesm2022/c8y-ngx-components-global-context.mjs +108 -52
  86. package/fesm2022/c8y-ngx-components-global-context.mjs.map +1 -1
  87. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  88. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  89. package/fesm2022/c8y-ngx-components-location.mjs +1 -1
  90. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  91. package/fesm2022/c8y-ngx-components-operation-picker.mjs +1 -1
  92. package/fesm2022/c8y-ngx-components-operation-picker.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +1 -1
  94. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +1 -1
  96. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  97. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +1 -1
  98. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  99. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +5 -5
  100. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  101. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +2 -2
  102. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  103. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +1 -1
  104. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  105. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +1 -1
  106. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
  107. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +1 -1
  108. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
  109. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +1 -1
  110. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  111. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +1 -1
  112. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +1 -1
  114. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-time-context.mjs +1 -1
  116. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +1 -1
  118. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs +1 -1
  120. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  121. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs +4 -5
  122. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  123. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs +4 -5
  124. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  125. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs +1 -1
  126. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  127. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-table.mjs +1 -1
  128. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-table.mjs.map +1 -1
  129. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +1 -1
  130. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  131. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs +1 -1
  132. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  133. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs +1 -1
  134. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  135. package/fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs +39 -1
  136. package/fesm2022/c8y-ngx-components-widgets-definitions-event-list.mjs.map +1 -1
  137. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +77 -5
  138. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  139. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +1 -1
  140. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  141. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs +1 -1
  142. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  143. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs +1 -1
  144. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  145. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs +1 -1
  146. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  147. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs +1 -1
  148. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  149. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +1 -1
  150. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  151. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs +1 -1
  152. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  153. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs +1 -1
  154. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  155. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs +1 -1
  156. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  157. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +67 -60
  158. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  159. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +1 -1
  160. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  161. package/fesm2022/c8y-ngx-components-widgets-implementations-events.mjs +236 -0
  162. package/fesm2022/c8y-ngx-components-widgets-implementations-events.mjs.map +1 -0
  163. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +271 -31
  164. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  165. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +1 -1
  166. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  167. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +2 -2
  168. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  169. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +1 -1
  170. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  171. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +1 -1
  172. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  173. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +1 -1
  174. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  175. package/fesm2022/c8y-ngx-components.mjs +380 -170
  176. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  177. package/file-preview/index.d.ts +7 -6
  178. package/file-preview/index.d.ts.map +1 -1
  179. package/global-context/index.d.ts +90 -1
  180. package/global-context/index.d.ts.map +1 -1
  181. package/index.d.ts +116 -15
  182. package/index.d.ts.map +1 -1
  183. package/locales/de.po +120 -3
  184. package/locales/es.po +120 -3
  185. package/locales/fr.po +120 -3
  186. package/locales/ja_JP.po +120 -3
  187. package/locales/ko.po +120 -3
  188. package/locales/locales.pot +120 -3
  189. package/locales/nl.po +120 -3
  190. package/locales/pl.po +120 -3
  191. package/locales/pt_BR.po +120 -3
  192. package/locales/zh_CN.po +120 -3
  193. package/locales/zh_TW.po +120 -3
  194. package/package.json +1 -1
  195. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts +1 -2
  196. package/widgets/definitions/alarms/all-critical-alarms/index.d.ts.map +1 -1
  197. package/widgets/definitions/alarms/recent-alarms/index.d.ts +1 -2
  198. package/widgets/definitions/alarms/recent-alarms/index.d.ts.map +1 -1
  199. package/widgets/definitions/event-list/index.d.ts +44 -1
  200. package/widgets/definitions/event-list/index.d.ts.map +1 -1
  201. package/widgets/implementations/alarms/index.d.ts +8 -1
  202. package/widgets/implementations/alarms/index.d.ts.map +1 -1
  203. package/widgets/implementations/events/index.d.ts +89 -0
  204. package/widgets/implementations/events/index.d.ts.map +1 -0
  205. package/widgets/implementations/html-widget/index.d.ts +69 -9
  206. package/widgets/implementations/html-widget/index.d.ts.map +1 -1
  207. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-Cek3_qZQ.mjs.map +0 -1
@@ -3102,7 +3102,7 @@ class HistoryModeConfigurationControlsComponent {
3102
3102
  };
3103
3103
  }
3104
3104
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: HistoryModeConfigurationControlsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3105
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: HistoryModeConfigurationControlsComponent, isStandalone: true, selector: "c8y-history-mode-configuration-controls", inputs: { settings: "settings", context: "context" }, outputs: { contextChange: "contextChange", validationStatus: "validationStatus" }, ngImport: i0, template: "@if (currentForm) {\n @let SHOW_TIME_CONTEXT = settings.showTimeContext;\n @let SHOW_AGGREGATION = settings.showAggregation;\n\n <form [formGroup]=\"currentForm\">\n <div class=\"content-flex-100\">\n <div\n class=\"col-4\"\n [ngClass]=\"{ 'm-b-8': !SHOW_AGGREGATION }\"\n >\n @if (SHOW_TIME_CONTEXT) {\n @let dateTimeContext = currentForm.get('dateTimeContext');\n @let tempDateFromValue = dateTimeContext.get('dateFrom')?.value;\n @let tempDateToValue = dateTimeContext.get('dateTo')?.value;\n @let fromErrors = dateFromErrors();\n @let toErrors = dateToErrors();\n\n <fieldset class=\"c8y-fieldset\">\n <legend>\n <div class=\"standalone btn-icon-dot__item time-context m-r-4\">\n <i\n class=\"\"\n [c8yIcon]=\"'calendar'\"\n ></i>\n </div>\n {{ 'Date & time range' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"TIME_RANGE_PICKER_POPOVER | translate\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n </legend>\n <c8y-form-group class=\"content-flex-58 d-flex a-i-center m-b-0 p-t-16\">\n <c8y-form-group\n [class.has-error]=\"fromErrors\"\n class=\"form-group-sm d-flex a-i-center col-5 flex-wrap\"\n >\n <label\n class=\"m-b-sm-0 m-r-8 text-nowrap\"\n style=\"min-width: 30px\"\n [title]=\"'From`date`' | translate\"\n for=\"dateFrom\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n [class.has-error]=\"fromErrors\"\n id=\"dateFrom\"\n [maxDate]=\"tempDateToValue\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"dateTimeContext.get('dateFrom')\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"fromErrors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"errorMessages.dateAfterRangeMax | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateRange\"\n [text]=\"errorMessages.invalidDateRange | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n [class.has-error]=\"toErrors\"\n class=\"form-group-sm d-flex flex-wrap col-7 a-i-center\"\n >\n <label\n class=\"m-b-sm-0 text-nowrap m-r-8\"\n style=\"min-width: 30px\"\n [title]=\"'To`date`' | translate\"\n for=\"dateTo\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n [class.has-error]=\"toErrors\"\n id=\"dateTo\"\n [minDate]=\"tempDateFromValue\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"dateTimeContext.get('dateTo')\"\n ></c8y-date-time-picker>\n <button\n class=\"btn btn-xs btn-default m-l-4\"\n [title]=\"'Set to current time' | translate\"\n type=\"button\"\n (click)=\"setDateToNow()\"\n >\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'clock-o'\"\n ></i>\n {{ 'Now' | translate }}\n </button>\n <c8y-messages [show]=\"toErrors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"errorMessages.dateBeforeRangeMin | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </c8y-form-group>\n </fieldset>\n }\n </div>\n <div class=\"col-\">\n @if (SHOW_AGGREGATION) {\n @let selectedAggregation = currentForm.get('aggregation')?.value;\n\n <fieldset class=\"c8y-fieldset\">\n <legend>\n <div class=\"standalone btn-icon-dot__item aggregation m-r-4\">\n <i [c8yIcon]=\"'input'\"></i>\n </div>\n {{ 'Aggregation' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"AGGREGATION_POPOVER | translate\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n </legend>\n <c8y-form-group class=\"p-t-16 p-b-16 m-b-4\">\n <c8y-aggregation-picker\n formControlName=\"aggregation\"\n [resetToDefault]=\"true\"\n [disabledAggregations]=\"disabledAggregations()\"\n [layout]=\"'radio'\"\n ></c8y-aggregation-picker>\n </c8y-form-group>\n </fieldset>\n }\n </div>\n </div>\n </form>\n}\n", dependencies: [{ kind: "ngmodule", type: I18nModule }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: AggregationPickerComponent, selector: "c8y-aggregation-picker", inputs: ["disabledAggregations", "resetToDefault", "layout"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "ngmodule", type: DateTimePickerModule }, { kind: "component", type: i4.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3105
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: HistoryModeConfigurationControlsComponent, isStandalone: true, selector: "c8y-history-mode-configuration-controls", inputs: { settings: "settings", context: "context" }, outputs: { contextChange: "contextChange", validationStatus: "validationStatus" }, ngImport: i0, template: "@if (currentForm) {\n @let SHOW_TIME_CONTEXT = settings.showTimeContext;\n @let SHOW_AGGREGATION = settings.showAggregation;\n\n <form [formGroup]=\"currentForm\">\n <div class=\"content-flex-100\">\n <div\n class=\"col-4\"\n [ngClass]=\"{ 'm-b-8': !SHOW_AGGREGATION }\"\n >\n @if (SHOW_TIME_CONTEXT) {\n @let dateTimeContext = currentForm.get('dateTimeContext');\n @let tempDateFromValue = dateTimeContext.get('dateFrom')?.value;\n @let tempDateToValue = dateTimeContext.get('dateTo')?.value;\n @let fromErrors = dateFromErrors();\n @let toErrors = dateToErrors();\n\n <fieldset class=\"c8y-fieldset\">\n <legend>\n <div class=\"standalone btn-icon-dot__item time-context m-r-4\">\n <i\n class=\"\"\n [c8yIcon]=\"'calendar'\"\n ></i>\n </div>\n {{ 'Date & time range' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"TIME_RANGE_PICKER_POPOVER | translate\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n </legend>\n <c8y-form-group class=\"content-flex-58 d-flex a-i-center m-b-0 p-t-16\">\n <c8y-form-group\n [class.has-error]=\"fromErrors\"\n class=\"form-group-sm d-flex a-i-center col-5 flex-wrap\"\n >\n <label\n class=\"m-b-sm-0 m-r-8 text-nowrap\"\n style=\"min-width: 30px\"\n [title]=\"'From`date`' | translate\"\n for=\"dateFrom\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n [class.has-error]=\"fromErrors\"\n id=\"dateFrom\"\n [maxDate]=\"tempDateToValue\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"dateTimeContext.get('dateFrom')\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"fromErrors\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"errorMessages.dateAfterRangeMax | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateRange\"\n [text]=\"errorMessages.invalidDateRange | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n\n <c8y-form-group\n [class.has-error]=\"toErrors\"\n class=\"form-group-sm d-flex flex-wrap col-7 a-i-center\"\n >\n <label\n class=\"m-b-sm-0 text-nowrap m-r-8\"\n style=\"min-width: 30px\"\n [title]=\"'To`date`' | translate\"\n for=\"dateTo\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n [class.has-error]=\"toErrors\"\n id=\"dateTo\"\n [minDate]=\"tempDateFromValue\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"dateTimeContext.get('dateTo')\"\n ></c8y-date-time-picker>\n <button\n class=\"btn btn-xs btn-default m-l-4\"\n [title]=\"'Set to current time' | translate\"\n type=\"button\"\n (click)=\"setDateToNow()\"\n >\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'clock-o'\"\n ></i>\n {{ 'Now' | translate }}\n </button>\n <c8y-messages [show]=\"toErrors\">\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"errorMessages.dateBeforeRangeMin | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </c8y-form-group>\n </fieldset>\n }\n </div>\n <div class=\"col-\">\n @if (SHOW_AGGREGATION) {\n @let selectedAggregation = currentForm.get('aggregation')?.value;\n\n <fieldset class=\"c8y-fieldset\">\n <legend>\n <div class=\"standalone btn-icon-dot__item aggregation m-r-4\">\n <i [c8yIcon]=\"'input'\"></i>\n </div>\n {{ 'Aggregation' | translate }}\n <button\n class=\"btn-help btn-help--sm\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"AGGREGATION_POPOVER | translate\"\n placement=\"top\"\n triggers=\"focus\"\n container=\"body\"\n type=\"button\"\n [adaptivePosition]=\"true\"\n ></button>\n </legend>\n <c8y-form-group class=\"p-t-16 p-b-16 m-b-4\">\n <c8y-aggregation-picker\n formControlName=\"aggregation\"\n [resetToDefault]=\"true\"\n [disabledAggregations]=\"disabledAggregations()\"\n [layout]=\"'radio'\"\n ></c8y-aggregation-picker>\n </c8y-form-group>\n </fieldset>\n }\n </div>\n </div>\n </form>\n}\n", dependencies: [{ kind: "ngmodule", type: I18nModule }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "ngmodule", type: TooltipModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: PopoverModule }, { kind: "directive", type: i2$2.PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: AggregationPickerComponent, selector: "c8y-aggregation-picker", inputs: ["disabledAggregations", "resetToDefault", "layout"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage", "additionalMessages"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "ngmodule", type: DateTimePickerModule }, { kind: "component", type: i4.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3106
3106
  }
3107
3107
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: HistoryModeConfigurationControlsComponent, decorators: [{
3108
3108
  type: Component,
@@ -3459,7 +3459,7 @@ class DateTimeContextPickerComponent {
3459
3459
  useExisting: forwardRef(() => DateTimeContextPickerComponent),
3460
3460
  multi: true
3461
3461
  }
3462
- ], viewQueries: [{ propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], ngImport: i0, template: "@if (form) {\n @let intervalValue = form.get('interval')?.value;\n @let isIntervalNone = intervalValue === 'none';\n @let dateFromControl = form.get('dateFrom');\n @let dateToControl = form.get('dateTo');\n @let dateRangeLabel = getDateRangeLabel();\n\n <form [formGroup]=\"form\">\n <div\n class=\"dropdown max-width-100\"\n container=\"body\"\n #dropdown=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n [isDisabled]=\"disabled\"\n (onShown)=\"onShownDropdown()\"\n (onHidden)=\"onHiddenDropdown()\"\n >\n <!-- Dropdown toggle button with better accessibility -->\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n [attr.aria-label]=\"dateRangeLabel\"\n [tooltip]=\"dateRangeLabel\"\n placement=\"top\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n data-cy=\"c8y-date-time-context-picker--picker-toggle\"\n >\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'schedule1'\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"d-col text-left flex-grow min-width-0\">\n @if (isIntervalNone) {\n <span class=\"text-10 text-muted l-h-1\">\n {{ 'No date filter' | translate }}\n </span>\n } @else {\n <span\n class=\"text-10 text-muted l-h-1\"\n data-cy=\"c8y-date-time-context-picker--picker-label\"\n >\n {{ INTERVALS[intervalValue] | translate }}\n </span>\n <span\n class=\"text-12 l-h-1 text-medium text-truncate\"\n data-cy=\"c8y-date-time-context-picker--picker-time-range\"\n >\n {{ form.get('dateFrom')?.value | c8yDate: DATE_FORMAT }} \u2014\n {{ form.get('dateTo')?.value | c8yDate: DATE_FORMAT }}\n </span>\n }\n </div>\n <span\n class=\"caret m-r-16 m-l-4\"\n aria-hidden=\"true\"\n ></span>\n </button>\n\n <!-- Dropdown menu -->\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n role=\"menu\"\n *dropdownMenu\n >\n @if (dropdown.isOpen) {\n <!-- Interval picker section -->\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"interval\"\n [shouldDisableInterval]=\"shouldDisableInterval\"\n ></c8y-interval-picker>\n\n <!-- Custom date range section -->\n @if (isCustomMode() && (config?.showDateFrom || config?.showDateTo)) {\n <div class=\"p-l-16 p-r-16\">\n @if (config?.showDateFrom) {\n <c8y-form-group [class.has-error]=\"getDateFromErrors()\">\n <label\n [title]=\"'From`date`' | translate\"\n for=\"dateFrom\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n [class.has-error]=\"getDateFromErrors()\"\n id=\"dateFrom\"\n [maxDate]=\"tempDateToControl?.value\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"tempDateFromControl\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"getDateFromErrors()\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"errorMessages.dateAfterRangeMax | translate\"\n ></c8y-message>\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"errorMessages.dateBeforeRangeMin | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"bsDate\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateRange\"\n [text]=\"errorMessages.invalidDateRange | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n }\n\n @if (config?.showDateTo) {\n <c8y-form-group [class.has-error]=\"getDateToErrors()\">\n <label\n [title]=\"'To`date`' | translate\"\n for=\"dateTo\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n [class.has-error]=\"getDateToErrors()\"\n id=\"dateTo\"\n [minDate]=\"tempDateFromControl?.value\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"tempDateToControl\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"getDateToErrors()\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"errorMessages.dateAfterRangeMax | translate\"\n ></c8y-message>\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"errorMessages.dateBeforeRangeMin | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"bsDate\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateRange\"\n [text]=\"errorMessages.invalidDateRange | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n }\n </div>\n\n <!-- Action buttons -->\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset()\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDateTimeContext()\"\n [disabled]=\"isApplyDisabled()\"\n translate\n >\n Apply\n </button>\n </div>\n }\n }\n </ul>\n </div>\n </form>\n}\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: "ngmodule", type: TooltipModule }, { kind: "directive", type: i2.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: BsDropdownModule }, { kind: "directive", type: i2$1.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i2$1.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i2$1.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: I18nModule }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: IntervalPickerComponent, selector: "c8y-interval-picker", inputs: ["INTERVALS", "shouldDisableInterval"] }, { kind: "ngmodule", type: DateTimePickerModule }, { kind: "component", type: i4.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3462
+ ], viewQueries: [{ propertyName: "dropdown", first: true, predicate: BsDropdownDirective, descendants: true }], ngImport: i0, template: "@if (form) {\n @let intervalValue = form.get('interval')?.value;\n @let isIntervalNone = intervalValue === 'none';\n @let dateFromControl = form.get('dateFrom');\n @let dateToControl = form.get('dateTo');\n @let dateRangeLabel = getDateRangeLabel();\n\n <form [formGroup]=\"form\">\n <div\n class=\"dropdown max-width-100\"\n container=\"body\"\n #dropdown=\"bs-dropdown\"\n dropdown\n [insideClick]=\"true\"\n [isDisabled]=\"disabled\"\n (onShown)=\"onShownDropdown()\"\n (onHidden)=\"onHiddenDropdown()\"\n >\n <!-- Dropdown toggle button with better accessibility -->\n <button\n class=\"dropdown-toggle form-control l-h-tight d-flex a-i-center\"\n [attr.aria-label]=\"dateRangeLabel\"\n [tooltip]=\"dateRangeLabel\"\n placement=\"top\"\n container=\"body\"\n [adaptivePosition]=\"false\"\n [delay]=\"500\"\n dropdownToggle\n data-cy=\"c8y-date-time-context-picker--picker-toggle\"\n >\n <i\n class=\"m-r-4\"\n [c8yIcon]=\"'schedule1'\"\n aria-hidden=\"true\"\n ></i>\n <div class=\"d-col text-left flex-grow min-width-0\">\n @if (isIntervalNone) {\n <span class=\"text-10 text-muted l-h-1\">\n {{ 'No date filter' | translate }}\n </span>\n } @else {\n <span\n class=\"text-10 text-muted l-h-1\"\n data-cy=\"c8y-date-time-context-picker--picker-label\"\n >\n {{ INTERVALS[intervalValue] | translate }}\n </span>\n <span\n class=\"text-12 l-h-1 text-medium text-truncate\"\n data-cy=\"c8y-date-time-context-picker--picker-time-range\"\n >\n {{ form.get('dateFrom')?.value | c8yDate: DATE_FORMAT }} \u2014\n {{ form.get('dateTo')?.value | c8yDate: DATE_FORMAT }}\n </span>\n }\n </div>\n <span\n class=\"caret m-r-16 m-l-4\"\n aria-hidden=\"true\"\n ></span>\n </button>\n\n <!-- Dropdown menu -->\n <ul\n class=\"dropdown-menu dropdown-menu--date-range\"\n role=\"menu\"\n *dropdownMenu\n >\n @if (dropdown.isOpen) {\n <!-- Interval picker section -->\n <c8y-interval-picker\n class=\"d-contents\"\n formControlName=\"interval\"\n [shouldDisableInterval]=\"shouldDisableInterval\"\n ></c8y-interval-picker>\n\n <!-- Custom date range section -->\n @if (isCustomMode() && (config?.showDateFrom || config?.showDateTo)) {\n <div class=\"p-l-16 p-r-16\">\n @if (config?.showDateFrom) {\n <c8y-form-group [class.has-error]=\"getDateFromErrors()\">\n <label\n [title]=\"'From`date`' | translate\"\n for=\"dateFrom\"\n translate\n >\n From`date`\n </label>\n <c8y-date-time-picker\n [class.has-error]=\"getDateFromErrors()\"\n id=\"dateFrom\"\n [maxDate]=\"tempDateToControl?.value\"\n [placeholder]=\"'From`date`' | translate\"\n [formControl]=\"tempDateFromControl\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"getDateFromErrors()\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"errorMessages.dateAfterRangeMax | translate\"\n ></c8y-message>\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"errorMessages.dateBeforeRangeMin | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"bsDate\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateRange\"\n [text]=\"errorMessages.invalidDateRange | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n }\n\n @if (config?.showDateTo) {\n <c8y-form-group [class.has-error]=\"getDateToErrors()\">\n <label\n [title]=\"'To`date`' | translate\"\n for=\"dateTo\"\n translate\n >\n To`date`\n </label>\n <c8y-date-time-picker\n [class.has-error]=\"getDateToErrors()\"\n id=\"dateTo\"\n [minDate]=\"tempDateFromControl?.value\"\n [placeholder]=\"'To`date`' | translate\"\n [formControl]=\"tempDateToControl\"\n ></c8y-date-time-picker>\n <c8y-messages [show]=\"getDateToErrors()\">\n <c8y-message\n name=\"dateAfterRangeMax\"\n [text]=\"errorMessages.dateAfterRangeMax | translate\"\n ></c8y-message>\n <c8y-message\n name=\"dateBeforeRangeMin\"\n [text]=\"errorMessages.dateBeforeRangeMin | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateTime\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"bsDate\"\n [text]=\"errorMessages.invalidDateTime | translate\"\n ></c8y-message>\n <c8y-message\n name=\"invalidDateRange\"\n [text]=\"errorMessages.invalidDateRange | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n }\n </div>\n\n <!-- Action buttons -->\n <div class=\"p-16 d-flex gap-8 separator-top\">\n <button\n class=\"btn btn-default btn-sm flex-grow\"\n title=\"{{ 'Reset' | translate }}\"\n type=\"button\"\n (click)=\"reset()\"\n translate\n >\n Reset\n </button>\n\n <button\n class=\"btn btn-primary btn-sm flex-grow\"\n title=\"{{ 'Apply' | translate }}\"\n type=\"button\"\n (click)=\"applyDateTimeContext()\"\n [disabled]=\"isApplyDisabled()\"\n translate\n >\n Apply\n </button>\n </div>\n }\n }\n </ul>\n </div>\n </form>\n}\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { 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: "ngmodule", type: TooltipModule }, { kind: "directive", type: i2.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: BsDropdownModule }, { kind: "directive", type: i2$1.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i2$1.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i2$1.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "ngmodule", type: I18nModule }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: MessagesComponent, selector: "c8y-messages", inputs: ["show", "defaults", "helpMessage", "additionalMessages"] }, { kind: "directive", type: MessageDirective, selector: "c8y-message", inputs: ["name", "text"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: IntervalPickerComponent, selector: "c8y-interval-picker", inputs: ["INTERVALS", "shouldDisableInterval"] }, { kind: "ngmodule", type: DateTimePickerModule }, { kind: "component", type: i4.DateTimePickerComponent, selector: "c8y-date-time-picker", inputs: ["minDate", "maxDate", "placeholder", "dateInputFormat", "adaptivePosition", "size", "dateType", "config"], outputs: ["onDateSelected"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3463
3463
  }
3464
3464
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: DateTimeContextPickerComponent, decorators: [{
3465
3465
  type: Component,
@@ -10850,6 +10850,8 @@ const PRESET_NAME = {
10850
10850
  ALARM_LIST: 'alarmList',
10851
10851
  CHART: 'chart',
10852
10852
  LIVE_ONLY: 'liveOnly',
10853
+ AUTO_REFRESH_ONLY: 'autoRefreshOnly',
10854
+ AUTO_REFRESH_ONLY_CONFIG: 'autoRefreshOnlyConfig',
10853
10855
  HISTORY_ONLY: 'historyOnly',
10854
10856
  ALARM_LIST_CONFIG: 'alarmListConfig',
10855
10857
  ALARM_LIST_LEGACY: 'alarmListLegacy',
@@ -10932,6 +10934,18 @@ const CONTROL_PRESETS = {
10932
10934
  CONTEXT_FEATURE.REFRESH
10933
10935
  ]
10934
10936
  },
10937
+ /** For auto-refresh-only widgets (no history mode, no live time range support) — preview shows no controls in config mode */
10938
+ [PRESET_NAME.AUTO_REFRESH_ONLY]: {
10939
+ dashboard: [CONTEXT_FEATURE.AUTO_REFRESH],
10940
+ config: [],
10941
+ view_and_config: [CONTEXT_FEATURE.AUTO_REFRESH]
10942
+ },
10943
+ /** For auto-refresh-only widget config section (shows auto-refresh toggle in all modes) */
10944
+ [PRESET_NAME.AUTO_REFRESH_ONLY_CONFIG]: {
10945
+ dashboard: [CONTEXT_FEATURE.AUTO_REFRESH],
10946
+ config: [CONTEXT_FEATURE.AUTO_REFRESH],
10947
+ view_and_config: [CONTEXT_FEATURE.AUTO_REFRESH]
10948
+ },
10935
10949
  /** For history-only widgets (no live mode support) */
10936
10950
  [PRESET_NAME.HISTORY_ONLY]: {
10937
10951
  dashboard: [CONTEXT_FEATURE.HISTORY_TIME],
@@ -11188,15 +11202,18 @@ class ConfigModeControls {
11188
11202
  const mode = cfg.displayMode ?? GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD;
11189
11203
  const context = mode === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD
11190
11204
  ? this.getGlobalContextState(mode)
11191
- : { ...cfg, isGlobalContextReady: true };
11192
- const diff = this.globalContextUtils.getChangedFields(cfg, context);
11193
- this.lastEmittedContext.set(context);
11194
- // isGlobalContextReady is a transient runtime flag, not a substantive config change.
11195
- // Don't trigger an emission solely because it was added.
11196
- const { isGlobalContextReady: _, ...substantiveDiff } = diff;
11197
- if (Object.keys(substantiveDiff).length > 0) {
11198
- this.configChange.emit({ context, diff });
11199
- }
11205
+ : this.buildNonDashboardContext(cfg);
11206
+ this.emit(context);
11207
+ }
11208
+ buildNonDashboardContext(cfg) {
11209
+ const isLive = cfg.refreshOption !== REFRESH_OPTION.HISTORY && !!cfg.dateTimeContext;
11210
+ return {
11211
+ ...cfg,
11212
+ isGlobalContextReady: true,
11213
+ dateTimeContext: isLive
11214
+ ? DateTimeContextUtil.normalizeForLive(cfg.dateTimeContext)
11215
+ : cfg.dateTimeContext
11216
+ };
11200
11217
  }
11201
11218
  emitForDisplayMode(mode) {
11202
11219
  if (mode === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD) {
@@ -11207,9 +11224,12 @@ class ConfigModeControls {
11207
11224
  this.emit({ ...(snapshot ?? this.config()), displayMode: mode, isGlobalContextReady: true });
11208
11225
  }
11209
11226
  }
11227
+ /** Emits configChange if the diff contains changes beyond transient flags. */
11210
11228
  emit(context) {
11211
11229
  const diff = this.globalContextUtils.getChangedFields(this.lastEmittedContext(), context);
11212
- if (Object.keys(diff).length === 0)
11230
+ const substantiveDiff = { ...diff };
11231
+ delete substantiveDiff.isGlobalContextReady;
11232
+ if (Object.keys(substantiveDiff).length === 0)
11213
11233
  return;
11214
11234
  this.lastEmittedContext.set(context);
11215
11235
  this.configChange.emit({ context, diff });
@@ -11350,8 +11370,11 @@ class ContextControlsComponent {
11350
11370
  this.visibleControls = computed(() => {
11351
11371
  const controlsInput = this.controls();
11352
11372
  const presetDef = typeof controlsInput === 'string' ? CONTROL_PRESETS[controlsInput] : controlsInput;
11353
- const baseControls = presetDef[this.displayMode()];
11354
- const refreshOption = this.config().refreshOption || REFRESH_OPTION.LIVE;
11373
+ const baseControls = presetDef?.[this.displayMode()];
11374
+ if (!baseControls) {
11375
+ return [];
11376
+ }
11377
+ const refreshOption = this.config()?.refreshOption || REFRESH_OPTION.LIVE;
11355
11378
  const filteredControls = applyModeConstraints(baseControls, refreshOption);
11356
11379
  // Normalize LIVE_TIME/HISTORY_TIME to 'time' and REFRESH_*/REFRESH to 'refresh' for template
11357
11380
  return filteredControls.map(c => {
@@ -11386,22 +11409,27 @@ class ContextControlsComponent {
11386
11409
  this.syncConfigToForm();
11387
11410
  this.subscribeToFormChanges();
11388
11411
  }
11412
+ ngOnInit() {
11413
+ this.emitInitialNonDashboardState();
11414
+ }
11389
11415
  onAutoRefresh() {
11390
11416
  if (this.emitRefresh()) {
11391
11417
  this.onRefresh();
11392
11418
  }
11393
11419
  }
11394
11420
  onRefresh() {
11395
- const { dateTimeContext } = this.config();
11396
- if (!dateTimeContext) {
11421
+ const cfg = this.config();
11422
+ if (!cfg.dateTimeContext) {
11397
11423
  this.refresh.emit();
11398
11424
  return;
11399
11425
  }
11400
- const context = {
11401
- ...this.config(),
11402
- dateTimeContext: DateTimeContextUtil.normalizeForLive(dateTimeContext)
11426
+ // Normalize dates to "now" and emit as a config change.
11427
+ // If dates haven't changed (same second), fall back to a plain refresh.
11428
+ const normalized = {
11429
+ ...cfg,
11430
+ dateTimeContext: DateTimeContextUtil.normalizeForLive(cfg.dateTimeContext)
11403
11431
  };
11404
- if (!this.emitIfChanged(context)) {
11432
+ if (!this.emitIfChanged(normalized)) {
11405
11433
  this.refresh.emit();
11406
11434
  }
11407
11435
  }
@@ -11418,9 +11446,20 @@ class ContextControlsComponent {
11418
11446
  effect(() => {
11419
11447
  const cfg = this.config();
11420
11448
  this.form.patchValue(cfg, { emitEvent: false });
11421
- this.lastEmittedState.set(this.form.value);
11422
11449
  });
11423
11450
  }
11451
+ /** On first render for non-dashboard mode, normalize stale live dates and emit. */
11452
+ emitInitialNonDashboardState() {
11453
+ if (this.displayMode() === GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD)
11454
+ return;
11455
+ const cfg = this.config();
11456
+ const isLive = cfg.refreshOption !== REFRESH_OPTION.HISTORY && !!cfg.dateTimeContext;
11457
+ const normalized = isLive
11458
+ ? { ...cfg, dateTimeContext: DateTimeContextUtil.normalizeForLive(cfg.dateTimeContext) }
11459
+ : cfg;
11460
+ this.form.patchValue(normalized, { emitEvent: false });
11461
+ this.emitIfChanged(normalized);
11462
+ }
11424
11463
  subscribeToFormChanges() {
11425
11464
  this.form.valueChanges.pipe(takeUntilDestroyed()).subscribe(value => {
11426
11465
  const context = this.clearInvalidAggregation(value);
@@ -11761,6 +11800,19 @@ class GlobalContextConnectorComponent {
11761
11800
  this.refresh = output();
11762
11801
  this.linkedChange = output();
11763
11802
  this.isLinked = signal(true, ...(ngDevMode ? [{ debugName: "isLinked" }] : []));
11803
+ this.hasActiveControls = computed(() => {
11804
+ const controlsInput = this.controls();
11805
+ if (!controlsInput) {
11806
+ return true;
11807
+ }
11808
+ const presetDef = typeof controlsInput === 'string' ? CONTROL_PRESETS[controlsInput] : controlsInput;
11809
+ const dashboardControls = presetDef?.[GLOBAL_CONTEXT_DISPLAY_MODE.DASHBOARD];
11810
+ if (!dashboardControls) {
11811
+ return true;
11812
+ }
11813
+ const refreshOption = this.config()?.refreshOption || REFRESH_OPTION.LIVE;
11814
+ return applyModeConstraints(dashboardControls, refreshOption).length > 0;
11815
+ }, ...(ngDevMode ? [{ debugName: "hasActiveControls" }] : []));
11764
11816
  this.syncExternalLinkState();
11765
11817
  this.subscribeToGlobalContext();
11766
11818
  this.registerWithGlobalContext();
@@ -11879,23 +11931,25 @@ class GlobalContextConnectorComponent {
11879
11931
  }
11880
11932
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: GlobalContextConnectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11881
11933
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: GlobalContextConnectorComponent, isStandalone: true, selector: "c8y-global-context-connector", inputs: { controls: { classPropertyName: "controls", publicName: "controls", isSignal: true, isRequired: false, transformFunction: null }, config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: true, transformFunction: null }, isLoading: { classPropertyName: "isLoading", publicName: "isLoading", isSignal: true, isRequired: false, transformFunction: null }, dashboardChild: { classPropertyName: "dashboardChild", publicName: "dashboardChild", isSignal: true, isRequired: true, transformFunction: null }, linked: { classPropertyName: "linked", publicName: "linked", isSignal: true, isRequired: false, transformFunction: null }, emitRefresh: { classPropertyName: "emitRefresh", publicName: "emitRefresh", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { configChange: "configChange", refresh: "refresh", linkedChange: "linkedChange" }, ngImport: i0, template: `
11882
- <c8y-link-buttons
11883
- [dashboardChild]="dashboardChild()"
11884
- [isLinked]="isLinked()"
11885
- [controls]="controls()"
11886
- [config]="config()"
11887
- (toggle)="onLinkToggle($event)"
11888
- ></c8y-link-buttons>
11889
-
11890
- @if (!isLinked()) {
11891
- <c8y-context-controls
11934
+ @if (hasActiveControls()) {
11935
+ <c8y-link-buttons
11936
+ [dashboardChild]="dashboardChild()"
11937
+ [isLinked]="isLinked()"
11892
11938
  [controls]="controls()"
11893
- displayMode="dashboard"
11894
11939
  [config]="config()"
11895
- [isLoading]="isLoading()"
11896
- (configChange)="onLocalChange($event)"
11897
- (refresh)="onLocalRefresh()"
11898
- ></c8y-context-controls>
11940
+ (toggle)="onLinkToggle($event)"
11941
+ ></c8y-link-buttons>
11942
+
11943
+ @if (!isLinked()) {
11944
+ <c8y-context-controls
11945
+ [controls]="controls()"
11946
+ displayMode="dashboard"
11947
+ [config]="config()"
11948
+ [isLoading]="isLoading()"
11949
+ (configChange)="onLocalChange($event)"
11950
+ (refresh)="onLocalRefresh()"
11951
+ ></c8y-context-controls>
11952
+ }
11899
11953
  }
11900
11954
  `, isInline: true, dependencies: [{ kind: "component", type: ContextControlsComponent, selector: "c8y-context-controls", inputs: ["controls", "displayMode", "config", "isLoading", "emitRefresh"], outputs: ["configChange", "refresh"] }, { kind: "component", type: LinkButtonsComponent, selector: "c8y-link-buttons", inputs: ["dashboardChild", "isLinked", "controls", "config"], outputs: ["toggle"] }] }); }
11901
11955
  }
@@ -11906,23 +11960,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
11906
11960
  standalone: true,
11907
11961
  imports: [ContextControlsComponent, LinkButtonsComponent],
11908
11962
  template: `
11909
- <c8y-link-buttons
11910
- [dashboardChild]="dashboardChild()"
11911
- [isLinked]="isLinked()"
11912
- [controls]="controls()"
11913
- [config]="config()"
11914
- (toggle)="onLinkToggle($event)"
11915
- ></c8y-link-buttons>
11916
-
11917
- @if (!isLinked()) {
11918
- <c8y-context-controls
11963
+ @if (hasActiveControls()) {
11964
+ <c8y-link-buttons
11965
+ [dashboardChild]="dashboardChild()"
11966
+ [isLinked]="isLinked()"
11919
11967
  [controls]="controls()"
11920
- displayMode="dashboard"
11921
11968
  [config]="config()"
11922
- [isLoading]="isLoading()"
11923
- (configChange)="onLocalChange($event)"
11924
- (refresh)="onLocalRefresh()"
11925
- ></c8y-context-controls>
11969
+ (toggle)="onLinkToggle($event)"
11970
+ ></c8y-link-buttons>
11971
+
11972
+ @if (!isLinked()) {
11973
+ <c8y-context-controls
11974
+ [controls]="controls()"
11975
+ displayMode="dashboard"
11976
+ [config]="config()"
11977
+ [isLoading]="isLoading()"
11978
+ (configChange)="onLocalChange($event)"
11979
+ (refresh)="onLocalRefresh()"
11980
+ ></c8y-context-controls>
11981
+ }
11926
11982
  }
11927
11983
  `
11928
11984
  }]
@@ -11995,5 +12051,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImpo
11995
12051
  * Generated bundle index. Do not edit.
11996
12052
  */
11997
12053
 
11998
- export { AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_ICON_TYPE, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, AggregationDisplayComponent, AggregationPickerComponent, AggregationPickerService, AggregationValidationService, AutoRefreshControlComponent, CONTEXT_FEATURE, CONTROL_PRESETS, ConfigContextSelectorComponent, ConfigModeControls, ConfigModeControls as ConfigModeControlsComponent, ConfigurationCollapseComponent, ConfigurationControlsComponent, ContextControlsComponent$1 as ContextControlsComponent, DEFAULT_WIDGET_TEMPLATE, DateContextQueryParamNames, DateTimeContextPickerComponent, DateTimeContextPickerService, GLOBAL_CONTEXT_DASHBOARD_PATHS, GLOBAL_CONTEXT_DEFAULTS, GLOBAL_CONTEXT_DISPLAY_MODE, GLOBAL_CONTEXT_EVENTS, GLOBAL_CONTEXT_SOURCE, GlobalContextComponent, GlobalContextConfigComponent, GlobalContextConnectorComponent, GlobalContextEventService, GlobalContextFormService, GlobalContextInlineComponent, GlobalContextLinkControlsComponent, GlobalContextModule, GlobalContextNavigationService, GlobalContextQueryService, GlobalContextService, GlobalContextUtilsService, GlobalContextValidationService, GlobalContextWidgetConfigComponent, GlobalContextWidgetWrapperComponent, HistoryModeConfigurationControlsComponent, INTERVALS, INTERVAL_TITLES, IntervalPickerComponent, LINK_BTNS_CONFIG, LinkButtonsComponent, LiveModeConfigurationControlsComponent, LocalControlsComponent, PRESET_NAME, PreviewControlsComponent, REFRESH_OPTION, ROUTE_PATHS, RealtimeControlComponent, TIME_DURATION, TIME_INTERVAL, TIME_SPAN_MS, TIMING, TimeRangeDisplayComponent, UI_PRIORITIES, WIDGET_DISPLAY_MODE, WIDGET_FEATURE_MAP, WidgetConfigMigrationService, WidgetControlService, applyModeConstraints, buildAggregationExtensions, buildBaselineControls, buildWidgetControlsFromPresets, controlsToSettings, createAutoRefreshHandlers, createResult, defineWidgetControls, getSupportedModes, guards, isAggregationLinked, isAggregationUnlinked, isAutoRefreshDisabled, isAutoRefreshEnabled, isConfig, isDashboard, isDateTimeContextLinked, isDateTimeContextUnlinked, isHistory, isLive, isViewAndConfig, mergePartialControls, resolveWidgetControlsInput, setAutoRefreshControlsVisibility, setAutoRefreshLinks, updateBothSettings };
12054
+ export { AGGREGATIONS, AGGREGATION_ICONS, AGGREGATION_ICON_TYPE, AGGREGATION_LABELS, AGGREGATION_LIMITS, AGGREGATION_TEXTS, AGGREGATION_VALUES, AGGREGATION_VALUES_ARR, AggregationDisplayComponent, AggregationPickerComponent, AggregationPickerService, AggregationValidationService, AutoRefreshControlComponent, CONTEXT_FEATURE, CONTROL_PRESETS, ConfigContextSelectorComponent, ConfigModeControls, ConfigModeControls as ConfigModeControlsComponent, ConfigurationCollapseComponent, ConfigurationControlsComponent, ContextControlsComponent$1 as ContextControlsComponent, DEFAULT_WIDGET_TEMPLATE, DateContextQueryParamNames, DateTimeContextPickerComponent, DateTimeContextPickerService, DateTimeContextUtil, GLOBAL_CONTEXT_DASHBOARD_PATHS, GLOBAL_CONTEXT_DEFAULTS, GLOBAL_CONTEXT_DISPLAY_MODE, GLOBAL_CONTEXT_EVENTS, GLOBAL_CONTEXT_SOURCE, GlobalContextComponent, GlobalContextConfigComponent, GlobalContextConnectorComponent, GlobalContextEventService, GlobalContextFormService, GlobalContextInlineComponent, GlobalContextLinkControlsComponent, GlobalContextModule, GlobalContextNavigationService, GlobalContextQueryService, GlobalContextService, GlobalContextUtilsService, GlobalContextValidationService, GlobalContextWidgetConfigComponent, GlobalContextWidgetWrapperComponent, HistoryModeConfigurationControlsComponent, INTERVALS, INTERVAL_TITLES, IntervalPickerComponent, LINK_BTNS_CONFIG, LinkButtonsComponent, LiveModeConfigurationControlsComponent, LocalControlsComponent, PRESET_NAME, PreviewControlsComponent, REFRESH_OPTION, ROUTE_PATHS, RealtimeControlComponent, TIME_DURATION, TIME_INTERVAL, TIME_SPAN_MS, TIMING, TimeRangeDisplayComponent, UI_PRIORITIES, WIDGET_DISPLAY_MODE, WIDGET_FEATURE_MAP, WidgetConfigMigrationService, WidgetControlService, applyModeConstraints, buildAggregationExtensions, buildBaselineControls, buildWidgetControlsFromPresets, controlsToSettings, createAutoRefreshHandlers, createResult, defineWidgetControls, getSupportedModes, guards, isAggregationLinked, isAggregationUnlinked, isAutoRefreshDisabled, isAutoRefreshEnabled, isConfig, isDashboard, isDateTimeContextLinked, isDateTimeContextUnlinked, isHistory, isLive, isViewAndConfig, mergePartialControls, resolveWidgetControlsInput, setAutoRefreshControlsVisibility, setAutoRefreshLinks, updateBothSettings };
11999
12055
  //# sourceMappingURL=c8y-ngx-components-global-context.mjs.map