@c8y/ngx-components 1022.28.2 → 1022.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (475) hide show
  1. package/asset-properties/asset-properties.model.d.ts +12 -3
  2. package/asset-properties/asset-properties.model.d.ts.map +1 -1
  3. package/asset-properties/asset-properties.service.d.ts +20 -2
  4. package/asset-properties/asset-properties.service.d.ts.map +1 -1
  5. package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts +14 -0
  6. package/asset-properties/asset-property-list/asset-property-icon-tooltip.pipe.d.ts.map +1 -0
  7. package/asset-properties/asset-property-list/asset-property-icon.pipe.d.ts.map +1 -1
  8. package/asset-properties/asset-property-list/asset-property-list.component.d.ts +28 -18
  9. package/asset-properties/asset-property-list/asset-property-list.component.d.ts.map +1 -1
  10. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts +2 -2
  11. package/asset-properties/asset-property-selector-drawer/asset-property-selector-drawer.component.d.ts.map +1 -1
  12. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts +97 -0
  13. package/asset-properties/custom-properties-drawer/custom-properties-drawer.component.d.ts.map +1 -0
  14. package/asset-properties/custom-properties-drawer.service.d.ts +12 -0
  15. package/asset-properties/custom-properties-drawer.service.d.ts.map +1 -0
  16. package/asset-properties/index.d.ts +1 -0
  17. package/asset-properties/index.d.ts.map +1 -1
  18. package/context-dashboard/dashboard-detail.service.d.ts +2 -2
  19. package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts +2 -1
  20. package/context-dashboard/widget-config-hook/widget-config-hook.model.d.ts.map +1 -1
  21. package/context-dashboard/widget-config.component.d.ts +3 -1
  22. package/context-dashboard/widget-config.component.d.ts.map +1 -1
  23. package/context-dashboard/widget-config.service.d.ts +14 -8
  24. package/context-dashboard/widget-config.service.d.ts.map +1 -1
  25. package/core/dynamic-component/dynamic-component.model.d.ts +26 -0
  26. package/core/dynamic-component/dynamic-component.model.d.ts.map +1 -1
  27. package/core/i18n/pattern-messages.data.d.ts +7 -0
  28. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  29. package/core/index.d.ts +1 -0
  30. package/core/index.d.ts.map +1 -1
  31. package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
  32. package/core/query-param-handler/query-param-handler.service.d.ts.map +1 -1
  33. package/core/query-param-handler/query-param-modal-handler.service.d.ts +16 -5
  34. package/core/query-param-handler/query-param-modal-handler.service.d.ts.map +1 -1
  35. package/core/resizable-grid/index.d.ts +2 -0
  36. package/core/resizable-grid/index.d.ts.map +1 -0
  37. package/core/resizable-grid/resizable-grid.component.d.ts +114 -0
  38. package/core/resizable-grid/resizable-grid.component.d.ts.map +1 -0
  39. package/dashboard-manager/devicemanagement/c8y-ngx-components-dashboard-manager-devicemanagement.d.ts.map +1 -0
  40. package/dashboard-manager/devicemanagement/index.d.ts +2 -0
  41. package/dashboard-manager/devicemanagement/index.d.ts.map +1 -0
  42. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  43. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  44. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  45. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  46. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs.map +1 -1
  47. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
  48. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  49. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  50. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  51. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-alarms.mjs +73 -73
  53. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  55. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  57. package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
  58. package/fesm2022/c8y-ngx-components-asset-properties.mjs +427 -66
  59. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  60. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs} +13 -13
  61. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs.map → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map} +1 -1
  62. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  63. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  64. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
  65. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  66. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  67. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  68. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  69. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  70. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  71. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  72. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  73. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  74. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  75. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  76. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs.map +1 -1
  77. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  78. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  79. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  80. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  81. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  82. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +33 -33
  84. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  85. package/fesm2022/c8y-ngx-components-branding-shared.mjs +10 -10
  86. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  87. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  88. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  89. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  90. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  91. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  92. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  94. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  96. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
  97. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  98. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  99. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs} +4 -4
  100. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-BWyhab0H.mjs.map} +1 -1
  101. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs} +10 -10
  102. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-DjlpSztw.mjs.map} +1 -1
  103. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs} +4 -4
  104. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-B2zLhv0X.mjs.map} +1 -1
  105. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  106. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs.map +1 -1
  107. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  108. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
  109. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +133 -116
  110. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  111. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs} +16 -16
  112. package/fesm2022/{c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-DtLAOoFx.mjs.map → c8y-ngx-components-dashboard-details-advanced-tab-dashboard-details-advanced-tab.component-CwfVxTSx.mjs.map} +1 -1
  113. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  114. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs +19 -0
  116. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs.map +1 -0
  117. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  118. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  120. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  121. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  122. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  123. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  124. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  125. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  126. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
  127. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  128. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +7 -7
  129. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  130. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  131. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  132. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  133. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  134. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  135. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs.map +1 -1
  136. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  137. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  138. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
  139. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  140. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +41 -40
  141. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  142. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  143. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  144. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  145. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  146. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  147. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  148. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  149. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  151. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  153. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  155. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  157. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  158. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  159. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  160. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  161. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  162. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  163. package/fesm2022/c8y-ngx-components-echart.mjs +27 -27
  164. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  165. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  166. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  167. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  168. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
  169. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  170. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  171. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  172. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  173. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  174. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  175. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  176. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  177. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  178. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  179. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  180. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
  181. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  182. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  183. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  184. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  185. package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
  186. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  187. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  188. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  189. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  190. package/fesm2022/c8y-ngx-components-icon-selector-icons-arrows.mjs.map +1 -1
  191. package/fesm2022/c8y-ngx-components-icon-selector-icons-city.mjs.map +1 -1
  192. package/fesm2022/c8y-ngx-components-icon-selector-icons-data.mjs.map +1 -1
  193. package/fesm2022/c8y-ngx-components-icon-selector-icons-dateAndTime.mjs.map +1 -1
  194. package/fesm2022/c8y-ngx-components-icon-selector-icons-devicesAndSensors.mjs.map +1 -1
  195. package/fesm2022/c8y-ngx-components-icon-selector-icons-ecommerce.mjs.map +1 -1
  196. package/fesm2022/c8y-ngx-components-icon-selector-icons-editing.mjs.map +1 -1
  197. package/fesm2022/c8y-ngx-components-icon-selector-icons-filesAndFolders.mjs.map +1 -1
  198. package/fesm2022/c8y-ngx-components-icon-selector-icons-finance.mjs.map +1 -1
  199. package/fesm2022/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
  200. package/fesm2022/c8y-ngx-components-icon-selector-icons-location.mjs.map +1 -1
  201. package/fesm2022/c8y-ngx-components-icon-selector-icons-messaging.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-icon-selector-icons-multimedia.mjs.map +1 -1
  203. package/fesm2022/c8y-ngx-components-icon-selector-icons-network.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-icon-selector-icons-office.mjs.map +1 -1
  205. package/fesm2022/c8y-ngx-components-icon-selector-icons-people.mjs.map +1 -1
  206. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs +1 -0
  207. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs.map +1 -1
  208. package/fesm2022/c8y-ngx-components-icon-selector-icons-programming.mjs.map +1 -1
  209. package/fesm2022/c8y-ngx-components-icon-selector-icons-security.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-icon-selector-icons-transport.mjs.map +1 -1
  211. package/fesm2022/c8y-ngx-components-icon-selector-icons-userInterface.mjs.map +1 -1
  212. package/fesm2022/c8y-ngx-components-icon-selector-icons-weather.mjs.map +1 -1
  213. package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
  214. package/fesm2022/c8y-ngx-components-icon-selector-model.mjs.map +1 -1
  215. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  216. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  217. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  218. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  219. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  220. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  221. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  222. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  223. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  224. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  225. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  226. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  227. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  228. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  229. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  230. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  231. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  232. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  233. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  234. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  235. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  236. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  237. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  238. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs.map +1 -1
  239. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  240. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  241. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +10 -10
  242. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  243. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  244. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  245. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  246. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  247. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  248. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  249. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  250. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  251. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  252. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  253. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  254. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  255. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  256. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  257. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  258. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  259. package/fesm2022/c8y-ngx-components-operations-product-experience.mjs.map +1 -1
  260. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  261. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  262. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  263. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  264. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  265. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  266. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  267. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  268. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  269. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  270. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  271. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  272. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  273. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  274. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  275. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  276. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  277. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  278. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  279. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  280. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  281. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  282. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
  283. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  284. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  285. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  286. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  287. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  288. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  289. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  290. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
  291. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  292. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  293. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  294. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  295. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  296. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
  297. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  298. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  299. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  300. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  301. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  302. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
  303. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  304. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
  305. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  306. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  307. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  308. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  309. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  310. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  311. package/fesm2022/c8y-ngx-components-replace-device.mjs +13 -29
  312. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  313. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  314. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  315. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  316. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  317. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  318. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  319. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  320. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  321. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  322. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  323. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  324. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  325. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  326. package/fesm2022/c8y-ngx-components-repository.mjs.map +1 -1
  327. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  328. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  329. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +33 -27
  330. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  331. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +17 -320
  332. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  333. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  334. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  335. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  336. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  337. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  338. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  339. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  340. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  341. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  342. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  343. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  344. package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
  345. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +3 -3
  346. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
  347. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  348. package/fesm2022/c8y-ngx-components-static-assets.mjs.map +1 -1
  349. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  350. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  351. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  352. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  353. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  354. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  355. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  356. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  357. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  358. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  359. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  360. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  361. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  362. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
  363. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  364. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  366. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  367. package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
  368. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  370. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  372. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +4 -4
  373. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  374. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  375. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  376. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  377. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  378. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  379. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  380. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  381. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
  382. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  383. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  384. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  385. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  386. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  387. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +18 -14
  388. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  389. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +4 -2
  390. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  391. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  392. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  393. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  394. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  395. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +4 -2
  396. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  397. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
  398. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  399. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  400. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  401. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  402. package/fesm2022/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
  403. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +22 -22
  404. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  405. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  406. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  407. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  408. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs.map +1 -1
  409. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  410. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  411. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
  412. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  413. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +50 -36
  414. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  415. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  416. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  417. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
  418. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  419. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  420. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  421. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +22 -22
  422. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  423. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  424. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  425. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  426. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  427. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
  428. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  429. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  430. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  431. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  432. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  433. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  434. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  435. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
  436. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  437. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  438. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  439. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
  440. package/fesm2022/c8y-ngx-components-widgets.mjs +4 -4
  441. package/fesm2022/c8y-ngx-components-widgets.mjs.map +1 -1
  442. package/fesm2022/c8y-ngx-components.mjs +1658 -1315
  443. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  444. package/icon-selector/icons/index.d.ts +1 -1
  445. package/icon-selector/icons/platform/index.d.ts +2 -2
  446. package/icon-selector/icons/platform/index.d.ts.map +1 -1
  447. package/locales/de.po +26 -3
  448. package/locales/es.po +26 -3
  449. package/locales/fr.po +26 -3
  450. package/locales/ja_JP.po +25 -3
  451. package/locales/ko.po +26 -3
  452. package/locales/locales.pot +25 -2
  453. package/locales/nl.po +26 -3
  454. package/locales/pl.po +26 -3
  455. package/locales/pt_BR.po +26 -3
  456. package/locales/zh_CN.po +26 -3
  457. package/locales/zh_TW.po +26 -3
  458. package/package.json +1 -1
  459. package/replace-device/replace-device.module.d.ts.map +1 -1
  460. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts +6 -6
  461. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
  462. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts +0 -1
  463. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts.map +1 -1
  464. package/sensor-phone/sensor-phone.module.d.ts +2 -3
  465. package/sensor-phone/sensor-phone.module.d.ts.map +1 -1
  466. package/widgets/definitions/datapoints-table/index.d.ts +1 -2
  467. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  468. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts +1 -1
  469. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts.map +1 -1
  470. package/widgets/definitions/image/index.d.ts +1 -1
  471. package/widgets/definitions/image/index.d.ts.map +1 -1
  472. package/widgets/definitions/markdown/index.d.ts +1 -1
  473. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  474. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  475. package/widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.d.ts.map +1 -1
@@ -132,10 +132,10 @@ class AddSoftwareModalComponent {
132
132
  softwareType: software
133
133
  });
134
134
  }
135
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AddSoftwareModalComponent, deps: [{ token: i1.BsModalRef }, { token: i1$1.RepositoryService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
136
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: AddSoftwareModalComponent, isStandalone: true, selector: "c8y-add-software-software-modal", outputs: { saved: "saved" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["softwareForm"], descendants: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-tools'\"></i>\n <div class=\"modal-title\" translate id=\"addSoftwareModalTitle\">Add software</div>\n </div>\n <div class=\"p-16 text-center separator-bottom\" *ngIf=\"!softwarePreselected\">\n <p class=\"text-medium text-16\" translate>Select or create new software</p>\n </div>\n <form\n class=\"d-contents\"\n autocomplete=\"off\"\n #softwareForm=\"ngForm\"\n (ngSubmit)=\"softwareForm.form.valid && save()\"\n >\n <div class=\"modal-inner-scroll\">\n <div class=\"modal-body\" id=\"addSoftwareModalDescription\">\n <div [hidden]=\"softwarePreselected\">\n <c8y-form-group>\n <label for=\"softwareName\" translate>Software</label>\n <c8y-typeahead\n [(ngModel)]=\"model.selected\"\n name=\"softwareName\"\n placeholder=\"{{ 'Select or enter' | translate }}\"\n (onSearch)=\"onInput.next($event)\"\n [required]=\"true\"\n >\n <c8y-li\n *c8yFor=\"\n let software of softwaresResult;\n loadMore: 'auto';\n notFound: notFoundTemplate\n \"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"onSoftwareSelect(software)\"\n [active]=\"model.selected === software\"\n >\n <c8y-highlight\n [text]=\"software.name || '--'\"\n [pattern]=\"onInput | async\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"(onInput | async)?.length > 0\">\n <span translate>No match found.</span>\n <button\n class=\"btn btn-primary btn-xs m-l-8\"\n type=\"button\"\n title=\"{{ 'Add new`software`' | translate }}\"\n >\n {{ 'Add new`software`' | translate }}\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-form-group>\n <label for=\"softwareDescription\" translate>Description</label>\n <input\n id=\"softwareDescription\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"description\"\n [(ngModel)]=\"model.description\"\n placeholder=\"{{ 'e.g. Cloud connectivity software' | translate }}\"\n [disabled]=\"model.selected?.id\"\n [required]=\"true\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label class=\"control-label\" for=\"softwareDeviceTypeFilter\">\n {{ 'Device type filter' | translate }}\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"softwareDeviceTypeFilter\"\n class=\"form-control\"\n name=\"softwareDeviceTypeFilter\"\n [(ngModel)]=\"model.deviceType\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n [disabled]=\"model.selected?.id\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label for=\"softwareType\" translate>Software type</label>\n <c8y-software-type\n name=\"softwareType\"\n [(ngModel)]=\"model.softwareType\"\n [disabled]=\"model.selected?.id\"\n ></c8y-software-type>\n </c8y-form-group>\n </div>\n\n <c8y-form-group>\n <label for=\"softwareVersion\" translate>Version</label>\n <input\n id=\"softwareVersion\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"version\"\n [(ngModel)]=\"model.version\"\n placeholder=\"{{ 'e.g.' | translate }} 1.0.0\"\n [required]=\"true\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <div class=\"legend form-block m-t-40\" translate>Software file</div>\n <c8y-file-picker\n [maxAllowedFiles]=\"1\"\n [allowedUploadChoices]=\"['uploadBinary', 'uploadUrl', 'provided']\"\n (onFilesPicked)=\"onFile($event)\"\n [fileUrlPopover]=\"textForSoftwareUrlPopover\"\n ></c8y-file-picker>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"cancel()\"\n [disabled]=\"saving\"\n >\n {{ 'Cancel' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Add software' | translate }}\"\n [ngClass]=\"{ 'btn-pending': saving }\"\n [disabled]=\"\n !softwareForm.form.valid ||\n softwareForm.form.pristine ||\n saving ||\n (!model.binary?.url && !model.binary?.file)\n \"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.REPOSITORY\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.ADD_SOFTWARE_MODAL,\n result:\n softwarePreselected || model.selected?.id\n ? PRODUCT_EXPERIENCE.SOFTWARE.RESULTS.ADD_SOFTWARE_VERSION\n : PRODUCT_EXPERIENCE.SOFTWARE.RESULTS.ADD_SOFTWARE\n }\"\n >\n {{ 'Add software' | translate }}\n </button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { 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: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: SoftwareTypeComponent, selector: "c8y-software-type", inputs: ["softwareTypeMO", "disabled", "style", "required", "placeholder", "emitResultsOnly", "showBtnInNotFoundMessage", "allowFreeEntries", "showClearSelectionOption", "clearSelectionOptionLabel", "presetSoftwareTypes"], outputs: ["onSelectSoftware"] }, { kind: "component", type: FilePickerComponent, selector: "c8y-file-picker", inputs: ["maxAllowedFiles", "uploadChoice", "allowedUploadChoices", "fileUrl", "fileBinary", "config", "filePickerIndex", "fileUrlPopover"], outputs: ["onFilesPicked"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
135
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AddSoftwareModalComponent, deps: [{ token: i1.BsModalRef }, { token: i1$1.RepositoryService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
136
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: AddSoftwareModalComponent, isStandalone: true, selector: "c8y-add-software-software-modal", outputs: { saved: "saved" }, viewQueries: [{ propertyName: "form", first: true, predicate: ["softwareForm"], descendants: true }], ngImport: i0, template: "<div class=\"viewport-modal\">\n <div class=\"modal-header dialog-header\">\n <i [c8yIcon]=\"'c8y-tools'\"></i>\n <div class=\"modal-title\" translate id=\"addSoftwareModalTitle\">Add software</div>\n </div>\n <div class=\"p-16 text-center separator-bottom\" *ngIf=\"!softwarePreselected\">\n <p class=\"text-medium text-16\" translate>Select or create new software</p>\n </div>\n <form\n class=\"d-contents\"\n autocomplete=\"off\"\n #softwareForm=\"ngForm\"\n (ngSubmit)=\"softwareForm.form.valid && save()\"\n >\n <div class=\"modal-inner-scroll\">\n <div class=\"modal-body\" id=\"addSoftwareModalDescription\">\n <div [hidden]=\"softwarePreselected\">\n <c8y-form-group>\n <label for=\"softwareName\" translate>Software</label>\n <c8y-typeahead\n [(ngModel)]=\"model.selected\"\n name=\"softwareName\"\n placeholder=\"{{ 'Select or enter' | translate }}\"\n (onSearch)=\"onInput.next($event)\"\n [required]=\"true\"\n >\n <c8y-li\n *c8yFor=\"\n let software of softwaresResult;\n loadMore: 'auto';\n notFound: notFoundTemplate\n \"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"onSoftwareSelect(software)\"\n [active]=\"model.selected === software\"\n >\n <c8y-highlight\n [text]=\"software.name || '--'\"\n [pattern]=\"onInput | async\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-level-2 p-8\" *ngIf=\"(onInput | async)?.length > 0\">\n <span translate>No match found.</span>\n <button\n class=\"btn btn-primary btn-xs m-l-8\"\n type=\"button\"\n title=\"{{ 'Add new`software`' | translate }}\"\n >\n {{ 'Add new`software`' | translate }}\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-form-group>\n <label for=\"softwareDescription\" translate>Description</label>\n <input\n id=\"softwareDescription\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"description\"\n [(ngModel)]=\"model.description\"\n placeholder=\"{{ 'e.g. Cloud connectivity software' | translate }}\"\n [disabled]=\"model.selected?.id\"\n [required]=\"true\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label class=\"control-label\" for=\"softwareDeviceTypeFilter\">\n {{ 'Device type filter' | translate }}\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices.'\n | translate\n }}\"\n placement=\"right\"\n triggers=\"focus\"\n container=\"body\"\n ></button>\n </label>\n <input\n id=\"softwareDeviceTypeFilter\"\n class=\"form-control\"\n name=\"softwareDeviceTypeFilter\"\n [(ngModel)]=\"model.deviceType\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n [disabled]=\"model.selected?.id\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label for=\"softwareType\" translate>Software type</label>\n <c8y-software-type\n name=\"softwareType\"\n [(ngModel)]=\"model.softwareType\"\n [disabled]=\"model.selected?.id\"\n ></c8y-software-type>\n </c8y-form-group>\n </div>\n\n <c8y-form-group>\n <label for=\"softwareVersion\" translate>Version</label>\n <input\n id=\"softwareVersion\"\n class=\"form-control\"\n autocomplete=\"off\"\n name=\"version\"\n [(ngModel)]=\"model.version\"\n placeholder=\"{{ 'e.g.' | translate }} 1.0.0\"\n [required]=\"true\"\n [pattern]=\"ValidationPattern.rules.noWhiteSpaceOnly.pattern\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <div class=\"legend form-block m-t-40\" translate>Software file</div>\n <c8y-file-picker\n [maxAllowedFiles]=\"1\"\n [allowedUploadChoices]=\"['uploadBinary', 'uploadUrl', 'provided']\"\n (onFilesPicked)=\"onFile($event)\"\n [fileUrlPopover]=\"textForSoftwareUrlPopover\"\n ></c8y-file-picker>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"modal-footer\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Cancel' | translate }}\"\n (click)=\"cancel()\"\n [disabled]=\"saving\"\n >\n {{ 'Cancel' | translate }}\n </button>\n\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Add software' | translate }}\"\n [ngClass]=\"{ 'btn-pending': saving }\"\n [disabled]=\"\n !softwareForm.form.valid ||\n softwareForm.form.pristine ||\n saving ||\n (!model.binary?.url && !model.binary?.file)\n \"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.REPOSITORY\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.ADD_SOFTWARE_MODAL,\n result:\n softwarePreselected || model.selected?.id\n ? PRODUCT_EXPERIENCE.SOFTWARE.RESULTS.ADD_SOFTWARE_VERSION\n : PRODUCT_EXPERIENCE.SOFTWARE.RESULTS.ADD_SOFTWARE\n }\"\n >\n {{ 'Add software' | translate }}\n </button>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { 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.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { 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", "title", "highlightFirstItem"], outputs: ["onSearch", "onIconClick"] }, { 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: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "component", type: HighlightComponent, selector: "c8y-highlight", inputs: ["pattern", "text", "elementClass", "shouldTrimPattern"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: SoftwareTypeComponent, selector: "c8y-software-type", inputs: ["softwareTypeMO", "disabled", "style", "required", "placeholder", "emitResultsOnly", "showBtnInNotFoundMessage", "allowFreeEntries", "showClearSelectionOption", "clearSelectionOptionLabel", "presetSoftwareTypes"], outputs: ["onSelectSoftware"] }, { kind: "component", type: FilePickerComponent, selector: "c8y-file-picker", inputs: ["maxAllowedFiles", "uploadChoice", "allowedUploadChoices", "fileUrl", "fileBinary", "config", "filePickerIndex", "fileUrlPopover"], outputs: ["onFilesPicked"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
137
137
  }
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: AddSoftwareModalComponent, decorators: [{
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AddSoftwareModalComponent, decorators: [{
139
139
  type: Component,
140
140
  args: [{ selector: 'c8y-add-software-software-modal', imports: [
141
141
  IconDirective,
@@ -294,10 +294,10 @@ class SoftwareListComponent {
294
294
  trackByName(_index, column) {
295
295
  return column.name;
296
296
  }
297
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareListComponent, deps: [{ token: i1$1.RepositoryService }, { token: i2.DataGridService }, { token: i2.ModalService }, { token: i1.BsModalService }, { token: i4$1.TranslateService }, { token: i2.AlertService }, { token: i1$2.Router }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
298
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: SoftwareListComponent, isStandalone: true, selector: "c8y-software-list", ngImport: i0, template: "<c8y-title>\n {{ 'Software repository' | translate }}\n</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"c8y-tools\"\n label=\"{{ 'Software repository' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add software' | translate }}\"\n type=\"button\"\n (click)=\"addSoftware()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add software' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-software\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"'Software' | translate\"\n [refresh]=\"refresh$\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'c8y-tools'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <p *ngIf=\"stats?.size === 0\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Add software' | translate\"\n type=\"button\"\n (click)=\"addSoftware()\"\n >\n {{ 'Add software' | translate }}\n </button>\n </p>\n </c8y-ui-empty-state>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "childNodePagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "treeGrid", "hideReload", "childNodesProperty", "parentNodeLabelProperty"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "directive", type: EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
297
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareListComponent, deps: [{ token: i1$1.RepositoryService }, { token: i2.DataGridService }, { token: i2.ModalService }, { token: i1.BsModalService }, { token: i4$1.TranslateService }, { token: i2.AlertService }, { token: i1$2.Router }, { token: i1$2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
298
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SoftwareListComponent, isStandalone: true, selector: "c8y-software-list", ngImport: i0, template: "<c8y-title>\n {{ 'Software repository' | translate }}\n</c8y-title>\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n icon=\"c8y-management\"\n label=\"{{ 'Management' | translate }}\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n icon=\"c8y-tools\"\n label=\"{{ 'Software repository' | translate }}\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Add software' | translate }}\"\n type=\"button\"\n (click)=\"addSoftware()\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add software' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-help\n src=\"/docs/device-management-application/managing-device-data/#managing-software\"\n></c8y-help>\n\n<div class=\"content-fullpage border-top border-bottom\">\n <c8y-data-grid\n [title]=\"'Software' | translate\"\n [refresh]=\"refresh$\"\n [pagination]=\"pagination\"\n [columns]=\"columns\"\n [actionControls]=\"actionControls\"\n [infiniteScroll]=\"'auto'\"\n [serverSideDataCallback]=\"serverSideDataCallback\"\n >\n <c8y-ui-empty-state\n [icon]=\"stats?.size > 0 ? 'search' : 'c8y-tools'\"\n [title]=\"stats?.size > 0 ? (noResultsMessage | translate) : (noDataMessage | translate)\"\n [subtitle]=\"stats?.size > 0 ? (noResultsSubtitle | translate) : (noDataSubtitle | translate)\"\n *emptyStateContext=\"let stats\"\n [horizontal]=\"stats?.size > 0\"\n >\n <p *ngIf=\"stats?.size === 0\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Add software' | translate\"\n type=\"button\"\n (click)=\"addSoftware()\"\n >\n {{ 'Add software' | translate }}\n </button>\n </p>\n </c8y-ui-empty-state>\n <ng-container *ngFor=\"let column of columns; trackBy: trackByName\">\n <c8y-column [name]=\"column.name\"></c8y-column>\n </ng-container>\n </c8y-data-grid>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: HelpComponent, selector: "c8y-help", inputs: ["src", "isCollapsed", "priority", "icon"] }, { kind: "component", type: DataGridComponent, selector: "c8y-data-grid", inputs: ["title", "loadMoreItemsLabel", "loadingItemsLabel", "showSearch", "refresh", "columns", "rows", "pagination", "childNodePagination", "infiniteScroll", "serverSideDataCallback", "selectable", "singleSelection", "selectionPrimaryKey", "displayOptions", "actionControls", "bulkActionControls", "headerActionControls", "searchText", "configureColumnsEnabled", "showCounterWarning", "activeClassName", "expandableRows", "treeGrid", "hideReload", "childNodesProperty", "parentNodeLabelProperty"], outputs: ["rowMouseOver", "rowMouseLeave", "rowClick", "onConfigChange", "onBeforeFilter", "onBeforeSearch", "onFilter", "itemsSelect", "onReload", "onAddCustomColumn", "onRemoveCustomColumn", "onColumnFilterReset", "onSort", "onPageSizeChange", "onColumnReordered", "onColumnVisibilityChange"] }, { kind: "directive", type: EmptyStateContextDirective, selector: "[emptyStateContext]" }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: ColumnDirective, selector: "c8y-column", inputs: ["name"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
299
299
  }
300
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareListComponent, decorators: [{
300
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareListComponent, decorators: [{
301
301
  type: Component,
302
302
  args: [{ selector: 'c8y-software-list', imports: [
303
303
  TitleComponent,
@@ -416,8 +416,8 @@ class SoftwareDetailsComponent {
416
416
  this.destroy$.next(true);
417
417
  this.destroy$.unsubscribe();
418
418
  }
419
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareDetailsComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i2$1.InventoryService }, { token: i1$1.RepositoryService }, { token: i2.AlertService }, { token: i4$1.TranslateService }, { token: i2.ModalService }, { token: i1.BsModalService }, { token: i2.GainsightService }, { token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
420
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: SoftwareDetailsComponent, isStandalone: true, selector: "c8y-software-details", viewQueries: [{ propertyName: "softwareType", first: true, predicate: SoftwareTypeComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title>\n {{ (software$ | async)?.name }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n label=\"{{ 'Management' | translate }}\"\n icon=\"c8y-management\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n path=\"#/software\"\n label=\"{{ 'Software repository' | translate }}\"\n icon=\"c8y-tools\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n label=\"{{ (software$ | async)?.name }}\"\n icon=\"c8y-tools\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Add software' | translate }}\"\n (click)=\"addBaseVersion()\"\n *ngIf=\"!(isLegacy$ | async)\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add software' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading$ | async }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-block bg-level-1 flex-no-shrink p-t-24 p-b-24 overflow-visible\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i class=\"c8y-icon-duocolor icon-48 c8y-icon c8y-icon-tools\"></i>\n <p>\n <small class=\"label label-info\">Software</small>\n </p>\n </div>\n <div class=\"flex-grow col-10\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Name' | translate }}\n </label>\n <div class=\"input-group input-group-editable\">\n <input\n #nameInput\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"(software$ | async)?.name\"\n #nameModel=\"ngModel\"\n placeholder=\"{{ 'e.g. My software' | translate }}\"\n [ngStyle]=\"{ 'width.ch': (software$ | async)?.name?.length + 2 || 31 }\"\n required\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"updateSoftware$.next({ name: nameInput.value }); nameModel.reset()\"\n [disabled]=\"nameInput.value.length === 0\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Description' | translate }}\n </label>\n <div class=\"input-group input-group-editable\">\n <input\n #descriptionInput\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"(software$ | async)?.description\"\n #descriptionModel=\"ngModel\"\n placeholder=\"{{ 'e.g. Cloud connectivity software' | translate }}\"\n [ngStyle]=\"{ 'width.ch': (software$ | async)?.description?.length + 2 || 31 }\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"\n updateSoftware$.next({ description: descriptionInput.value });\n descriptionModel.reset()\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Device type' | translate }}\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices.'\n | translate\n }}\"\n triggers=\"focus\"\n container=\"body\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n <div class=\"input-group input-group-editable\">\n <input\n #deviceTypeInput\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"(software$ | async)?.c8y_Filter?.type\"\n #deviceTypeModel=\"ngModel\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n [ngStyle]=\"{ 'width.ch': (software$ | async)?.type?.length + 2 || 31 }\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"\n updateSoftware$.next({ c8y_Filter: { type: deviceTypeInput.value } });\n deviceTypeModel.reset()\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Software type' | translate }}\n </label>\n <div class=\"input-group input-group-editable\">\n <c8y-software-type\n [softwareTypeMO]=\"softwareTypeObject\"\n [style]=\"{ 'width.ch': softwareTypeObject?.softwareType?.length + 2 || 31 }\"\n (onSelectSoftware)=\"onSelectSoftwareType($event)\"\n ></c8y-software-type>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n [ngClass]=\"isSoftwareTypeChanged ? '' : 'hidden'\"\n [disabled]=\"softwareTypeObject?.softwareType === ''\"\n (click)=\"\n updateSoftware$.next({ softwareType: softwareTypeObject.softwareType });\n softwareType.resetInput();\n isSoftwareTypeChanged = false\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator-top-bottom sticky-top bg-component\">\n <div\n class=\"card-title\"\n translate\n >\n Versions\n </div>\n </div>\n\n <div class=\"card-block p-t-0 p-b-24\">\n <c8y-ui-empty-state\n *ngIf=\"(baseVersions$ | async)?.data.length === 0\"\n [icon]=\"'c8y-tools'\"\n [title]=\"'No versions to display.' | translate\"\n [subtitle]=\"'Add a new version by clicking below.' | translate\"\n >\n <p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Add software' | translate }}\"\n (click)=\"addBaseVersion()\"\n >\n {{ 'Add software' | translate }}\n </button>\n </p>\n </c8y-ui-empty-state>\n\n <c8y-list-group *ngIf=\"(baseVersions$ | async)?.data.length > 0\">\n <c8y-li\n *c8yFor=\"let baseVersion of baseVersions$ | async; let i = index; loadMore: 'auto'\"\n >\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-50\">\n <div class=\"col-4\">\n <p\n class=\"text-truncate-wrap\"\n title=\"{{ baseVersion.c8y_Software.version }}\"\n >\n {{ baseVersion.c8y_Software.version }}\n </p>\n </div>\n <div class=\"col-5\">\n <p class=\"text-truncate-wrap\">\n <span\n class=\"text-label-small m-r-8\"\n translate\n >\n File\n </span>\n <ng-container\n *ngIf=\"baseVersion?.c8y_Software?.url === '$PROVIDED'; else fileDownload\"\n >\n <span title=\"{{ 'Provided by device' | translate }}\">\n {{ 'Provided by device' | translate }}\n </span>\n </ng-container>\n\n <ng-template #fileDownload>\n <span title=\"{{ getBinaryName$(baseVersion.c8y_Software.url) | async }}\">\n <c8y-file-download [url]=\"baseVersion.c8y_Software.url\"></c8y-file-download>\n </span>\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 d-flex a-i-start\">\n <span\n *ngIf=\"isLegacy$ | async\"\n class=\"label label-warning m-l-auto-sm\"\n >\n {{ 'Legacy' | translate }}\n </span>\n\n <div\n class=\"fit-h-20\"\n *ngIf=\"!(isLegacy$ | async)\"\n >\n <button\n class=\"btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8\"\n type=\"button\"\n title=\"{{ 'Delete' | translate }}\"\n (click)=\"deleteBaseVersion(baseVersion)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Delete' | translate }}\n </button>\n </div>\n </div>\n <div\n *ngIf=\"!(isLegacy$ | async)\"\n class=\"m-l-auto fit-h-20 hidden-xs\"\n >\n <button\n class=\"btn btn-dot text-danger showOnHover\"\n type=\"button\"\n data-cy=\"software-details-component--Delete-button\"\n [attr.aria-label]=\"'Delete' | translate\"\n tooltip=\"{{ 'Delete' | translate }}\"\n [delay]=\"500\"\n (click)=\"deleteBaseVersion(baseVersion)\"\n >\n <i c8yIcon=\"delete\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { 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: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: SoftwareTypeComponent, selector: "c8y-software-type", inputs: ["softwareTypeMO", "disabled", "style", "required", "placeholder", "emitResultsOnly", "showBtnInNotFoundMessage", "allowFreeEntries", "showClearSelectionOption", "clearSelectionOptionLabel", "presetSoftwareTypes"], outputs: ["onSelectSoftware"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { 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: 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: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: FileDownloadComponent, selector: "c8y-file-download", inputs: ["url"] }, { 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: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
419
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareDetailsComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i2$1.InventoryService }, { token: i1$1.RepositoryService }, { token: i2.AlertService }, { token: i4$1.TranslateService }, { token: i2.ModalService }, { token: i1.BsModalService }, { token: i2.GainsightService }, { token: i1$2.Router }], target: i0.ɵɵFactoryTarget.Component }); }
420
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SoftwareDetailsComponent, isStandalone: true, selector: "c8y-software-details", viewQueries: [{ propertyName: "softwareType", first: true, predicate: SoftwareTypeComponent, descendants: true, static: true }], ngImport: i0, template: "<c8y-title>\n {{ (software$ | async)?.name }}\n</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n label=\"{{ 'Management' | translate }}\"\n icon=\"c8y-management\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n path=\"#/software\"\n label=\"{{ 'Software repository' | translate }}\"\n icon=\"c8y-tools\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n label=\"{{ (software$ | async)?.name }}\"\n icon=\"c8y-tools\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Add software' | translate }}\"\n (click)=\"addBaseVersion()\"\n *ngIf=\"!(isLegacy$ | async)\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add software' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n type=\"button\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"reload$.next()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading$ | async }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-block bg-level-1 flex-no-shrink p-t-24 p-b-24 overflow-visible\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i class=\"c8y-icon-duocolor icon-48 c8y-icon c8y-icon-tools\"></i>\n <p>\n <small class=\"label label-info\">Software</small>\n </p>\n </div>\n <div class=\"flex-grow col-10\">\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Name' | translate }}\n </label>\n <div class=\"input-group input-group-editable\">\n <input\n #nameInput\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"(software$ | async)?.name\"\n #nameModel=\"ngModel\"\n placeholder=\"{{ 'e.g. My software' | translate }}\"\n [ngStyle]=\"{ 'width.ch': (software$ | async)?.name?.length + 2 || 31 }\"\n required\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"updateSoftware$.next({ name: nameInput.value }); nameModel.reset()\"\n [disabled]=\"nameInput.value.length === 0\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Description' | translate }}\n </label>\n <div class=\"input-group input-group-editable\">\n <input\n #descriptionInput\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"(software$ | async)?.description\"\n #descriptionModel=\"ngModel\"\n placeholder=\"{{ 'e.g. Cloud connectivity software' | translate }}\"\n [ngStyle]=\"{ 'width.ch': (software$ | async)?.description?.length + 2 || 31 }\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"\n updateSoftware$.next({ description: descriptionInput.value });\n descriptionModel.reset()\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Device type' | translate }}\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n popover=\"{{\n 'If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices.'\n | translate\n }}\"\n triggers=\"focus\"\n container=\"body\"\n >\n <i c8yIcon=\"question-circle-o\"></i>\n </button>\n </label>\n <div class=\"input-group input-group-editable\">\n <input\n #deviceTypeInput\n type=\"text\"\n class=\"form-control\"\n [ngModel]=\"(software$ | async)?.c8y_Filter?.type\"\n #deviceTypeModel=\"ngModel\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n [ngStyle]=\"{ 'width.ch': (software$ | async)?.type?.length + 2 || 31 }\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"\n updateSoftware$.next({ c8y_Filter: { type: deviceTypeInput.value } });\n deviceTypeModel.reset()\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </div>\n <div class=\"col-sm-6\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Software type' | translate }}\n </label>\n <div class=\"input-group input-group-editable\">\n <c8y-software-type\n [softwareTypeMO]=\"softwareTypeObject\"\n [style]=\"{ 'width.ch': softwareTypeObject?.softwareType?.length + 2 || 31 }\"\n (onSelectSoftware)=\"onSelectSoftwareType($event)\"\n ></c8y-software-type>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n [ngClass]=\"isSoftwareTypeChanged ? '' : 'hidden'\"\n [disabled]=\"softwareTypeObject?.softwareType === ''\"\n (click)=\"\n updateSoftware$.next({ softwareType: softwareTypeObject.softwareType });\n softwareType.resetInput();\n isSoftwareTypeChanged = false\n \"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator-top-bottom sticky-top bg-component\">\n <div\n class=\"card-title\"\n translate\n >\n Versions\n </div>\n </div>\n\n <div class=\"card-block p-t-0 p-b-24\">\n <c8y-ui-empty-state\n *ngIf=\"(baseVersions$ | async)?.data.length === 0\"\n [icon]=\"'c8y-tools'\"\n [title]=\"'No versions to display.' | translate\"\n [subtitle]=\"'Add a new version by clicking below.' | translate\"\n >\n <p>\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Add software' | translate }}\"\n (click)=\"addBaseVersion()\"\n >\n {{ 'Add software' | translate }}\n </button>\n </p>\n </c8y-ui-empty-state>\n\n <c8y-list-group *ngIf=\"(baseVersions$ | async)?.data.length > 0\">\n <c8y-li\n *c8yFor=\"let baseVersion of baseVersions$ | async; let i = index; loadMore: 'auto'\"\n >\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-50\">\n <div class=\"col-4\">\n <p\n class=\"text-truncate-wrap\"\n title=\"{{ baseVersion.c8y_Software.version }}\"\n >\n {{ baseVersion.c8y_Software.version }}\n </p>\n </div>\n <div class=\"col-5\">\n <p class=\"text-truncate-wrap\">\n <span\n class=\"text-label-small m-r-8\"\n translate\n >\n File\n </span>\n <ng-container\n *ngIf=\"baseVersion?.c8y_Software?.url === '$PROVIDED'; else fileDownload\"\n >\n <span title=\"{{ 'Provided by device' | translate }}\">\n {{ 'Provided by device' | translate }}\n </span>\n </ng-container>\n\n <ng-template #fileDownload>\n <span title=\"{{ getBinaryName$(baseVersion.c8y_Software.url) | async }}\">\n <c8y-file-download [url]=\"baseVersion.c8y_Software.url\"></c8y-file-download>\n </span>\n </ng-template>\n </p>\n </div>\n <div class=\"col-2 d-flex a-i-start\">\n <span\n *ngIf=\"isLegacy$ | async\"\n class=\"label label-warning m-l-auto-sm\"\n >\n {{ 'Legacy' | translate }}\n </span>\n\n <div\n class=\"fit-h-20\"\n *ngIf=\"!(isLegacy$ | async)\"\n >\n <button\n class=\"btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8\"\n type=\"button\"\n title=\"{{ 'Delete' | translate }}\"\n (click)=\"deleteBaseVersion(baseVersion)\"\n >\n <i c8yIcon=\"delete\"></i>\n {{ 'Delete' | translate }}\n </button>\n </div>\n </div>\n <div\n *ngIf=\"!(isLegacy$ | async)\"\n class=\"m-l-auto fit-h-20 hidden-xs\"\n >\n <button\n class=\"btn btn-dot text-danger showOnHover\"\n type=\"button\"\n data-cy=\"software-details-component--Delete-button\"\n [attr.aria-label]=\"'Delete' | translate\"\n tooltip=\"{{ 'Delete' | translate }}\"\n [delay]=\"500\"\n (click)=\"deleteBaseVersion(baseVersion)\"\n >\n <i c8yIcon=\"delete\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n </div>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: TitleComponent, selector: "c8y-title", inputs: ["pageTitleUpdate"] }, { kind: "component", type: BreadcrumbComponent, selector: "c8y-breadcrumb" }, { kind: "component", type: BreadcrumbItemComponent, selector: "c8y-breadcrumb-item", inputs: ["icon", "translate", "label", "path", "injector"] }, { kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { 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: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { 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.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: PopoverDirective, selector: "[popover]", inputs: ["adaptivePosition", "boundariesElement", "popover", "popoverContext", "popoverTitle", "placement", "outsideClick", "triggers", "container", "containerClass", "isOpen", "delay"], outputs: ["onShown", "onHidden"], exportAs: ["bs-popover"] }, { kind: "component", type: SoftwareTypeComponent, selector: "c8y-software-type", inputs: ["softwareTypeMO", "disabled", "style", "required", "placeholder", "emitResultsOnly", "showBtnInNotFoundMessage", "allowFreeEntries", "showClearSelectionOption", "clearSelectionOptionLabel", "presetSoftwareTypes"], outputs: ["onSelectSoftware"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { 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: 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: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "component", type: FileDownloadComponent, selector: "c8y-file-download", inputs: ["url"] }, { 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: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
421
421
  }
422
422
  __decorate([
423
423
  memoize(),
@@ -425,7 +425,7 @@ __decorate([
425
425
  __metadata("design:paramtypes", [Object]),
426
426
  __metadata("design:returntype", void 0)
427
427
  ], SoftwareDetailsComponent.prototype, "getBinaryName$", null);
428
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareDetailsComponent, decorators: [{
428
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareDetailsComponent, decorators: [{
429
429
  type: Component,
430
430
  args: [{ selector: 'c8y-software-details', imports: [
431
431
  TitleComponent,
@@ -471,10 +471,10 @@ class SoftwareRepositoryNavigationFactory {
471
471
  get() {
472
472
  return this.node;
473
473
  }
474
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryNavigationFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
475
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryNavigationFactory }); }
474
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryNavigationFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
475
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryNavigationFactory }); }
476
476
  }
477
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryNavigationFactory, decorators: [{
477
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryNavigationFactory, decorators: [{
478
478
  type: Injectable
479
479
  }], ctorParameters: () => [] });
480
480
 
@@ -497,17 +497,17 @@ class SoftwareRepositoryListModule {
497
497
  ]
498
498
  };
499
499
  }
500
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
501
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryListModule, imports: [SharedRepositoryModule,
500
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
501
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryListModule, imports: [SharedRepositoryModule,
502
502
  SoftwareListComponent,
503
503
  SoftwareDetailsComponent,
504
504
  AddSoftwareModalComponent] }); }
505
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryListModule, imports: [SharedRepositoryModule,
505
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryListModule, imports: [SharedRepositoryModule,
506
506
  SoftwareListComponent,
507
507
  SoftwareDetailsComponent,
508
508
  AddSoftwareModalComponent] }); }
509
509
  }
510
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryListModule, decorators: [{
510
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryListModule, decorators: [{
511
511
  type: NgModule,
512
512
  args: [{
513
513
  imports: [
@@ -596,10 +596,10 @@ class DeviceSoftwareService {
596
596
  }
597
597
  });
598
598
  }
599
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceSoftwareService, deps: [{ token: i2.ServiceRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }
600
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceSoftwareService, providedIn: 'root' }); }
599
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceSoftwareService, deps: [{ token: i2.ServiceRegistry }], target: i0.ɵɵFactoryTarget.Injectable }); }
600
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceSoftwareService, providedIn: 'root' }); }
601
601
  }
602
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceSoftwareService, decorators: [{
602
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceSoftwareService, decorators: [{
603
603
  type: Injectable,
604
604
  args: [{
605
605
  providedIn: 'root'
@@ -654,10 +654,10 @@ class DeviceSoftwareListComponent {
654
654
  this.emptyList = isEmpty;
655
655
  this.onListEmpty.emit(isEmpty);
656
656
  }
657
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceSoftwareListComponent, deps: [{ token: DeviceSoftwareService }], target: i0.ɵɵFactoryTarget.Component }); }
658
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DeviceSoftwareListComponent, isStandalone: true, selector: "c8y-device-software-list", inputs: { softwareList: "softwareList", device: "device", deviceSoftwareChanges: "deviceSoftwareChanges", filterCriteria$: "filterCriteria$" }, outputs: { update: "update", remove: "remove", onListEmpty: "onListEmpty" }, ngImport: i0, template: "<c8y-list-group class=\"no-border-2nd-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *c8yFor=\"let software of softwareItems$\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-9\">\n <p class=\"d-flex\">\n <!-- SOFTWARE NAME -->\n <span class=\"text-truncate\">\n {{ software.name }}\n </span>\n <!-- SOFTWARE TYPE-->\n <span class=\"text-truncate\">\n <span class=\"label label-primary m-l-8\">{{ software.softwareType }}</span>\n </span>\n </p>\n <!-- SOFTWARE VERSION -->\n <p class=\"d-flex a-i-center\">\n <span class=\"text-truncate text-label-small m-r-4\" translate>Version</span>\n <span class=\"text-truncate m-r-4\" title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n <i\n *ngIf=\"software.installed\"\n c8yIcon=\"warning\"\n class=\"text-warning a-s-center\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: software.name, version: software.version }\n \"\n container=\"body\"\n placement=\"top\"\n [delay]=\"500\"\n ></i>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-3 text-right m-0 flex-grow d-flex a-i-center\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n class=\"btn btn-default btn-xs m-l-auto m-r-4\"\n type=\"button\"\n title=\"{{ 'Update`software,verb`' | translate }}\"\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n (click)=\"update.emit(software)\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.OPEN_UPDATE_SOFTWARE\n }\"\n >\n {{ 'Update`software,verb`' | translate }}\n </button>\n\n <!-- REMOVE SOFTWARE -->\n <button\n class=\"btn btn-dot btn-dot--danger m-l-4\"\n type=\"button\"\n [attr.aria-label]=\"'Remove`software,verb`' | translate\"\n tooltip=\"{{ 'Remove`software,verb`' | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [delay]=\"500\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.DELETE_SOFTWARE\n }\"\n *ngIf=\"showRemove && !isSoftwareGoingToBeChanged(software)\"\n (click)=\"remove.emit(software)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n<!-- NO SEARCH RESULTS STATE -->\n<div class=\"card-block\" *ngIf=\"noSearchResults || emptyList\">\n <ng-content *ngIf=\"emptyList\" select=\".c8y-empty-state:not(.c8y-no-results-state)\"></ng-content>\n <ng-content *ngIf=\"noSearchResults\" select=\".c8y-no-results-state\"></ng-content>\n</div>\n", dependencies: [{ 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: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
657
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceSoftwareListComponent, deps: [{ token: DeviceSoftwareService }], target: i0.ɵɵFactoryTarget.Component }); }
658
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DeviceSoftwareListComponent, isStandalone: true, selector: "c8y-device-software-list", inputs: { softwareList: "softwareList", device: "device", deviceSoftwareChanges: "deviceSoftwareChanges", filterCriteria$: "filterCriteria$" }, outputs: { update: "update", remove: "remove", onListEmpty: "onListEmpty" }, ngImport: i0, template: "<c8y-list-group class=\"no-border-2nd-last\">\n <c8y-li\n [ngClass]=\"{ disabled: isSoftwareGoingToBeChanged(software) }\"\n *c8yFor=\"let software of softwareItems$\"\n >\n <!-- SOFTWARE ICON -->\n <c8y-li-icon>\n <i c8yIcon=\"c8y-tools\"></i>\n </c8y-li-icon>\n\n <c8y-li-body class=\"content-flex-20\">\n <div title=\"{{ software.name }}\" class=\"col-9\">\n <p class=\"d-flex\">\n <!-- SOFTWARE NAME -->\n <span class=\"text-truncate\">\n {{ software.name }}\n </span>\n <!-- SOFTWARE TYPE-->\n <span class=\"text-truncate\">\n <span class=\"label label-primary m-l-8\">{{ software.softwareType }}</span>\n </span>\n </p>\n <!-- SOFTWARE VERSION -->\n <p class=\"d-flex a-i-center\">\n <span class=\"text-truncate text-label-small m-r-4\" translate>Version</span>\n <span class=\"text-truncate m-r-4\" title=\"{{ software.version }}\">\n {{ software.version }}\n </span>\n <i\n *ngIf=\"software.installed\"\n c8yIcon=\"warning\"\n class=\"text-warning a-s-center\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: software.name, version: software.version }\n \"\n container=\"body\"\n placement=\"top\"\n [delay]=\"500\"\n ></i>\n </p>\n </div>\n\n <div\n *ngIf=\"supportsSoftwareOperations && (showUpdate || showRemove)\"\n class=\"col-3 text-right m-0 flex-grow d-flex a-i-center\"\n >\n <!-- UPDATE SOFTWARE -->\n <button\n class=\"btn btn-default btn-xs m-l-auto m-r-4\"\n type=\"button\"\n title=\"{{ 'Update`software,verb`' | translate }}\"\n *ngIf=\"showUpdate && !isSoftwareGoingToBeChanged(software)\"\n (click)=\"update.emit(software)\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.OPEN_UPDATE_SOFTWARE\n }\"\n >\n {{ 'Update`software,verb`' | translate }}\n </button>\n\n <!-- REMOVE SOFTWARE -->\n <button\n class=\"btn btn-dot btn-dot--danger m-l-4\"\n type=\"button\"\n [attr.aria-label]=\"'Remove`software,verb`' | translate\"\n tooltip=\"{{ 'Remove`software,verb`' | translate }}\"\n placement=\"bottom\"\n container=\"body\"\n [delay]=\"500\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.DELETE_SOFTWARE\n }\"\n *ngIf=\"showRemove && !isSoftwareGoingToBeChanged(software)\"\n (click)=\"remove.emit(software)\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n</c8y-list-group>\n<!-- NO SEARCH RESULTS STATE -->\n<div class=\"card-block\" *ngIf=\"noSearchResults || emptyList\">\n <ng-content *ngIf=\"emptyList\" select=\".c8y-empty-state:not(.c8y-no-results-state)\"></ng-content>\n <ng-content *ngIf=\"noSearchResults\" select=\".c8y-no-results-state\"></ng-content>\n</div>\n", dependencies: [{ 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: ListItemComponent, selector: "c8y-list-item, c8y-li", inputs: ["active", "highlighted", "emptyActions", "dense", "collapsed", "selectable"], outputs: ["collapsedChange"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: ListItemIconComponent, selector: "c8y-list-item-icon, c8y-li-icon", inputs: ["icon", "status"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: ListItemBodyComponent, selector: "c8y-list-item-body, c8y-li-body", inputs: ["body"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
659
659
  }
660
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceSoftwareListComponent, decorators: [{
660
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceSoftwareListComponent, decorators: [{
661
661
  type: Component,
662
662
  args: [{ selector: 'c8y-device-software-list', imports: [
663
663
  ListGroupComponent,
@@ -712,10 +712,10 @@ class DeviceSoftwareChangesComponent {
712
712
  this.changes$.next(changes.changes.currentValue);
713
713
  }
714
714
  }
715
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceSoftwareChangesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
716
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DeviceSoftwareChangesComponent, isStandalone: true, selector: "c8y-device-software-changes", inputs: { changes: "changes", changesInProgress: "changesInProgress", deviceSoftwareChangesOperation: "deviceSoftwareChangesOperation" }, outputs: { clear: "clear", drop: "drop", apply: "apply", hideSoftwareChanges: "hideSoftwareChanges" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top visible-sm visible-xs\">\n <button\n class=\"btn btn-dot text-primary\"\n [title]=\"'Back' | translate\"\n type=\"button\"\n (click)=\"hideSoftwareChanges.emit()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n </div>\n <div class=\"card-header separator large-padding sticky-top\">\n <div\n class=\"card-title\"\n translate\n >\n Software changes\n </div>\n </div>\n <div class=\"flex-grow\">\n <fieldset\n class=\"card-block large-padding bg-level-2 p-0\"\n id=\"operation-block\"\n *ngIf=\"deviceSoftwareChangesOperation\"\n >\n <c8y-operation-details [operation]=\"deviceSoftwareChangesOperation\"></c8y-operation-details>\n </fieldset>\n </div>\n <div\n class=\"flex-grow inner-scroll\"\n id=\"software-changes-list\"\n >\n <div\n class=\"card-block large-padding\"\n *ngIf=\"(changes$ | async).length === 0; else changesList\"\n >\n <div class=\"c8y-empty-state\">\n <div class=\"h1 c8y-icon c8y-icon-device-control c8y-icon-duocolor\"></div>\n <p>\n <strong translate>No software changes.</strong>\n <br />\n <small translate>Selected actions will be displayed here.</small>\n </p>\n </div>\n </div>\n\n <ng-template #changesList>\n <fieldset\n class=\"card-block p-t-0 p-b-0\"\n *ngIf=\"(installations$ | async).length > 0\"\n [disabled]=\"changesInProgress\"\n >\n <div\n class=\"form-block legend\"\n translate\n >\n Installations`software`\n </div>\n <c8y-device-software-list\n [softwareList]=\"installations$ | async\"\n (remove)=\"drop.emit($event)\"\n ></c8y-device-software-list>\n </fieldset>\n\n <fieldset\n class=\"card-block p-t-0 p-b-0\"\n *ngIf=\"(removals$ | async).length > 0\"\n [disabled]=\"changesInProgress\"\n >\n <div\n class=\"form-block legend\"\n translate\n >\n Removals`software`\n </div>\n <c8y-device-software-list\n [softwareList]=\"removals$ | async\"\n (remove)=\"drop.emit($event)\"\n ></c8y-device-software-list>\n </fieldset>\n </ng-template>\n </div>\n <div\n class=\"card-footer separator large-padding sticky-bottom\"\n *ngIf=\"(changes$ | async).length > 0\"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Clear changes' | translate }}\"\n type=\"button\"\n (click)=\"clear.emit()\"\n [disabled]=\"changesInProgress\"\n translate\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_CHANGES,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.CLEAR_SOFTWARE_CHANGES\n }\"\n >\n Clear`changes`\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ applyButtonLabel | translate }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn-pending': changesInProgress }\"\n [disabled]=\"changesInProgress\"\n (click)=\"apply.emit(); hideSoftwareChanges.emit()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_CHANGES,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.APPLY_SOFTWARE_CHANGES\n }\"\n >\n {{ applyButtonLabel | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OperationDetailsComponent, selector: "c8y-operation-details", inputs: ["operation"] }, { kind: "component", type: DeviceSoftwareListComponent, selector: "c8y-device-software-list", inputs: ["softwareList", "device", "deviceSoftwareChanges", "filterCriteria$"], outputs: ["update", "remove", "onListEmpty"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
715
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceSoftwareChangesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
716
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DeviceSoftwareChangesComponent, isStandalone: true, selector: "c8y-device-software-changes", inputs: { changes: "changes", changesInProgress: "changesInProgress", deviceSoftwareChangesOperation: "deviceSoftwareChangesOperation" }, outputs: { clear: "clear", drop: "drop", apply: "apply", hideSoftwareChanges: "hideSoftwareChanges" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"inner-scroll d-flex d-col\">\n <div class=\"card-header separator sticky-top visible-sm visible-xs\">\n <button\n class=\"btn btn-dot text-primary\"\n [title]=\"'Back' | translate\"\n type=\"button\"\n (click)=\"hideSoftwareChanges.emit()\"\n >\n <i c8yIcon=\"chevron-left\"></i>\n <span translate>Back</span>\n </button>\n </div>\n <div class=\"card-header separator large-padding sticky-top\">\n <div\n class=\"card-title\"\n translate\n >\n Software changes\n </div>\n </div>\n <div class=\"flex-grow\">\n <fieldset\n class=\"card-block large-padding bg-level-2 p-0\"\n id=\"operation-block\"\n *ngIf=\"deviceSoftwareChangesOperation\"\n >\n <c8y-operation-details [operation]=\"deviceSoftwareChangesOperation\"></c8y-operation-details>\n </fieldset>\n </div>\n <div\n class=\"flex-grow inner-scroll\"\n id=\"software-changes-list\"\n >\n <div\n class=\"card-block large-padding\"\n *ngIf=\"(changes$ | async).length === 0; else changesList\"\n >\n <div class=\"c8y-empty-state\">\n <div class=\"h1 c8y-icon c8y-icon-device-control c8y-icon-duocolor\"></div>\n <p>\n <strong translate>No software changes.</strong>\n <br />\n <small translate>Selected actions will be displayed here.</small>\n </p>\n </div>\n </div>\n\n <ng-template #changesList>\n <fieldset\n class=\"card-block p-t-0 p-b-0\"\n *ngIf=\"(installations$ | async).length > 0\"\n [disabled]=\"changesInProgress\"\n >\n <div\n class=\"form-block legend\"\n translate\n >\n Installations`software`\n </div>\n <c8y-device-software-list\n [softwareList]=\"installations$ | async\"\n (remove)=\"drop.emit($event)\"\n ></c8y-device-software-list>\n </fieldset>\n\n <fieldset\n class=\"card-block p-t-0 p-b-0\"\n *ngIf=\"(removals$ | async).length > 0\"\n [disabled]=\"changesInProgress\"\n >\n <div\n class=\"form-block legend\"\n translate\n >\n Removals`software`\n </div>\n <c8y-device-software-list\n [softwareList]=\"removals$ | async\"\n (remove)=\"drop.emit($event)\"\n ></c8y-device-software-list>\n </fieldset>\n </ng-template>\n </div>\n <div\n class=\"card-footer separator large-padding sticky-bottom\"\n *ngIf=\"(changes$ | async).length > 0\"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Clear changes' | translate }}\"\n type=\"button\"\n (click)=\"clear.emit()\"\n [disabled]=\"changesInProgress\"\n translate\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_CHANGES,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.CLEAR_SOFTWARE_CHANGES\n }\"\n >\n Clear`changes`\n </button>\n <button\n class=\"btn btn-primary\"\n title=\"{{ applyButtonLabel | translate }}\"\n type=\"button\"\n [ngClass]=\"{ 'btn-pending': changesInProgress }\"\n [disabled]=\"changesInProgress\"\n (click)=\"apply.emit(); hideSoftwareChanges.emit()\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_CHANGES,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.APPLY_SOFTWARE_CHANGES\n }\"\n >\n {{ applyButtonLabel | translate }}\n </button>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OperationDetailsComponent, selector: "c8y-operation-details", inputs: ["operation"] }, { kind: "component", type: DeviceSoftwareListComponent, selector: "c8y-device-software-list", inputs: ["softwareList", "device", "deviceSoftwareChanges", "filterCriteria$"], outputs: ["update", "remove", "onListEmpty"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
717
717
  }
718
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DeviceSoftwareChangesComponent, decorators: [{
718
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DeviceSoftwareChangesComponent, decorators: [{
719
719
  type: Component,
720
720
  args: [{ selector: 'c8y-device-software-changes', imports: [
721
721
  IconDirective,
@@ -902,10 +902,10 @@ class InstalledSoftwareComponent {
902
902
  software: ((item.options || []).find(option => option.obj.id === item.selectedId) || {}).obj
903
903
  })), mergeMap(({ item, software }) => from(this.repository.isSoftwareInstalledOnDevice(this.device.id, software)).pipe(map(installed => ({ item, installed })))), tap(({ item }) => updateInstallableList$.next({ object: item })), filter$1(({ installed }) => !!installed));
904
904
  }
905
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: InstalledSoftwareComponent, deps: [{ token: i1$1.RepositoryService }, { token: i1.BsModalService }], target: i0.ɵɵFactoryTarget.Component }); }
906
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: InstalledSoftwareComponent, isStandalone: true, selector: "c8y-installed-software", inputs: { device: "device", softwareList: "softwareList", deviceSoftwareChanges: "deviceSoftwareChanges", deviceSoftwareChangesInProgress: "deviceSoftwareChangesInProgress", typesQuery: "typesQuery" }, outputs: { changes: "changes", showSoftwareChanges: "showSoftwareChanges" }, viewQueries: [{ propertyName: "alreadyInstalledWarningTemplate", first: true, predicate: ["alreadyInstalledWarning"], descendants: true, static: true }, { propertyName: "loadingTemplate", first: true, predicate: ["loading"], descendants: true, static: true }, { propertyName: "softwareTypeTemplate", first: true, predicate: ["softwareType"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"d-flex d-col flex-grow\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div\n class=\"card-title\"\n translate\n >\n Installed software\n </div>\n </div>\n <div class=\"flex-grow\">\n <fieldset\n class=\"card-block large-padding overflow-visible separator-bottom\"\n *ngIf=\"showFilter\"\n >\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <div class=\"input-group input-group-search\">\n <label\n class=\"sr-only\"\n for=\"filter\"\n >\n {{ 'Filter\u2026' | translate }}\n </label>\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n id=\"filter\"\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 <span\n class=\"sr-only\"\n for=\"search\"\n translate\n >\n Filter\u2026\n </span>\n </div>\n </div>\n <div class=\"col-xs-6\">\n <c8y-software-type\n [required]=\"false\"\n [emitResultsOnly]=\"true\"\n [showBtnInNotFoundMessage]=\"false\"\n [allowFreeEntries]=\"false\"\n [placeholder]=\"'Filter by software type\u2026' | translate\"\n [showClearSelectionOption]=\"true\"\n [presetSoftwareTypes]=\"device.c8y_SupportedSoftwareTypes\"\n (onSelectSoftware)=\"softwareTypeFilter$.next($event?.softwareType)\"\n ></c8y-software-type>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"flex-grow inner-scroll\"\n id=\"software-list\"\n [disabled]=\"deviceSoftwareChangesInProgress\"\n >\n <!-- NOT EMPTY STATE -->\n <c8y-device-software-list\n class=\"d-block p-l-16 p-r-16\"\n container=\"body\"\n [device]=\"device\"\n [filterCriteria$]=\"filterCriteria$\"\n [softwareList]=\"softwareList\"\n [deviceSoftwareChanges]=\"deviceSoftwareChanges\"\n (update)=\"updateSoftware($event)\"\n (remove)=\"removeSoftware($event)\"\n (onListEmpty)=\"showFilter = !$event\"\n >\n <!-- EMPTY STATE -->\n <div class=\"c8y-empty-state text-center\">\n <div class=\"h1 c8y-icon c8y-icon-tools c8y-icon-duocolor\"></div>\n <p>\n <strong translate>No software installed.</strong>\n <br />\n <small translate>Click below to install software into this device.</small>\n </p>\n </div>\n <!-- NO SEARCH RESULTS STATE -->\n <div class=\"c8y-empty-state c8y-no-results-state text-center\">\n <div class=\"h1 c8y-icon c8y-icon-tools c8y-icon-duocolor\"></div>\n <p>\n <strong translate>No software matches your filter criteria.</strong>\n <br />\n <small translate>Try changing your search criteria.</small>\n </p>\n </div>\n </c8y-device-software-list>\n </fieldset>\n </div>\n <!-- INSTALL SOFTWARE-->\n <div\n class=\"card-footer large-padding separator sticky-bottom d-flex j-c-between bg-level-0\"\n [ngClass]=\"{ 'visible-sm visible-xs': !supportsSoftwareOperations }\"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Install software' | translate }}\"\n *ngIf=\"supportsSoftwareOperations\"\n (click)=\"installSoftware()\"\n [disabled]=\"deviceSoftwareChangesInProgress\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.OPEN_INSTALL_SOFTWARE\n }\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install software' | translate }}\n </button>\n <button\n class=\"btn btn-clean text-primary visible-sm visible-xs\"\n [title]=\"'Show &quot;Software changes&quot;' | translate\"\n (click)=\"showSoftwareChanges.emit()\"\n >\n <span translate>Show \"Software changes\"</span>\n <i c8yIcon=\"chevron-right\"></i>\n </button>\n </div>\n</div>\n\n<ng-template\n #alreadyInstalledWarning\n let-item\n let-option=\"option\"\n>\n <i\n class=\"text-warning a-s-center\"\n c8yIcon=\"warning\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: item.body[0].value, version: option.body[0].value }\n \"\n ></i>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"p-relative d-flex m-l-auto\">\n <i\n class=\"icon-spin\"\n c8yIcon=\"circle-o-notch\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #softwareType>\n <c8y-software-type\n additionalFilter\n [required]=\"false\"\n [placeholder]=\"'Filter by software type\u2026' | translate\"\n (onSelectSoftware)=\"search({ softwareType: $event?.softwareType })\"\n [emitResultsOnly]=\"true\"\n [showBtnInNotFoundMessage]=\"false\"\n [allowFreeEntries]=\"false\"\n [showClearSelectionOption]=\"true\"\n [presetSoftwareTypes]=\"device.c8y_SupportedSoftwareTypes\"\n ></c8y-software-type>\n</ng-template>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: SoftwareTypeComponent, selector: "c8y-software-type", inputs: ["softwareTypeMO", "disabled", "style", "required", "placeholder", "emitResultsOnly", "showBtnInNotFoundMessage", "allowFreeEntries", "showClearSelectionOption", "clearSelectionOptionLabel", "presetSoftwareTypes"], outputs: ["onSelectSoftware"] }, { kind: "component", type: DeviceSoftwareListComponent, selector: "c8y-device-software-list", inputs: ["softwareList", "device", "deviceSoftwareChanges", "filterCriteria$"], outputs: ["update", "remove", "onListEmpty"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { 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: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
905
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InstalledSoftwareComponent, deps: [{ token: i1$1.RepositoryService }, { token: i1.BsModalService }], target: i0.ɵɵFactoryTarget.Component }); }
906
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: InstalledSoftwareComponent, isStandalone: true, selector: "c8y-installed-software", inputs: { device: "device", softwareList: "softwareList", deviceSoftwareChanges: "deviceSoftwareChanges", deviceSoftwareChangesInProgress: "deviceSoftwareChangesInProgress", typesQuery: "typesQuery" }, outputs: { changes: "changes", showSoftwareChanges: "showSoftwareChanges" }, viewQueries: [{ propertyName: "alreadyInstalledWarningTemplate", first: true, predicate: ["alreadyInstalledWarning"], descendants: true, static: true }, { propertyName: "loadingTemplate", first: true, predicate: ["loading"], descendants: true, static: true }, { propertyName: "softwareTypeTemplate", first: true, predicate: ["softwareType"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"d-flex d-col flex-grow\">\n <div class=\"card-header large-padding separator sticky-top\">\n <div\n class=\"card-title\"\n translate\n >\n Installed software\n </div>\n </div>\n <div class=\"flex-grow\">\n <fieldset\n class=\"card-block large-padding overflow-visible separator-bottom\"\n *ngIf=\"showFilter\"\n >\n <div class=\"row\">\n <div class=\"col-xs-6\">\n <div class=\"input-group input-group-search\">\n <label\n class=\"sr-only\"\n for=\"filter\"\n >\n {{ 'Filter\u2026' | translate }}\n </label>\n <input\n class=\"form-control\"\n title=\"{{ 'Filter\u2026' | translate }}\"\n id=\"filter\"\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 <span\n class=\"sr-only\"\n for=\"search\"\n translate\n >\n Filter\u2026\n </span>\n </div>\n </div>\n <div class=\"col-xs-6\">\n <c8y-software-type\n [required]=\"false\"\n [emitResultsOnly]=\"true\"\n [showBtnInNotFoundMessage]=\"false\"\n [allowFreeEntries]=\"false\"\n [placeholder]=\"'Filter by software type\u2026' | translate\"\n [showClearSelectionOption]=\"true\"\n [presetSoftwareTypes]=\"device.c8y_SupportedSoftwareTypes\"\n (onSelectSoftware)=\"softwareTypeFilter$.next($event?.softwareType)\"\n ></c8y-software-type>\n </div>\n </div>\n </fieldset>\n\n <fieldset\n class=\"flex-grow inner-scroll\"\n id=\"software-list\"\n [disabled]=\"deviceSoftwareChangesInProgress\"\n >\n <!-- NOT EMPTY STATE -->\n <c8y-device-software-list\n class=\"d-block p-l-16 p-r-16\"\n container=\"body\"\n [device]=\"device\"\n [filterCriteria$]=\"filterCriteria$\"\n [softwareList]=\"softwareList\"\n [deviceSoftwareChanges]=\"deviceSoftwareChanges\"\n (update)=\"updateSoftware($event)\"\n (remove)=\"removeSoftware($event)\"\n (onListEmpty)=\"showFilter = !$event\"\n >\n <!-- EMPTY STATE -->\n <div class=\"c8y-empty-state text-center\">\n <div class=\"h1 c8y-icon c8y-icon-tools c8y-icon-duocolor\"></div>\n <p>\n <strong translate>No software installed.</strong>\n <br />\n <small translate>Click below to install software into this device.</small>\n </p>\n </div>\n <!-- NO SEARCH RESULTS STATE -->\n <div class=\"c8y-empty-state c8y-no-results-state text-center\">\n <div class=\"h1 c8y-icon c8y-icon-tools c8y-icon-duocolor\"></div>\n <p>\n <strong translate>No software matches your filter criteria.</strong>\n <br />\n <small translate>Try changing your search criteria.</small>\n </p>\n </div>\n </c8y-device-software-list>\n </fieldset>\n </div>\n <!-- INSTALL SOFTWARE-->\n <div\n class=\"card-footer large-padding separator sticky-bottom d-flex j-c-between bg-level-0\"\n [ngClass]=\"{ 'visible-sm visible-xs': !supportsSoftwareOperations }\"\n >\n <button\n class=\"btn btn-default\"\n title=\"{{ 'Install software' | translate }}\"\n *ngIf=\"supportsSoftwareOperations\"\n (click)=\"installSoftware()\"\n [disabled]=\"deviceSoftwareChangesInProgress\"\n c8yProductExperience\n [actionName]=\"PRODUCT_EXPERIENCE.SOFTWARE.EVENTS.DEVICE_TAB\"\n [actionData]=\"{\n component: PRODUCT_EXPERIENCE.SOFTWARE.COMPONENTS.DEVICE_SOFTWARE_LIST,\n action: PRODUCT_EXPERIENCE.SOFTWARE.ACTIONS.OPEN_INSTALL_SOFTWARE\n }\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Install software' | translate }}\n </button>\n <button\n class=\"btn btn-clean text-primary visible-sm visible-xs\"\n [title]=\"'Show &quot;Software changes&quot;' | translate\"\n (click)=\"showSoftwareChanges.emit()\"\n >\n <span translate>Show \"Software changes\"</span>\n <i c8yIcon=\"chevron-right\"></i>\n </button>\n </div>\n</div>\n\n<ng-template\n #alreadyInstalledWarning\n let-item\n let-option=\"option\"\n>\n <i\n class=\"text-warning a-s-center\"\n c8yIcon=\"warning\"\n [tooltip]=\"\n alreadyInstalledMessage\n | translate: { name: item.body[0].value, version: option.body[0].value }\n \"\n ></i>\n</ng-template>\n\n<ng-template #loading>\n <div class=\"p-relative d-flex m-l-auto\">\n <i\n class=\"icon-spin\"\n c8yIcon=\"circle-o-notch\"\n ></i>\n </div>\n</ng-template>\n\n<ng-template #softwareType>\n <c8y-software-type\n additionalFilter\n [required]=\"false\"\n [placeholder]=\"'Filter by software type\u2026' | translate\"\n (onSelectSoftware)=\"search({ softwareType: $event?.softwareType })\"\n [emitResultsOnly]=\"true\"\n [showBtnInNotFoundMessage]=\"false\"\n [allowFreeEntries]=\"false\"\n [showClearSelectionOption]=\"true\"\n [presetSoftwareTypes]=\"device.c8y_SupportedSoftwareTypes\"\n ></c8y-software-type>\n</ng-template>\n", dependencies: [{ kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "component", type: SoftwareTypeComponent, selector: "c8y-software-type", inputs: ["softwareTypeMO", "disabled", "style", "required", "placeholder", "emitResultsOnly", "showBtnInNotFoundMessage", "allowFreeEntries", "showClearSelectionOption", "clearSelectionOptionLabel", "presetSoftwareTypes"], outputs: ["onSelectSoftware"] }, { kind: "component", type: DeviceSoftwareListComponent, selector: "c8y-device-software-list", inputs: ["softwareList", "device", "deviceSoftwareChanges", "filterCriteria$"], outputs: ["update", "remove", "onListEmpty"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: ProductExperienceDirective, selector: "[c8yProductExperience]", inputs: ["actionName", "actionData", "inherit", "suppressDataOverriding"] }, { 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: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
907
907
  }
908
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: InstalledSoftwareComponent, decorators: [{
908
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InstalledSoftwareComponent, decorators: [{
909
909
  type: Component,
910
910
  args: [{ selector: 'c8y-installed-software', imports: [
911
911
  C8yTranslateDirective,
@@ -1046,10 +1046,10 @@ class SoftwareDeviceTabComponent {
1046
1046
  isInProgress(operation) {
1047
1047
  return (operation && [OperationStatus.PENDING, OperationStatus.EXECUTING].includes(operation.status));
1048
1048
  }
1049
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareDeviceTabComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i1$1.RepositoryService }, { token: i2$1.InventoryService }, { token: DeviceSoftwareService }, { token: i2.ServiceRegistry }], target: i0.ɵɵFactoryTarget.Component }); }
1050
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: SoftwareDeviceTabComponent, isStandalone: true, selector: "c8y-software-device-tab", ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"loadDevice()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card split-view--7-5 m-b-0\">\n <c8y-installed-software\n class=\"split-view__list\"\n [device]=\"device$ | async\"\n [typesQuery]=\"typesQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n (showSoftwareChanges)=\"showSoftwareChanges = true\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"bg-level-1 split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': showSoftwareChanges }\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n (hideSoftwareChanges)=\"showSoftwareChanges = false\"\n ></c8y-device-software-changes>\n</div>\n", dependencies: [{ kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: InstalledSoftwareComponent, selector: "c8y-installed-software", inputs: ["device", "softwareList", "deviceSoftwareChanges", "deviceSoftwareChangesInProgress", "typesQuery"], outputs: ["changes", "showSoftwareChanges"] }, { kind: "component", type: DeviceSoftwareChangesComponent, selector: "c8y-device-software-changes", inputs: ["changes", "changesInProgress", "deviceSoftwareChangesOperation"], outputs: ["clear", "drop", "apply", "hideSoftwareChanges"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
1049
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareDeviceTabComponent, deps: [{ token: i1$2.ActivatedRoute }, { token: i1$1.RepositoryService }, { token: i2$1.InventoryService }, { token: DeviceSoftwareService }, { token: i2.ServiceRegistry }], target: i0.ɵɵFactoryTarget.Component }); }
1050
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: SoftwareDeviceTabComponent, isStandalone: true, selector: "c8y-software-device-tab", ngImport: i0, template: "<c8y-action-bar-item [placement]=\"'right'\">\n <button\n class=\"btn btn-link\"\n title=\"{{ 'Reload' | translate }}\"\n (click)=\"loadDevice()\"\n >\n <i\n c8yIcon=\"refresh\"\n [ngClass]=\"{ 'icon-spin': reloading }\"\n ></i>\n {{ 'Reload' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div class=\"card split-view--7-5 m-b-0\">\n <c8y-installed-software\n class=\"split-view__list\"\n [device]=\"device$ | async\"\n [typesQuery]=\"typesQuery$ | async\"\n [softwareList]=\"list$ | async\"\n [deviceSoftwareChanges]=\"changes$ | async\"\n [deviceSoftwareChangesInProgress]=\"changesInProgress$ | async\"\n (changes)=\"addChanges($event)\"\n (showSoftwareChanges)=\"showSoftwareChanges = true\"\n ></c8y-installed-software>\n <c8y-device-software-changes\n class=\"bg-level-1 split-view__detail\"\n [ngClass]=\"{ 'split-view__detail--selected': showSoftwareChanges }\"\n [deviceSoftwareChangesOperation]=\"changesOperation$ | async\"\n [changes]=\"changes$ | async\"\n [changesInProgress]=\"changesInProgress$ | async\"\n (clear)=\"clearChanges()\"\n (drop)=\"dropChange($event)\"\n (apply)=\"applyChanges()\"\n (hideSoftwareChanges)=\"showSoftwareChanges = false\"\n ></c8y-device-software-changes>\n</div>\n", dependencies: [{ kind: "component", type: ActionBarItemComponent, selector: "c8y-action-bar-item", inputs: ["placement", "priority", "itemClass", "injector", "groupId", "inGroupPriority"] }, { kind: "directive", type: IconDirective, selector: "[c8yIcon]", inputs: ["c8yIcon"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: InstalledSoftwareComponent, selector: "c8y-installed-software", inputs: ["device", "softwareList", "deviceSoftwareChanges", "deviceSoftwareChangesInProgress", "typesQuery"], outputs: ["changes", "showSoftwareChanges"] }, { kind: "component", type: DeviceSoftwareChangesComponent, selector: "c8y-device-software-changes", inputs: ["changes", "changesInProgress", "deviceSoftwareChangesOperation"], outputs: ["clear", "drop", "apply", "hideSoftwareChanges"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
1051
1051
  }
1052
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareDeviceTabComponent, decorators: [{
1052
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareDeviceTabComponent, decorators: [{
1053
1053
  type: Component,
1054
1054
  args: [{ selector: 'c8y-software-device-tab', imports: [
1055
1055
  ActionBarItemComponent,
@@ -1077,10 +1077,10 @@ class SoftwareDeviceTabGuard {
1077
1077
  const supportedOperations = device?.c8y_SupportedOperations || [];
1078
1078
  return this.operations.some(operation => supportedOperations.indexOf(operation) >= 0);
1079
1079
  }
1080
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareDeviceTabGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1081
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareDeviceTabGuard }); }
1080
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareDeviceTabGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1081
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareDeviceTabGuard }); }
1082
1082
  }
1083
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareDeviceTabGuard, decorators: [{
1083
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareDeviceTabGuard, decorators: [{
1084
1084
  type: Injectable
1085
1085
  }] });
1086
1086
 
@@ -1102,21 +1102,21 @@ class SoftwareRepositoryDeviceTabModule {
1102
1102
  ]
1103
1103
  };
1104
1104
  }
1105
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryDeviceTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1106
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryDeviceTabModule, imports: [SharedRepositoryModule,
1105
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryDeviceTabModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1106
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryDeviceTabModule, imports: [SharedRepositoryModule,
1107
1107
  OperationDetailsModule,
1108
1108
  SoftwareDeviceTabComponent,
1109
1109
  InstalledSoftwareComponent,
1110
1110
  DeviceSoftwareListComponent,
1111
1111
  DeviceSoftwareChangesComponent] }); }
1112
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryDeviceTabModule, imports: [SharedRepositoryModule,
1112
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryDeviceTabModule, imports: [SharedRepositoryModule,
1113
1113
  OperationDetailsModule,
1114
1114
  SoftwareDeviceTabComponent,
1115
1115
  InstalledSoftwareComponent,
1116
1116
  DeviceSoftwareListComponent,
1117
1117
  DeviceSoftwareChangesComponent] }); }
1118
1118
  }
1119
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryDeviceTabModule, decorators: [{
1119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryDeviceTabModule, decorators: [{
1120
1120
  type: NgModule,
1121
1121
  args: [{
1122
1122
  imports: [
@@ -1131,11 +1131,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
1131
1131
  }] });
1132
1132
 
1133
1133
  class SoftwareRepositoryModule {
1134
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1135
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryModule, imports: [SoftwareRepositoryDeviceTabModule, SoftwareRepositoryListModule] }); }
1136
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryModule, imports: [SoftwareRepositoryDeviceTabModule.forRoot(), SoftwareRepositoryListModule.forRoot()] }); }
1134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1135
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryModule, imports: [SoftwareRepositoryDeviceTabModule, SoftwareRepositoryListModule] }); }
1136
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryModule, imports: [SoftwareRepositoryDeviceTabModule.forRoot(), SoftwareRepositoryListModule.forRoot()] }); }
1137
1137
  }
1138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: SoftwareRepositoryModule, decorators: [{
1138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SoftwareRepositoryModule, decorators: [{
1139
1139
  type: NgModule,
1140
1140
  args: [{
1141
1141
  imports: [SoftwareRepositoryDeviceTabModule.forRoot(), SoftwareRepositoryListModule.forRoot()]