@c8y/ngx-components 1022.13.0 → 1022.16.2

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 (390) hide show
  1. package/alarms/alarms.helper.d.ts.map +1 -1
  2. package/auth-configuration/sso-configuration/templates/template.component.d.ts +1 -1
  3. package/core/asset-property/asset-property.model.d.ts +2 -0
  4. package/core/asset-property/asset-property.model.d.ts.map +1 -1
  5. package/core/authentication/authentication.module.d.ts.map +1 -1
  6. package/core/dashboard/widget-auto-refresh-context/auto-refresh-control.component.d.ts.map +1 -1
  7. package/core/drop-area/drop-area.component.d.ts +2 -0
  8. package/core/drop-area/drop-area.component.d.ts.map +1 -1
  9. package/core/dynamic-forms/file/file.type.component.d.ts.map +1 -1
  10. package/core/modal/modal.module.d.ts.map +1 -1
  11. package/core/plugins/plugins.module.d.ts.map +1 -1
  12. package/core/plugins/plugins.service.d.ts +1 -2
  13. package/core/plugins/plugins.service.d.ts.map +1 -1
  14. package/core/select/select.component.d.ts.map +1 -1
  15. package/device-list/devices.breadcrumb-factory.d.ts +1 -0
  16. package/device-list/devices.breadcrumb-factory.d.ts.map +1 -1
  17. package/device-parameters/device-parameter-details.component.d.ts +22 -0
  18. package/device-parameters/device-parameter-details.component.d.ts.map +1 -0
  19. package/device-parameters/device-parameter-value.component.d.ts +12 -0
  20. package/device-parameters/device-parameter-value.component.d.ts.map +1 -0
  21. package/device-parameters/device-parameters-list.component.d.ts +2 -1
  22. package/device-parameters/device-parameters-list.component.d.ts.map +1 -1
  23. package/device-parameters/index.d.ts +5 -0
  24. package/device-parameters/index.d.ts.map +1 -1
  25. package/device-parameters/parameter-type-cell-renderer.components.d.ts +8 -0
  26. package/device-parameters/parameter-type-cell-renderer.components.d.ts.map +1 -0
  27. package/device-profile/add-device-profile.component.d.ts +1 -1
  28. package/device-profile/add-device-profile.component.d.ts.map +1 -1
  29. package/device-profile/device-profile-list.component.d.ts +1 -1
  30. package/device-profile/device-profile-list.component.d.ts.map +1 -1
  31. package/device-profile/device-profile.component.d.ts +1 -1
  32. package/device-profile/device-profile.component.d.ts.map +1 -1
  33. package/device-profile/device-profile.module.d.ts +17 -17
  34. package/device-profile/device-profile.module.d.ts.map +1 -1
  35. package/device-profile/device-tab-profile/device-profile-item-list.component.d.ts +1 -1
  36. package/device-profile/device-tab-profile/device-profile-item-list.component.d.ts.map +1 -1
  37. package/device-profile/device-tab-profile/device-tab-profile-detail.component.d.ts +1 -1
  38. package/device-profile/device-tab-profile/device-tab-profile-detail.component.d.ts.map +1 -1
  39. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts +1 -1
  40. package/device-profile/device-tab-profile/device-tab-profile.component.d.ts.map +1 -1
  41. package/device-profile/select-configuration-modal.component.d.ts +1 -1
  42. package/device-profile/select-configuration-modal.component.d.ts.map +1 -1
  43. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +4 -2
  44. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  45. package/device-shell/command-templates/command-templates.component.d.ts +1 -1
  46. package/device-shell/command-templates/command-templates.component.d.ts.map +1 -1
  47. package/device-shell/command-templates/command-templates.directive.d.ts +1 -1
  48. package/device-shell/command-templates/command-templates.directive.d.ts.map +1 -1
  49. package/device-shell/command-templates/command-templates.module.d.ts +1 -1
  50. package/device-shell/shell/shell.component.d.ts +1 -1
  51. package/device-shell/shell/shell.component.d.ts.map +1 -1
  52. package/device-shell/shell/shell.module.d.ts +7 -7
  53. package/diagnostics/diagnostics.component.d.ts +1 -1
  54. package/diagnostics/diagnostics.component.d.ts.map +1 -1
  55. package/diagnostics/diagnostics.module.d.ts +8 -8
  56. package/diagnostics/diagnostics.module.d.ts.map +1 -1
  57. package/events/c8y-ngx-components-events.d.ts.map +1 -0
  58. package/events/events-timeline/c8y-ngx-components-events-events-timeline.d.ts.map +1 -0
  59. package/events/events-timeline/events-timeline.component.d.ts +19 -0
  60. package/events/events-timeline/events-timeline.component.d.ts.map +1 -0
  61. package/events/events-timeline/index.d.ts +2 -0
  62. package/events/events-timeline/index.d.ts.map +1 -0
  63. package/events/events.model.d.ts +6 -0
  64. package/events/events.model.d.ts.map +1 -0
  65. package/events/events.service.d.ts +10 -0
  66. package/events/events.service.d.ts.map +1 -0
  67. package/events/index.d.ts +3 -0
  68. package/events/index.d.ts.map +1 -0
  69. package/fesm2022/c8y-ngx-components-alarms.mjs +2 -1
  70. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  71. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +2 -2
  72. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  73. package/fesm2022/c8y-ngx-components-device-list.mjs +10 -3
  74. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  75. package/fesm2022/c8y-ngx-components-device-parameters.mjs +110 -13
  76. package/fesm2022/c8y-ngx-components-device-parameters.mjs.map +1 -1
  77. package/fesm2022/c8y-ngx-components-device-profile.mjs +126 -49
  78. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  79. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +44 -12
  80. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  81. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -22
  82. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-diagnostics.mjs +36 -19
  84. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  85. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +45 -0
  86. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -0
  87. package/fesm2022/c8y-ngx-components-events.mjs +44 -0
  88. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -0
  89. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +8 -14
  90. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  91. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +49 -49
  92. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +27 -14
  94. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +27 -33
  96. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  97. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +51 -39
  98. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  99. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +10 -8
  100. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  101. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +16 -11
  102. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  103. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +8 -11
  104. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  105. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +25 -21
  106. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  107. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -9
  108. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  109. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +31 -31
  110. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  111. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +3 -3
  112. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +33 -13
  114. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +19 -13
  116. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +40 -36
  118. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +60 -41
  120. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  121. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +122 -109
  122. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  123. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +66 -41
  124. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  125. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +11 -16
  126. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  127. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +212 -83
  128. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  129. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +113 -54
  130. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  131. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +130 -62
  132. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  133. package/fesm2022/c8y-ngx-components-repository-shared.mjs +37 -28
  134. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  135. package/fesm2022/c8y-ngx-components-repository-software.mjs +156 -83
  136. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  137. package/fesm2022/c8y-ngx-components-services.mjs +32 -19
  138. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  139. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +66 -29
  140. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  141. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +16 -3
  142. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  143. package/fesm2022/c8y-ngx-components-upgrade.mjs +1 -14
  144. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  145. package/fesm2022/c8y-ngx-components-user-roles.mjs +8 -3
  146. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  147. package/fesm2022/c8y-ngx-components.mjs +864 -859
  148. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  149. package/locales/de.po +34 -17
  150. package/locales/es.po +20 -2
  151. package/locales/fr.po +20 -2
  152. package/locales/ja_JP.po +22 -4
  153. package/locales/ko.po +20 -2
  154. package/locales/locales.pot +19 -1
  155. package/locales/nl.po +20 -2
  156. package/locales/pl.po +20 -2
  157. package/locales/pt_BR.po +20 -2
  158. package/locales/zh_CN.po +21 -3
  159. package/locales/zh_TW.po +20 -2
  160. package/operations/bulk-operation-from-single/bulk-operation-from-single.component.d.ts +1 -1
  161. package/operations/bulk-operation-from-single/bulk-operation-from-single.component.d.ts.map +1 -1
  162. package/operations/bulk-operation-from-single/bulk-operation-from-single.module.d.ts +3 -5
  163. package/operations/bulk-operation-from-single/bulk-operation-from-single.module.d.ts.map +1 -1
  164. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts +1 -1
  165. package/operations/bulk-operation-list-item/bulk-operation-list-item.component.d.ts.map +1 -1
  166. package/operations/bulk-operation-list-item/bulk-operation-list-item.module.d.ts +1 -7
  167. package/operations/bulk-operation-list-item/bulk-operation-list-item.module.d.ts.map +1 -1
  168. package/operations/bulk-operation-list-item/bulk-operation-wrapper.component.d.ts +1 -1
  169. package/operations/bulk-operation-list-item/bulk-operation-wrapper.component.d.ts.map +1 -1
  170. package/operations/bulk-operation-list-item/modal-body-host.directive.d.ts +1 -1
  171. package/operations/bulk-operation-list-item/modal-body-host.directive.d.ts.map +1 -1
  172. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts +1 -1
  173. package/operations/bulk-operation-list-item/modals/bulk-operations-reschedule-modal.component.d.ts.map +1 -1
  174. package/operations/bulk-operation-scheduler/bulk-operation-scheduler.module.d.ts +6 -6
  175. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts +1 -1
  176. package/operations/bulk-operation-scheduler/operation-scheduler.component.d.ts.map +1 -1
  177. package/operations/bulk-operation-stepper/base-stepper.component.d.ts +1 -1
  178. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts +1 -1
  179. package/operations/bulk-operation-stepper/bulk-operation-stepper.component.d.ts.map +1 -1
  180. package/operations/bulk-operation-stepper/bulk-operation-stepper.module.d.ts +1 -5
  181. package/operations/bulk-operation-stepper/bulk-operation-stepper.module.d.ts.map +1 -1
  182. package/operations/bulk-operation-stepper/custom-step.directive.d.ts +1 -1
  183. package/operations/bulk-operation-stepper/custom-step.directive.d.ts.map +1 -1
  184. package/operations/bulk-operations-list/bulk-operations-list.component.d.ts +1 -1
  185. package/operations/bulk-operations-list/bulk-operations-list.component.d.ts.map +1 -1
  186. package/operations/bulk-operations-list/bulk-operations-list.module.d.ts +4 -10
  187. package/operations/bulk-operations-list/bulk-operations-list.module.d.ts.map +1 -1
  188. package/operations/bulk-operations-list/modals/bulk-operations-modal.component.d.ts +1 -1
  189. package/operations/bulk-operations-list/modals/bulk-operations-modal.component.d.ts.map +1 -1
  190. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.component.d.ts +1 -1
  191. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.component.d.ts.map +1 -1
  192. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.module.d.ts +3 -4
  193. package/operations/bulk-operations-stepper-container/bulk-operations-stepper-container.module.d.ts.map +1 -1
  194. package/operations/create-bulk-operation-details/create-bulk-operation-details.component.d.ts +1 -1
  195. package/operations/create-bulk-operation-details/create-bulk-operation-details.component.d.ts.map +1 -1
  196. package/operations/create-bulk-operation-details/create-bulk-operation-details.module.d.ts +1 -4
  197. package/operations/create-bulk-operation-details/create-bulk-operation-details.module.d.ts.map +1 -1
  198. package/operations/device-selector/device-selector.component.d.ts +1 -1
  199. package/operations/device-selector/device-selector.component.d.ts.map +1 -1
  200. package/operations/device-selector/device-selector.module.d.ts +1 -3
  201. package/operations/device-selector/device-selector.module.d.ts.map +1 -1
  202. package/operations/operation-details/operation-details-modal.component.d.ts +1 -1
  203. package/operations/operation-details/operation-details-modal.component.d.ts.map +1 -1
  204. package/operations/operation-details/operation-details.component.d.ts +1 -1
  205. package/operations/operation-details/operation-details.component.d.ts.map +1 -1
  206. package/operations/operation-details/operation-details.module.d.ts +1 -7
  207. package/operations/operation-details/operation-details.module.d.ts.map +1 -1
  208. package/operations/operation-details/operation-details.service.d.ts.map +1 -1
  209. package/operations/operation-summary/operation-summary.component.d.ts +1 -1
  210. package/operations/operation-summary/operation-summary.component.d.ts.map +1 -1
  211. package/operations/operation-summary/operation-summary.module.d.ts +1 -2
  212. package/operations/operation-summary/operation-summary.module.d.ts.map +1 -1
  213. package/operations/operations-list/operations-list-item.component.d.ts.map +1 -1
  214. package/operations/operations-list/operations-list.component.d.ts.map +1 -1
  215. package/operations/operations-list/operations-list.service.d.ts +1 -1
  216. package/operations/operations-list/operations-list.service.d.ts.map +1 -1
  217. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts +1 -1
  218. package/operations/operations-list-item-details/operation-details-tabs.component.d.ts.map +1 -1
  219. package/operations/operations-list-item-details/operation-details.component.d.ts +1 -1
  220. package/operations/operations-list-item-details/operation-details.component.d.ts.map +1 -1
  221. package/operations/operations-list-item-details/operations-list-item-details.module.d.ts +1 -6
  222. package/operations/operations-list-item-details/operations-list-item-details.module.d.ts.map +1 -1
  223. package/operations/operations-timeline/operations-timeline.component.d.ts +5 -5
  224. package/operations/operations-timeline/operations-timeline.component.d.ts.map +1 -1
  225. package/operations/operations-timeline/operations-timeline.module.d.ts +4 -6
  226. package/operations/operations-timeline/operations-timeline.module.d.ts.map +1 -1
  227. package/operations/status-filter/status-filter.component.d.ts +1 -1
  228. package/operations/status-filter/status-filter.component.d.ts.map +1 -1
  229. package/operations/status-filter/status-filter.module.d.ts +1 -4
  230. package/operations/status-filter/status-filter.module.d.ts.map +1 -1
  231. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts +1 -1
  232. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.component.d.ts.map +1 -1
  233. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.d.ts +1 -6
  234. package/operations/stepper-bulk-type-configuration/stepper-bulk-type-configuration.module.d.ts.map +1 -1
  235. package/operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.d.ts +1 -1
  236. package/operations/stepper-bulk-type-device-profile/confirm-device-profile-selection-step.component.d.ts.map +1 -1
  237. package/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.d.ts +1 -1
  238. package/operations/stepper-bulk-type-device-profile/select-device-profile-step.component.d.ts.map +1 -1
  239. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts +1 -1
  240. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.component.d.ts.map +1 -1
  241. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.d.ts +1 -6
  242. package/operations/stepper-bulk-type-device-profile/stepper-bulk-type-device-profile.module.d.ts.map +1 -1
  243. package/operations/stepper-bulk-type-firmware/select-firmware.component.d.ts +1 -1
  244. package/operations/stepper-bulk-type-firmware/select-firmware.component.d.ts.map +1 -1
  245. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts +1 -1
  246. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.component.d.ts.map +1 -1
  247. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.module.d.ts +1 -6
  248. package/operations/stepper-bulk-type-firmware/stepper-bulk-type-firmware.module.d.ts.map +1 -1
  249. package/operations/stepper-bulk-type-firmware/version-or-patch.component.d.ts +1 -1
  250. package/operations/stepper-bulk-type-firmware/version-or-patch.component.d.ts.map +1 -1
  251. package/operations/stepper-bulk-type-software/confirm-software-selection-step.component.d.ts +1 -1
  252. package/operations/stepper-bulk-type-software/confirm-software-selection-step.component.d.ts.map +1 -1
  253. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts +1 -1
  254. package/operations/stepper-bulk-type-software/select-software-step.component.d.ts.map +1 -1
  255. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts +1 -1
  256. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.component.d.ts.map +1 -1
  257. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.module.d.ts +1 -6
  258. package/operations/stepper-bulk-type-software/stepper-bulk-type-software.module.d.ts.map +1 -1
  259. package/operations/stepper-frames/preview-block.directive.d.ts +1 -1
  260. package/operations/stepper-frames/preview-block.directive.d.ts.map +1 -1
  261. package/operations/stepper-frames/preview-selection-frame.component.d.ts +1 -1
  262. package/operations/stepper-frames/preview-selection-frame.component.d.ts.map +1 -1
  263. package/operations/stepper-frames/select-step-frame.component.d.ts +1 -1
  264. package/operations/stepper-frames/select-step-frame.component.d.ts.map +1 -1
  265. package/operations/stepper-frames/stepper-frames.modules.d.ts +1 -2
  266. package/operations/stepper-frames/stepper-frames.modules.d.ts.map +1 -1
  267. package/package.json +1 -1
  268. package/protocol-opcua/opcua-address-space-detail.component.d.ts +1 -1
  269. package/protocol-opcua/opcua-address-space-detail.component.d.ts.map +1 -1
  270. package/protocol-opcua/opcua-address-space-tree.component.d.ts +1 -1
  271. package/protocol-opcua/opcua-address-space-tree.component.d.ts.map +1 -1
  272. package/protocol-opcua/opcua-address-space.component.d.ts +1 -1
  273. package/protocol-opcua/opcua-address-space.component.d.ts.map +1 -1
  274. package/protocol-opcua/opcua-auto-apply-settings.component.d.ts +1 -1
  275. package/protocol-opcua/opcua-auto-apply-settings.component.d.ts.map +1 -1
  276. package/protocol-opcua/opcua-device-protocol-browse-path-validation.directive.d.ts +1 -1
  277. package/protocol-opcua/opcua-device-protocol-browse-path-validation.directive.d.ts.map +1 -1
  278. package/protocol-opcua/opcua-device-protocol-data-reporting.component.d.ts +1 -1
  279. package/protocol-opcua/opcua-device-protocol-data-reporting.component.d.ts.map +1 -1
  280. package/protocol-opcua/opcua-device-protocol-description.component.d.ts +1 -1
  281. package/protocol-opcua/opcua-device-protocol-description.component.d.ts.map +1 -1
  282. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts +1 -1
  283. package/protocol-opcua/opcua-device-protocol-detail.component.d.ts.map +1 -1
  284. package/protocol-opcua/opcua-device-protocol-mapping.component.d.ts +1 -1
  285. package/protocol-opcua/opcua-device-protocol-mapping.component.d.ts.map +1 -1
  286. package/protocol-opcua/opcua-device-protocol-object-mapping-status-icon.component.d.ts +1 -1
  287. package/protocol-opcua/opcua-device-protocol-object-mapping-status-icon.component.d.ts.map +1 -1
  288. package/protocol-opcua/opcua-protocol.module.d.ts +26 -26
  289. package/protocol-opcua/opcua-protocol.module.d.ts.map +1 -1
  290. package/protocol-opcua/opcua-server-config.component.d.ts +1 -1
  291. package/protocol-opcua/opcua-server-config.component.d.ts.map +1 -1
  292. package/protocol-opcua/opcua-server-list.component.d.ts +1 -1
  293. package/protocol-opcua/opcua-server-list.component.d.ts.map +1 -1
  294. package/protocol-opcua/opcua-servers.component.d.ts +1 -1
  295. package/protocol-opcua/opcua-servers.component.d.ts.map +1 -1
  296. package/repository/configuration/device-tab/configuration-filter.pipe.d.ts +1 -1
  297. package/repository/configuration/device-tab/configuration-filter.pipe.d.ts.map +1 -1
  298. package/repository/configuration/device-tab/configuration-preview.component.d.ts +1 -1
  299. package/repository/configuration/device-tab/configuration-preview.component.d.ts.map +1 -1
  300. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts +11 -13
  301. package/repository/configuration/device-tab/configuration-repository-device-tab.module.d.ts.map +1 -1
  302. package/repository/configuration/device-tab/device-configuration-list.component.d.ts +1 -1
  303. package/repository/configuration/device-tab/device-configuration-list.component.d.ts.map +1 -1
  304. package/repository/configuration/device-tab/device-configuration.component.d.ts +1 -1
  305. package/repository/configuration/device-tab/device-configuration.component.d.ts.map +1 -1
  306. package/repository/configuration/device-tab/save-to-repository.component.d.ts +1 -1
  307. package/repository/configuration/device-tab/save-to-repository.component.d.ts.map +1 -1
  308. package/repository/configuration/device-tab/source-code-preview.component.d.ts +1 -1
  309. package/repository/configuration/device-tab/source-code-preview.component.d.ts.map +1 -1
  310. package/repository/configuration/device-tab/text-based-configuration.component.d.ts +1 -1
  311. package/repository/configuration/device-tab/text-based-configuration.component.d.ts.map +1 -1
  312. package/repository/configuration/list/configuration-detail.component.d.ts +1 -1
  313. package/repository/configuration/list/configuration-detail.component.d.ts.map +1 -1
  314. package/repository/configuration/list/configuration-list.component.d.ts +1 -1
  315. package/repository/configuration/list/configuration-list.component.d.ts.map +1 -1
  316. package/repository/configuration/list/configuration-repository-list.module.d.ts +4 -7
  317. package/repository/configuration/list/configuration-repository-list.module.d.ts.map +1 -1
  318. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts +1 -1
  319. package/repository/firmware/device-tab/firmware-device-tab.component.d.ts.map +1 -1
  320. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts +4 -6
  321. package/repository/firmware/device-tab/firmware-repository-device-tab.module.d.ts.map +1 -1
  322. package/repository/firmware/list/add-firmware-modal.component.d.ts +1 -1
  323. package/repository/firmware/list/add-firmware-modal.component.d.ts.map +1 -1
  324. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts +1 -1
  325. package/repository/firmware/list/add-firmware-patch-modal.component.d.ts.map +1 -1
  326. package/repository/firmware/list/firmware-details.component.d.ts +1 -1
  327. package/repository/firmware/list/firmware-details.component.d.ts.map +1 -1
  328. package/repository/firmware/list/firmware-list.component.d.ts +1 -1
  329. package/repository/firmware/list/firmware-list.component.d.ts.map +1 -1
  330. package/repository/firmware/list/firmware-repository-list.module.d.ts +6 -11
  331. package/repository/firmware/list/firmware-repository-list.module.d.ts.map +1 -1
  332. package/repository/shared/file-download/file-download.component.d.ts +1 -1
  333. package/repository/shared/file-download/file-download.component.d.ts.map +1 -1
  334. package/repository/shared/select-modal/repository-select-modal.component.d.ts +1 -1
  335. package/repository/shared/select-modal/repository-select-modal.component.d.ts.map +1 -1
  336. package/repository/shared/shared-repository.module.d.ts +1 -4
  337. package/repository/shared/shared-repository.module.d.ts.map +1 -1
  338. package/repository/shared/software-type/software-type.component.d.ts +1 -1
  339. package/repository/shared/software-type/software-type.component.d.ts.map +1 -1
  340. package/repository/software/device-tab/device-software-changes.component.d.ts +1 -1
  341. package/repository/software/device-tab/device-software-changes.component.d.ts.map +1 -1
  342. package/repository/software/device-tab/device-software-list.component.d.ts +1 -1
  343. package/repository/software/device-tab/device-software-list.component.d.ts.map +1 -1
  344. package/repository/software/device-tab/installed-software.component.d.ts +1 -1
  345. package/repository/software/device-tab/installed-software.component.d.ts.map +1 -1
  346. package/repository/software/device-tab/software-device-tab.component.d.ts +1 -1
  347. package/repository/software/device-tab/software-device-tab.component.d.ts.map +1 -1
  348. package/repository/software/device-tab/software-repository-device-tab.module.d.ts +7 -11
  349. package/repository/software/device-tab/software-repository-device-tab.module.d.ts.map +1 -1
  350. package/repository/software/list/add-software-modal.component.d.ts +1 -1
  351. package/repository/software/list/add-software-modal.component.d.ts.map +1 -1
  352. package/repository/software/list/software-details.component.d.ts +1 -1
  353. package/repository/software/list/software-details.component.d.ts.map +1 -1
  354. package/repository/software/list/software-list.component.d.ts +1 -1
  355. package/repository/software/list/software-list.component.d.ts.map +1 -1
  356. package/repository/software/list/software-repository-list.module.d.ts +5 -11
  357. package/repository/software/list/software-repository-list.module.d.ts.map +1 -1
  358. package/services/services-device-tab/columns/last-updated-date.cell-renderer.component.d.ts +1 -1
  359. package/services/services-device-tab/columns/last-updated-date.cell-renderer.component.d.ts.map +1 -1
  360. package/services/services-device-tab/columns/name.cell-renderer.component.d.ts +1 -1
  361. package/services/services-device-tab/columns/name.cell-renderer.component.d.ts.map +1 -1
  362. package/services/services-device-tab/columns/status.cell-renderer.component.d.ts +1 -1
  363. package/services/services-device-tab/columns/status.cell-renderer.component.d.ts.map +1 -1
  364. package/services/services-device-tab/services-device-tab.component.d.ts +1 -1
  365. package/services/services-device-tab/services-device-tab.component.d.ts.map +1 -1
  366. package/services/services-device-tab/services-device-tab.module.d.ts +1 -4
  367. package/services/services-device-tab/services-device-tab.module.d.ts.map +1 -1
  368. package/trusted-certificates/crl/crl-settings.component.d.ts +5 -1
  369. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
  370. package/trusted-certificates/factories/tabs.factory.d.ts +3 -2
  371. package/trusted-certificates/factories/tabs.factory.d.ts.map +1 -1
  372. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts +2 -0
  373. package/trusted-certificates/factories/trusted-certificates-navigation.factory.d.ts.map +1 -1
  374. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +5 -1
  375. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  376. package/trusted-certificates/trusted-certificates.guard.d.ts +11 -0
  377. package/trusted-certificates/trusted-certificates.guard.d.ts.map +1 -0
  378. package/upgrade/index.d.ts +0 -1
  379. package/upgrade/index.d.ts.map +1 -1
  380. package/upgrade/upgrade.module.d.ts.map +1 -1
  381. package/upgrade/upgraded-services/index.d.ts +1 -0
  382. package/upgrade/upgraded-services/index.d.ts.map +1 -1
  383. package/upgrade/upgraded-services/smart-rules.service.d.ts.map +1 -0
  384. package/upgrade/upgraded-services/upgraded-services.module.d.ts.map +1 -1
  385. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts +2 -1
  386. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts.map +1 -1
  387. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts +2 -1
  388. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
  389. package/upgrade/smart-rules.service.d.ts.map +0 -1
  390. /package/upgrade/{smart-rules.service.d.ts → upgraded-services/smart-rules.service.d.ts} +0 -0
@@ -1,16 +1,13 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Input, Component, NgModule } from '@angular/core';
3
3
  import * as i1 from '@c8y/ngx-components';
4
- import { CoreModule } from '@c8y/ngx-components';
4
+ import { EmptyStateComponent, ListGroupComponent, ForOfDirective, ListItemTimelineComponent, ListItemComponent, ListItemIconComponent, IconDirective, ListItemBodyComponent, ListItemCollapseComponent, C8yTranslateDirective, DatePipe, C8yTranslatePipe, HumanizePipe } from '@c8y/ngx-components';
5
5
  import * as i2 from '@c8y/ngx-components/operations/shared';
6
- import { OPERATION_STATUS_OPTIONS_MAP, OperationsSharedModule } from '@c8y/ngx-components/operations/shared';
6
+ import { OPERATION_STATUS_OPTIONS_MAP } from '@c8y/ngx-components/operations/shared';
7
7
  import { pipe } from 'rxjs';
8
8
  import { tap } from 'rxjs/operators';
9
- import * as i3 from '@angular/common';
10
- import { CommonModule } from '@angular/common';
11
- import * as i4 from 'ngx-bootstrap/tooltip';
12
- import { TooltipModule } from 'ngx-bootstrap/tooltip';
13
- import { CollapseModule } from 'ngx-bootstrap/collapse';
9
+ import { TooltipDirective } from 'ngx-bootstrap/tooltip';
10
+ import { NgClass, NgIf, NgTemplateOutlet, NgFor, JsonPipe, KeyValuePipe } from '@angular/common';
14
11
 
15
12
  class OperationsTimelineComponent {
16
13
  constructor(realtime, operationsService) {
@@ -22,11 +19,32 @@ class OperationsTimelineComponent {
22
19
  this.OPERATION_STATUS_OPTIONS_MAP = OPERATION_STATUS_OPTIONS_MAP;
23
20
  }
24
21
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsTimelineComponent, deps: [{ token: i1.OperationRealtimeService }, { token: i2.OperationsService }], target: i0.ɵɵFactoryTarget.Component }); }
25
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: OperationsTimelineComponent, isStandalone: false, selector: "c8y-operations-timeline", inputs: { operations: "operations", sourceId: "sourceId", filterPipe: "filterPipe", bodyTemplate: "bodyTemplate", footerTemplates: "footerTemplates", propertiesToHide: "propertiesToHide" }, ngImport: i0, template: "<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No recent operations found.' | translate\"\n ng-if=\"!operations?.data || !operations?.data?.length\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n<c8y-list-group>\n <c8y-li-timeline\n *c8yFor=\"\n let op of operations;\n pipe: filterPipe;\n realtime: realtime;\n realtimeOptions: { entityOrId: sourceId }\n \"\n >\n {{ op.creationTime | date: 'medium' }}\n <c8y-li\n #li\n (click)=\"li.toggleCollapsed()\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].icon\"\n [tooltip]=\"op.status | translate\"\n container=\"body\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].styleClass\"\n [delay]=\"500\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex text-break-word\">\n <div>\n {{ op.status | translate }}\n <br class=\"visible-xs visible-sm\" />\n <ng-container\n *ngIf=\"bodyTemplate; else defaultBody\"\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n <ng-template #defaultBody>\n <small>{{ op.description }}</small>\n </ng-template>\n </div>\n <div\n class=\"m-l-auto showOnHover\"\n *ngIf=\"op.status === 'PENDING'\"\n >\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.aria-label]=\"'Cancel operation' | translate\"\n tooltip=\"{{ 'Cancel operation' | translate }}\"\n placement=\"left\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"$event.stopPropagation(); operationsService.cancel(op)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let prop of operationsService.getStandardKeys(op) | keyvalue\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ prop.value | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ op[prop.key] | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let key of operationsService.getNonStandardKeys(op, propertiesToHide)\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ key | humanize | translate }}\n </label>\n <span class=\"m-l-auto text-code\">\n {{ op[key] | json }}\n </span>\n </li>\n </ul>\n <ng-container\n *ngFor=\"let footer of footerTemplates\"\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-li-timeline>\n</c8y-list-group>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i1.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i1.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i1.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i1.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i1.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i1.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i1.ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "component", type: i1.ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { 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: "pipe", type: i3.JsonPipe, name: "json" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i1.HumanizePipe, name: "humanize" }] }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: OperationsTimelineComponent, isStandalone: true, selector: "c8y-operations-timeline", inputs: { operations: "operations", sourceId: "sourceId", filterPipe: "filterPipe", bodyTemplate: "bodyTemplate", footerTemplates: "footerTemplates", propertiesToHide: "propertiesToHide" }, ngImport: i0, template: "<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No recent operations found.' | translate\"\n *ngIf=\"!operations?.data || !operations?.data?.length\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n<c8y-list-group>\n <c8y-li-timeline\n *c8yFor=\"\n let op of operations;\n pipe: filterPipe;\n realtime: realtime;\n realtimeOptions: { entityOrId: sourceId }\n \"\n >\n {{ op.creationTime | c8yDate: 'medium' }}\n <c8y-li\n #li\n (click)=\"li.toggleCollapsed()\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].icon\"\n [tooltip]=\"op.status | translate\"\n container=\"body\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].styleClass\"\n [delay]=\"500\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex text-break-word\">\n <div>\n {{ op.status | translate }}\n <br class=\"visible-xs visible-sm\" />\n <ng-container\n *ngIf=\"bodyTemplate; else defaultBody\"\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n <ng-template #defaultBody>\n <small>{{ op.description }}</small>\n </ng-template>\n </div>\n <div\n class=\"m-l-auto showOnHover\"\n *ngIf=\"op.status === 'PENDING'\"\n >\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.aria-label]=\"'Cancel operation' | translate\"\n tooltip=\"{{ 'Cancel operation' | translate }}\"\n placement=\"left\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"$event.stopPropagation(); operationsService.cancel(op)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let prop of operationsService.getStandardKeys(op) | keyvalue\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ prop.value | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ op[prop.key] | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let key of operationsService.getNonStandardKeys(op, propertiesToHide)\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ key | humanize | translate }}\n </label>\n <span class=\"m-l-auto text-code\">\n {{ op[key] | json }}\n </span>\n </li>\n </ul>\n <ng-container\n *ngFor=\"let footer of footerTemplates\"\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-li-timeline>\n</c8y-list-group>\n", dependencies: [{ kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemTimelineComponent, selector: "c8y-list-item-timeline, c8y-li-timeline" }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { 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: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ListItemCollapseComponent, selector: "c8y-list-item-collapse, c8y-li-collapse", inputs: ["collapseWay"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "pipe", type: JsonPipe, name: "json" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: HumanizePipe, name: "humanize" }] }); }
26
23
  }
27
24
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsTimelineComponent, decorators: [{
28
25
  type: Component,
29
- args: [{ selector: 'c8y-operations-timeline', standalone: false, template: "<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No recent operations found.' | translate\"\n ng-if=\"!operations?.data || !operations?.data?.length\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n<c8y-list-group>\n <c8y-li-timeline\n *c8yFor=\"\n let op of operations;\n pipe: filterPipe;\n realtime: realtime;\n realtimeOptions: { entityOrId: sourceId }\n \"\n >\n {{ op.creationTime | date: 'medium' }}\n <c8y-li\n #li\n (click)=\"li.toggleCollapsed()\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].icon\"\n [tooltip]=\"op.status | translate\"\n container=\"body\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].styleClass\"\n [delay]=\"500\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex text-break-word\">\n <div>\n {{ op.status | translate }}\n <br class=\"visible-xs visible-sm\" />\n <ng-container\n *ngIf=\"bodyTemplate; else defaultBody\"\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n <ng-template #defaultBody>\n <small>{{ op.description }}</small>\n </ng-template>\n </div>\n <div\n class=\"m-l-auto showOnHover\"\n *ngIf=\"op.status === 'PENDING'\"\n >\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.aria-label]=\"'Cancel operation' | translate\"\n tooltip=\"{{ 'Cancel operation' | translate }}\"\n placement=\"left\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"$event.stopPropagation(); operationsService.cancel(op)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let prop of operationsService.getStandardKeys(op) | keyvalue\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ prop.value | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ op[prop.key] | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let key of operationsService.getNonStandardKeys(op, propertiesToHide)\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ key | humanize | translate }}\n </label>\n <span class=\"m-l-auto text-code\">\n {{ op[key] | json }}\n </span>\n </li>\n </ul>\n <ng-container\n *ngFor=\"let footer of footerTemplates\"\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-li-timeline>\n</c8y-list-group>\n" }]
26
+ args: [{ selector: 'c8y-operations-timeline', imports: [
27
+ EmptyStateComponent,
28
+ ListGroupComponent,
29
+ ForOfDirective,
30
+ ListItemTimelineComponent,
31
+ ListItemComponent,
32
+ ListItemIconComponent,
33
+ IconDirective,
34
+ TooltipDirective,
35
+ NgClass,
36
+ ListItemBodyComponent,
37
+ NgIf,
38
+ NgTemplateOutlet,
39
+ ListItemCollapseComponent,
40
+ C8yTranslateDirective,
41
+ NgFor,
42
+ JsonPipe,
43
+ DatePipe,
44
+ KeyValuePipe,
45
+ C8yTranslatePipe,
46
+ HumanizePipe
47
+ ], template: "<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No recent operations found.' | translate\"\n *ngIf=\"!operations?.data || !operations?.data?.length\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n<c8y-list-group>\n <c8y-li-timeline\n *c8yFor=\"\n let op of operations;\n pipe: filterPipe;\n realtime: realtime;\n realtimeOptions: { entityOrId: sourceId }\n \"\n >\n {{ op.creationTime | c8yDate: 'medium' }}\n <c8y-li\n #li\n (click)=\"li.toggleCollapsed()\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].icon\"\n [tooltip]=\"op.status | translate\"\n container=\"body\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].styleClass\"\n [delay]=\"500\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex text-break-word\">\n <div>\n {{ op.status | translate }}\n <br class=\"visible-xs visible-sm\" />\n <ng-container\n *ngIf=\"bodyTemplate; else defaultBody\"\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n <ng-template #defaultBody>\n <small>{{ op.description }}</small>\n </ng-template>\n </div>\n <div\n class=\"m-l-auto showOnHover\"\n *ngIf=\"op.status === 'PENDING'\"\n >\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.aria-label]=\"'Cancel operation' | translate\"\n tooltip=\"{{ 'Cancel operation' | translate }}\"\n placement=\"left\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"$event.stopPropagation(); operationsService.cancel(op)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let prop of operationsService.getStandardKeys(op) | keyvalue\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ prop.value | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ op[prop.key] | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let key of operationsService.getNonStandardKeys(op, propertiesToHide)\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ key | humanize | translate }}\n </label>\n <span class=\"m-l-auto text-code\">\n {{ op[key] | json }}\n </span>\n </li>\n </ul>\n <ng-container\n *ngFor=\"let footer of footerTemplates\"\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-li-timeline>\n</c8y-list-group>\n" }]
30
48
  }], ctorParameters: () => [{ type: i1.OperationRealtimeService }, { type: i2.OperationsService }], propDecorators: { operations: [{
31
49
  type: Input
32
50
  }], sourceId: [{
@@ -41,16 +59,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
41
59
  type: Input
42
60
  }] } });
43
61
 
62
+ /**
63
+ * @deprecated Use `OperationsTimelineComponent` as a standalone component instead.
64
+ */
44
65
  class OperationsTimelineModule {
45
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsTimelineModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
46
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: OperationsTimelineModule, declarations: [OperationsTimelineComponent], imports: [CommonModule, CoreModule, CollapseModule, TooltipModule, OperationsSharedModule], exports: [OperationsTimelineComponent] }); }
47
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsTimelineModule, imports: [CommonModule, CoreModule, CollapseModule, TooltipModule, OperationsSharedModule] }); }
67
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: OperationsTimelineModule, imports: [OperationsTimelineComponent], exports: [OperationsTimelineComponent] }); }
68
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsTimelineModule, imports: [OperationsTimelineComponent] }); }
48
69
  }
49
70
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: OperationsTimelineModule, decorators: [{
50
71
  type: NgModule,
51
72
  args: [{
52
- imports: [CommonModule, CoreModule, CollapseModule, TooltipModule, OperationsSharedModule],
53
- declarations: [OperationsTimelineComponent],
73
+ imports: [OperationsTimelineComponent],
54
74
  exports: [OperationsTimelineComponent]
55
75
  }]
56
76
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-operations-timeline.mjs","sources":["../../operations/operations-timeline/operations-timeline.component.ts","../../operations/operations-timeline/operations-timeline.component.html","../../operations/operations-timeline/operations-timeline.module.ts","../../operations/operations-timeline/c8y-ngx-components-operations-operations-timeline.ts"],"sourcesContent":["import { Component, Input, TemplateRef } from '@angular/core';\nimport { IOperation, IResultList } from '@c8y/client';\nimport { ForOfFilterPipe, OperationRealtimeService } from '@c8y/ngx-components';\nimport {\n OperationsService,\n OperationStatusOptionsMapShared,\n OPERATION_STATUS_OPTIONS_MAP\n} from '@c8y/ngx-components/operations/shared';\nimport { pipe } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\n@Component({\n selector: 'c8y-operations-timeline',\n templateUrl: 'operations-timeline.component.html',\n standalone: false\n})\nexport class OperationsTimelineComponent {\n @Input()\n operations: IResultList<IOperation>;\n\n @Input()\n sourceId: string;\n\n @Input()\n filterPipe: ForOfFilterPipe<IOperation> = pipe(tap());\n\n @Input()\n bodyTemplate: TemplateRef<any>;\n\n @Input()\n footerTemplates: Array<TemplateRef<any>> = [];\n\n @Input()\n propertiesToHide: string[] = [];\n\n OPERATION_STATUS_OPTIONS_MAP: OperationStatusOptionsMapShared = OPERATION_STATUS_OPTIONS_MAP;\n\n constructor(\n public realtime: OperationRealtimeService,\n public operationsService: OperationsService\n ) {}\n}\n","<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No recent operations found.' | translate\"\n ng-if=\"!operations?.data || !operations?.data?.length\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n<c8y-list-group>\n <c8y-li-timeline\n *c8yFor=\"\n let op of operations;\n pipe: filterPipe;\n realtime: realtime;\n realtimeOptions: { entityOrId: sourceId }\n \"\n >\n {{ op.creationTime | date: 'medium' }}\n <c8y-li\n #li\n (click)=\"li.toggleCollapsed()\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].icon\"\n [tooltip]=\"op.status | translate\"\n container=\"body\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].styleClass\"\n [delay]=\"500\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex text-break-word\">\n <div>\n {{ op.status | translate }}\n <br class=\"visible-xs visible-sm\" />\n <ng-container\n *ngIf=\"bodyTemplate; else defaultBody\"\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n <ng-template #defaultBody>\n <small>{{ op.description }}</small>\n </ng-template>\n </div>\n <div\n class=\"m-l-auto showOnHover\"\n *ngIf=\"op.status === 'PENDING'\"\n >\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.aria-label]=\"'Cancel operation' | translate\"\n tooltip=\"{{ 'Cancel operation' | translate }}\"\n placement=\"left\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"$event.stopPropagation(); operationsService.cancel(op)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let prop of operationsService.getStandardKeys(op) | keyvalue\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ prop.value | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ op[prop.key] | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let key of operationsService.getNonStandardKeys(op, propertiesToHide)\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ key | humanize | translate }}\n </label>\n <span class=\"m-l-auto text-code\">\n {{ op[key] | json }}\n </span>\n </li>\n </ul>\n <ng-container\n *ngFor=\"let footer of footerTemplates\"\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-li-timeline>\n</c8y-list-group>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { OperationsSharedModule } from '@c8y/ngx-components/operations/shared';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { OperationsTimelineComponent } from './operations-timeline.component';\n\n@NgModule({\n imports: [CommonModule, CoreModule, CollapseModule, TooltipModule, OperationsSharedModule],\n declarations: [OperationsTimelineComponent],\n exports: [OperationsTimelineComponent]\n})\nexport class OperationsTimelineModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-operations-timeline.mjs","sources":["../../operations/operations-timeline/operations-timeline.component.ts","../../operations/operations-timeline/operations-timeline.component.html","../../operations/operations-timeline/operations-timeline.module.ts","../../operations/operations-timeline/c8y-ngx-components-operations-operations-timeline.ts"],"sourcesContent":["import { Component, Input, TemplateRef } from '@angular/core';\nimport { IOperation, IResultList } from '@c8y/client';\nimport {\n ForOfFilterPipe,\n OperationRealtimeService,\n EmptyStateComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemTimelineComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n ListItemBodyComponent,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n C8yTranslatePipe,\n DatePipe,\n HumanizePipe\n} from '@c8y/ngx-components';\nimport {\n OPERATION_STATUS_OPTIONS_MAP,\n OperationsService,\n OperationStatusOptionsMapShared\n} from '@c8y/ngx-components/operations/shared';\nimport { pipe } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { TooltipDirective } from 'ngx-bootstrap/tooltip';\nimport { NgClass, NgIf, NgTemplateOutlet, NgFor, JsonPipe, KeyValuePipe } from '@angular/common';\n\n@Component({\n selector: 'c8y-operations-timeline',\n templateUrl: 'operations-timeline.component.html',\n imports: [\n EmptyStateComponent,\n ListGroupComponent,\n ForOfDirective,\n ListItemTimelineComponent,\n ListItemComponent,\n ListItemIconComponent,\n IconDirective,\n TooltipDirective,\n NgClass,\n ListItemBodyComponent,\n NgIf,\n NgTemplateOutlet,\n ListItemCollapseComponent,\n C8yTranslateDirective,\n NgFor,\n JsonPipe,\n DatePipe,\n KeyValuePipe,\n C8yTranslatePipe,\n HumanizePipe\n ]\n})\nexport class OperationsTimelineComponent<B, F> {\n @Input()\n operations: IResultList<IOperation>;\n\n @Input()\n sourceId: string;\n\n @Input()\n filterPipe: ForOfFilterPipe<IOperation> = pipe(tap());\n\n @Input()\n bodyTemplate: TemplateRef<B>;\n\n @Input()\n footerTemplates: Array<TemplateRef<F>> = [];\n\n @Input()\n propertiesToHide: string[] = [];\n\n OPERATION_STATUS_OPTIONS_MAP: OperationStatusOptionsMapShared = OPERATION_STATUS_OPTIONS_MAP;\n\n constructor(\n public realtime: OperationRealtimeService,\n public operationsService: OperationsService\n ) {}\n}\n","<c8y-ui-empty-state\n [icon]=\"'c8y-energy'\"\n [title]=\"'No recent operations found.' | translate\"\n *ngIf=\"!operations?.data || !operations?.data?.length\"\n [horizontal]=\"true\"\n></c8y-ui-empty-state>\n<c8y-list-group>\n <c8y-li-timeline\n *c8yFor=\"\n let op of operations;\n pipe: filterPipe;\n realtime: realtime;\n realtimeOptions: { entityOrId: sourceId }\n \"\n >\n {{ op.creationTime | c8yDate: 'medium' }}\n <c8y-li\n #li\n (click)=\"li.toggleCollapsed()\"\n >\n <c8y-li-icon>\n <i\n [c8yIcon]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].icon\"\n [tooltip]=\"op.status | translate\"\n container=\"body\"\n [ngClass]=\"OPERATION_STATUS_OPTIONS_MAP[op.status].styleClass\"\n [delay]=\"500\"\n ></i>\n </c8y-li-icon>\n <c8y-li-body>\n <div class=\"d-flex text-break-word\">\n <div>\n {{ op.status | translate }}\n <br class=\"visible-xs visible-sm\" />\n <ng-container\n *ngIf=\"bodyTemplate; else defaultBody\"\n [ngTemplateOutlet]=\"bodyTemplate\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n <ng-template #defaultBody>\n <small>{{ op.description }}</small>\n </ng-template>\n </div>\n <div\n class=\"m-l-auto showOnHover\"\n *ngIf=\"op.status === 'PENDING'\"\n >\n <button\n class=\"btn btn-dot btn-dot--danger\"\n [attr.aria-label]=\"'Cancel operation' | translate\"\n tooltip=\"{{ 'Cancel operation' | translate }}\"\n placement=\"left\"\n type=\"button\"\n [delay]=\"500\"\n (click)=\"$event.stopPropagation(); operationsService.cancel(op)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </div>\n </c8y-li-body>\n\n <c8y-li-collapse>\n <div\n class=\"legend form-block\"\n translate\n >\n Details\n </div>\n <ul class=\"list-unstyled small\">\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let prop of operationsService.getStandardKeys(op) | keyvalue\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ prop.value | translate }}\n </label>\n <span class=\"m-l-auto text-break-word\">\n {{ op[prop.key] | translate }}\n </span>\n </li>\n <li\n class=\"p-t-4 p-b-4 d-flex separator-bottom\"\n *ngFor=\"let key of operationsService.getNonStandardKeys(op, propertiesToHide)\"\n >\n <label class=\"small m-b-0 m-r-8 a-s-start\">\n {{ key | humanize | translate }}\n </label>\n <span class=\"m-l-auto text-code\">\n {{ op[key] | json }}\n </span>\n </li>\n </ul>\n <ng-container\n *ngFor=\"let footer of footerTemplates\"\n [ngTemplateOutlet]=\"footer\"\n [ngTemplateOutletContext]=\"{ $implicit: op }\"\n ></ng-container>\n </c8y-li-collapse>\n </c8y-li>\n </c8y-li-timeline>\n</c8y-list-group>\n","import { NgModule } from '@angular/core';\nimport { OperationsTimelineComponent } from './operations-timeline.component';\n\n/**\n * @deprecated Use `OperationsTimelineComponent` as a standalone component instead.\n */\n@NgModule({\n imports: [OperationsTimelineComponent],\n exports: [OperationsTimelineComponent]\n})\nexport class OperationsTimelineModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,13 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { EventEmitter, forwardRef, Output, HostBinding, Input, Component, NgModule } from '@angular/core';
3
- import { TooltipModule } from 'ngx-bootstrap/tooltip';
4
- import * as i3 from 'ngx-bootstrap/dropdown';
5
- import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
6
- import * as i1 from '@c8y/ngx-components';
7
- import { PRODUCT_EXPERIENCE_EVENT_SOURCE, CoreModule } from '@c8y/ngx-components';
8
3
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
+ import { IconDirective, ProductExperienceDirective, C8yTranslatePipe, PRODUCT_EXPERIENCE_EVENT_SOURCE } from '@c8y/ngx-components';
9
5
  import { ACTIONS_OPERATIONS } from '@c8y/ngx-components/operations/product-experience';
10
- import * as i2 from '@angular/common';
6
+ import { BsDropdownDirective, BsDropdownToggleDirective, BsDropdownMenuDirective } from 'ngx-bootstrap/dropdown';
7
+ import { NgFor, NgIf, NgClass } from '@angular/common';
11
8
 
12
9
  class StatusFilterComponent {
13
10
  constructor() {
@@ -95,12 +92,12 @@ class StatusFilterComponent {
95
92
  this.onFilterChanged.emit(this.statusOptions.filter(option => option.selected).map(option => option.option));
96
93
  }
97
94
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
98
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: StatusFilterComponent, isStandalone: false, selector: "c8y-status-filter", inputs: { options: "options", _multiple: ["multiple", "_multiple"], _small: ["small", "_small"] }, outputs: { onFilterChanged: "onFilterChanged" }, host: { properties: { "class.btn-group-sm": "this.displaySmall" } }, providers: [
95
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: StatusFilterComponent, isStandalone: true, selector: "c8y-status-filter", inputs: { options: "options", _multiple: ["multiple", "_multiple"], _small: ["small", "_small"] }, outputs: { onFilterChanged: "onFilterChanged" }, host: { properties: { "class.btn-group-sm": "this.displaySmall" } }, providers: [
99
96
  {
100
97
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
101
98
  useExisting: forwardRef(() => StatusFilterComponent)
102
99
  }
103
- ], ngImport: i0, template: "<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: i1.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "directive", type: i3.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i3.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i3.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "pipe", type: i1.C8yTranslatePipe, name: "translate" }] }); }
100
+ ], ngImport: i0, template: "<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n", dependencies: [{ kind: "directive", type: BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "directive", type: BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
104
101
  }
105
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterComponent, decorators: [{
106
103
  type: Component,
@@ -109,7 +106,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
109
106
  provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,
110
107
  useExisting: forwardRef(() => StatusFilterComponent)
111
108
  }
112
- ], standalone: false, template: "<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n" }]
109
+ ], imports: [
110
+ BsDropdownDirective,
111
+ BsDropdownToggleDirective,
112
+ NgFor,
113
+ NgIf,
114
+ IconDirective,
115
+ NgClass,
116
+ BsDropdownMenuDirective,
117
+ ProductExperienceDirective,
118
+ C8yTranslatePipe
119
+ ], template: "<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n" }]
113
120
  }], propDecorators: { options: [{
114
121
  type: Input
115
122
  }], _multiple: [{
@@ -130,14 +137,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
130
137
  */
131
138
  class StatusFilterModule {
132
139
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
133
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule, declarations: [StatusFilterComponent], imports: [CoreModule, TooltipModule, BsDropdownModule], exports: [StatusFilterComponent] }); }
134
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule, imports: [CoreModule, TooltipModule, BsDropdownModule] }); }
140
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule, imports: [StatusFilterComponent], exports: [StatusFilterComponent] }); }
141
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule }); }
135
142
  }
136
143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StatusFilterModule, decorators: [{
137
144
  type: NgModule,
138
145
  args: [{
139
- imports: [CoreModule, TooltipModule, BsDropdownModule],
140
- declarations: [StatusFilterComponent],
146
+ imports: [StatusFilterComponent],
141
147
  exports: [StatusFilterComponent]
142
148
  }]
143
149
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-operations-status-filter.mjs","sources":["../../operations/status-filter/status-filter.component.ts","../../operations/status-filter/status-filter.component.html","../../operations/status-filter/status-filter.module.ts","../../operations/status-filter/c8y-ngx-components-operations-status-filter.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';\nimport {\n ProductExperienceEvent,\n ProductExperienceEventSource,\n PRODUCT_EXPERIENCE_EVENT_SOURCE\n} from '@c8y/ngx-components';\nimport { ACTIONS_OPERATIONS } from '@c8y/ngx-components/operations/product-experience';\nimport {\n OperationStatusOptionsMapShared,\n OperationStatusOption\n} from '@c8y/ngx-components/operations/shared';\n\n@Component({\n selector: 'c8y-status-filter',\n templateUrl: './status-filter.component.html',\n providers: [\n {\n provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,\n useExisting: forwardRef(() => StatusFilterComponent)\n }\n ],\n standalone: false\n})\nexport class StatusFilterComponent implements ProductExperienceEventSource {\n ACTIONS = ACTIONS_OPERATIONS;\n productExperienceEvent: ProductExperienceEvent;\n statusOptions: Array<{ selected: boolean; option: OperationStatusOption }> = [];\n\n /** List of filter options to be displayed */\n @Input() set options(options: OperationStatusOptionsMapShared) {\n this.statusOptions = (Object.values(options) || []).map(option => ({\n selected: false,\n option\n }));\n }\n\n /**\n * Allows multiple options to be active simultaneosly.\n */\n @Input('multiple') set _multiple(multiple: boolean) {\n this.multiple = coerceBooleanProperty(multiple);\n }\n\n /** Display the filter as a small button group */\n @Input('small') set _small(small: boolean) {\n this.small = coerceBooleanProperty(small);\n }\n\n @HostBinding('class.btn-group-sm') get displaySmall() {\n return this.small;\n }\n\n @Output() onFilterChanged: EventEmitter<OperationStatusOption[]> = new EventEmitter();\n\n isAllButtonSelected = true;\n\n private multiple: boolean;\n private small: boolean;\n\n changeFilter(option: { selected: boolean; option: OperationStatusOption }) {\n this.isAllButtonSelected = false;\n let emitNeeded = false;\n\n if (this.multiple) {\n option.selected = !option.selected;\n emitNeeded = true;\n } else if (!option.selected) {\n option.selected = true;\n this.statusOptions.filter(op => op !== option).forEach(op => (op.selected = false));\n emitNeeded = true;\n }\n\n if (emitNeeded) {\n this.emitSelectedOptions();\n }\n }\n\n removeFilter() {\n this.isAllButtonSelected = true;\n this.statusOptions.forEach(op => (op.selected = false));\n\n this.emitSelectedOptions();\n }\n\n /**\n * Allows the filter to be initalliy displayed with some preset filters.\n *\n * @param filters An `StatusOption` array defining filter options to be preset.\n * @param emit (optional) If `true` component will emit `onFilterChanged` event.\n */\n preset(filters: OperationStatusOption[], emit = true) {\n let firstSelected = false;\n\n this.statusOptions.forEach(option => (option.selected = false));\n\n this.statusOptions\n .filter(option => (filters || []).map(o => o.label).includes(option.option.label))\n .filter(() => {\n // only first option passed will be set in single selection mode\n const include: boolean = this.multiple || !firstSelected;\n if (include) {\n firstSelected = true;\n }\n\n return include;\n })\n .forEach(option => (option.selected = true));\n\n this.isAllButtonSelected = !(filters && filters.length);\n\n if (emit) {\n this.emitSelectedOptions();\n }\n }\n\n reset() {\n this.removeFilter();\n }\n\n activeFilters(): OperationStatusOption[] {\n return this.statusOptions.filter(option => option.selected).map(option => option.option);\n }\n\n isFilterApplied(): boolean {\n return this.statusOptions.some(option => option.selected);\n }\n\n private emitSelectedOptions() {\n this.onFilterChanged.emit(\n this.statusOptions.filter(option => option.selected).map(option => option.option)\n );\n }\n}\n","<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n","import { NgModule } from '@angular/core';\nimport { TooltipModule } from 'ngx-bootstrap/tooltip';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { CoreModule } from '@c8y/ngx-components';\nimport { StatusFilterComponent } from './status-filter.component';\n\n/**\n * This module provides a component for selecting status filter.\n */\n@NgModule({\n imports: [CoreModule, TooltipModule, BsDropdownModule],\n declarations: [StatusFilterComponent],\n exports: [StatusFilterComponent]\n})\nexport class StatusFilterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-operations-status-filter.mjs","sources":["../../operations/status-filter/status-filter.component.ts","../../operations/status-filter/status-filter.component.html","../../operations/status-filter/status-filter.module.ts","../../operations/status-filter/c8y-ngx-components-operations-status-filter.ts"],"sourcesContent":["import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, EventEmitter, forwardRef, HostBinding, Input, Output } from '@angular/core';\nimport {\n ProductExperienceEvent,\n ProductExperienceEventSource,\n PRODUCT_EXPERIENCE_EVENT_SOURCE,\n IconDirective,\n ProductExperienceDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { ACTIONS_OPERATIONS } from '@c8y/ngx-components/operations/product-experience';\nimport {\n OperationStatusOptionsMapShared,\n OperationStatusOption\n} from '@c8y/ngx-components/operations/shared';\nimport {\n BsDropdownDirective,\n BsDropdownToggleDirective,\n BsDropdownMenuDirective\n} from 'ngx-bootstrap/dropdown';\nimport { NgFor, NgIf, NgClass } from '@angular/common';\n\n@Component({\n selector: 'c8y-status-filter',\n templateUrl: './status-filter.component.html',\n providers: [\n {\n provide: PRODUCT_EXPERIENCE_EVENT_SOURCE,\n useExisting: forwardRef(() => StatusFilterComponent)\n }\n ],\n imports: [\n BsDropdownDirective,\n BsDropdownToggleDirective,\n NgFor,\n NgIf,\n IconDirective,\n NgClass,\n BsDropdownMenuDirective,\n ProductExperienceDirective,\n C8yTranslatePipe\n ]\n})\nexport class StatusFilterComponent implements ProductExperienceEventSource {\n ACTIONS = ACTIONS_OPERATIONS;\n productExperienceEvent: ProductExperienceEvent;\n statusOptions: Array<{ selected: boolean; option: OperationStatusOption }> = [];\n\n /** List of filter options to be displayed */\n @Input() set options(options: OperationStatusOptionsMapShared) {\n this.statusOptions = (Object.values(options) || []).map(option => ({\n selected: false,\n option\n }));\n }\n\n /**\n * Allows multiple options to be active simultaneosly.\n */\n @Input('multiple') set _multiple(multiple: boolean) {\n this.multiple = coerceBooleanProperty(multiple);\n }\n\n /** Display the filter as a small button group */\n @Input('small') set _small(small: boolean) {\n this.small = coerceBooleanProperty(small);\n }\n\n @HostBinding('class.btn-group-sm') get displaySmall() {\n return this.small;\n }\n\n @Output() onFilterChanged: EventEmitter<OperationStatusOption[]> = new EventEmitter();\n\n isAllButtonSelected = true;\n\n private multiple: boolean;\n private small: boolean;\n\n changeFilter(option: { selected: boolean; option: OperationStatusOption }) {\n this.isAllButtonSelected = false;\n let emitNeeded = false;\n\n if (this.multiple) {\n option.selected = !option.selected;\n emitNeeded = true;\n } else if (!option.selected) {\n option.selected = true;\n this.statusOptions.filter(op => op !== option).forEach(op => (op.selected = false));\n emitNeeded = true;\n }\n\n if (emitNeeded) {\n this.emitSelectedOptions();\n }\n }\n\n removeFilter() {\n this.isAllButtonSelected = true;\n this.statusOptions.forEach(op => (op.selected = false));\n\n this.emitSelectedOptions();\n }\n\n /**\n * Allows the filter to be initalliy displayed with some preset filters.\n *\n * @param filters An `StatusOption` array defining filter options to be preset.\n * @param emit (optional) If `true` component will emit `onFilterChanged` event.\n */\n preset(filters: OperationStatusOption[], emit = true) {\n let firstSelected = false;\n\n this.statusOptions.forEach(option => (option.selected = false));\n\n this.statusOptions\n .filter(option => (filters || []).map(o => o.label).includes(option.option.label))\n .filter(() => {\n // only first option passed will be set in single selection mode\n const include: boolean = this.multiple || !firstSelected;\n if (include) {\n firstSelected = true;\n }\n\n return include;\n })\n .forEach(option => (option.selected = true));\n\n this.isAllButtonSelected = !(filters && filters.length);\n\n if (emit) {\n this.emitSelectedOptions();\n }\n }\n\n reset() {\n this.removeFilter();\n }\n\n activeFilters(): OperationStatusOption[] {\n return this.statusOptions.filter(option => option.selected).map(option => option.option);\n }\n\n isFilterApplied(): boolean {\n return this.statusOptions.some(option => option.selected);\n }\n\n private emitSelectedOptions() {\n this.onFilterChanged.emit(\n this.statusOptions.filter(option => option.selected).map(option => option.option)\n );\n }\n}\n","<div dropdown placement=\"bottom left\" class=\"dropdown c8y-child-assets-selector\">\n <button\n class=\"btn dropdown-toggle d-flex a-i-center c8y-dropdown\"\n type=\"button\"\n title=\"{{ 'Status filter' | translate }}\"\n dropdownToggle\n >\n <span *ngFor=\"let option of statusOptions\" class=\"d-contents\">\n <span class=\"text-truncate\" *ngIf=\"option.selected\">\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </span>\n </span>\n <span class=\"text-truncate\" *ngIf=\"isAllButtonSelected\">\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </span>\n </button>\n <ul\n id=\"dropdown-status-filter\"\n *dropdownMenu\n class=\"dropdown-menu\"\n role=\"menu\"\n aria-labelledby=\"status-filter\"\n >\n <li *ngFor=\"let option of statusOptions\" [ngClass]=\"{ active: option.selected }\">\n <button\n type=\"button\"\n [title]=\"option.option.label | translate\"\n (click)=\"changeFilter(option)\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status',\n filterValue: option.option.label\n }\"\n >\n <i [c8yIcon]=\"option.option.icon\" [ngClass]=\"option.option.styleClass\"></i>\n <span class=\"m-l-4\">{{ option.option.label | translate }}</span>\n </button>\n </li>\n <li [ngClass]=\"{ active: isAllButtonSelected }\">\n <button\n type=\"button\"\n title=\"{{ 'All statuses' | translate }}\"\n (click)=\"removeFilter()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: ACTIONS.FILTER,\n filterBy: 'status'\n }\"\n >\n <i c8yIcon=\"c8y-energy\" class=\"m-r-4 text-info\"></i>\n {{ 'All statuses' | translate }}\n </button>\n </li>\n </ul>\n</div>\n","import { NgModule } from '@angular/core';\nimport { StatusFilterComponent } from './status-filter.component';\n\n/**\n * This module provides a component for selecting status filter.\n */\n@NgModule({\n imports: [StatusFilterComponent],\n exports: [StatusFilterComponent]\n})\nexport class StatusFilterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,22 +1,20 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, NgModule } from '@angular/core';
3
- import * as i6 from '@angular/forms';
4
- import { ReactiveFormsModule } from '@angular/forms';
5
- import * as i4 from '@c8y/ngx-components';
6
- import { gettext, CoreModule, FormsModule } from '@c8y/ngx-components';
7
- import * as i2 from '@c8y/ngx-components/repository/shared';
8
- import { RepositoryType, SharedRepositoryModule } from '@c8y/ngx-components/repository/shared';
9
- import * as i7 from '@c8y/ngx-components/operations/bulk-operation-stepper';
10
- import { BaseStepperComponent, BulkOperationStepperModule } from '@c8y/ngx-components/operations/bulk-operation-stepper';
3
+ import { gettext as gettext$1 } from '@c8y/ngx-components/gettext';
11
4
  import * as i1 from '@c8y/ngx-components/operations/bulk-operations-service';
12
5
  import { BulkOperationType, hookListBulkType, baseUrl } from '@c8y/ngx-components/operations/bulk-operations-service';
13
- import * as i8 from '@c8y/ngx-components/operations/stepper-frames';
14
- import { StepperFramesModule } from '@c8y/ngx-components/operations/stepper-frames';
6
+ import { gettext, IconDirective, FormGroupComponent, TypeaheadComponent, ListItemComponent, HighlightComponent, ListItemIconComponent, ListItemBodyComponent, ListGroupComponent, ForOfDirective, ListItemRadioComponent, C8yTranslateDirective, EmptyStateComponent, C8yTranslatePipe, DatePipe } from '@c8y/ngx-components';
7
+ import { BaseStepperComponent, BulkOperationStepper, CustomStep } from '@c8y/ngx-components/operations/bulk-operation-stepper';
8
+ import * as i2 from '@c8y/ngx-components/repository/shared';
9
+ import { RepositoryType } from '@c8y/ngx-components/repository/shared';
15
10
  import * as i3 from '@ngx-translate/core';
16
11
  import { uniqWith, isEqual, get } from 'lodash-es';
17
12
  import { BehaviorSubject, combineLatest, from } from 'rxjs';
18
13
  import { switchMap, shareReplay, debounceTime, distinctUntilChanged } from 'rxjs/operators';
19
- import * as i5 from '@angular/common';
14
+ import { SelectStepFrameComponent, PreviewSelectionFrameComponent, PreviewBlockDirective } from '@c8y/ngx-components/operations/stepper-frames';
15
+ import * as i4 from '@angular/forms';
16
+ import { FormsModule } from '@angular/forms';
17
+ import { NgIf, NgFor, AsyncPipe } from '@angular/common';
20
18
 
21
19
  class StepperBulkTypeConfigurationComponent extends BaseStepperComponent {
22
20
  constructor(bulkOperationService, repositoryService, translate) {
@@ -87,56 +85,62 @@ class StepperBulkTypeConfigurationComponent extends BaseStepperComponent {
87
85
  return this.repositoryService.listRepositoryEntries(RepositoryType.CONFIGURATION, { query });
88
86
  }
89
87
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationComponent, deps: [{ token: i1.BulkOperationsService }, { token: i2.RepositoryService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
90
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: StepperBulkTypeConfigurationComponent, isStandalone: false, selector: "c8y-stepper-bulk-type-configuration", usesInheritance: true, ngImport: i0, template: "<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select configuration' | translate;\n completed: !!selectedConfiguration;\n buttonsDisabled: !selectedConfiguration;\n onNext: goToSecondStep.bind(this)\n \"\n >\n <c8y-select-step-frame\n [header]=\"'Select configuration' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (configType$ | async)?.length) &&\n (configurations$ | async)?.data.length === 0\n \"\n >\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-xs-12 p-b-8 visible-xs visible-sm\"></div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter configuration types\u2026' | translate }}\"\n name=\"configType\"\n [(ngModel)]=\"selectedConfigType\"\n (onSearch)=\"configType$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedConfigType = { name: '' }; configType$.next('')\"\n >\n <span>{{ 'All configuration types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let configType of configTypes\"\n (click)=\"selectedConfigType = configType; configType$.next(configType.name)\"\n [active]=\"selectedConfigType === configType\"\n >\n <c8y-highlight\n [text]=\"configType.name\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-4\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Configuration type' | translate }}\"\n >\n {{ 'Configuration type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n #listItem\n *c8yFor=\"let configuration of configurations$ | async\"\n >\n <c8y-li-radio (onSelect)=\"selectConfiguration(configuration)\"></c8y-li-radio>\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.name || '-' }}\"\n >\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </div>\n </div>\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(configuration) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n {{ configuration.deviceType }}\n <em\n class=\"text-muted\"\n *ngIf=\"!configuration.deviceType\"\n >\n {{ 'Undefined`device type`' | translate }}\n </em>\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Configuration type\n </span>\n <span\n class=\"label label-info\"\n title=\"{{ 'Configuration type' | translate }}: {{\n configuration.configurationType\n }}\"\n *ngIf=\"configuration.configurationType\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-gray-lighter\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </span>\n <span\n class=\"label label-default\"\n title=\"{{ 'Configuration type' | translate }}: {{ 'Undefined' | translate }}\"\n *ngIf=\"!configuration.configurationType\"\n >\n {{ 'Undefined' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-select-step-frame>\n </ng-container>\n <ng-container *customStep=\"'Preview configuration' | translate\">\n <c8y-preview-selection-frame\n [header]=\"'Preview configuration' | translate\"\n [name]=\"selectedConfiguration?.name\"\n [type]=\"selectedConfiguration?.configurationType\"\n >\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedConfiguration?.deviceType; else noType\">\n <span>{{ selectedConfiguration?.deviceType }}</span>\n </ng-container>\n <ng-template #noType>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </ng-template>\n </ng-container>\n <ng-container *previewBlock=\"'Updated' | translate\">\n <span>{{ selectedConfiguration?.lastUpdated | c8yDate }}</span>\n </ng-container>\n <ng-container *previewBlock=\"'Preview' | translate\">\n <c8y-ui-empty-state\n [icon]=\"'file-code-o'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'Could not fetch the file.' | translate\"\n *ngIf=\"!this.selectedConfiguration?.binary; else binaryPreview\"\n ></c8y-ui-empty-state>\n <ng-template #binaryPreview>\n <pre style=\"min-height: 98px\"><code>{{ this.selectedConfiguration?.binary }}</code></pre>\n </ng-template>\n </ng-container>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n", dependencies: [{ kind: "component", type: i4.EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: i4.IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: i4.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: i4.HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: i4.TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: i4.ListGroupComponent, selector: "c8y-list-group" }, { kind: "component", type: i4.ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: i4.ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: i4.ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: i4.ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "component", type: i7.BulkOperationStepper, selector: "c8y-bulk-operation-stepper", inputs: ["type"], outputs: ["selectionChange"] }, { kind: "directive", type: i7.CustomStep, selector: "[customStep]", inputs: ["customStep", "customStepCompleted", "customStepButtonsDisabled", "customStepOnNext"] }, { kind: "component", type: i8.PreviewSelectionFrameComponent, selector: "c8y-preview-selection-frame", inputs: ["header", "name", "description", "type"] }, { kind: "component", type: i8.SelectStepFrameComponent, selector: "c8y-select-step-frame", inputs: ["header", "noResults"] }, { kind: "directive", type: i8.PreviewBlockDirective, selector: "[previewBlock]", inputs: ["previewBlock", "previewBlockIf"] }, { kind: "pipe", type: i4.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.DatePipe, name: "c8yDate" }] }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: StepperBulkTypeConfigurationComponent, isStandalone: true, selector: "c8y-stepper-bulk-type-configuration", usesInheritance: true, ngImport: i0, template: "<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select configuration' | translate;\n completed: !!selectedConfiguration;\n buttonsDisabled: !selectedConfiguration;\n onNext: goToSecondStep.bind(this)\n \"\n >\n <c8y-select-step-frame\n [header]=\"'Select configuration' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (configType$ | async)?.length) &&\n (configurations$ | async)?.data.length === 0\n \"\n >\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-xs-12 p-b-8 visible-xs visible-sm\"></div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter configuration types\u2026' | translate }}\"\n name=\"configType\"\n [(ngModel)]=\"selectedConfigType\"\n (onSearch)=\"configType$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedConfigType = { name: '' }; configType$.next('')\"\n >\n <span>{{ 'All configuration types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let configType of configTypes\"\n (click)=\"selectedConfigType = configType; configType$.next(configType.name)\"\n [active]=\"selectedConfigType === configType\"\n >\n <c8y-highlight\n [text]=\"configType.name\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-4\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Configuration type' | translate }}\"\n >\n {{ 'Configuration type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n #listItem\n *c8yFor=\"let configuration of configurations$ | async\"\n >\n <c8y-li-radio (onSelect)=\"selectConfiguration(configuration)\"></c8y-li-radio>\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.name || '-' }}\"\n >\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </div>\n </div>\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(configuration) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n {{ configuration.deviceType }}\n <em\n class=\"text-muted\"\n *ngIf=\"!configuration.deviceType\"\n >\n {{ 'Undefined`device type`' | translate }}\n </em>\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Configuration type\n </span>\n <span\n class=\"label label-info\"\n title=\"{{ 'Configuration type' | translate }}: {{\n configuration.configurationType\n }}\"\n *ngIf=\"configuration.configurationType\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-gray-lighter\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </span>\n <span\n class=\"label label-default\"\n title=\"{{ 'Configuration type' | translate }}: {{ 'Undefined' | translate }}\"\n *ngIf=\"!configuration.configurationType\"\n >\n {{ 'Undefined' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-select-step-frame>\n </ng-container>\n <ng-container *customStep=\"'Preview configuration' | translate\">\n <c8y-preview-selection-frame\n [header]=\"'Preview configuration' | translate\"\n [name]=\"selectedConfiguration?.name\"\n [type]=\"selectedConfiguration?.configurationType\"\n >\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedConfiguration?.deviceType; else noType\">\n <span>{{ selectedConfiguration?.deviceType }}</span>\n </ng-container>\n <ng-template #noType>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </ng-template>\n </ng-container>\n <ng-container *previewBlock=\"'Updated' | translate\">\n <span>{{ selectedConfiguration?.lastUpdated | c8yDate }}</span>\n </ng-container>\n <ng-container *previewBlock=\"'Preview' | translate\">\n <c8y-ui-empty-state\n [icon]=\"'file-code-o'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'Could not fetch the file.' | translate\"\n *ngIf=\"!this.selectedConfiguration?.binary; else binaryPreview\"\n ></c8y-ui-empty-state>\n <ng-template #binaryPreview>\n <pre style=\"min-height: 98px\"><code>{{ this.selectedConfiguration?.binary }}</code></pre>\n </ng-template>\n </ng-container>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n", dependencies: [{ kind: "component", type: BulkOperationStepper, selector: "c8y-bulk-operation-stepper", inputs: ["type"], outputs: ["selectionChange"] }, { kind: "directive", type: CustomStep, selector: "[customStep]", inputs: ["customStep", "customStepCompleted", "customStepButtonsDisabled", "customStepOnNext"] }, { kind: "component", type: SelectStepFrameComponent, selector: "c8y-select-step-frame", inputs: ["header", "noResults"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.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: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "component", type: TypeaheadComponent, selector: "c8y-typeahead", inputs: ["required", "maxlength", "disabled", "allowFreeEntries", "placeholder", "displayProperty", "icon", "name", "autoClose", "hideNew", "container", "selected", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { kind: "component", type: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: ListGroupComponent, selector: "c8y-list-group" }, { kind: "directive", type: ForOfDirective, selector: "[c8yFor]", inputs: ["c8yForOf", "c8yForLoadMore", "c8yForPipe", "c8yForNotFound", "c8yForMaxIterations", "c8yForLoadingTemplate", "c8yForLoadNextLabel", "c8yForLoadingLabel", "c8yForRealtime", "c8yForRealtimeOptions", "c8yForComparator", "c8yForEnableVirtualScroll", "c8yForVirtualScrollElementSize", "c8yForVirtualScrollStrategy", "c8yForVirtualScrollContainerHeight"], outputs: ["c8yForCount", "c8yForChange", "c8yForLoadMoreComponent"] }, { kind: "component", type: ListItemRadioComponent, selector: "c8y-list-item-radio, c8y-li-radio", inputs: ["selected", "name", "disabled", "value"], outputs: ["onSelect"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: PreviewSelectionFrameComponent, selector: "c8y-preview-selection-frame", inputs: ["header", "name", "description", "type"] }, { kind: "directive", type: PreviewBlockDirective, selector: "[previewBlock]", inputs: ["previewBlock", "previewBlockIf"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: DatePipe, name: "c8yDate" }] }); }
91
89
  }
92
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationComponent, decorators: [{
93
91
  type: Component,
94
- args: [{ selector: 'c8y-stepper-bulk-type-configuration', standalone: false, template: "<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select configuration' | translate;\n completed: !!selectedConfiguration;\n buttonsDisabled: !selectedConfiguration;\n onNext: goToSecondStep.bind(this)\n \"\n >\n <c8y-select-step-frame\n [header]=\"'Select configuration' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (configType$ | async)?.length) &&\n (configurations$ | async)?.data.length === 0\n \"\n >\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-xs-12 p-b-8 visible-xs visible-sm\"></div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter configuration types\u2026' | translate }}\"\n name=\"configType\"\n [(ngModel)]=\"selectedConfigType\"\n (onSearch)=\"configType$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedConfigType = { name: '' }; configType$.next('')\"\n >\n <span>{{ 'All configuration types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let configType of configTypes\"\n (click)=\"selectedConfigType = configType; configType$.next(configType.name)\"\n [active]=\"selectedConfigType === configType\"\n >\n <c8y-highlight\n [text]=\"configType.name\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-4\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Configuration type' | translate }}\"\n >\n {{ 'Configuration type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n #listItem\n *c8yFor=\"let configuration of configurations$ | async\"\n >\n <c8y-li-radio (onSelect)=\"selectConfiguration(configuration)\"></c8y-li-radio>\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.name || '-' }}\"\n >\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </div>\n </div>\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(configuration) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n {{ configuration.deviceType }}\n <em\n class=\"text-muted\"\n *ngIf=\"!configuration.deviceType\"\n >\n {{ 'Undefined`device type`' | translate }}\n </em>\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Configuration type\n </span>\n <span\n class=\"label label-info\"\n title=\"{{ 'Configuration type' | translate }}: {{\n configuration.configurationType\n }}\"\n *ngIf=\"configuration.configurationType\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-gray-lighter\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </span>\n <span\n class=\"label label-default\"\n title=\"{{ 'Configuration type' | translate }}: {{ 'Undefined' | translate }}\"\n *ngIf=\"!configuration.configurationType\"\n >\n {{ 'Undefined' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-select-step-frame>\n </ng-container>\n <ng-container *customStep=\"'Preview configuration' | translate\">\n <c8y-preview-selection-frame\n [header]=\"'Preview configuration' | translate\"\n [name]=\"selectedConfiguration?.name\"\n [type]=\"selectedConfiguration?.configurationType\"\n >\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedConfiguration?.deviceType; else noType\">\n <span>{{ selectedConfiguration?.deviceType }}</span>\n </ng-container>\n <ng-template #noType>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </ng-template>\n </ng-container>\n <ng-container *previewBlock=\"'Updated' | translate\">\n <span>{{ selectedConfiguration?.lastUpdated | c8yDate }}</span>\n </ng-container>\n <ng-container *previewBlock=\"'Preview' | translate\">\n <c8y-ui-empty-state\n [icon]=\"'file-code-o'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'Could not fetch the file.' | translate\"\n *ngIf=\"!this.selectedConfiguration?.binary; else binaryPreview\"\n ></c8y-ui-empty-state>\n <ng-template #binaryPreview>\n <pre style=\"min-height: 98px\"><code>{{ this.selectedConfiguration?.binary }}</code></pre>\n </ng-template>\n </ng-container>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n" }]
92
+ args: [{ selector: 'c8y-stepper-bulk-type-configuration', imports: [
93
+ BulkOperationStepper,
94
+ CustomStep,
95
+ SelectStepFrameComponent,
96
+ FormsModule,
97
+ NgIf,
98
+ IconDirective,
99
+ FormGroupComponent,
100
+ TypeaheadComponent,
101
+ ListItemComponent,
102
+ NgFor,
103
+ HighlightComponent,
104
+ ListItemIconComponent,
105
+ ListItemBodyComponent,
106
+ ListGroupComponent,
107
+ ForOfDirective,
108
+ ListItemRadioComponent,
109
+ C8yTranslateDirective,
110
+ PreviewSelectionFrameComponent,
111
+ PreviewBlockDirective,
112
+ EmptyStateComponent,
113
+ C8yTranslatePipe,
114
+ AsyncPipe,
115
+ DatePipe
116
+ ], template: "<c8y-bulk-operation-stepper [type]=\"type\">\n <ng-container\n *customStep=\"\n 'Select configuration' | translate;\n completed: !!selectedConfiguration;\n buttonsDisabled: !selectedConfiguration;\n onNext: goToSecondStep.bind(this)\n \"\n >\n <c8y-select-step-frame\n [header]=\"'Select configuration' | translate\"\n [noResults]=\"\n ((textFilter$ | async)?.length || (configType$ | async)?.length) &&\n (configurations$ | async)?.data.length === 0\n \"\n >\n <div\n class=\"row\"\n filters\n >\n <div class=\"col-md-6\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n placeholder=\"{{ 'Filter\u2026' | translate }}\"\n type=\"search\"\n [ngModel]=\"textFilter$ | async\"\n (ngModelChange)=\"textFilter$.next($event)\"\n />\n <span class=\"input-group-addon\">\n <i\n c8yIcon=\"search\"\n *ngIf=\"(textFilter$ | async).length === 0\"\n ></i>\n <i\n class=\"text-muted\"\n c8yIcon=\"times\"\n *ngIf=\"(textFilter$ | async).length > 0\"\n (click)=\"textFilter$.next('')\"\n ></i>\n </span>\n </div>\n </div>\n <div class=\"col-xs-12 p-b-8 visible-xs visible-sm\"></div>\n <div class=\"col-md-6\">\n <c8y-form-group class=\"m-0\">\n <c8y-typeahead\n placeholder=\"{{ 'Type to filter configuration types\u2026' | translate }}\"\n name=\"configType\"\n [(ngModel)]=\"selectedConfigType\"\n (onSearch)=\"configType$.next($event)\"\n >\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selectedConfigType = { name: '' }; configType$.next('')\"\n >\n <span>{{ 'All configuration types' | translate }}</span>\n </c8y-li>\n <c8y-li\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n *ngFor=\"let configType of configTypes\"\n (click)=\"selectedConfigType = configType; configType$.next(configType.name)\"\n [active]=\"selectedConfigType === configType\"\n >\n <c8y-highlight\n [text]=\"configType.name\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </c8y-li>\n </c8y-typeahead>\n </c8y-form-group>\n </div>\n </div>\n <c8y-li\n class=\"hidden-sm hidden-xs m-r-8 m-l-8\"\n header\n >\n <c8y-li-icon><i class=\"p-l-32 p-r-40\"></i></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5\">\n <span\n class=\"text-truncate\"\n title=\" {{ 'Name' | translate }} \"\n >\n {{ 'Name' | translate }}\n </span>\n </div>\n <div class=\"col-4\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}\"\n >\n {{ 'Device type' | translate }}\n </span>\n </div>\n <div class=\"col-3\">\n <span\n class=\"text-truncate\"\n title=\"{{ 'Configuration type' | translate }}\"\n >\n {{ 'Configuration type' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n <c8y-list-group list>\n <c8y-li\n #listItem\n *c8yFor=\"let configuration of configurations$ | async\"\n >\n <c8y-li-radio (onSelect)=\"selectConfiguration(configuration)\"></c8y-li-radio>\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <c8y-li-body class=\"content-flex-40\">\n <div class=\"col-5 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ configuration.name || '-' }}\"\n >\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n [pattern]=\"textFilter$ | async\"\n ></c8y-highlight>\n </div>\n </div>\n <div class=\"col-4 m-b-xs-8\">\n <div\n class=\"text-truncate\"\n title=\"{{ 'Device type' | translate }}: {{ getDeviceTypeTitle(configuration) }}\"\n >\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Device type\n </span>\n {{ configuration.deviceType }}\n <em\n class=\"text-muted\"\n *ngIf=\"!configuration.deviceType\"\n >\n {{ 'Undefined`device type`' | translate }}\n </em>\n </div>\n </div>\n <div class=\"col-3 m-b-xs-8\">\n <span\n class=\"text-label-small m-r-8 visible-xs visible-sm\"\n translate\n >\n Configuration type\n </span>\n <span\n class=\"label label-info\"\n title=\"{{ 'Configuration type' | translate }}: {{\n configuration.configurationType\n }}\"\n *ngIf=\"configuration.configurationType\"\n >\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-gray-lighter\"\n [pattern]=\"configType$ | async\"\n ></c8y-highlight>\n </span>\n <span\n class=\"label label-default\"\n title=\"{{ 'Configuration type' | translate }}: {{ 'Undefined' | translate }}\"\n *ngIf=\"!configuration.configurationType\"\n >\n {{ 'Undefined' | translate }}\n </span>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </c8y-select-step-frame>\n </ng-container>\n <ng-container *customStep=\"'Preview configuration' | translate\">\n <c8y-preview-selection-frame\n [header]=\"'Preview configuration' | translate\"\n [name]=\"selectedConfiguration?.name\"\n [type]=\"selectedConfiguration?.configurationType\"\n >\n <ng-container *previewBlock=\"'Device type' | translate\">\n <ng-container *ngIf=\"selectedConfiguration?.deviceType; else noType\">\n <span>{{ selectedConfiguration?.deviceType }}</span>\n </ng-container>\n <ng-template #noType>\n <em\n class=\"text-muted\"\n translate\n >\n Undefined`device type`\n </em>\n </ng-template>\n </ng-container>\n <ng-container *previewBlock=\"'Updated' | translate\">\n <span>{{ selectedConfiguration?.lastUpdated | c8yDate }}</span>\n </ng-container>\n <ng-container *previewBlock=\"'Preview' | translate\">\n <c8y-ui-empty-state\n [icon]=\"'file-code-o'\"\n [title]=\"'No preview available.' | translate\"\n [subtitle]=\"'Could not fetch the file.' | translate\"\n *ngIf=\"!this.selectedConfiguration?.binary; else binaryPreview\"\n ></c8y-ui-empty-state>\n <ng-template #binaryPreview>\n <pre style=\"min-height: 98px\"><code>{{ this.selectedConfiguration?.binary }}</code></pre>\n </ng-template>\n </ng-container>\n </c8y-preview-selection-frame>\n </ng-container>\n</c8y-bulk-operation-stepper>\n" }]
95
117
  }], ctorParameters: () => [{ type: i1.BulkOperationsService }, { type: i2.RepositoryService }, { type: i3.TranslateService }] });
96
118
 
97
119
  /** Module for the 'Configuration update' operation type stepper */
98
120
  class StepperBulkTypeConfigurationModule {
99
121
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
100
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationModule, declarations: [StepperBulkTypeConfigurationComponent], imports: [CoreModule,
101
- FormsModule,
102
- ReactiveFormsModule,
103
- BulkOperationStepperModule,
104
- SharedRepositoryModule,
105
- StepperFramesModule], exports: [StepperBulkTypeConfigurationComponent] }); }
122
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationModule, imports: [StepperBulkTypeConfigurationComponent], exports: [StepperBulkTypeConfigurationComponent] }); }
106
123
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationModule, providers: [
107
124
  hookListBulkType({
108
125
  type: BulkOperationType.CONFIGURATION,
109
126
  c8yIcon: 'cogs',
110
- name: gettext('Configuration update'),
127
+ name: gettext$1('Configuration update'),
111
128
  path: `${baseUrl}configuration`,
112
129
  component: StepperBulkTypeConfigurationComponent,
113
130
  fragments: ['c8y_DownloadConfigFile', 'c8y_Configuration'],
114
131
  selected: false
115
132
  })
116
- ], imports: [CoreModule,
117
- FormsModule,
118
- ReactiveFormsModule,
119
- BulkOperationStepperModule,
120
- SharedRepositoryModule,
121
- StepperFramesModule] }); }
133
+ ], imports: [StepperBulkTypeConfigurationComponent] }); }
122
134
  }
123
135
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: StepperBulkTypeConfigurationModule, decorators: [{
124
136
  type: NgModule,
125
137
  args: [{
126
- declarations: [StepperBulkTypeConfigurationComponent],
127
- imports: [
128
- CoreModule,
129
- FormsModule,
130
- ReactiveFormsModule,
131
- BulkOperationStepperModule,
132
- SharedRepositoryModule,
133
- StepperFramesModule
134
- ],
138
+ imports: [StepperBulkTypeConfigurationComponent],
135
139
  providers: [
136
140
  hookListBulkType({
137
141
  type: BulkOperationType.CONFIGURATION,
138
142
  c8yIcon: 'cogs',
139
- name: gettext('Configuration update'),
143
+ name: gettext$1('Configuration update'),
140
144
  path: `${baseUrl}configuration`,
141
145
  component: StepperBulkTypeConfigurationComponent,
142
146
  fragments: ['c8y_DownloadConfigFile', 'c8y_Configuration'],