@c8y/ngx-components 1022.30.0 → 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 (460) 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.service.d.ts.map +1 -1
  22. package/core/i18n/pattern-messages.data.d.ts +7 -0
  23. package/core/i18n/pattern-messages.data.d.ts.map +1 -1
  24. package/core/query-param-handler/query-param-handler.service.d.ts +1 -1
  25. package/core/query-param-handler/query-param-handler.service.d.ts.map +1 -1
  26. package/core/query-param-handler/query-param-modal-handler.service.d.ts +16 -5
  27. package/core/query-param-handler/query-param-modal-handler.service.d.ts.map +1 -1
  28. package/datapoints-export-selector/datapoints-export-selector-modal/datapoints-export-selector-file-exporter/data-fetching.service.d.ts.map +1 -1
  29. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +16 -16
  30. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  31. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs +7 -7
  32. package/fesm2022/c8y-ngx-components-advanced-software-management.mjs.map +1 -1
  33. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +34 -34
  34. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  35. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs +4 -4
  36. package/fesm2022/c8y-ngx-components-alarms-cockpit.mjs.map +1 -1
  37. package/fesm2022/c8y-ngx-components-alarms-devicemanagement.mjs.map +1 -1
  38. package/fesm2022/c8y-ngx-components-alarms.mjs +73 -73
  39. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  40. package/fesm2022/c8y-ngx-components-api.mjs +7 -7
  41. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  42. package/fesm2022/c8y-ngx-components-app-logs.mjs +10 -10
  43. package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
  44. package/fesm2022/c8y-ngx-components-asset-properties.mjs +427 -66
  45. package/fesm2022/c8y-ngx-components-asset-properties.mjs.map +1 -1
  46. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs} +13 -13
  47. package/fesm2022/{c8y-ngx-components-asset-property-grid.component-WUN1r4fC.mjs.map → c8y-ngx-components-asset-property-grid.component-CRnyUbyz.mjs.map} +1 -1
  48. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +32 -32
  49. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  50. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +114 -114
  51. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  52. package/fesm2022/c8y-ngx-components-binary-file-download.mjs +7 -7
  53. package/fesm2022/c8y-ngx-components-binary-file-download.mjs.map +1 -1
  54. package/fesm2022/c8y-ngx-components-bookmarks.mjs +13 -13
  55. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  56. package/fesm2022/c8y-ngx-components-branding-base-branding.mjs +4 -4
  57. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs +7 -7
  58. package/fesm2022/c8y-ngx-components-branding-dark-theme.mjs.map +1 -1
  59. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs +7 -7
  60. package/fesm2022/c8y-ngx-components-branding-extra-css-branding-editor.mjs.map +1 -1
  61. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs +3 -3
  62. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor-lazy.mjs.map +1 -1
  63. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs +7 -7
  64. package/fesm2022/c8y-ngx-components-branding-plain-branding-editor.mjs.map +1 -1
  65. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs +15 -15
  66. package/fesm2022/c8y-ngx-components-branding-shared-data.mjs.map +1 -1
  67. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs +6 -6
  68. package/fesm2022/c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs.map +1 -1
  69. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs +33 -33
  70. package/fesm2022/c8y-ngx-components-branding-shared-lazy.mjs.map +1 -1
  71. package/fesm2022/c8y-ngx-components-branding-shared.mjs +10 -10
  72. package/fesm2022/c8y-ngx-components-branding-shared.mjs.map +1 -1
  73. package/fesm2022/c8y-ngx-components-child-devices.mjs +13 -13
  74. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  75. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +40 -40
  76. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  77. package/fesm2022/c8y-ngx-components-connectivity.mjs +53 -53
  78. package/fesm2022/c8y-ngx-components-connectivity.mjs.map +1 -1
  79. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs +10 -10
  80. package/fesm2022/c8y-ngx-components-context-dashboard-asset-add.mjs.map +1 -1
  81. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs +7 -7
  82. package/fesm2022/c8y-ngx-components-context-dashboard-asset-view.mjs.map +1 -1
  83. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs +11 -11
  84. package/fesm2022/c8y-ngx-components-context-dashboard-cockpit-home-dashboard.mjs.map +1 -1
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. 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
  91. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs +10 -10
  92. package/fesm2022/c8y-ngx-components-context-dashboard-device-add.mjs.map +1 -1
  93. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs +7 -7
  94. package/fesm2022/c8y-ngx-components-context-dashboard-device-view.mjs.map +1 -1
  95. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +107 -102
  96. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  97. 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
  98. 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
  99. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs +12 -12
  100. package/fesm2022/c8y-ngx-components-dashboard-details-advanced-tab.mjs.map +1 -1
  101. package/fesm2022/c8y-ngx-components-dashboard-manager-devicemanagement.mjs.map +1 -1
  102. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +22 -22
  103. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  104. package/fesm2022/c8y-ngx-components-data-broker.mjs +7 -7
  105. package/fesm2022/c8y-ngx-components-data-broker.mjs.map +1 -1
  106. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs +3 -3
  107. package/fesm2022/c8y-ngx-components-data-grid-columns-asset-type.mjs.map +1 -1
  108. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs +3 -3
  109. package/fesm2022/c8y-ngx-components-data-grid-columns.mjs.map +1 -1
  110. package/fesm2022/c8y-ngx-components-datapoint-explorer-devicemanagement.mjs.map +1 -1
  111. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs +24 -24
  112. package/fesm2022/c8y-ngx-components-datapoint-explorer-view.mjs.map +1 -1
  113. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +7 -7
  114. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  115. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs +3 -3
  116. package/fesm2022/c8y-ngx-components-datapoint-library-details.mjs.map +1 -1
  117. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs +3 -3
  118. package/fesm2022/c8y-ngx-components-datapoint-library-list.mjs.map +1 -1
  119. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs +3 -3
  120. package/fesm2022/c8y-ngx-components-datapoint-library-services.mjs.map +1 -1
  121. package/fesm2022/c8y-ngx-components-datapoint-library.mjs +4 -4
  122. package/fesm2022/c8y-ngx-components-datapoint-library.mjs.map +1 -1
  123. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +40 -40
  124. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  125. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs +41 -40
  126. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  127. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +16 -16
  128. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  129. package/fesm2022/c8y-ngx-components-device-grid.mjs +43 -43
  130. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  131. package/fesm2022/c8y-ngx-components-device-list.mjs +22 -22
  132. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  133. package/fesm2022/c8y-ngx-components-device-map.mjs +12 -12
  134. package/fesm2022/c8y-ngx-components-device-map.mjs.map +1 -1
  135. package/fesm2022/c8y-ngx-components-device-profile.mjs +34 -34
  136. package/fesm2022/c8y-ngx-components-device-profile.mjs.map +1 -1
  137. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs +3 -3
  138. package/fesm2022/c8y-ngx-components-device-protocol-object-mappings.mjs.map +1 -1
  139. package/fesm2022/c8y-ngx-components-device-protocols.mjs +16 -16
  140. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  141. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +13 -13
  142. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  143. package/fesm2022/c8y-ngx-components-device-shell.mjs +31 -31
  144. package/fesm2022/c8y-ngx-components-device-shell.mjs.map +1 -1
  145. package/fesm2022/c8y-ngx-components-diagnostics.mjs +13 -13
  146. package/fesm2022/c8y-ngx-components-diagnostics.mjs.map +1 -1
  147. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  148. package/fesm2022/c8y-ngx-components-echart.mjs +27 -27
  149. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  150. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +43 -43
  151. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  152. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +7 -7
  153. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
  154. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +10 -10
  155. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  156. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs +7 -7
  157. package/fesm2022/c8y-ngx-components-ecosystem-plugin-setup-stepper.mjs.map +1 -1
  158. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +46 -46
  159. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  160. package/fesm2022/c8y-ngx-components-ecosystem.mjs +82 -82
  161. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  162. package/fesm2022/c8y-ngx-components-editor.mjs +6 -6
  163. package/fesm2022/c8y-ngx-components-editor.mjs.map +1 -1
  164. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs +3 -3
  165. package/fesm2022/c8y-ngx-components-events-events-timeline.mjs.map +1 -1
  166. package/fesm2022/c8y-ngx-components-events.mjs +3 -3
  167. package/fesm2022/c8y-ngx-components-events.mjs.map +1 -1
  168. package/fesm2022/c8y-ngx-components-exports-list.mjs +6 -6
  169. package/fesm2022/c8y-ngx-components-exports-list.mjs.map +1 -1
  170. package/fesm2022/c8y-ngx-components-exports.mjs.map +1 -1
  171. package/fesm2022/c8y-ngx-components-file-preview.mjs +7 -7
  172. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  173. package/fesm2022/c8y-ngx-components-files-repository.mjs +19 -19
  174. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  175. package/fesm2022/c8y-ngx-components-icon-selector-icons-arrows.mjs.map +1 -1
  176. package/fesm2022/c8y-ngx-components-icon-selector-icons-city.mjs.map +1 -1
  177. package/fesm2022/c8y-ngx-components-icon-selector-icons-data.mjs.map +1 -1
  178. package/fesm2022/c8y-ngx-components-icon-selector-icons-dateAndTime.mjs.map +1 -1
  179. package/fesm2022/c8y-ngx-components-icon-selector-icons-devicesAndSensors.mjs.map +1 -1
  180. package/fesm2022/c8y-ngx-components-icon-selector-icons-ecommerce.mjs.map +1 -1
  181. package/fesm2022/c8y-ngx-components-icon-selector-icons-editing.mjs.map +1 -1
  182. package/fesm2022/c8y-ngx-components-icon-selector-icons-filesAndFolders.mjs.map +1 -1
  183. package/fesm2022/c8y-ngx-components-icon-selector-icons-finance.mjs.map +1 -1
  184. package/fesm2022/c8y-ngx-components-icon-selector-icons-hands.mjs.map +1 -1
  185. package/fesm2022/c8y-ngx-components-icon-selector-icons-location.mjs.map +1 -1
  186. package/fesm2022/c8y-ngx-components-icon-selector-icons-messaging.mjs.map +1 -1
  187. package/fesm2022/c8y-ngx-components-icon-selector-icons-multimedia.mjs.map +1 -1
  188. package/fesm2022/c8y-ngx-components-icon-selector-icons-network.mjs.map +1 -1
  189. package/fesm2022/c8y-ngx-components-icon-selector-icons-office.mjs.map +1 -1
  190. package/fesm2022/c8y-ngx-components-icon-selector-icons-people.mjs.map +1 -1
  191. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs +1 -0
  192. package/fesm2022/c8y-ngx-components-icon-selector-icons-platform.mjs.map +1 -1
  193. package/fesm2022/c8y-ngx-components-icon-selector-icons-programming.mjs.map +1 -1
  194. package/fesm2022/c8y-ngx-components-icon-selector-icons-security.mjs.map +1 -1
  195. package/fesm2022/c8y-ngx-components-icon-selector-icons-transport.mjs.map +1 -1
  196. package/fesm2022/c8y-ngx-components-icon-selector-icons-userInterface.mjs.map +1 -1
  197. package/fesm2022/c8y-ngx-components-icon-selector-icons-weather.mjs.map +1 -1
  198. package/fesm2022/c8y-ngx-components-icon-selector-icons.mjs.map +1 -1
  199. package/fesm2022/c8y-ngx-components-icon-selector-model.mjs.map +1 -1
  200. package/fesm2022/c8y-ngx-components-icon-selector.mjs +19 -19
  201. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  202. package/fesm2022/c8y-ngx-components-interval-picker.mjs +3 -3
  203. package/fesm2022/c8y-ngx-components-interval-picker.mjs.map +1 -1
  204. package/fesm2022/c8y-ngx-components-location.mjs +28 -28
  205. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  206. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +16 -16
  207. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  208. package/fesm2022/c8y-ngx-components-map.mjs +19 -19
  209. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  210. package/fesm2022/c8y-ngx-components-messaging-management.mjs +55 -55
  211. package/fesm2022/c8y-ngx-components-messaging-management.mjs.map +1 -1
  212. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs +7 -7
  213. package/fesm2022/c8y-ngx-components-operations-bulk-operation-from-single.mjs.map +1 -1
  214. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs +19 -19
  215. package/fesm2022/c8y-ngx-components-operations-bulk-operation-list-item.mjs.map +1 -1
  216. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs +7 -7
  217. package/fesm2022/c8y-ngx-components-operations-bulk-operation-scheduler.mjs.map +1 -1
  218. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs +13 -13
  219. package/fesm2022/c8y-ngx-components-operations-bulk-operation-stepper.mjs.map +1 -1
  220. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs +13 -13
  221. package/fesm2022/c8y-ngx-components-operations-bulk-operations-list.mjs.map +1 -1
  222. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs +7 -7
  223. package/fesm2022/c8y-ngx-components-operations-bulk-operations-service.mjs.map +1 -1
  224. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs +7 -7
  225. package/fesm2022/c8y-ngx-components-operations-bulk-operations-stepper-container.mjs.map +1 -1
  226. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs +10 -10
  227. package/fesm2022/c8y-ngx-components-operations-bulk-single-operations-list.mjs.map +1 -1
  228. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs +7 -7
  229. package/fesm2022/c8y-ngx-components-operations-create-bulk-operation-details.mjs.map +1 -1
  230. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs +7 -7
  231. package/fesm2022/c8y-ngx-components-operations-device-selector.mjs.map +1 -1
  232. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs +12 -12
  233. package/fesm2022/c8y-ngx-components-operations-grid-columns.mjs.map +1 -1
  234. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs +13 -13
  235. package/fesm2022/c8y-ngx-components-operations-operation-details.mjs.map +1 -1
  236. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs +7 -7
  237. package/fesm2022/c8y-ngx-components-operations-operation-summary.mjs.map +1 -1
  238. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs +10 -10
  239. package/fesm2022/c8y-ngx-components-operations-operations-list-item-details.mjs.map +1 -1
  240. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs +12 -12
  241. package/fesm2022/c8y-ngx-components-operations-operations-list.mjs.map +1 -1
  242. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs +7 -7
  243. package/fesm2022/c8y-ngx-components-operations-operations-timeline.mjs.map +1 -1
  244. package/fesm2022/c8y-ngx-components-operations-product-experience.mjs.map +1 -1
  245. package/fesm2022/c8y-ngx-components-operations-shared.mjs +10 -10
  246. package/fesm2022/c8y-ngx-components-operations-shared.mjs.map +1 -1
  247. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs +7 -7
  248. package/fesm2022/c8y-ngx-components-operations-status-filter.mjs.map +1 -1
  249. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs +7 -7
  250. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-configuration.mjs.map +1 -1
  251. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs +13 -13
  252. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-device-profile.mjs.map +1 -1
  253. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs +13 -13
  254. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-firmware.mjs.map +1 -1
  255. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs +13 -13
  256. package/fesm2022/c8y-ngx-components-operations-stepper-bulk-type-software.mjs.map +1 -1
  257. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs +13 -13
  258. package/fesm2022/c8y-ngx-components-operations-stepper-frames.mjs.map +1 -1
  259. package/fesm2022/c8y-ngx-components-operations.mjs +7 -7
  260. package/fesm2022/c8y-ngx-components-operations.mjs.map +1 -1
  261. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs +7 -7
  262. package/fesm2022/c8y-ngx-components-pending-mo-request.mjs.map +1 -1
  263. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +10 -10
  264. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  265. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +38 -38
  266. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  267. package/fesm2022/c8y-ngx-components-protocol-opcua-mappings.mjs.map +1 -1
  268. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs +58 -58
  269. package/fesm2022/c8y-ngx-components-protocol-opcua.mjs.map +1 -1
  270. package/fesm2022/c8y-ngx-components-register-device.mjs +58 -58
  271. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  272. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs +9 -9
  273. package/fesm2022/c8y-ngx-components-remote-access-configurations.mjs.map +1 -1
  274. package/fesm2022/c8y-ngx-components-remote-access-data.mjs +3 -3
  275. package/fesm2022/c8y-ngx-components-remote-access-data.mjs.map +1 -1
  276. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs +3 -3
  277. package/fesm2022/c8y-ngx-components-remote-access-passthrough.mjs.map +1 -1
  278. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs +6 -6
  279. package/fesm2022/c8y-ngx-components-remote-access-shared.mjs.map +1 -1
  280. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs +3 -3
  281. package/fesm2022/c8y-ngx-components-remote-access-ssh-remote-access-ssh-endpoint-modal.mjs.map +1 -1
  282. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs +3 -3
  283. package/fesm2022/c8y-ngx-components-remote-access-ssh.mjs.map +1 -1
  284. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs +3 -3
  285. package/fesm2022/c8y-ngx-components-remote-access-telnet.mjs.map +1 -1
  286. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs +3 -3
  287. package/fesm2022/c8y-ngx-components-remote-access-terminal-viewer.mjs.map +1 -1
  288. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs +3 -3
  289. package/fesm2022/c8y-ngx-components-remote-access-vnc-remote-access-vnc-endpoint-modal.mjs.map +1 -1
  290. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs +6 -6
  291. package/fesm2022/c8y-ngx-components-remote-access-vnc-vnc-viewer.mjs.map +1 -1
  292. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs +3 -3
  293. package/fesm2022/c8y-ngx-components-remote-access-vnc.mjs.map +1 -1
  294. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs +6 -6
  295. package/fesm2022/c8y-ngx-components-replace-device-replace-device-wizard.mjs.map +1 -1
  296. package/fesm2022/c8y-ngx-components-replace-device.mjs +13 -29
  297. package/fesm2022/c8y-ngx-components-replace-device.mjs.map +1 -1
  298. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +16 -16
  299. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  300. package/fesm2022/c8y-ngx-components-reports.mjs +19 -19
  301. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  302. package/fesm2022/c8y-ngx-components-repository-configuration.mjs +48 -48
  303. package/fesm2022/c8y-ngx-components-repository-configuration.mjs.map +1 -1
  304. package/fesm2022/c8y-ngx-components-repository-firmware.mjs +33 -33
  305. package/fesm2022/c8y-ngx-components-repository-firmware.mjs.map +1 -1
  306. package/fesm2022/c8y-ngx-components-repository-shared.mjs +34 -34
  307. package/fesm2022/c8y-ngx-components-repository-shared.mjs.map +1 -1
  308. package/fesm2022/c8y-ngx-components-repository-software.mjs +42 -42
  309. package/fesm2022/c8y-ngx-components-repository-software.mjs.map +1 -1
  310. package/fesm2022/c8y-ngx-components-repository.mjs +4 -4
  311. package/fesm2022/c8y-ngx-components-repository.mjs.map +1 -1
  312. package/fesm2022/c8y-ngx-components-search.mjs +19 -19
  313. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  314. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs +33 -27
  315. package/fesm2022/c8y-ngx-components-sensor-phone-sensor-phone-modal.mjs.map +1 -1
  316. package/fesm2022/c8y-ngx-components-sensor-phone.mjs +17 -320
  317. package/fesm2022/c8y-ngx-components-sensor-phone.mjs.map +1 -1
  318. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs +3 -3
  319. package/fesm2022/c8y-ngx-components-services-service-command-tab.mjs.map +1 -1
  320. package/fesm2022/c8y-ngx-components-services-shared.mjs +3 -3
  321. package/fesm2022/c8y-ngx-components-services-shared.mjs.map +1 -1
  322. package/fesm2022/c8y-ngx-components-services.mjs +29 -29
  323. package/fesm2022/c8y-ngx-components-services.mjs.map +1 -1
  324. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +16 -16
  325. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  326. package/fesm2022/c8y-ngx-components-sms-gateway.mjs +7 -7
  327. package/fesm2022/c8y-ngx-components-sms-gateway.mjs.map +1 -1
  328. package/fesm2022/c8y-ngx-components-static-assets-data.mjs +3 -3
  329. package/fesm2022/c8y-ngx-components-static-assets-data.mjs.map +1 -1
  330. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs +3 -3
  331. package/fesm2022/c8y-ngx-components-static-assets-modal.mjs.map +1 -1
  332. package/fesm2022/c8y-ngx-components-static-assets.mjs +6 -6
  333. package/fesm2022/c8y-ngx-components-static-assets.mjs.map +1 -1
  334. package/fesm2022/c8y-ngx-components-sub-assets.mjs +60 -60
  335. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  336. package/fesm2022/c8y-ngx-components-tenants.mjs +40 -40
  337. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  338. package/fesm2022/c8y-ngx-components-time-context.mjs +6 -6
  339. package/fesm2022/c8y-ngx-components-time-context.mjs.map +1 -1
  340. package/fesm2022/c8y-ngx-components-tracking.mjs +12 -12
  341. package/fesm2022/c8y-ngx-components-tracking.mjs.map +1 -1
  342. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs +3 -3
  343. package/fesm2022/c8y-ngx-components-translation-editor-data.mjs.map +1 -1
  344. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs +12 -12
  345. package/fesm2022/c8y-ngx-components-translation-editor-lazy.mjs.map +1 -1
  346. package/fesm2022/c8y-ngx-components-translation-editor.mjs +6 -6
  347. package/fesm2022/c8y-ngx-components-translation-editor.mjs.map +1 -1
  348. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +33 -33
  349. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  350. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs +4 -4
  351. package/fesm2022/c8y-ngx-components-upgrade-upgraded-services.mjs.map +1 -1
  352. package/fesm2022/c8y-ngx-components-upgrade.mjs +41 -41
  353. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  354. package/fesm2022/c8y-ngx-components-user-roles.mjs +10 -10
  355. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  356. package/fesm2022/c8y-ngx-components-widgets-cockpit-exports.mjs.map +1 -1
  357. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs +4 -4
  358. package/fesm2022/c8y-ngx-components-widgets-cockpit.mjs.map +1 -1
  359. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-alarm-list.mjs.map +1 -1
  360. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-all-critical-alarms.mjs.map +1 -1
  361. package/fesm2022/c8y-ngx-components-widgets-definitions-alarms-recent-alarms.mjs.map +1 -1
  362. package/fesm2022/c8y-ngx-components-widgets-definitions-applications.mjs.map +1 -1
  363. package/fesm2022/c8y-ngx-components-widgets-definitions-asset-notes.mjs.map +1 -1
  364. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-legacy-welcome.mjs.map +1 -1
  365. package/fesm2022/c8y-ngx-components-widgets-definitions-cockpit-welcome.mjs.map +1 -1
  366. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs +3 -3
  367. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-graph.mjs.map +1 -1
  368. package/fesm2022/c8y-ngx-components-widgets-definitions-datapoints-table.mjs.map +1 -1
  369. package/fesm2022/c8y-ngx-components-widgets-definitions-device-control-message.mjs.map +1 -1
  370. package/fesm2022/c8y-ngx-components-widgets-definitions-device-management-welcome.mjs.map +1 -1
  371. package/fesm2022/c8y-ngx-components-widgets-definitions-help-and-service.mjs.map +1 -1
  372. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs +18 -14
  373. package/fesm2022/c8y-ngx-components-widgets-definitions-html-widget.mjs.map +1 -1
  374. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs +4 -2
  375. package/fesm2022/c8y-ngx-components-widgets-definitions-image.mjs.map +1 -1
  376. package/fesm2022/c8y-ngx-components-widgets-definitions-info-gauge.mjs.map +1 -1
  377. package/fesm2022/c8y-ngx-components-widgets-definitions-kpi.mjs.map +1 -1
  378. package/fesm2022/c8y-ngx-components-widgets-definitions-linear-gauge.mjs.map +1 -1
  379. package/fesm2022/c8y-ngx-components-widgets-definitions-map.mjs.map +1 -1
  380. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs +4 -2
  381. package/fesm2022/c8y-ngx-components-widgets-definitions-markdown.mjs.map +1 -1
  382. package/fesm2022/c8y-ngx-components-widgets-definitions-quick-links.mjs.map +1 -1
  383. package/fesm2022/c8y-ngx-components-widgets-definitions-radial-gauge.mjs.map +1 -1
  384. package/fesm2022/c8y-ngx-components-widgets-definitions-silo.mjs.map +1 -1
  385. package/fesm2022/c8y-ngx-components-widgets-definitions-three-d-rotation.mjs.map +1 -1
  386. package/fesm2022/c8y-ngx-components-widgets-definitions.mjs.map +1 -1
  387. package/fesm2022/c8y-ngx-components-widgets-device-management.mjs.map +1 -1
  388. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +22 -22
  389. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  390. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs +3 -3
  391. package/fesm2022/c8y-ngx-components-widgets-implementations-asset-notes.mjs.map +1 -1
  392. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs +3 -3
  393. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-legacy-welcome.mjs.map +1 -1
  394. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs +3 -3
  395. package/fesm2022/c8y-ngx-components-widgets-implementations-cockpit-welcome.mjs.map +1 -1
  396. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +6 -6
  397. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  398. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs +50 -36
  399. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-table.mjs.map +1 -1
  400. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs +3 -3
  401. package/fesm2022/c8y-ngx-components-widgets-implementations-device-control-message.mjs.map +1 -1
  402. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +7 -7
  403. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  404. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs +3 -3
  405. package/fesm2022/c8y-ngx-components-widgets-implementations-help-and-service-widget.mjs.map +1 -1
  406. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs +22 -22
  407. package/fesm2022/c8y-ngx-components-widgets-implementations-html-widget.mjs.map +1 -1
  408. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs +9 -9
  409. package/fesm2022/c8y-ngx-components-widgets-implementations-image.mjs.map +1 -1
  410. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs +18 -18
  411. package/fesm2022/c8y-ngx-components-widgets-implementations-info-gauge.mjs.map +1 -1
  412. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs +6 -6
  413. package/fesm2022/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  414. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs +6 -6
  415. package/fesm2022/c8y-ngx-components-widgets-implementations-linear-gauge.mjs.map +1 -1
  416. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +9 -9
  417. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  418. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs +9 -9
  419. package/fesm2022/c8y-ngx-components-widgets-implementations-markdown.mjs.map +1 -1
  420. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs +18 -18
  421. package/fesm2022/c8y-ngx-components-widgets-implementations-quick-links.mjs.map +1 -1
  422. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs +9 -9
  423. package/fesm2022/c8y-ngx-components-widgets-implementations-three-d-rotation.mjs.map +1 -1
  424. package/fesm2022/c8y-ngx-components-widgets-import-export-config.mjs.map +1 -1
  425. package/fesm2022/c8y-ngx-components-widgets.mjs +4 -4
  426. package/fesm2022/c8y-ngx-components-widgets.mjs.map +1 -1
  427. package/fesm2022/c8y-ngx-components.mjs +1329 -1317
  428. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  429. package/icon-selector/icons/index.d.ts +1 -1
  430. package/icon-selector/icons/platform/index.d.ts +2 -2
  431. package/icon-selector/icons/platform/index.d.ts.map +1 -1
  432. package/locales/de.po +26 -3
  433. package/locales/es.po +26 -3
  434. package/locales/fr.po +26 -3
  435. package/locales/ja_JP.po +25 -3
  436. package/locales/ko.po +26 -3
  437. package/locales/locales.pot +22 -2
  438. package/locales/nl.po +26 -3
  439. package/locales/pl.po +26 -3
  440. package/locales/pt_BR.po +26 -3
  441. package/locales/zh_CN.po +26 -3
  442. package/locales/zh_TW.po +26 -3
  443. package/package.json +1 -1
  444. package/replace-device/replace-device.module.d.ts.map +1 -1
  445. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts +6 -6
  446. package/sensor-phone/sensor-phone-modal/sensor-phone-modal.component.d.ts.map +1 -1
  447. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts +0 -1
  448. package/sensor-phone/sensor-phone-modal/sensor-phone.model.d.ts.map +1 -1
  449. package/sensor-phone/sensor-phone.module.d.ts +2 -3
  450. package/sensor-phone/sensor-phone.module.d.ts.map +1 -1
  451. package/widgets/definitions/datapoints-table/index.d.ts +1 -2
  452. package/widgets/definitions/datapoints-table/index.d.ts.map +1 -1
  453. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts +1 -1
  454. package/widgets/definitions/html-widget/html-widget-config.factory.d.ts.map +1 -1
  455. package/widgets/definitions/image/index.d.ts +1 -1
  456. package/widgets/definitions/image/index.d.ts.map +1 -1
  457. package/widgets/definitions/markdown/index.d.ts +1 -1
  458. package/widgets/definitions/markdown/index.d.ts.map +1 -1
  459. package/widgets/implementations/datapoints-table/datapoints-table-view/datapoints-table-view.component.d.ts.map +1 -1
  460. package/widgets/implementations/three-d-rotation/three-d-rotation-widget-view/three-d-rotation-widget-view.component.d.ts.map +1 -1
@@ -268,10 +268,10 @@ class DefaultSubscriptionsService {
268
268
  .map(app => app.name)
269
269
  .join(',');
270
270
  }
271
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsService, deps: [{ token: i1.ApplicationService }, { token: i1.TenantService }, { token: i1.TenantOptionsService }, { token: i2.HumanizeAppNamePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
272
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsService }); }
271
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsService, deps: [{ token: i1.ApplicationService }, { token: i1.TenantService }, { token: i1.TenantOptionsService }, { token: i2.HumanizeAppNamePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
272
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsService }); }
273
273
  }
274
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsService, decorators: [{
274
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsService, decorators: [{
275
275
  type: Injectable
276
276
  }], ctorParameters: () => [{ type: i1.ApplicationService }, { type: i1.TenantService }, { type: i1.TenantOptionsService }, { type: i2.HumanizeAppNamePipe }] });
277
277
 
@@ -446,10 +446,10 @@ class DefaultSubscriptionsComponent {
446
446
  : null
447
447
  };
448
448
  }
449
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsComponent, deps: [{ token: i1$1.FormBuilder }, { token: DefaultSubscriptionsService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
450
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: DefaultSubscriptionsComponent, isStandalone: true, selector: "c8y-default-subscriptions", ngImport: i0, template: "<c8y-title>{{ 'Default subscriptions' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [label]=\"'Ecosystem' | translate\" [icon]=\"'c8y-atom'\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [label]=\"'Default subscriptions' | translate\"\n [icon]=\"'c8y-atom'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<form [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <div class=\"card card--fullpage col-lg-max\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Applications</div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"sticky-top separator-bottom\">\n <div class=\"d-flex\">\n <div class=\"col-sm-6 col-xs-6 p-24 p-t-16 p-l-xs-16\">\n <p translate>\n Configure default subscriptions in the platform, both for tenant creation and for\n platform upgrade. To display a full list of available applications, override inherited\n settings.\n </p>\n </div>\n <div class=\"col-sm-6 col-xs-6 bg-level-1 p-16 text-center separator-bottom\">\n <div class=\"row\">\n <div class=\"col-sm-6 col-xs-6\">\n <p><strong translate>Subscribed on tenant creation</strong></p>\n <div>\n <label class=\"c8y-switch\" title=\"{{ 'Override inherited' | translate }}\">\n <input type=\"checkbox\" formControlName=\"overrideOnCreationSubscriptions\" />\n <span></span>\n <span>\n {{ 'Override inherited' | translate }}\n </span>\n </label>\n </div>\n </div>\n <div class=\"col-sm-6 col-xs-6\">\n <p><strong translate>Subscribed on platform upgrade</strong></p>\n <div>\n <label class=\"c8y-switch\" title=\"{{ 'Override inherited' | translate }}\">\n <input type=\"checkbox\" formControlName=\"overrideOnUpgradeSubscriptions\" />\n <span></span>\n <span>\n {{ 'Override inherited' | translate }}\n </span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\" *ngIf=\"loading\"></div>\n <div class=\"card-block card-block d-flex a-i-center j-c-center d-col\" *ngIf=\"loading\">\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"card-block\" *ngIf=\"loading\"></div>\n\n <ng-container formArrayName=\"appRows\">\n <div class=\"bg-level-1\" *ngIf=\"!loading && isEmptyView()\"></div>\n <div class=\"card-block bg-level-0\" *ngIf=\"!loading && isEmptyView()\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-c8y-data'\"\n [title]=\"'No application subscriptions yet.' | translate\"\n [subtitle]=\"\n 'Select &quot;Override inherited&quot; to define the list of subscribed applications.'\n | translate\n \"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"bg-level-1\" *ngIf=\"!loading && isEmptyView()\"></div>\n\n <div *ngFor=\"let appRowControl of form.get('appRows')['controls']; let i = index\">\n <ng-container\n *ngIf=\"shouldShowAppRow(appRowControl.getRawValue())\"\n formArrayName=\"{{ i }}\"\n >\n <div class=\"d-flex a-i-stretch\">\n <div class=\"col-sm-6 col-xs-6 separator-bottom\">\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__appicon\">\n <c8y-app-icon\n [app]=\"appRowControl.value.app\"\n [name]=\"appRowControl.value.app.name\"\n [contextPath]=\"appRowControl.value.app.contextPath\"\n ></c8y-app-icon>\n </div>\n <div class=\"c8y-list__item__body\" data-cy=\"defaultSubscriptionForm--c8y-list_item\">\n <div class=\"content-flex-30\">\n <div class=\"col-6\">\n <p\n class=\"text-truncate\"\n title=\"{{ appRowControl.value.app | humanizeAppName | async }}\"\n >\n {{ appRowControl.value.app | humanizeAppName | async }}\n </p>\n <small class=\"text-muted\">{{ appRowControl.value.app.contextPath }}</small>\n </div>\n <div class=\"col-6 text-right-sm\">\n <p>\n <span class=\"text-label-small m-r-4\" translate>Tenant ID</span>\n {{ appRowControl.value.app.owner.tenant.id }}\n </p>\n <!-- TODO: uncomment when company name is available\n <p>\n <span class=\"text-label-small m-r-4\" translate>Company</span>\n <small class=\"text-muted\">company name</small>\n </p> -->\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-sm-3 col-xs-3 bg-level-1 separator-bottom d-flex j-c-center a-i-center\"\n >\n <label\n class=\"c8y-checkbox\"\n [ngClass]=\"{ disabled: appRowControl.controls.subscribedOnCreation.disabled }\"\n >\n <input type=\"checkbox\" formControlName=\"subscribedOnCreation\" />\n <span *ngIf=\"!appRowControl.controls.subscribedOnCreation.disabled\"></span>\n <span\n *ngIf=\"appRowControl.controls.subscribedOnCreation.disabled\"\n title=\"{{ disabledCheckboxHint | translate }}\"\n ></span>\n <span class=\"sr-only\">{{ 'Subscribed on tenant creation' | translate }}</span>\n </label>\n </div>\n\n <div\n class=\"col-sm-3 col-xs-3 bg-level-1 separator-bottom d-flex j-c-center a-i-center\"\n >\n <label\n class=\"c8y-checkbox\"\n [ngClass]=\"{ disabled: appRowControl.controls.subscribedOnUpgrade.disabled }\"\n >\n <input type=\"checkbox\" formControlName=\"subscribedOnUpgrade\" />\n <span *ngIf=\"!appRowControl.controls.subscribedOnUpgrade.disabled\"></span>\n <span\n *ngIf=\"appRowControl.controls.subscribedOnUpgrade.disabled\"\n title=\"{{ disabledCheckboxHint | translate }}\"\n ></span>\n <span class=\"sr-only\">{{ 'Subscribed on platform upgrade' | translate }}</span>\n </label>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save default subscriptions' | translate }}\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n</form>\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: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizeAppNamePipe, name: "humanizeAppName" }] }); }
449
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsComponent, deps: [{ token: i1$1.FormBuilder }, { token: DefaultSubscriptionsService }, { token: i2.AlertService }], target: i0.ɵɵFactoryTarget.Component }); }
450
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: DefaultSubscriptionsComponent, isStandalone: true, selector: "c8y-default-subscriptions", ngImport: i0, template: "<c8y-title>{{ 'Default subscriptions' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [label]=\"'Ecosystem' | translate\" [icon]=\"'c8y-atom'\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [label]=\"'Default subscriptions' | translate\"\n [icon]=\"'c8y-atom'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<form [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <div class=\"card card--fullpage col-lg-max\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Applications</div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"sticky-top separator-bottom\">\n <div class=\"d-flex\">\n <div class=\"col-sm-6 col-xs-6 p-24 p-t-16 p-l-xs-16\">\n <p translate>\n Configure default subscriptions in the platform, both for tenant creation and for\n platform upgrade. To display a full list of available applications, override inherited\n settings.\n </p>\n </div>\n <div class=\"col-sm-6 col-xs-6 bg-level-1 p-16 text-center separator-bottom\">\n <div class=\"row\">\n <div class=\"col-sm-6 col-xs-6\">\n <p><strong translate>Subscribed on tenant creation</strong></p>\n <div>\n <label class=\"c8y-switch\" title=\"{{ 'Override inherited' | translate }}\">\n <input type=\"checkbox\" formControlName=\"overrideOnCreationSubscriptions\" />\n <span></span>\n <span>\n {{ 'Override inherited' | translate }}\n </span>\n </label>\n </div>\n </div>\n <div class=\"col-sm-6 col-xs-6\">\n <p><strong translate>Subscribed on platform upgrade</strong></p>\n <div>\n <label class=\"c8y-switch\" title=\"{{ 'Override inherited' | translate }}\">\n <input type=\"checkbox\" formControlName=\"overrideOnUpgradeSubscriptions\" />\n <span></span>\n <span>\n {{ 'Override inherited' | translate }}\n </span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\" *ngIf=\"loading\"></div>\n <div class=\"card-block card-block d-flex a-i-center j-c-center d-col\" *ngIf=\"loading\">\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"card-block\" *ngIf=\"loading\"></div>\n\n <ng-container formArrayName=\"appRows\">\n <div class=\"bg-level-1\" *ngIf=\"!loading && isEmptyView()\"></div>\n <div class=\"card-block bg-level-0\" *ngIf=\"!loading && isEmptyView()\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-c8y-data'\"\n [title]=\"'No application subscriptions yet.' | translate\"\n [subtitle]=\"\n 'Select &quot;Override inherited&quot; to define the list of subscribed applications.'\n | translate\n \"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"bg-level-1\" *ngIf=\"!loading && isEmptyView()\"></div>\n\n <div *ngFor=\"let appRowControl of form.get('appRows')['controls']; let i = index\">\n <ng-container\n *ngIf=\"shouldShowAppRow(appRowControl.getRawValue())\"\n formArrayName=\"{{ i }}\"\n >\n <div class=\"d-flex a-i-stretch\">\n <div class=\"col-sm-6 col-xs-6 separator-bottom\">\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__appicon\">\n <c8y-app-icon\n [app]=\"appRowControl.value.app\"\n [name]=\"appRowControl.value.app.name\"\n [contextPath]=\"appRowControl.value.app.contextPath\"\n ></c8y-app-icon>\n </div>\n <div class=\"c8y-list__item__body\" data-cy=\"defaultSubscriptionForm--c8y-list_item\">\n <div class=\"content-flex-30\">\n <div class=\"col-6\">\n <p\n class=\"text-truncate\"\n title=\"{{ appRowControl.value.app | humanizeAppName | async }}\"\n >\n {{ appRowControl.value.app | humanizeAppName | async }}\n </p>\n <small class=\"text-muted\">{{ appRowControl.value.app.contextPath }}</small>\n </div>\n <div class=\"col-6 text-right-sm\">\n <p>\n <span class=\"text-label-small m-r-4\" translate>Tenant ID</span>\n {{ appRowControl.value.app.owner.tenant.id }}\n </p>\n <!-- TODO: uncomment when company name is available\n <p>\n <span class=\"text-label-small m-r-4\" translate>Company</span>\n <small class=\"text-muted\">company name</small>\n </p> -->\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-sm-3 col-xs-3 bg-level-1 separator-bottom d-flex j-c-center a-i-center\"\n >\n <label\n class=\"c8y-checkbox\"\n [ngClass]=\"{ disabled: appRowControl.controls.subscribedOnCreation.disabled }\"\n >\n <input type=\"checkbox\" formControlName=\"subscribedOnCreation\" />\n <span *ngIf=\"!appRowControl.controls.subscribedOnCreation.disabled\"></span>\n <span\n *ngIf=\"appRowControl.controls.subscribedOnCreation.disabled\"\n title=\"{{ disabledCheckboxHint | translate }}\"\n ></span>\n <span class=\"sr-only\">{{ 'Subscribed on tenant creation' | translate }}</span>\n </label>\n </div>\n\n <div\n class=\"col-sm-3 col-xs-3 bg-level-1 separator-bottom d-flex j-c-center a-i-center\"\n >\n <label\n class=\"c8y-checkbox\"\n [ngClass]=\"{ disabled: appRowControl.controls.subscribedOnUpgrade.disabled }\"\n >\n <input type=\"checkbox\" formControlName=\"subscribedOnUpgrade\" />\n <span *ngIf=\"!appRowControl.controls.subscribedOnUpgrade.disabled\"></span>\n <span\n *ngIf=\"appRowControl.controls.subscribedOnUpgrade.disabled\"\n title=\"{{ disabledCheckboxHint | translate }}\"\n ></span>\n <span class=\"sr-only\">{{ 'Subscribed on platform upgrade' | translate }}</span>\n </label>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save default subscriptions' | translate }}\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n</form>\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: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i1$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: LoadingComponent, selector: "c8y-loading", inputs: ["layout", "progress", "message"] }, { kind: "component", type: EmptyStateComponent, selector: "c8y-ui-empty-state", inputs: ["icon", "title", "subtitle", "horizontal"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: AppIconComponent, selector: "c8y-app-icon", inputs: ["contextPath", "name", "app"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: HumanizeAppNamePipe, name: "humanizeAppName" }] }); }
451
451
  }
452
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsComponent, decorators: [{
452
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsComponent, decorators: [{
453
453
  type: Component,
454
454
  args: [{ selector: 'c8y-default-subscriptions', imports: [
455
455
  TitleComponent,
@@ -490,10 +490,10 @@ class DefaultSubscriptionsGuard {
490
490
  }
491
491
  return this.active;
492
492
  }
493
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsGuard, deps: [{ token: i2.TenantUiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
494
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsGuard }); }
493
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsGuard, deps: [{ token: i2.TenantUiService }], target: i0.ɵɵFactoryTarget.Injectable }); }
494
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsGuard }); }
495
495
  }
496
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsGuard, decorators: [{
496
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsGuard, decorators: [{
497
497
  type: Injectable
498
498
  }], ctorParameters: () => [{ type: i2.TenantUiService }] });
499
499
 
@@ -514,17 +514,17 @@ class DefaultSubscriptionsNavigationFactory {
514
514
  return this.navNode;
515
515
  }
516
516
  }
517
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsNavigationFactory, deps: [{ token: DefaultSubscriptionsGuard }], target: i0.ɵɵFactoryTarget.Injectable }); }
518
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsNavigationFactory }); }
517
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsNavigationFactory, deps: [{ token: DefaultSubscriptionsGuard }], target: i0.ɵɵFactoryTarget.Injectable }); }
518
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsNavigationFactory }); }
519
519
  }
520
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsNavigationFactory, decorators: [{
520
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsNavigationFactory, decorators: [{
521
521
  type: Injectable
522
522
  }], ctorParameters: () => [{ type: DefaultSubscriptionsGuard }] });
523
523
 
524
524
  class DefaultSubscriptionsModule {
525
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
526
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsModule, imports: [CoreModule, ReactiveFormsModule, DefaultSubscriptionsComponent], exports: [DefaultSubscriptionsComponent] }); }
527
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsModule, providers: [
525
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
526
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsModule, imports: [CoreModule, ReactiveFormsModule, DefaultSubscriptionsComponent], exports: [DefaultSubscriptionsComponent] }); }
527
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsModule, providers: [
528
528
  DefaultSubscriptionsService,
529
529
  DefaultSubscriptionsGuard,
530
530
  hookNavigator(DefaultSubscriptionsNavigationFactory),
@@ -535,7 +535,7 @@ class DefaultSubscriptionsModule {
535
535
  })
536
536
  ], imports: [CoreModule, ReactiveFormsModule, DefaultSubscriptionsComponent] }); }
537
537
  }
538
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DefaultSubscriptionsModule, decorators: [{
538
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DefaultSubscriptionsModule, decorators: [{
539
539
  type: NgModule,
540
540
  args: [{
541
541
  imports: [CoreModule, ReactiveFormsModule, DefaultSubscriptionsComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-default-subscriptions.mjs","sources":["../../default-subscriptions/default-subscriptions.model.ts","../../default-subscriptions/default-subscriptions.service.ts","../../default-subscriptions/default-subscriptions.component.ts","../../default-subscriptions/default-subscriptions.component.html","../../default-subscriptions/default-subscriptions.guard.ts","../../default-subscriptions/default-subscriptions-navigation.factory.ts","../../default-subscriptions/default-subscriptions.module.ts","../../default-subscriptions/c8y-ngx-components-default-subscriptions.ts"],"sourcesContent":["import { IApplication } from '@c8y/client';\n\n/** The list of partial application objects. */\nexport type PartialAppsList = Array<Partial<IApplication>>;\n\n/** The interface for default subscriptions configuration. */\nexport interface DefaultSubscriptions {\n /** Whether the list of on tenant creation subscriptions is overridden in the current tenant. Won't be defined for inherited configuration. */\n overrideOnCreationSubscriptions?: boolean;\n /** The list of applications subscribed to new tenants on creation. */\n onCreationSubscriptions: PartialAppsList;\n /** Whether the list of on platform upgrade subscriptions is overridden in the current tenant. Won't be defined for inherited configuration. */\n overrideOnUpgradeSubscriptions?: boolean;\n /** The list of applications subscribed to existing tenants on platform upgrade. */\n onUpgradeSubscriptions: PartialAppsList;\n}\n\n/** The context for evaluating default subscriptions configuration */\nexport enum DefaultSubscriptionsContext {\n /** Current tenant context (only current tenant options are taken into account). */\n CURRENT_TENANT,\n /** Parent tenant context (only parent tenant options are taken into account). */\n PARENT_TENANT\n}\n","import { Injectable } from '@angular/core';\nimport { isUndefined, sortBy } from 'lodash-es';\nimport { debounceTime, take } from 'rxjs/operators';\n\nimport {\n IApplication,\n ApplicationType,\n ApplicationService,\n ISystemOption,\n TenantService,\n TenantOptionsService\n} from '@c8y/client';\nimport { HumanizeAppNamePipe } from '@c8y/ngx-components';\n\nimport {\n PartialAppsList,\n DefaultSubscriptions,\n DefaultSubscriptionsContext as DefaultSubscriptionsContextTenant\n} from './default-subscriptions.model';\n\n@Injectable()\nexport class DefaultSubscriptionsService {\n constructor(\n private applicationService: ApplicationService,\n private tenantService: TenantService,\n private tenantOptionsService: TenantOptionsService,\n private humanizeAppNamePipe: HumanizeAppNamePipe\n ) {}\n\n /**\n * Gets the list of applications which can be used in default subscriptions, i.e.:\n * - current tenant's all own applications,\n * - inherited applications, which do not have the same names as current tenant's own apps.\n * The list is sorted alphabetically by humanized app name and contains up to 2000 items.\n * @returns The list of applications, which can be used in default subscriptions.\n */\n async getSubscribableTenantApps(): Promise<IApplication[]> {\n const currentTenant = (await this.tenantService.current()).data;\n\n const allApps = (await this.applicationService.listByTenant(null, { pageSize: 2000 })).data;\n const ownApps = allApps.filter(app => app.owner.tenant.id === currentTenant.name);\n const inheritedApps = allApps.filter(app => app.owner.tenant.id !== currentTenant.name);\n\n const filteredApps: IApplication[] = [...ownApps];\n inheritedApps.forEach(inheritedApp => {\n if (!filteredApps.some(filteredApp => filteredApp.name === inheritedApp.name)) {\n filteredApps.push(inheritedApp);\n }\n });\n\n const filteredAppsWithHumanizedNames = await Promise.all(\n filteredApps.map(async app => {\n const humanizedName = await this.humanizeAppNamePipe\n .transform(app.name)\n .pipe(debounceTime(250), take(1))\n .toPromise();\n return { app, humanizedName };\n })\n );\n const sortedAppsWithHumanizedNames = sortBy(filteredAppsWithHumanizedNames, ['humanizedName']);\n const sortedApps = sortedAppsWithHumanizedNames.map(({ app }) => app);\n\n return sortedApps;\n }\n\n /**\n * Gets the default subscriptions configuration inherited from parent tenant.\n * @returns The default subscriptions object with settings from parent tenant.\n */\n async getDefaultSubscriptionsEvaluatedFromParentTenant(): Promise<DefaultSubscriptions> {\n return this.getDefaultSubscriptions(DefaultSubscriptionsContextTenant.PARENT_TENANT);\n }\n\n /**\n * Gets the default subscriptions configuration from the current tenant.\n * @returns The default subscriptions object with settings from the current tenant.\n */\n async getDefaultSubscriptionsFromCurrentTenant(): Promise<DefaultSubscriptions> {\n return this.getDefaultSubscriptions(DefaultSubscriptionsContextTenant.CURRENT_TENANT);\n }\n\n /**\n * Saves given default subscriptions configuration to the current tenant\n * (either sets, updates, or deletes corresponding tenant options).\n * @param defaultSubscriptions The default subscriptions configuration to be saved.\n */\n async saveDefaultSubscriptionsToCurrentTenant(defaultSubscriptions: DefaultSubscriptions) {\n await this.saveOnCreationSubscriptions(defaultSubscriptions);\n await this.saveOnUpgradeSubscriptions(defaultSubscriptions);\n }\n\n /**\n * Gets default subscriptions in the context of current or parent tenant.\n * @param contextTenant Tells whether to use current or parent tenant as context.\n */\n private async getDefaultSubscriptions(\n contextTenant: DefaultSubscriptionsContextTenant\n ): Promise<DefaultSubscriptions> {\n let tenantOptionsParams: object;\n let overridable: boolean;\n\n switch (contextTenant) {\n case DefaultSubscriptionsContextTenant.CURRENT_TENANT:\n tenantOptionsParams = { evaluate: 'current' };\n overridable = true;\n break;\n\n case DefaultSubscriptionsContextTenant.PARENT_TENANT:\n tenantOptionsParams = { evaluate: 'inherited' };\n overridable = false;\n break;\n }\n\n const {\n onCreationApps,\n onCreationMicroservices,\n onUpgradeAppsEnabled,\n onUpgradeApps,\n onUpgradeMicroservicesEnabled,\n onUpgradeMicroservices\n } = await this.getTenantOptions(tenantOptionsParams);\n\n const onCreationSubscriptions = this.namesToPartialApps({\n appsNamesStr: onCreationApps,\n microservicesNamesStr: onCreationMicroservices\n });\n\n const onUpgradeAppsDefault = overridable ? null : onCreationApps;\n const onUpgradeMicroservicesDefault = overridable ? null : onCreationMicroservices;\n const onUpgradeSubscriptions = this.namesToPartialApps({\n appsNamesStr: onUpgradeAppsEnabled ? onUpgradeApps : onUpgradeAppsDefault,\n microservicesNamesStr: onUpgradeMicroservicesEnabled\n ? onUpgradeMicroservices\n : onUpgradeMicroservicesDefault\n });\n\n const defaultSubscriptions: DefaultSubscriptions = {\n onCreationSubscriptions,\n onUpgradeSubscriptions\n };\n\n if (overridable) {\n defaultSubscriptions.overrideOnCreationSubscriptions =\n onCreationApps !== null || onCreationMicroservices !== null;\n defaultSubscriptions.overrideOnUpgradeSubscriptions =\n onUpgradeAppsEnabled || onUpgradeMicroservicesEnabled;\n }\n\n return defaultSubscriptions;\n }\n\n private async getTenantOptions(params = {}) {\n return {\n onCreationApps: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'default.tenant.applications'\n },\n null,\n params\n ),\n onCreationMicroservices: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'default.tenant.microservices'\n },\n null,\n params\n ),\n onUpgradeAppsEnabled: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'on-update.tenant.applications.enabled'\n },\n false,\n params\n ),\n onUpgradeApps: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'on-update.tenant.applications'\n },\n null,\n params\n ),\n onUpgradeMicroservicesEnabled: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'on-update.tenant.microservices.enabled'\n },\n false,\n params\n ),\n onUpgradeMicroservices: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'on-update.tenant.microservices'\n },\n null,\n params\n )\n };\n }\n\n private async saveOnCreationSubscriptions(defaultSubscriptions: DefaultSubscriptions) {\n if (defaultSubscriptions.overrideOnCreationSubscriptions) {\n await this.setTenantOption({\n category: 'configuration',\n key: 'default.tenant.applications',\n value: this.partialAppsListToAppsNames(defaultSubscriptions.onCreationSubscriptions)\n });\n await this.setTenantOption({\n category: 'configuration',\n key: 'default.tenant.microservices',\n value: this.partialAppsToMicroservicesNames(defaultSubscriptions.onCreationSubscriptions)\n });\n } else {\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'default.tenant.applications'\n });\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'default.tenant.microservices'\n });\n }\n }\n\n private async saveOnUpgradeSubscriptions(defaultSubscriptions: DefaultSubscriptions) {\n if (defaultSubscriptions.overrideOnUpgradeSubscriptions) {\n await this.setTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.applications.enabled',\n value: 'true'\n });\n await this.setTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.microservices.enabled',\n value: 'true'\n });\n await this.setTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.applications',\n value: this.partialAppsListToAppsNames(defaultSubscriptions.onUpgradeSubscriptions)\n });\n await this.setTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.microservices',\n value: this.partialAppsToMicroservicesNames(defaultSubscriptions.onUpgradeSubscriptions)\n });\n } else {\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.applications.enabled'\n });\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.microservices.enabled'\n });\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.applications'\n });\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.microservices'\n });\n }\n }\n\n private async getTenantOption(option: ISystemOption, defaultValue = null, params = {}) {\n let value;\n try {\n value = (await this.tenantOptionsService.detail(option, params)).data.value;\n value = JSON.parse(value);\n } catch (ex) {\n value = !isUndefined(value) ? value : defaultValue;\n }\n return value;\n }\n\n private async setTenantOption(option: ISystemOption) {\n return this.tenantOptionsService.update(option);\n }\n\n private async unsetTenantOption(option: ISystemOption) {\n try {\n await this.tenantOptionsService.delete(option);\n } catch (ex) {\n if (!ex || !ex.res || ex.res.status !== 404) {\n throw ex;\n }\n }\n }\n\n private namesToPartialApps({\n appsNamesStr,\n microservicesNamesStr\n }: {\n appsNamesStr?: string;\n microservicesNamesStr?: string;\n }): PartialAppsList {\n if (appsNamesStr === null && microservicesNamesStr === null) {\n return null;\n }\n\n return [\n ...(appsNamesStr || '')\n .split(',')\n .filter(name => name.length)\n .map(name => ({ name: name.trim() })),\n ...(microservicesNamesStr || '')\n .split(',')\n .filter(name => name.length)\n .map(name => ({\n name: name.trim(),\n type: ApplicationType.MICROSERVICE\n }))\n ];\n }\n\n private partialAppsListToAppsNames(apps: PartialAppsList): string {\n return apps\n .filter(app => app.type !== ApplicationType.MICROSERVICE)\n .map(app => app.name)\n .join(',');\n }\n\n private partialAppsToMicroservicesNames(apps: PartialAppsList): string {\n return apps\n .filter(app => app.type === ApplicationType.MICROSERVICE)\n .map(app => app.name)\n .join(',');\n }\n}\n","import { Component } from '@angular/core';\nimport {\n FormArray,\n FormBuilder,\n FormGroup,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IApplication } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n C8yTranslateDirective,\n RequiredInputPlaceholderDirective,\n LoadingComponent,\n EmptyStateComponent,\n AppIconComponent,\n C8yTranslatePipe,\n HumanizeAppNamePipe\n} from '@c8y/ngx-components';\nimport { DefaultSubscriptions, PartialAppsList } from './default-subscriptions.model';\nimport { DefaultSubscriptionsService } from './default-subscriptions.service';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\n\n/**\n * The component shows the main view for managing default subscriptions configuration.\n */\n@Component({\n selector: 'c8y-default-subscriptions',\n templateUrl: './default-subscriptions.component.html',\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n FormsModule,\n ReactiveFormsModule,\n C8yTranslateDirective,\n RequiredInputPlaceholderDirective,\n NgIf,\n LoadingComponent,\n EmptyStateComponent,\n NgFor,\n AppIconComponent,\n NgClass,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe\n ]\n})\nexport class DefaultSubscriptionsComponent {\n /** Default subscriptions inherited from parent tenant. */\n parentDefaultSubscriptions: DefaultSubscriptions;\n /** Default subscriptions defined in the current tenant. */\n currentDefaultSubscriptions: DefaultSubscriptions;\n /** Form object. */\n form: FormGroup;\n /** Whether the configuration is being loaded. */\n loading: boolean;\n /** Hint text for disabled checkboxes. */\n disabledCheckboxHint = gettext('Select \"Override inherited\" to enable.');\n\n constructor(\n private fb: FormBuilder,\n private defaultSubscriptionsService: DefaultSubscriptionsService,\n private alertService: AlertService\n ) {}\n\n /** Initializes the loading of the form and the current settings. */\n async ngOnInit() {\n this.loading = true;\n await this.initForm();\n await this.loadDefaultSubscriptions();\n this.loading = false;\n }\n\n /** Loads the list of apps, builds the form and hooks value change events for override switches. */\n async initForm() {\n this.form = this.fb.group({\n overrideOnCreationSubscriptions: [''],\n overrideOnUpgradeSubscriptions: [''],\n appRows: this.fb.array([])\n });\n\n const apps = await this.defaultSubscriptionsService.getSubscribableTenantApps();\n const appRows = this.form.controls.appRows as FormArray;\n apps.forEach(app => {\n appRows.push(\n this.fb.group({\n app: [app],\n subscribedOnCreation: [''],\n subscribedOnUpgrade: ['']\n })\n );\n });\n\n this.form\n .get('overrideOnCreationSubscriptions')\n .valueChanges.subscribe(value => this.onOverrideOnCreationSubscriptionsChange(value));\n\n this.form\n .get('overrideOnUpgradeSubscriptions')\n .valueChanges.subscribe(value => this.onOverrideOnUpgradeSubscriptionsChange(value));\n }\n\n /**\n * Checks if given application row should be displayed.\n * The row is displayed when any of its checkboxes is selected or any of the lists is being overridden.\n */\n shouldShowAppRow(appRowRawValue): boolean {\n const { subscribedOnCreation, subscribedOnUpgrade } = appRowRawValue;\n const { overrideOnCreationSubscriptions, overrideOnUpgradeSubscriptions } = this.form.value;\n\n return (\n subscribedOnCreation ||\n subscribedOnUpgrade ||\n overrideOnCreationSubscriptions ||\n overrideOnUpgradeSubscriptions\n );\n }\n\n /** Checks if there are no application rows to be displayed. */\n isEmptyView(): boolean {\n return !this.form\n .getRawValue()\n .appRows.some(appRowRawValue => this.shouldShowAppRow(appRowRawValue));\n }\n\n /**\n * Checks if given application is subscribed (present in the given list of applications).\n * @param app Application object to check.\n * @param subscribedApps The list of application objects to check against.\n * @returns True, if the application is present in the list.\n */\n isSubscribed(app: IApplication, subscribedApps: PartialAppsList): boolean {\n return subscribedApps && subscribedApps.some(subscribedApp => subscribedApp.name === app.name);\n }\n\n /** Saves the current value of form object to backend. */\n async save() {\n try {\n const defaultSubscriptions = this.getDefaultSubscriptionsForSave();\n await this.defaultSubscriptionsService.saveDefaultSubscriptionsToCurrentTenant(\n defaultSubscriptions\n );\n this.alertService.success(gettext('Saved.'));\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n private onOverrideOnCreationSubscriptionsChange(overrideOnCreationSubscriptions: boolean) {\n if (overrideOnCreationSubscriptions) {\n this.enableSubscribeOnCreationCheckboxes();\n return;\n }\n this.disableSubscribeOnCreationCheckboxes();\n this.restoreSubscribeOnCreationFromParent();\n }\n\n private enableSubscribeOnCreationCheckboxes() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.get('subscribedOnCreation').enable({ emitEvent: false });\n });\n }\n\n private disableSubscribeOnCreationCheckboxes() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.get('subscribedOnCreation').disable({ emitEvent: false });\n });\n }\n\n private restoreSubscribeOnCreationFromParent() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.patchValue({\n subscribedOnCreation: this.isSubscribed(\n appRowControl.value.app,\n this.parentDefaultSubscriptions.onCreationSubscriptions\n )\n });\n });\n }\n\n private onOverrideOnUpgradeSubscriptionsChange(overrideOnUpgradeSubscriptions: boolean) {\n if (overrideOnUpgradeSubscriptions) {\n this.enableSubscribeOnUpgradeCheckboxes();\n return;\n }\n this.disableSubscribeOnUpgradeCheckboxes();\n this.restoreSubscribeOnUpgradeFromParent();\n }\n\n private enableSubscribeOnUpgradeCheckboxes() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.get('subscribedOnUpgrade').enable({ emitEvent: false });\n });\n }\n\n private disableSubscribeOnUpgradeCheckboxes() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.get('subscribedOnUpgrade').disable({ emitEvent: false });\n });\n }\n\n private restoreSubscribeOnUpgradeFromParent() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.patchValue({\n subscribedOnUpgrade: this.isSubscribed(\n appRowControl.value.app,\n this.parentDefaultSubscriptions.onUpgradeSubscriptions\n )\n });\n });\n }\n\n private async loadDefaultSubscriptions() {\n this.parentDefaultSubscriptions =\n await this.defaultSubscriptionsService.getDefaultSubscriptionsEvaluatedFromParentTenant();\n this.currentDefaultSubscriptions =\n await this.defaultSubscriptionsService.getDefaultSubscriptionsFromCurrentTenant();\n\n const { overrideOnCreationSubscriptions, overrideOnUpgradeSubscriptions } =\n this.currentDefaultSubscriptions;\n const onCreationSubscriptions = overrideOnCreationSubscriptions\n ? this.currentDefaultSubscriptions.onCreationSubscriptions\n : this.parentDefaultSubscriptions.onCreationSubscriptions;\n const onUpgradeSubscriptions = overrideOnUpgradeSubscriptions\n ? this.currentDefaultSubscriptions.onUpgradeSubscriptions\n : this.parentDefaultSubscriptions.onUpgradeSubscriptions;\n\n this.form.patchValue({\n overrideOnCreationSubscriptions,\n overrideOnUpgradeSubscriptions\n });\n (this.form.controls.appRows as FormArray).controls.forEach(appRowControl => {\n appRowControl.patchValue({\n subscribedOnCreation: this.isSubscribed(appRowControl.value.app, onCreationSubscriptions),\n subscribedOnUpgrade: this.isSubscribed(appRowControl.value.app, onUpgradeSubscriptions)\n });\n });\n }\n\n private getDefaultSubscriptionsForSave(): DefaultSubscriptions {\n const { value } = this.form;\n return {\n overrideOnCreationSubscriptions: value.overrideOnCreationSubscriptions,\n onCreationSubscriptions: value.overrideOnCreationSubscriptions\n ? value.appRows.filter(app => app.subscribedOnCreation).map(app => app.app)\n : null,\n overrideOnUpgradeSubscriptions: value.overrideOnUpgradeSubscriptions,\n onUpgradeSubscriptions: value.overrideOnUpgradeSubscriptions\n ? value.appRows.filter(app => app.subscribedOnUpgrade).map(app => app.app)\n : null\n };\n }\n}\n","<c8y-title>{{ 'Default subscriptions' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [label]=\"'Ecosystem' | translate\" [icon]=\"'c8y-atom'\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [label]=\"'Default subscriptions' | translate\"\n [icon]=\"'c8y-atom'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<form [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <div class=\"card card--fullpage col-lg-max\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Applications</div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"sticky-top separator-bottom\">\n <div class=\"d-flex\">\n <div class=\"col-sm-6 col-xs-6 p-24 p-t-16 p-l-xs-16\">\n <p translate>\n Configure default subscriptions in the platform, both for tenant creation and for\n platform upgrade. To display a full list of available applications, override inherited\n settings.\n </p>\n </div>\n <div class=\"col-sm-6 col-xs-6 bg-level-1 p-16 text-center separator-bottom\">\n <div class=\"row\">\n <div class=\"col-sm-6 col-xs-6\">\n <p><strong translate>Subscribed on tenant creation</strong></p>\n <div>\n <label class=\"c8y-switch\" title=\"{{ 'Override inherited' | translate }}\">\n <input type=\"checkbox\" formControlName=\"overrideOnCreationSubscriptions\" />\n <span></span>\n <span>\n {{ 'Override inherited' | translate }}\n </span>\n </label>\n </div>\n </div>\n <div class=\"col-sm-6 col-xs-6\">\n <p><strong translate>Subscribed on platform upgrade</strong></p>\n <div>\n <label class=\"c8y-switch\" title=\"{{ 'Override inherited' | translate }}\">\n <input type=\"checkbox\" formControlName=\"overrideOnUpgradeSubscriptions\" />\n <span></span>\n <span>\n {{ 'Override inherited' | translate }}\n </span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\" *ngIf=\"loading\"></div>\n <div class=\"card-block card-block d-flex a-i-center j-c-center d-col\" *ngIf=\"loading\">\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"card-block\" *ngIf=\"loading\"></div>\n\n <ng-container formArrayName=\"appRows\">\n <div class=\"bg-level-1\" *ngIf=\"!loading && isEmptyView()\"></div>\n <div class=\"card-block bg-level-0\" *ngIf=\"!loading && isEmptyView()\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-c8y-data'\"\n [title]=\"'No application subscriptions yet.' | translate\"\n [subtitle]=\"\n 'Select &quot;Override inherited&quot; to define the list of subscribed applications.'\n | translate\n \"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"bg-level-1\" *ngIf=\"!loading && isEmptyView()\"></div>\n\n <div *ngFor=\"let appRowControl of form.get('appRows')['controls']; let i = index\">\n <ng-container\n *ngIf=\"shouldShowAppRow(appRowControl.getRawValue())\"\n formArrayName=\"{{ i }}\"\n >\n <div class=\"d-flex a-i-stretch\">\n <div class=\"col-sm-6 col-xs-6 separator-bottom\">\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__appicon\">\n <c8y-app-icon\n [app]=\"appRowControl.value.app\"\n [name]=\"appRowControl.value.app.name\"\n [contextPath]=\"appRowControl.value.app.contextPath\"\n ></c8y-app-icon>\n </div>\n <div class=\"c8y-list__item__body\" data-cy=\"defaultSubscriptionForm--c8y-list_item\">\n <div class=\"content-flex-30\">\n <div class=\"col-6\">\n <p\n class=\"text-truncate\"\n title=\"{{ appRowControl.value.app | humanizeAppName | async }}\"\n >\n {{ appRowControl.value.app | humanizeAppName | async }}\n </p>\n <small class=\"text-muted\">{{ appRowControl.value.app.contextPath }}</small>\n </div>\n <div class=\"col-6 text-right-sm\">\n <p>\n <span class=\"text-label-small m-r-4\" translate>Tenant ID</span>\n {{ appRowControl.value.app.owner.tenant.id }}\n </p>\n <!-- TODO: uncomment when company name is available\n <p>\n <span class=\"text-label-small m-r-4\" translate>Company</span>\n <small class=\"text-muted\">company name</small>\n </p> -->\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-sm-3 col-xs-3 bg-level-1 separator-bottom d-flex j-c-center a-i-center\"\n >\n <label\n class=\"c8y-checkbox\"\n [ngClass]=\"{ disabled: appRowControl.controls.subscribedOnCreation.disabled }\"\n >\n <input type=\"checkbox\" formControlName=\"subscribedOnCreation\" />\n <span *ngIf=\"!appRowControl.controls.subscribedOnCreation.disabled\"></span>\n <span\n *ngIf=\"appRowControl.controls.subscribedOnCreation.disabled\"\n title=\"{{ disabledCheckboxHint | translate }}\"\n ></span>\n <span class=\"sr-only\">{{ 'Subscribed on tenant creation' | translate }}</span>\n </label>\n </div>\n\n <div\n class=\"col-sm-3 col-xs-3 bg-level-1 separator-bottom d-flex j-c-center a-i-center\"\n >\n <label\n class=\"c8y-checkbox\"\n [ngClass]=\"{ disabled: appRowControl.controls.subscribedOnUpgrade.disabled }\"\n >\n <input type=\"checkbox\" formControlName=\"subscribedOnUpgrade\" />\n <span *ngIf=\"!appRowControl.controls.subscribedOnUpgrade.disabled\"></span>\n <span\n *ngIf=\"appRowControl.controls.subscribedOnUpgrade.disabled\"\n title=\"{{ disabledCheckboxHint | translate }}\"\n ></span>\n <span class=\"sr-only\">{{ 'Subscribed on platform upgrade' | translate }}</span>\n </label>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save default subscriptions' | translate }}\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n</form>\n","import { Injectable } from '@angular/core';\n\nimport { TenantUiService } from '@c8y/ngx-components';\n\n@Injectable()\nexport class DefaultSubscriptionsGuard {\n private active: boolean;\n\n constructor(private tenantUiService: TenantUiService) {}\n\n /**\n * Checks if default subscriptions feature should be active,\n * i.e. whether the current tenant is the management or an enterprise tenant.\n * **Note: the check is executed only once in the runtime.**\n *\n * @returns True, if the feature should be active.\n */\n async canActivate(): Promise<boolean> {\n if (this.active === undefined) {\n this.active =\n (await this.tenantUiService.isManagementTenant()) ||\n (await this.tenantUiService.isEnterpriseTenant());\n }\n return this.active;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { DefaultSubscriptionsGuard } from './default-subscriptions.guard';\n\n@Injectable()\nexport class DefaultSubscriptionsNavigationFactory implements NavigatorNodeFactory {\n private navNode = new NavigatorNode({\n label: gettext('Default subscriptions'),\n path: '/default-subscriptions',\n icon: 'c8y-c8y-data',\n parent: gettext('Ecosystem'),\n priority: 100\n });\n\n constructor(private defaultSubscriptionsGuard: DefaultSubscriptionsGuard) {}\n\n /** Returns the navigation node if the feature is active. */\n async get(): Promise<NavigatorNode> {\n if (await this.defaultSubscriptionsGuard.canActivate()) {\n return this.navNode;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule, hookNavigator, hookRoute } from '@c8y/ngx-components';\n\nimport { DefaultSubscriptionsComponent } from './default-subscriptions.component';\nimport { DefaultSubscriptionsService } from './default-subscriptions.service';\nimport { DefaultSubscriptionsGuard } from './default-subscriptions.guard';\nimport { DefaultSubscriptionsNavigationFactory } from './default-subscriptions-navigation.factory';\n\n@NgModule({\n imports: [CoreModule, ReactiveFormsModule, DefaultSubscriptionsComponent],\n exports: [DefaultSubscriptionsComponent],\n providers: [\n DefaultSubscriptionsService,\n DefaultSubscriptionsGuard,\n hookNavigator(DefaultSubscriptionsNavigationFactory),\n hookRoute({\n path: 'default-subscriptions',\n component: DefaultSubscriptionsComponent,\n canActivate: [DefaultSubscriptionsGuard]\n })\n ]\n})\nexport class DefaultSubscriptionsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DefaultSubscriptionsContextTenant","i1","i2.DefaultSubscriptionsService","i3","i1.DefaultSubscriptionsGuard"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-default-subscriptions.mjs","sources":["../../default-subscriptions/default-subscriptions.model.ts","../../default-subscriptions/default-subscriptions.service.ts","../../default-subscriptions/default-subscriptions.component.ts","../../default-subscriptions/default-subscriptions.component.html","../../default-subscriptions/default-subscriptions.guard.ts","../../default-subscriptions/default-subscriptions-navigation.factory.ts","../../default-subscriptions/default-subscriptions.module.ts","../../default-subscriptions/c8y-ngx-components-default-subscriptions.ts"],"sourcesContent":["import { IApplication } from '@c8y/client';\n\n/** The list of partial application objects. */\nexport type PartialAppsList = Array<Partial<IApplication>>;\n\n/** The interface for default subscriptions configuration. */\nexport interface DefaultSubscriptions {\n /** Whether the list of on tenant creation subscriptions is overridden in the current tenant. Won't be defined for inherited configuration. */\n overrideOnCreationSubscriptions?: boolean;\n /** The list of applications subscribed to new tenants on creation. */\n onCreationSubscriptions: PartialAppsList;\n /** Whether the list of on platform upgrade subscriptions is overridden in the current tenant. Won't be defined for inherited configuration. */\n overrideOnUpgradeSubscriptions?: boolean;\n /** The list of applications subscribed to existing tenants on platform upgrade. */\n onUpgradeSubscriptions: PartialAppsList;\n}\n\n/** The context for evaluating default subscriptions configuration */\nexport enum DefaultSubscriptionsContext {\n /** Current tenant context (only current tenant options are taken into account). */\n CURRENT_TENANT,\n /** Parent tenant context (only parent tenant options are taken into account). */\n PARENT_TENANT\n}\n","import { Injectable } from '@angular/core';\nimport { isUndefined, sortBy } from 'lodash-es';\nimport { debounceTime, take } from 'rxjs/operators';\n\nimport {\n IApplication,\n ApplicationType,\n ApplicationService,\n ISystemOption,\n TenantService,\n TenantOptionsService\n} from '@c8y/client';\nimport { HumanizeAppNamePipe } from '@c8y/ngx-components';\n\nimport {\n PartialAppsList,\n DefaultSubscriptions,\n DefaultSubscriptionsContext as DefaultSubscriptionsContextTenant\n} from './default-subscriptions.model';\n\n@Injectable()\nexport class DefaultSubscriptionsService {\n constructor(\n private applicationService: ApplicationService,\n private tenantService: TenantService,\n private tenantOptionsService: TenantOptionsService,\n private humanizeAppNamePipe: HumanizeAppNamePipe\n ) {}\n\n /**\n * Gets the list of applications which can be used in default subscriptions, i.e.:\n * - current tenant's all own applications,\n * - inherited applications, which do not have the same names as current tenant's own apps.\n * The list is sorted alphabetically by humanized app name and contains up to 2000 items.\n * @returns The list of applications, which can be used in default subscriptions.\n */\n async getSubscribableTenantApps(): Promise<IApplication[]> {\n const currentTenant = (await this.tenantService.current()).data;\n\n const allApps = (await this.applicationService.listByTenant(null, { pageSize: 2000 })).data;\n const ownApps = allApps.filter(app => app.owner.tenant.id === currentTenant.name);\n const inheritedApps = allApps.filter(app => app.owner.tenant.id !== currentTenant.name);\n\n const filteredApps: IApplication[] = [...ownApps];\n inheritedApps.forEach(inheritedApp => {\n if (!filteredApps.some(filteredApp => filteredApp.name === inheritedApp.name)) {\n filteredApps.push(inheritedApp);\n }\n });\n\n const filteredAppsWithHumanizedNames = await Promise.all(\n filteredApps.map(async app => {\n const humanizedName = await this.humanizeAppNamePipe\n .transform(app.name)\n .pipe(debounceTime(250), take(1))\n .toPromise();\n return { app, humanizedName };\n })\n );\n const sortedAppsWithHumanizedNames = sortBy(filteredAppsWithHumanizedNames, ['humanizedName']);\n const sortedApps = sortedAppsWithHumanizedNames.map(({ app }) => app);\n\n return sortedApps;\n }\n\n /**\n * Gets the default subscriptions configuration inherited from parent tenant.\n * @returns The default subscriptions object with settings from parent tenant.\n */\n async getDefaultSubscriptionsEvaluatedFromParentTenant(): Promise<DefaultSubscriptions> {\n return this.getDefaultSubscriptions(DefaultSubscriptionsContextTenant.PARENT_TENANT);\n }\n\n /**\n * Gets the default subscriptions configuration from the current tenant.\n * @returns The default subscriptions object with settings from the current tenant.\n */\n async getDefaultSubscriptionsFromCurrentTenant(): Promise<DefaultSubscriptions> {\n return this.getDefaultSubscriptions(DefaultSubscriptionsContextTenant.CURRENT_TENANT);\n }\n\n /**\n * Saves given default subscriptions configuration to the current tenant\n * (either sets, updates, or deletes corresponding tenant options).\n * @param defaultSubscriptions The default subscriptions configuration to be saved.\n */\n async saveDefaultSubscriptionsToCurrentTenant(defaultSubscriptions: DefaultSubscriptions) {\n await this.saveOnCreationSubscriptions(defaultSubscriptions);\n await this.saveOnUpgradeSubscriptions(defaultSubscriptions);\n }\n\n /**\n * Gets default subscriptions in the context of current or parent tenant.\n * @param contextTenant Tells whether to use current or parent tenant as context.\n */\n private async getDefaultSubscriptions(\n contextTenant: DefaultSubscriptionsContextTenant\n ): Promise<DefaultSubscriptions> {\n let tenantOptionsParams: object;\n let overridable: boolean;\n\n switch (contextTenant) {\n case DefaultSubscriptionsContextTenant.CURRENT_TENANT:\n tenantOptionsParams = { evaluate: 'current' };\n overridable = true;\n break;\n\n case DefaultSubscriptionsContextTenant.PARENT_TENANT:\n tenantOptionsParams = { evaluate: 'inherited' };\n overridable = false;\n break;\n }\n\n const {\n onCreationApps,\n onCreationMicroservices,\n onUpgradeAppsEnabled,\n onUpgradeApps,\n onUpgradeMicroservicesEnabled,\n onUpgradeMicroservices\n } = await this.getTenantOptions(tenantOptionsParams);\n\n const onCreationSubscriptions = this.namesToPartialApps({\n appsNamesStr: onCreationApps,\n microservicesNamesStr: onCreationMicroservices\n });\n\n const onUpgradeAppsDefault = overridable ? null : onCreationApps;\n const onUpgradeMicroservicesDefault = overridable ? null : onCreationMicroservices;\n const onUpgradeSubscriptions = this.namesToPartialApps({\n appsNamesStr: onUpgradeAppsEnabled ? onUpgradeApps : onUpgradeAppsDefault,\n microservicesNamesStr: onUpgradeMicroservicesEnabled\n ? onUpgradeMicroservices\n : onUpgradeMicroservicesDefault\n });\n\n const defaultSubscriptions: DefaultSubscriptions = {\n onCreationSubscriptions,\n onUpgradeSubscriptions\n };\n\n if (overridable) {\n defaultSubscriptions.overrideOnCreationSubscriptions =\n onCreationApps !== null || onCreationMicroservices !== null;\n defaultSubscriptions.overrideOnUpgradeSubscriptions =\n onUpgradeAppsEnabled || onUpgradeMicroservicesEnabled;\n }\n\n return defaultSubscriptions;\n }\n\n private async getTenantOptions(params = {}) {\n return {\n onCreationApps: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'default.tenant.applications'\n },\n null,\n params\n ),\n onCreationMicroservices: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'default.tenant.microservices'\n },\n null,\n params\n ),\n onUpgradeAppsEnabled: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'on-update.tenant.applications.enabled'\n },\n false,\n params\n ),\n onUpgradeApps: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'on-update.tenant.applications'\n },\n null,\n params\n ),\n onUpgradeMicroservicesEnabled: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'on-update.tenant.microservices.enabled'\n },\n false,\n params\n ),\n onUpgradeMicroservices: await this.getTenantOption(\n {\n category: 'configuration',\n key: 'on-update.tenant.microservices'\n },\n null,\n params\n )\n };\n }\n\n private async saveOnCreationSubscriptions(defaultSubscriptions: DefaultSubscriptions) {\n if (defaultSubscriptions.overrideOnCreationSubscriptions) {\n await this.setTenantOption({\n category: 'configuration',\n key: 'default.tenant.applications',\n value: this.partialAppsListToAppsNames(defaultSubscriptions.onCreationSubscriptions)\n });\n await this.setTenantOption({\n category: 'configuration',\n key: 'default.tenant.microservices',\n value: this.partialAppsToMicroservicesNames(defaultSubscriptions.onCreationSubscriptions)\n });\n } else {\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'default.tenant.applications'\n });\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'default.tenant.microservices'\n });\n }\n }\n\n private async saveOnUpgradeSubscriptions(defaultSubscriptions: DefaultSubscriptions) {\n if (defaultSubscriptions.overrideOnUpgradeSubscriptions) {\n await this.setTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.applications.enabled',\n value: 'true'\n });\n await this.setTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.microservices.enabled',\n value: 'true'\n });\n await this.setTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.applications',\n value: this.partialAppsListToAppsNames(defaultSubscriptions.onUpgradeSubscriptions)\n });\n await this.setTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.microservices',\n value: this.partialAppsToMicroservicesNames(defaultSubscriptions.onUpgradeSubscriptions)\n });\n } else {\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.applications.enabled'\n });\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.microservices.enabled'\n });\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.applications'\n });\n await this.unsetTenantOption({\n category: 'configuration',\n key: 'on-update.tenant.microservices'\n });\n }\n }\n\n private async getTenantOption(option: ISystemOption, defaultValue = null, params = {}) {\n let value;\n try {\n value = (await this.tenantOptionsService.detail(option, params)).data.value;\n value = JSON.parse(value);\n } catch (ex) {\n value = !isUndefined(value) ? value : defaultValue;\n }\n return value;\n }\n\n private async setTenantOption(option: ISystemOption) {\n return this.tenantOptionsService.update(option);\n }\n\n private async unsetTenantOption(option: ISystemOption) {\n try {\n await this.tenantOptionsService.delete(option);\n } catch (ex) {\n if (!ex || !ex.res || ex.res.status !== 404) {\n throw ex;\n }\n }\n }\n\n private namesToPartialApps({\n appsNamesStr,\n microservicesNamesStr\n }: {\n appsNamesStr?: string;\n microservicesNamesStr?: string;\n }): PartialAppsList {\n if (appsNamesStr === null && microservicesNamesStr === null) {\n return null;\n }\n\n return [\n ...(appsNamesStr || '')\n .split(',')\n .filter(name => name.length)\n .map(name => ({ name: name.trim() })),\n ...(microservicesNamesStr || '')\n .split(',')\n .filter(name => name.length)\n .map(name => ({\n name: name.trim(),\n type: ApplicationType.MICROSERVICE\n }))\n ];\n }\n\n private partialAppsListToAppsNames(apps: PartialAppsList): string {\n return apps\n .filter(app => app.type !== ApplicationType.MICROSERVICE)\n .map(app => app.name)\n .join(',');\n }\n\n private partialAppsToMicroservicesNames(apps: PartialAppsList): string {\n return apps\n .filter(app => app.type === ApplicationType.MICROSERVICE)\n .map(app => app.name)\n .join(',');\n }\n}\n","import { Component } from '@angular/core';\nimport {\n FormArray,\n FormBuilder,\n FormGroup,\n FormsModule,\n ReactiveFormsModule\n} from '@angular/forms';\nimport { IApplication } from '@c8y/client';\nimport {\n AlertService,\n gettext,\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n C8yTranslateDirective,\n RequiredInputPlaceholderDirective,\n LoadingComponent,\n EmptyStateComponent,\n AppIconComponent,\n C8yTranslatePipe,\n HumanizeAppNamePipe\n} from '@c8y/ngx-components';\nimport { DefaultSubscriptions, PartialAppsList } from './default-subscriptions.model';\nimport { DefaultSubscriptionsService } from './default-subscriptions.service';\nimport { NgIf, NgFor, NgClass, AsyncPipe } from '@angular/common';\n\n/**\n * The component shows the main view for managing default subscriptions configuration.\n */\n@Component({\n selector: 'c8y-default-subscriptions',\n templateUrl: './default-subscriptions.component.html',\n imports: [\n TitleComponent,\n BreadcrumbComponent,\n BreadcrumbItemComponent,\n FormsModule,\n ReactiveFormsModule,\n C8yTranslateDirective,\n RequiredInputPlaceholderDirective,\n NgIf,\n LoadingComponent,\n EmptyStateComponent,\n NgFor,\n AppIconComponent,\n NgClass,\n C8yTranslatePipe,\n AsyncPipe,\n HumanizeAppNamePipe\n ]\n})\nexport class DefaultSubscriptionsComponent {\n /** Default subscriptions inherited from parent tenant. */\n parentDefaultSubscriptions: DefaultSubscriptions;\n /** Default subscriptions defined in the current tenant. */\n currentDefaultSubscriptions: DefaultSubscriptions;\n /** Form object. */\n form: FormGroup;\n /** Whether the configuration is being loaded. */\n loading: boolean;\n /** Hint text for disabled checkboxes. */\n disabledCheckboxHint = gettext('Select \"Override inherited\" to enable.');\n\n constructor(\n private fb: FormBuilder,\n private defaultSubscriptionsService: DefaultSubscriptionsService,\n private alertService: AlertService\n ) {}\n\n /** Initializes the loading of the form and the current settings. */\n async ngOnInit() {\n this.loading = true;\n await this.initForm();\n await this.loadDefaultSubscriptions();\n this.loading = false;\n }\n\n /** Loads the list of apps, builds the form and hooks value change events for override switches. */\n async initForm() {\n this.form = this.fb.group({\n overrideOnCreationSubscriptions: [''],\n overrideOnUpgradeSubscriptions: [''],\n appRows: this.fb.array([])\n });\n\n const apps = await this.defaultSubscriptionsService.getSubscribableTenantApps();\n const appRows = this.form.controls.appRows as FormArray;\n apps.forEach(app => {\n appRows.push(\n this.fb.group({\n app: [app],\n subscribedOnCreation: [''],\n subscribedOnUpgrade: ['']\n })\n );\n });\n\n this.form\n .get('overrideOnCreationSubscriptions')\n .valueChanges.subscribe(value => this.onOverrideOnCreationSubscriptionsChange(value));\n\n this.form\n .get('overrideOnUpgradeSubscriptions')\n .valueChanges.subscribe(value => this.onOverrideOnUpgradeSubscriptionsChange(value));\n }\n\n /**\n * Checks if given application row should be displayed.\n * The row is displayed when any of its checkboxes is selected or any of the lists is being overridden.\n */\n shouldShowAppRow(appRowRawValue): boolean {\n const { subscribedOnCreation, subscribedOnUpgrade } = appRowRawValue;\n const { overrideOnCreationSubscriptions, overrideOnUpgradeSubscriptions } = this.form.value;\n\n return (\n subscribedOnCreation ||\n subscribedOnUpgrade ||\n overrideOnCreationSubscriptions ||\n overrideOnUpgradeSubscriptions\n );\n }\n\n /** Checks if there are no application rows to be displayed. */\n isEmptyView(): boolean {\n return !this.form\n .getRawValue()\n .appRows.some(appRowRawValue => this.shouldShowAppRow(appRowRawValue));\n }\n\n /**\n * Checks if given application is subscribed (present in the given list of applications).\n * @param app Application object to check.\n * @param subscribedApps The list of application objects to check against.\n * @returns True, if the application is present in the list.\n */\n isSubscribed(app: IApplication, subscribedApps: PartialAppsList): boolean {\n return subscribedApps && subscribedApps.some(subscribedApp => subscribedApp.name === app.name);\n }\n\n /** Saves the current value of form object to backend. */\n async save() {\n try {\n const defaultSubscriptions = this.getDefaultSubscriptionsForSave();\n await this.defaultSubscriptionsService.saveDefaultSubscriptionsToCurrentTenant(\n defaultSubscriptions\n );\n this.alertService.success(gettext('Saved.'));\n } catch (ex) {\n this.alertService.addServerFailure(ex);\n }\n }\n\n private onOverrideOnCreationSubscriptionsChange(overrideOnCreationSubscriptions: boolean) {\n if (overrideOnCreationSubscriptions) {\n this.enableSubscribeOnCreationCheckboxes();\n return;\n }\n this.disableSubscribeOnCreationCheckboxes();\n this.restoreSubscribeOnCreationFromParent();\n }\n\n private enableSubscribeOnCreationCheckboxes() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.get('subscribedOnCreation').enable({ emitEvent: false });\n });\n }\n\n private disableSubscribeOnCreationCheckboxes() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.get('subscribedOnCreation').disable({ emitEvent: false });\n });\n }\n\n private restoreSubscribeOnCreationFromParent() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.patchValue({\n subscribedOnCreation: this.isSubscribed(\n appRowControl.value.app,\n this.parentDefaultSubscriptions.onCreationSubscriptions\n )\n });\n });\n }\n\n private onOverrideOnUpgradeSubscriptionsChange(overrideOnUpgradeSubscriptions: boolean) {\n if (overrideOnUpgradeSubscriptions) {\n this.enableSubscribeOnUpgradeCheckboxes();\n return;\n }\n this.disableSubscribeOnUpgradeCheckboxes();\n this.restoreSubscribeOnUpgradeFromParent();\n }\n\n private enableSubscribeOnUpgradeCheckboxes() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.get('subscribedOnUpgrade').enable({ emitEvent: false });\n });\n }\n\n private disableSubscribeOnUpgradeCheckboxes() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.get('subscribedOnUpgrade').disable({ emitEvent: false });\n });\n }\n\n private restoreSubscribeOnUpgradeFromParent() {\n const appRowsControls = (this.form.controls.appRows as FormArray).controls;\n appRowsControls.forEach(appRowControl => {\n appRowControl.patchValue({\n subscribedOnUpgrade: this.isSubscribed(\n appRowControl.value.app,\n this.parentDefaultSubscriptions.onUpgradeSubscriptions\n )\n });\n });\n }\n\n private async loadDefaultSubscriptions() {\n this.parentDefaultSubscriptions =\n await this.defaultSubscriptionsService.getDefaultSubscriptionsEvaluatedFromParentTenant();\n this.currentDefaultSubscriptions =\n await this.defaultSubscriptionsService.getDefaultSubscriptionsFromCurrentTenant();\n\n const { overrideOnCreationSubscriptions, overrideOnUpgradeSubscriptions } =\n this.currentDefaultSubscriptions;\n const onCreationSubscriptions = overrideOnCreationSubscriptions\n ? this.currentDefaultSubscriptions.onCreationSubscriptions\n : this.parentDefaultSubscriptions.onCreationSubscriptions;\n const onUpgradeSubscriptions = overrideOnUpgradeSubscriptions\n ? this.currentDefaultSubscriptions.onUpgradeSubscriptions\n : this.parentDefaultSubscriptions.onUpgradeSubscriptions;\n\n this.form.patchValue({\n overrideOnCreationSubscriptions,\n overrideOnUpgradeSubscriptions\n });\n (this.form.controls.appRows as FormArray).controls.forEach(appRowControl => {\n appRowControl.patchValue({\n subscribedOnCreation: this.isSubscribed(appRowControl.value.app, onCreationSubscriptions),\n subscribedOnUpgrade: this.isSubscribed(appRowControl.value.app, onUpgradeSubscriptions)\n });\n });\n }\n\n private getDefaultSubscriptionsForSave(): DefaultSubscriptions {\n const { value } = this.form;\n return {\n overrideOnCreationSubscriptions: value.overrideOnCreationSubscriptions,\n onCreationSubscriptions: value.overrideOnCreationSubscriptions\n ? value.appRows.filter(app => app.subscribedOnCreation).map(app => app.app)\n : null,\n overrideOnUpgradeSubscriptions: value.overrideOnUpgradeSubscriptions,\n onUpgradeSubscriptions: value.overrideOnUpgradeSubscriptions\n ? value.appRows.filter(app => app.subscribedOnUpgrade).map(app => app.app)\n : null\n };\n }\n}\n","<c8y-title>{{ 'Default subscriptions' | translate }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item [label]=\"'Ecosystem' | translate\" [icon]=\"'c8y-atom'\"></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [label]=\"'Default subscriptions' | translate\"\n [icon]=\"'c8y-atom'\"\n ></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<form [formGroup]=\"form\" (ngSubmit)=\"save()\">\n <div class=\"card card--fullpage col-lg-max\">\n <div class=\"card-header separator\">\n <div class=\"card-title\" translate>Applications</div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"sticky-top separator-bottom\">\n <div class=\"d-flex\">\n <div class=\"col-sm-6 col-xs-6 p-24 p-t-16 p-l-xs-16\">\n <p translate>\n Configure default subscriptions in the platform, both for tenant creation and for\n platform upgrade. To display a full list of available applications, override inherited\n settings.\n </p>\n </div>\n <div class=\"col-sm-6 col-xs-6 bg-level-1 p-16 text-center separator-bottom\">\n <div class=\"row\">\n <div class=\"col-sm-6 col-xs-6\">\n <p><strong translate>Subscribed on tenant creation</strong></p>\n <div>\n <label class=\"c8y-switch\" title=\"{{ 'Override inherited' | translate }}\">\n <input type=\"checkbox\" formControlName=\"overrideOnCreationSubscriptions\" />\n <span></span>\n <span>\n {{ 'Override inherited' | translate }}\n </span>\n </label>\n </div>\n </div>\n <div class=\"col-sm-6 col-xs-6\">\n <p><strong translate>Subscribed on platform upgrade</strong></p>\n <div>\n <label class=\"c8y-switch\" title=\"{{ 'Override inherited' | translate }}\">\n <input type=\"checkbox\" formControlName=\"overrideOnUpgradeSubscriptions\" />\n <span></span>\n <span>\n {{ 'Override inherited' | translate }}\n </span>\n </label>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-block\" *ngIf=\"loading\"></div>\n <div class=\"card-block card-block d-flex a-i-center j-c-center d-col\" *ngIf=\"loading\">\n <c8y-loading></c8y-loading>\n </div>\n <div class=\"card-block\" *ngIf=\"loading\"></div>\n\n <ng-container formArrayName=\"appRows\">\n <div class=\"bg-level-1\" *ngIf=\"!loading && isEmptyView()\"></div>\n <div class=\"card-block bg-level-0\" *ngIf=\"!loading && isEmptyView()\">\n <c8y-ui-empty-state\n [icon]=\"'c8y-c8y-data'\"\n [title]=\"'No application subscriptions yet.' | translate\"\n [subtitle]=\"\n 'Select &quot;Override inherited&quot; to define the list of subscribed applications.'\n | translate\n \"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"bg-level-1\" *ngIf=\"!loading && isEmptyView()\"></div>\n\n <div *ngFor=\"let appRowControl of form.get('appRows')['controls']; let i = index\">\n <ng-container\n *ngIf=\"shouldShowAppRow(appRowControl.getRawValue())\"\n formArrayName=\"{{ i }}\"\n >\n <div class=\"d-flex a-i-stretch\">\n <div class=\"col-sm-6 col-xs-6 separator-bottom\">\n <div class=\"c8y-list__item__block\">\n <div class=\"c8y-list__item__appicon\">\n <c8y-app-icon\n [app]=\"appRowControl.value.app\"\n [name]=\"appRowControl.value.app.name\"\n [contextPath]=\"appRowControl.value.app.contextPath\"\n ></c8y-app-icon>\n </div>\n <div class=\"c8y-list__item__body\" data-cy=\"defaultSubscriptionForm--c8y-list_item\">\n <div class=\"content-flex-30\">\n <div class=\"col-6\">\n <p\n class=\"text-truncate\"\n title=\"{{ appRowControl.value.app | humanizeAppName | async }}\"\n >\n {{ appRowControl.value.app | humanizeAppName | async }}\n </p>\n <small class=\"text-muted\">{{ appRowControl.value.app.contextPath }}</small>\n </div>\n <div class=\"col-6 text-right-sm\">\n <p>\n <span class=\"text-label-small m-r-4\" translate>Tenant ID</span>\n {{ appRowControl.value.app.owner.tenant.id }}\n </p>\n <!-- TODO: uncomment when company name is available\n <p>\n <span class=\"text-label-small m-r-4\" translate>Company</span>\n <small class=\"text-muted\">company name</small>\n </p> -->\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div\n class=\"col-sm-3 col-xs-3 bg-level-1 separator-bottom d-flex j-c-center a-i-center\"\n >\n <label\n class=\"c8y-checkbox\"\n [ngClass]=\"{ disabled: appRowControl.controls.subscribedOnCreation.disabled }\"\n >\n <input type=\"checkbox\" formControlName=\"subscribedOnCreation\" />\n <span *ngIf=\"!appRowControl.controls.subscribedOnCreation.disabled\"></span>\n <span\n *ngIf=\"appRowControl.controls.subscribedOnCreation.disabled\"\n title=\"{{ disabledCheckboxHint | translate }}\"\n ></span>\n <span class=\"sr-only\">{{ 'Subscribed on tenant creation' | translate }}</span>\n </label>\n </div>\n\n <div\n class=\"col-sm-3 col-xs-3 bg-level-1 separator-bottom d-flex j-c-center a-i-center\"\n >\n <label\n class=\"c8y-checkbox\"\n [ngClass]=\"{ disabled: appRowControl.controls.subscribedOnUpgrade.disabled }\"\n >\n <input type=\"checkbox\" formControlName=\"subscribedOnUpgrade\" />\n <span *ngIf=\"!appRowControl.controls.subscribedOnUpgrade.disabled\"></span>\n <span\n *ngIf=\"appRowControl.controls.subscribedOnUpgrade.disabled\"\n title=\"{{ disabledCheckboxHint | translate }}\"\n ></span>\n <span class=\"sr-only\">{{ 'Subscribed on platform upgrade' | translate }}</span>\n </label>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n type=\"submit\"\n title=\"{{ 'Save default subscriptions' | translate }}\"\n [disabled]=\"form.invalid || form.pristine\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n</form>\n","import { Injectable } from '@angular/core';\n\nimport { TenantUiService } from '@c8y/ngx-components';\n\n@Injectable()\nexport class DefaultSubscriptionsGuard {\n private active: boolean;\n\n constructor(private tenantUiService: TenantUiService) {}\n\n /**\n * Checks if default subscriptions feature should be active,\n * i.e. whether the current tenant is the management or an enterprise tenant.\n * **Note: the check is executed only once in the runtime.**\n *\n * @returns True, if the feature should be active.\n */\n async canActivate(): Promise<boolean> {\n if (this.active === undefined) {\n this.active =\n (await this.tenantUiService.isManagementTenant()) ||\n (await this.tenantUiService.isEnterpriseTenant());\n }\n return this.active;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { gettext, NavigatorNode, NavigatorNodeFactory } from '@c8y/ngx-components';\nimport { DefaultSubscriptionsGuard } from './default-subscriptions.guard';\n\n@Injectable()\nexport class DefaultSubscriptionsNavigationFactory implements NavigatorNodeFactory {\n private navNode = new NavigatorNode({\n label: gettext('Default subscriptions'),\n path: '/default-subscriptions',\n icon: 'c8y-c8y-data',\n parent: gettext('Ecosystem'),\n priority: 100\n });\n\n constructor(private defaultSubscriptionsGuard: DefaultSubscriptionsGuard) {}\n\n /** Returns the navigation node if the feature is active. */\n async get(): Promise<NavigatorNode> {\n if (await this.defaultSubscriptionsGuard.canActivate()) {\n return this.navNode;\n }\n }\n}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CoreModule, hookNavigator, hookRoute } from '@c8y/ngx-components';\n\nimport { DefaultSubscriptionsComponent } from './default-subscriptions.component';\nimport { DefaultSubscriptionsService } from './default-subscriptions.service';\nimport { DefaultSubscriptionsGuard } from './default-subscriptions.guard';\nimport { DefaultSubscriptionsNavigationFactory } from './default-subscriptions-navigation.factory';\n\n@NgModule({\n imports: [CoreModule, ReactiveFormsModule, DefaultSubscriptionsComponent],\n exports: [DefaultSubscriptionsComponent],\n providers: [\n DefaultSubscriptionsService,\n DefaultSubscriptionsGuard,\n hookNavigator(DefaultSubscriptionsNavigationFactory),\n hookRoute({\n path: 'default-subscriptions',\n component: DefaultSubscriptionsComponent,\n canActivate: [DefaultSubscriptionsGuard]\n })\n ]\n})\nexport class DefaultSubscriptionsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["DefaultSubscriptionsContextTenant","i1","i2.DefaultSubscriptionsService","i3","i1.DefaultSubscriptionsGuard"],"mappings":"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"}