@c8y/ngx-components 1022.9.6 → 1022.13.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 (710) hide show
  1. package/actility-device-registration/actility-device-registration-button.component.d.ts +1 -1
  2. package/actility-device-registration/actility-device-registration-button.component.d.ts.map +1 -1
  3. package/actility-device-registration/actility-device-registration.component.d.ts +1 -1
  4. package/actility-device-registration/actility-device-registration.component.d.ts.map +1 -1
  5. package/actility-device-registration/actility-device-registration.module.d.ts +4 -4
  6. package/actility-device-registration/actility-device-registration.module.d.ts.map +1 -1
  7. package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts +1 -1
  8. package/alarm-event-selector/alarm-event-attributes-form/alarm-event-attributes-form.component.d.ts.map +1 -1
  9. package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts +25 -1
  10. package/alarm-event-selector/alarm-event-selection-list/alarm-event-selection-list.component.d.ts.map +1 -1
  11. package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts +1 -1
  12. package/alarm-event-selector/alarm-event-selector-list-item/alarm-event-selector-list-item.component.d.ts.map +1 -1
  13. package/alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.d.ts +1 -1
  14. package/alarm-event-selector/alarm-event-selector-modal/alarm-event-selector-modal.component.d.ts.map +1 -1
  15. package/alarm-event-selector/alarm-event-selector.component.d.ts +1 -1
  16. package/alarm-event-selector/alarm-event-selector.component.d.ts.map +1 -1
  17. package/alarm-event-selector/alarm-event-selector.module.d.ts +15 -15
  18. package/alarm-event-selector/alarm-event-selector.module.d.ts.map +1 -1
  19. package/alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.d.ts +1 -1
  20. package/alarm-event-selector/custom-alarm-event-form/custom-alarm-event-form.component.d.ts.map +1 -1
  21. package/alarm-event-selector/pipes/includes-alarm.pipe.d.ts +1 -1
  22. package/alarm-event-selector/pipes/includes-alarm.pipe.d.ts.map +1 -1
  23. package/alarms/alarm-details.component.d.ts +1 -1
  24. package/alarms/alarm-details.component.d.ts.map +1 -1
  25. package/alarms/alarm-empty.component.d.ts +1 -1
  26. package/alarms/alarm-empty.component.d.ts.map +1 -1
  27. package/alarms/alarm-info.component.d.ts +1 -1
  28. package/alarms/alarm-info.component.d.ts.map +1 -1
  29. package/alarms/alarm-severities-to-title.pipe.d.ts +1 -1
  30. package/alarms/alarm-severities-to-title.pipe.d.ts.map +1 -1
  31. package/alarms/alarm-severity-to-label.pipe.d.ts +1 -1
  32. package/alarms/alarm-severity-to-label.pipe.d.ts.map +1 -1
  33. package/alarms/alarm-status-to-icon.pipe.d.ts +1 -1
  34. package/alarms/alarm-status-to-icon.pipe.d.ts.map +1 -1
  35. package/alarms/alarm-status-to-label.pipe.d.ts +1 -1
  36. package/alarms/alarm-status-to-label.pipe.d.ts.map +1 -1
  37. package/alarms/alarms-date-filter.component.d.ts +1 -1
  38. package/alarms/alarms-date-filter.component.d.ts.map +1 -1
  39. package/alarms/alarms-filter.component.d.ts +1 -1
  40. package/alarms/alarms-filter.component.d.ts.map +1 -1
  41. package/alarms/alarms-icon.component.d.ts +1 -1
  42. package/alarms/alarms-icon.component.d.ts.map +1 -1
  43. package/alarms/alarms-interval-refresh.component.d.ts +1 -1
  44. package/alarms/alarms-interval-refresh.component.d.ts.map +1 -1
  45. package/alarms/alarms-list.component.d.ts +1 -1
  46. package/alarms/alarms-list.component.d.ts.map +1 -1
  47. package/alarms/alarms-type-filter.component.d.ts +1 -1
  48. package/alarms/alarms-type-filter.component.d.ts.map +1 -1
  49. package/alarms/alarms.component.d.ts +1 -1
  50. package/alarms/alarms.component.d.ts.map +1 -1
  51. package/alarms/alarms.module.d.ts +27 -27
  52. package/alarms/alarms.module.d.ts.map +1 -1
  53. package/alarms/audit-changes-message.pipe.d.ts +1 -1
  54. package/alarms/audit-changes-message.pipe.d.ts.map +1 -1
  55. package/api/api.service.d.ts +8 -0
  56. package/api/api.service.d.ts.map +1 -1
  57. package/app-logs/app-logs-auto-refresh.component.d.ts +1 -1
  58. package/app-logs/app-logs-auto-refresh.component.d.ts.map +1 -1
  59. package/app-logs/app-logs-auto-refresh.module.d.ts +4 -4
  60. package/app-logs/app-logs-auto-refresh.module.d.ts.map +1 -1
  61. package/assets-navigator/asset-selector/asset-selector-node.component.d.ts +1 -1
  62. package/assets-navigator/asset-selector/asset-selector-node.component.d.ts.map +1 -1
  63. package/assets-navigator/asset-selector/asset-selector.component.d.ts +12 -1
  64. package/assets-navigator/asset-selector/asset-selector.component.d.ts.map +1 -1
  65. package/assets-navigator/asset-selector/asset-selector.module.d.ts +8 -8
  66. package/assets-navigator/asset-selector/asset-selector.module.d.ts.map +1 -1
  67. package/assets-navigator/asset-selector/miller-view.component.d.ts +1 -1
  68. package/assets-navigator/asset-selector/miller-view.component.d.ts.map +1 -1
  69. package/auth-configuration/basic-settings/auth-configuration.component.d.ts +1 -1
  70. package/auth-configuration/basic-settings/auth-configuration.component.d.ts.map +1 -1
  71. package/auth-configuration/basic-settings/basic-auth-settings.component.d.ts +1 -1
  72. package/auth-configuration/basic-settings/basic-auth-settings.component.d.ts.map +1 -1
  73. package/auth-configuration/basic-settings/basic-settings.module.d.ts +8 -8
  74. package/auth-configuration/basic-settings/basic-settings.module.d.ts.map +1 -1
  75. package/auth-configuration/basic-settings/login-settings.component.d.ts +2 -2
  76. package/auth-configuration/basic-settings/login-settings.component.d.ts.map +1 -1
  77. package/auth-configuration/basic-settings/session-configuration.component.d.ts +1 -1
  78. package/auth-configuration/basic-settings/session-configuration.component.d.ts.map +1 -1
  79. package/auth-configuration/basic-settings/tfa-settings.component.d.ts +1 -1
  80. package/auth-configuration/basic-settings/tfa-settings.component.d.ts.map +1 -1
  81. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts +1 -1
  82. package/auth-configuration/sso-configuration/sso-configuration.component.d.ts.map +1 -1
  83. package/auth-configuration/sso-configuration/sso-configuration.module.d.ts +24 -24
  84. package/auth-configuration/sso-configuration/sso-configuration.module.d.ts.map +1 -1
  85. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts +1 -1
  86. package/auth-configuration/sso-configuration/template-parts/access-mapping/access-mapping.component.d.ts.map +1 -1
  87. package/auth-configuration/sso-configuration/template-parts/access-mapping/child-predicates.component.d.ts +1 -1
  88. package/auth-configuration/sso-configuration/template-parts/access-mapping/child-predicates.component.d.ts.map +1 -1
  89. package/auth-configuration/sso-configuration/template-parts/access-mapping/dynamic-access-mapping.component.d.ts +1 -1
  90. package/auth-configuration/sso-configuration/template-parts/access-mapping/dynamic-access-mapping.component.d.ts.map +1 -1
  91. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-mapping.component.d.ts +1 -1
  92. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-mapping.component.d.ts.map +1 -1
  93. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts +1 -1
  94. package/auth-configuration/sso-configuration/template-parts/access-mapping/inventory-roles-modal.component.d.ts.map +1 -1
  95. package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts +1 -1
  96. package/auth-configuration/sso-configuration/template-parts/basic-configuration.component.d.ts.map +1 -1
  97. package/auth-configuration/sso-configuration/template-parts/external-token-config.component.d.ts +1 -1
  98. package/auth-configuration/sso-configuration/template-parts/external-token-config.component.d.ts.map +1 -1
  99. package/auth-configuration/sso-configuration/template-parts/logout-configuration.component.d.ts +1 -1
  100. package/auth-configuration/sso-configuration/template-parts/logout-configuration.component.d.ts.map +1 -1
  101. package/auth-configuration/sso-configuration/template-parts/request-configuration.component.d.ts +1 -1
  102. package/auth-configuration/sso-configuration/template-parts/request-configuration.component.d.ts.map +1 -1
  103. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts +1 -1
  104. package/auth-configuration/sso-configuration/template-parts/signature-configuration.component.d.ts.map +1 -1
  105. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts +1 -1
  106. package/auth-configuration/sso-configuration/template-parts/user-data-mapping.component.d.ts.map +1 -1
  107. package/auth-configuration/sso-configuration/template-parts/user-id-configuration.component.d.ts +1 -1
  108. package/auth-configuration/sso-configuration/template-parts/user-id-configuration.component.d.ts.map +1 -1
  109. package/auth-configuration/sso-configuration/templates/aad-template.component.d.ts +1 -1
  110. package/auth-configuration/sso-configuration/templates/aad-template.component.d.ts.map +1 -1
  111. package/auth-configuration/sso-configuration/templates/custom-template.component.d.ts +1 -1
  112. package/auth-configuration/sso-configuration/templates/custom-template.component.d.ts.map +1 -1
  113. package/auth-configuration/sso-configuration/templates/key-cloak-template.component.d.ts +1 -1
  114. package/auth-configuration/sso-configuration/templates/key-cloak-template.component.d.ts.map +1 -1
  115. package/bookmarks/bookmarks.component.d.ts +1 -1
  116. package/bookmarks/bookmarks.component.d.ts.map +1 -1
  117. package/bookmarks/bookmarks.module.d.ts +7 -7
  118. package/bookmarks/bookmarks.module.d.ts.map +1 -1
  119. package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts +1 -1
  120. package/bookmarks/edit-bookmarks/edit-bookmarks.component.d.ts.map +1 -1
  121. package/child-devices/child-devices.component.d.ts +1 -1
  122. package/child-devices/child-devices.component.d.ts.map +1 -1
  123. package/child-devices/child-devices.module.d.ts +5 -5
  124. package/child-devices/child-devices.module.d.ts.map +1 -1
  125. package/cockpit-config/cockpit-config.module.d.ts +17 -17
  126. package/cockpit-config/cockpit-config.module.d.ts.map +1 -1
  127. package/cockpit-config/cockpit-configuration.component.d.ts +1 -1
  128. package/cockpit-config/cockpit-configuration.component.d.ts.map +1 -1
  129. package/cockpit-config/feature-config.component.d.ts +1 -1
  130. package/cockpit-config/feature-config.component.d.ts.map +1 -1
  131. package/cockpit-config/home-dashboard-config.component.d.ts +1 -1
  132. package/cockpit-config/home-dashboard-config.component.d.ts.map +1 -1
  133. package/cockpit-config/misc-config.component.d.ts +1 -1
  134. package/cockpit-config/misc-config.component.d.ts.map +1 -1
  135. package/cockpit-config/root-node-config.component.d.ts +1 -1
  136. package/cockpit-config/root-node-config.component.d.ts.map +1 -1
  137. package/cockpit-config/setup/cockpit-setup-step1.component.d.ts +1 -1
  138. package/cockpit-config/setup/cockpit-setup-step1.component.d.ts.map +1 -1
  139. package/cockpit-config/setup/cockpit-setup-step2.component.d.ts +1 -1
  140. package/cockpit-config/setup/cockpit-setup-step2.component.d.ts.map +1 -1
  141. package/cockpit-config/setup/cockpit-setup-step3.component.d.ts +1 -1
  142. package/cockpit-config/setup/cockpit-setup-step3.component.d.ts.map +1 -1
  143. package/cockpit-config/setup/cockpit-setup-step4.component.d.ts +1 -1
  144. package/cockpit-config/setup/cockpit-setup-step4.component.d.ts.map +1 -1
  145. package/cockpit-config/setup/cockpit-setup-stepper-buttons.component.d.ts +1 -1
  146. package/cockpit-config/setup/cockpit-setup-stepper-buttons.component.d.ts.map +1 -1
  147. package/context-dashboard/add-dashboard.component.d.ts +1 -1
  148. package/context-dashboard/add-dashboard.component.d.ts.map +1 -1
  149. package/context-dashboard/context-dashboard.component.d.ts +2 -1
  150. package/context-dashboard/context-dashboard.component.d.ts.map +1 -1
  151. package/context-dashboard/context-dashboard.model.d.ts +0 -1
  152. package/context-dashboard/context-dashboard.model.d.ts.map +1 -1
  153. package/context-dashboard/context-dashboard.module.d.ts +26 -19
  154. package/context-dashboard/context-dashboard.module.d.ts.map +1 -1
  155. package/context-dashboard/context-dashboard.service.d.ts +6 -1
  156. package/context-dashboard/context-dashboard.service.d.ts.map +1 -1
  157. package/context-dashboard/dashboard-detail.component.d.ts +2 -2
  158. package/context-dashboard/dashboard-detail.component.d.ts.map +1 -1
  159. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts +1 -1
  160. package/context-dashboard/device-info-dashboard/device-info-dashboard.component.d.ts.map +1 -1
  161. package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts +5 -5
  162. package/context-dashboard/device-info-dashboard/device-info-dashboard.module.d.ts.map +1 -1
  163. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts +1 -1
  164. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.component.d.ts.map +1 -1
  165. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts +5 -5
  166. package/context-dashboard/device-management-home-dashboard/device-management-home-dashboard.module.d.ts.map +1 -1
  167. package/context-dashboard/paste-dashboard-action.component.d.ts +1 -1
  168. package/context-dashboard/paste-dashboard-action.component.d.ts.map +1 -1
  169. package/context-dashboard/widget-config.component.d.ts +1 -1
  170. package/context-dashboard/widget-config.component.d.ts.map +1 -1
  171. package/context-dashboard/widget-config.service.d.ts +1 -1
  172. package/core/alert/alert.service.d.ts +14 -5
  173. package/core/alert/alert.service.d.ts.map +1 -1
  174. package/core/bottom-drawer/bottom-drawer.component.d.ts +3 -0
  175. package/core/bottom-drawer/bottom-drawer.component.d.ts.map +1 -1
  176. package/core/breadcrumb/breadcrumb.module.d.ts +3 -3
  177. package/core/common/ApplicationOptions.d.ts +14 -12
  178. package/core/common/ApplicationOptions.d.ts.map +1 -1
  179. package/core/common/date.pipe.d.ts +1 -1
  180. package/core/common/forOf.directive.d.ts +16 -16
  181. package/core/common/forOf.directive.d.ts.map +1 -1
  182. package/core/common/humanize-app-name.pipe.d.ts +7 -0
  183. package/core/common/humanize-app-name.pipe.d.ts.map +1 -1
  184. package/core/common/humanize.pipe.d.ts +7 -0
  185. package/core/common/humanize.pipe.d.ts.map +1 -1
  186. package/core/common/icon.directive.d.ts +19 -0
  187. package/core/common/icon.directive.d.ts.map +1 -1
  188. package/core/common/markdown-to-html.pipe.d.ts +8 -0
  189. package/core/common/markdown-to-html.pipe.d.ts.map +1 -1
  190. package/core/common/options.service.d.ts +5 -5
  191. package/core/common/outlet.directive.d.ts +4 -6
  192. package/core/common/outlet.directive.d.ts.map +1 -1
  193. package/core/common/permissions.service.d.ts +12 -12
  194. package/core/common/service-registry.service.d.ts +2 -1
  195. package/core/common/service-registry.service.d.ts.map +1 -1
  196. package/core/common/user-name-initials.pipe.d.ts +7 -0
  197. package/core/common/user-name-initials.pipe.d.ts.map +1 -1
  198. package/core/common/user-preferences/user-preferences.service.d.ts +1 -1
  199. package/core/countdown-interval/countdown-interval.component.d.ts +7 -0
  200. package/core/countdown-interval/countdown-interval.component.d.ts.map +1 -1
  201. package/core/date-time-picker/date-time-picker.component.d.ts +20 -0
  202. package/core/date-time-picker/date-time-picker.component.d.ts.map +1 -1
  203. package/core/device-status/device-status.component.d.ts +3 -0
  204. package/core/device-status/device-status.component.d.ts.map +1 -1
  205. package/core/header/header.model.d.ts +3 -2
  206. package/core/header/header.model.d.ts.map +1 -1
  207. package/core/header/title/title.component.d.ts +2 -0
  208. package/core/header/title/title.component.d.ts.map +1 -1
  209. package/core/i18n/c8y-translate.directive.d.ts +2 -2
  210. package/core/list-display-switch/list-display-switch.component.d.ts +9 -0
  211. package/core/list-display-switch/list-display-switch.component.d.ts.map +1 -1
  212. package/core/preview-feature/preview-feature.service.d.ts +1 -0
  213. package/core/preview-feature/preview-feature.service.d.ts.map +1 -1
  214. package/core/range-display/range-display.component.d.ts +11 -0
  215. package/core/range-display/range-display.component.d.ts.map +1 -1
  216. package/core/realtime/realtime.service.d.ts +4 -4
  217. package/dashboard-manager/dashboard-manager.module.d.ts +8 -8
  218. package/dashboard-manager/dashboard-manager.module.d.ts.map +1 -1
  219. package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts +1 -1
  220. package/dashboard-manager/type-dashboard-target-assets-grid/type-dashboard-target-assets-grid.component.d.ts.map +1 -1
  221. package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts +1 -1
  222. package/dashboard-manager/type-dashboard-target-assets-modal/type-dashboard-target-assets-modal.component.d.ts.map +1 -1
  223. package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts +1 -1
  224. package/dashboard-manager/type-dashboards-list/type-dashboards-list.component.d.ts.map +1 -1
  225. package/datapoint-explorer/datapoint-explorer.module.d.ts.map +1 -1
  226. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts +1 -1
  227. package/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.d.ts.map +1 -1
  228. package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts +10 -1
  229. package/datapoint-selector/datapoint-selection-list/datapoint-selection-list.component.d.ts.map +1 -1
  230. package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts +1 -1
  231. package/datapoint-selector/datapoint-selector-list-item/datapoint-selector-list-item.component.d.ts.map +1 -1
  232. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts +1 -1
  233. package/datapoint-selector/datapoint-selector-modal/datapoint-selector-modal.component.d.ts.map +1 -1
  234. package/datapoint-selector/datapoint-selector.component.d.ts +1 -1
  235. package/datapoint-selector/datapoint-selector.component.d.ts.map +1 -1
  236. package/datapoint-selector/datapoint-selector.module.d.ts +18 -18
  237. package/datapoint-selector/datapoint-selector.module.d.ts.map +1 -1
  238. package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts +1 -1
  239. package/datapoint-selector/datapoint-template-popover/datapoint-template-popover.component.d.ts.map +1 -1
  240. package/datapoint-selector/pipes/datapoint-label.pipe.d.ts +1 -1
  241. package/datapoint-selector/pipes/datapoint-label.pipe.d.ts.map +1 -1
  242. package/datapoint-selector/pipes/filter-datapoints.pipe.d.ts +1 -1
  243. package/datapoint-selector/pipes/filter-datapoints.pipe.d.ts.map +1 -1
  244. package/datapoint-selector/pipes/includes-datapoint.pipe.d.ts +1 -1
  245. package/datapoint-selector/pipes/includes-datapoint.pipe.d.ts.map +1 -1
  246. package/datapoints-export-selector/datapoints-export-selector.component.d.ts +7 -0
  247. package/datapoints-export-selector/datapoints-export-selector.component.d.ts.map +1 -1
  248. package/default-subscriptions/default-subscriptions.component.d.ts +1 -1
  249. package/default-subscriptions/default-subscriptions.component.d.ts.map +1 -1
  250. package/default-subscriptions/default-subscriptions.module.d.ts +4 -4
  251. package/default-subscriptions/default-subscriptions.module.d.ts.map +1 -1
  252. package/device-grid/columns/alarms.cell-renderer.component.d.ts +1 -1
  253. package/device-grid/columns/alarms.cell-renderer.component.d.ts.map +1 -1
  254. package/device-grid/columns/alarms.header-cell-renderer.component.d.ts +1 -1
  255. package/device-grid/columns/alarms.header-cell-renderer.component.d.ts.map +1 -1
  256. package/device-grid/columns/group.cell-renderer.component.d.ts +1 -1
  257. package/device-grid/columns/group.cell-renderer.component.d.ts.map +1 -1
  258. package/device-grid/columns/group.filtering-form-renderer.component.d.ts +1 -1
  259. package/device-grid/columns/group.filtering-form-renderer.component.d.ts.map +1 -1
  260. package/device-grid/columns/model.cell-renderer.component.d.ts +1 -1
  261. package/device-grid/columns/model.cell-renderer.component.d.ts.map +1 -1
  262. package/device-grid/columns/name.cell-renderer.component.d.ts +1 -1
  263. package/device-grid/columns/name.cell-renderer.component.d.ts.map +1 -1
  264. package/device-grid/columns/registration-date.cell-renderer.component.d.ts +1 -1
  265. package/device-grid/columns/registration-date.cell-renderer.component.d.ts.map +1 -1
  266. package/device-grid/columns/serial-number.cell-renderer.component.d.ts +1 -1
  267. package/device-grid/columns/serial-number.cell-renderer.component.d.ts.map +1 -1
  268. package/device-grid/columns/status.cell-renderer.component.d.ts +1 -1
  269. package/device-grid/columns/status.cell-renderer.component.d.ts.map +1 -1
  270. package/device-grid/device-grid.component.d.ts +1 -1
  271. package/device-grid/device-grid.component.d.ts.map +1 -1
  272. package/device-grid/device-grid.module.d.ts +15 -15
  273. package/device-grid/device-grid.module.d.ts.map +1 -1
  274. package/device-list/add-smart-group.component.d.ts +1 -1
  275. package/device-list/add-smart-group.component.d.ts.map +1 -1
  276. package/device-list/device-list.component.d.ts +1 -1
  277. package/device-list/device-list.component.d.ts.map +1 -1
  278. package/device-list/device-list.module.d.ts +8 -8
  279. package/device-list/device-list.module.d.ts.map +1 -1
  280. package/device-protocols/device-protocols.module.d.ts +1 -1
  281. package/device-protocols/device-type-detail.component.d.ts +1 -1
  282. package/device-protocols/device-type-detail.component.d.ts.map +1 -1
  283. package/device-protocols/device-type-detail.directive.d.ts +1 -1
  284. package/device-protocols/device-type-detail.directive.d.ts.map +1 -1
  285. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts +7 -7
  286. package/device-provisioned-certificates/device-provisioned-certificates.module.d.ts.map +1 -1
  287. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts +1 -1
  288. package/device-provisioned-certificates/device-tab-provisioned-certificates.component.d.ts.map +1 -1
  289. package/echart/charts.component.d.ts.map +1 -1
  290. package/echart/models/datapoints-graph-widget.model.d.ts +1 -0
  291. package/echart/models/datapoints-graph-widget.model.d.ts.map +1 -1
  292. package/echart/services/chart-realtime.service.d.ts +8 -1
  293. package/echart/services/chart-realtime.service.d.ts.map +1 -1
  294. package/echart/services/echarts-options.service.d.ts +7 -0
  295. package/echart/services/echarts-options.service.d.ts.map +1 -1
  296. package/ecosystem/activity-log/activity-log.component.d.ts +1 -1
  297. package/ecosystem/activity-log/activity-log.component.d.ts.map +1 -1
  298. package/ecosystem/application-plugins/appState.pipe.d.ts +1 -1
  299. package/ecosystem/application-plugins/appState.pipe.d.ts.map +1 -1
  300. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts +1 -1
  301. package/ecosystem/application-plugins/application-plugin-readme.component.d.ts.map +1 -1
  302. package/ecosystem/application-plugins/application-plugins.component.d.ts +1 -1
  303. package/ecosystem/application-plugins/application-plugins.component.d.ts.map +1 -1
  304. package/ecosystem/application-plugins/application-plugins.module.d.ts +14 -14
  305. package/ecosystem/application-plugins/application-plugins.module.d.ts.map +1 -1
  306. package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts +2 -2
  307. package/ecosystem/application-plugins/apps-to-update-remotes-select.component.d.ts.map +1 -1
  308. package/ecosystem/application-plugins/install-plugin.component.d.ts +1 -1
  309. package/ecosystem/application-plugins/install-plugin.component.d.ts.map +1 -1
  310. package/ecosystem/application-plugins/label-cell-renderer.component.d.ts +1 -1
  311. package/ecosystem/application-plugins/label-cell-renderer.component.d.ts.map +1 -1
  312. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts +1 -1
  313. package/ecosystem/application-plugins/only-latest-filter/only-latest-filter.component.d.ts.map +1 -1
  314. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts +1 -1
  315. package/ecosystem/application-plugins/orphaned-status-cell-renderer.component.d.ts.map +1 -1
  316. package/ecosystem/application-plugins/plugin-list-item.component.d.ts +1 -1
  317. package/ecosystem/application-plugins/plugin-list-item.component.d.ts.map +1 -1
  318. package/ecosystem/application-plugins/plugin-list.component.d.ts +1 -1
  319. package/ecosystem/application-plugins/plugin-list.component.d.ts.map +1 -1
  320. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts +1 -1
  321. package/ecosystem/application-plugins/update-plugin-of-app/update-plugin-of-app.component.d.ts.map +1 -1
  322. package/ecosystem/application-properties/application-properties.component.d.ts +1 -1
  323. package/ecosystem/application-properties/application-properties.component.d.ts.map +1 -1
  324. package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts +1 -1
  325. package/ecosystem/application-properties/subscription-modal/subscription-modal.component.d.ts.map +1 -1
  326. package/ecosystem/application-properties/update-application-modal/update-application-modal.component.d.ts +1 -1
  327. package/ecosystem/application-properties/update-application-modal/update-application-modal.component.d.ts.map +1 -1
  328. package/ecosystem/applications/add-external-applicaiton/add-external-application.component.d.ts +1 -1
  329. package/ecosystem/applications/add-external-applicaiton/add-external-application.component.d.ts.map +1 -1
  330. package/ecosystem/applications/add-web-application/add-web-application.component.d.ts +1 -1
  331. package/ecosystem/applications/add-web-application/add-web-application.component.d.ts.map +1 -1
  332. package/ecosystem/applications/application-list/application-list.component.d.ts +1 -1
  333. package/ecosystem/applications/application-list/application-list.component.d.ts.map +1 -1
  334. package/ecosystem/applications/install-from-package/install-from-package.component.d.ts +2 -3
  335. package/ecosystem/applications/install-from-package/install-from-package.component.d.ts.map +1 -1
  336. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts +1 -1
  337. package/ecosystem/archived-confirm/archived-confirm-modal.component.d.ts.map +1 -1
  338. package/ecosystem/archived-confirm/archived-confirm.module.d.ts +4 -4
  339. package/ecosystem/archived-confirm/archived-confirm.module.d.ts.map +1 -1
  340. package/ecosystem/ecosystem.module.d.ts +34 -34
  341. package/ecosystem/ecosystem.module.d.ts.map +1 -1
  342. package/ecosystem/features/feature-list.component.d.ts +1 -1
  343. package/ecosystem/features/feature-list.component.d.ts.map +1 -1
  344. package/ecosystem/license-confirm/license-confirm-modal.component.d.ts +1 -1
  345. package/ecosystem/license-confirm/license-confirm-modal.component.d.ts.map +1 -1
  346. package/ecosystem/license-confirm/license-confirm.module.d.ts +5 -5
  347. package/ecosystem/license-confirm/license-confirm.module.d.ts.map +1 -1
  348. package/ecosystem/license-confirm/license-view.component.d.ts +1 -1
  349. package/ecosystem/license-confirm/license-view.component.d.ts.map +1 -1
  350. package/ecosystem/microservices/add-microservice.component.d.ts +1 -1
  351. package/ecosystem/microservices/add-microservice.component.d.ts.map +1 -1
  352. package/ecosystem/microservices/microservice-list.component.d.ts +1 -1
  353. package/ecosystem/microservices/microservice-list.component.d.ts.map +1 -1
  354. package/ecosystem/packages/add-package.component.d.ts +1 -1
  355. package/ecosystem/packages/add-package.component.d.ts.map +1 -1
  356. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts +1 -1
  357. package/ecosystem/packages/deploy-application/deploy-application.component.d.ts.map +1 -1
  358. package/ecosystem/packages/package-details/package-details.component.d.ts +1 -1
  359. package/ecosystem/packages/package-details/package-details.component.d.ts.map +1 -1
  360. package/ecosystem/packages/package-list/packages-list.component.d.ts +1 -1
  361. package/ecosystem/packages/package-list/packages-list.component.d.ts.map +1 -1
  362. package/ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.d.ts +1 -1
  363. package/ecosystem/packages/package-versions/package-contents/contents-apps/contents-apps.component.d.ts.map +1 -1
  364. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts +1 -1
  365. package/ecosystem/packages/package-versions/package-contents/contents-plugins/contents-plugins.component.d.ts.map +1 -1
  366. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts +1 -1
  367. package/ecosystem/packages/package-versions/package-contents/packages-contents.component.d.ts.map +1 -1
  368. package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts +1 -1
  369. package/ecosystem/packages/package-versions/package-versions-list/package-versions-list.component.d.ts.map +1 -1
  370. package/ecosystem/packages/package-versions/packages-versions.component.d.ts +1 -1
  371. package/ecosystem/packages/package-versions/packages-versions.component.d.ts.map +1 -1
  372. package/ecosystem/shared/add-application.component.d.ts +1 -1
  373. package/ecosystem/shared/add-application.component.d.ts.map +1 -1
  374. package/ecosystem/shared/application-card.component.d.ts +1 -1
  375. package/ecosystem/shared/application-card.component.d.ts.map +1 -1
  376. package/ecosystem/shared/application-properties-form.component.d.ts +1 -1
  377. package/ecosystem/shared/application-properties-form.component.d.ts.map +1 -1
  378. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts +1 -1
  379. package/ecosystem/shared/archived-filter/archived-filter.component.d.ts.map +1 -1
  380. package/ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.d.ts +1 -1
  381. package/ecosystem/shared/duplicate-application/duplicate-application-list/duplicate-application-list.component.d.ts.map +1 -1
  382. package/ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.d.ts +2 -2
  383. package/ecosystem/shared/duplicate-application/duplicate-application-properties/duplicate-application-properties.component.d.ts.map +1 -1
  384. package/ecosystem/shared/duplicate-application/duplicate-application.component.d.ts +1 -1
  385. package/ecosystem/shared/duplicate-application/duplicate-application.component.d.ts.map +1 -1
  386. package/ecosystem/shared/list-filters/list-filters.component.d.ts +1 -1
  387. package/ecosystem/shared/list-filters/list-filters.component.d.ts.map +1 -1
  388. package/ecosystem/shared/package-version-select/package-version-select.component.d.ts +1 -1
  389. package/ecosystem/shared/package-version-select/package-version-select.component.d.ts.map +1 -1
  390. package/ecosystem/shared/shared-ecosystem.module.d.ts +20 -20
  391. package/ecosystem/shared/shared-ecosystem.module.d.ts.map +1 -1
  392. package/ecosystem/shared/translate-package-label.pipe.d.ts +1 -1
  393. package/ecosystem/shared/translate-package-label.pipe.d.ts.map +1 -1
  394. package/ecosystem/shared/upload-archive.component.d.ts +1 -1
  395. package/ecosystem/shared/upload-archive.component.d.ts.map +1 -1
  396. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs +36 -12
  397. package/fesm2022/c8y-ngx-components-actility-device-registration.mjs.map +1 -1
  398. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs +195 -107
  399. package/fesm2022/c8y-ngx-components-alarm-event-selector.mjs.map +1 -1
  400. package/fesm2022/c8y-ngx-components-alarms.mjs +236 -96
  401. package/fesm2022/c8y-ngx-components-alarms.mjs.map +1 -1
  402. package/fesm2022/c8y-ngx-components-api.mjs +8 -0
  403. package/fesm2022/c8y-ngx-components-api.mjs.map +1 -1
  404. package/fesm2022/c8y-ngx-components-app-logs.mjs +6 -8
  405. package/fesm2022/c8y-ngx-components-app-logs.mjs.map +1 -1
  406. package/fesm2022/c8y-ngx-components-assets-navigator.mjs +74 -26
  407. package/fesm2022/c8y-ngx-components-assets-navigator.mjs.map +1 -1
  408. package/fesm2022/c8y-ngx-components-auth-configuration.mjs +578 -366
  409. package/fesm2022/c8y-ngx-components-auth-configuration.mjs.map +1 -1
  410. package/fesm2022/c8y-ngx-components-bookmarks.mjs +36 -17
  411. package/fesm2022/c8y-ngx-components-bookmarks.mjs.map +1 -1
  412. package/fesm2022/c8y-ngx-components-child-devices.mjs +7 -9
  413. package/fesm2022/c8y-ngx-components-child-devices.mjs.map +1 -1
  414. package/fesm2022/c8y-ngx-components-cockpit-config.mjs +138 -67
  415. package/fesm2022/c8y-ngx-components-cockpit-config.mjs.map +1 -1
  416. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-B7m2lsIe.mjs → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs} +3 -3
  417. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-B7m2lsIe.mjs.map → c8y-ngx-components-context-dashboard-dashboard-appearance-settings.component-C-JLbcn5.mjs.map} +1 -1
  418. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BCG_pjJz.mjs → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs} +5 -5
  419. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-general-settings.component-BCG_pjJz.mjs.map → c8y-ngx-components-context-dashboard-dashboard-general-settings.component-RXvOcs04.mjs.map} +1 -1
  420. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DjCdFkJw.mjs → c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs} +3 -3
  421. package/fesm2022/{c8y-ngx-components-context-dashboard-dashboard-version-history.component-DjCdFkJw.mjs.map → c8y-ngx-components-context-dashboard-dashboard-version-history.component-DmPIJGXO.mjs.map} +1 -1
  422. package/fesm2022/c8y-ngx-components-context-dashboard.mjs +170 -94
  423. package/fesm2022/c8y-ngx-components-context-dashboard.mjs.map +1 -1
  424. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs +44 -31
  425. package/fesm2022/c8y-ngx-components-dashboard-manager.mjs.map +1 -1
  426. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs +4 -2
  427. package/fesm2022/c8y-ngx-components-datapoint-explorer.mjs.map +1 -1
  428. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs +132 -66
  429. package/fesm2022/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
  430. package/fesm2022/c8y-ngx-components-datapoints-export-selector.mjs.map +1 -1
  431. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs +32 -16
  432. package/fesm2022/c8y-ngx-components-default-subscriptions.mjs.map +1 -1
  433. package/fesm2022/c8y-ngx-components-device-grid.mjs +50 -45
  434. package/fesm2022/c8y-ngx-components-device-grid.mjs.map +1 -1
  435. package/fesm2022/c8y-ngx-components-device-list.mjs +50 -25
  436. package/fesm2022/c8y-ngx-components-device-list.mjs.map +1 -1
  437. package/fesm2022/c8y-ngx-components-device-protocols.mjs +6 -9
  438. package/fesm2022/c8y-ngx-components-device-protocols.mjs.map +1 -1
  439. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs +36 -8
  440. package/fesm2022/c8y-ngx-components-device-provisioned-certificates.mjs.map +1 -1
  441. package/fesm2022/c8y-ngx-components-echart-models.mjs.map +1 -1
  442. package/fesm2022/c8y-ngx-components-echart.mjs +220 -7
  443. package/fesm2022/c8y-ngx-components-echart.mjs.map +1 -1
  444. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs +155 -72
  445. package/fesm2022/c8y-ngx-components-ecosystem-application-plugins.mjs.map +1 -1
  446. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs +13 -7
  447. package/fesm2022/c8y-ngx-components-ecosystem-archived-confirm.mjs.map +1 -1
  448. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs +43 -12
  449. package/fesm2022/c8y-ngx-components-ecosystem-license-confirm.mjs.map +1 -1
  450. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs +179 -80
  451. package/fesm2022/c8y-ngx-components-ecosystem-shared.mjs.map +1 -1
  452. package/fesm2022/c8y-ngx-components-ecosystem.mjs +353 -1316
  453. package/fesm2022/c8y-ngx-components-ecosystem.mjs.map +1 -1
  454. package/fesm2022/c8y-ngx-components-file-preview.mjs +17 -8
  455. package/fesm2022/c8y-ngx-components-file-preview.mjs.map +1 -1
  456. package/fesm2022/c8y-ngx-components-files-repository.mjs +55 -22
  457. package/fesm2022/c8y-ngx-components-files-repository.mjs.map +1 -1
  458. package/fesm2022/c8y-ngx-components-icon-selector.mjs +46 -28
  459. package/fesm2022/c8y-ngx-components-icon-selector.mjs.map +1 -1
  460. package/fesm2022/c8y-ngx-components-location.mjs +28 -15
  461. package/fesm2022/c8y-ngx-components-location.mjs.map +1 -1
  462. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs +36 -12
  463. package/fesm2022/c8y-ngx-components-loriot-device-registration.mjs.map +1 -1
  464. package/fesm2022/c8y-ngx-components-map.mjs +260 -28
  465. package/fesm2022/c8y-ngx-components-map.mjs.map +1 -1
  466. package/fesm2022/c8y-ngx-components-platform-configuration.mjs +24 -13
  467. package/fesm2022/c8y-ngx-components-platform-configuration.mjs.map +1 -1
  468. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs +133 -26
  469. package/fesm2022/c8y-ngx-components-protocol-lpwan.mjs.map +1 -1
  470. package/fesm2022/c8y-ngx-components-register-device.mjs +314 -249
  471. package/fesm2022/c8y-ngx-components-register-device.mjs.map +1 -1
  472. package/fesm2022/c8y-ngx-components-report-dashboard.mjs +41 -17
  473. package/fesm2022/c8y-ngx-components-report-dashboard.mjs.map +1 -1
  474. package/fesm2022/c8y-ngx-components-reports.mjs +61 -21
  475. package/fesm2022/c8y-ngx-components-reports.mjs.map +1 -1
  476. package/fesm2022/c8y-ngx-components-search.mjs +34 -21
  477. package/fesm2022/c8y-ngx-components-search.mjs.map +1 -1
  478. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs +43 -19
  479. package/fesm2022/c8y-ngx-components-sigfox-device-registration.mjs.map +1 -1
  480. package/fesm2022/c8y-ngx-components-sub-assets.mjs +207 -72
  481. package/fesm2022/c8y-ngx-components-sub-assets.mjs.map +1 -1
  482. package/fesm2022/c8y-ngx-components-tenants.mjs +96 -39
  483. package/fesm2022/c8y-ngx-components-tenants.mjs.map +1 -1
  484. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs +173 -53
  485. package/fesm2022/c8y-ngx-components-trusted-certificates.mjs.map +1 -1
  486. package/fesm2022/c8y-ngx-components-upgrade.mjs +19 -10
  487. package/fesm2022/c8y-ngx-components-upgrade.mjs.map +1 -1
  488. package/fesm2022/c8y-ngx-components-user-roles.mjs +19 -14
  489. package/fesm2022/c8y-ngx-components-user-roles.mjs.map +1 -1
  490. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs +76 -50
  491. package/fesm2022/c8y-ngx-components-widgets-implementations-alarms.mjs.map +1 -1
  492. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs +2 -2
  493. package/fesm2022/c8y-ngx-components-widgets-implementations-datapoints-graph.mjs.map +1 -1
  494. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs +15 -8
  495. package/fesm2022/c8y-ngx-components-widgets-implementations-device-management-welcome.mjs.map +1 -1
  496. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs +2 -2
  497. package/fesm2022/c8y-ngx-components-widgets-implementations-map.mjs.map +1 -1
  498. package/fesm2022/c8y-ngx-components.mjs +166 -80
  499. package/fesm2022/c8y-ngx-components.mjs.map +1 -1
  500. package/file-preview/file-preview.component.d.ts +1 -1
  501. package/file-preview/file-preview.component.d.ts.map +1 -1
  502. package/file-preview/file-preview.module.d.ts +3 -3
  503. package/file-preview/file-preview.module.d.ts.map +1 -1
  504. package/files-repository/files-repository-upload.component.d.ts +1 -1
  505. package/files-repository/files-repository-upload.component.d.ts.map +1 -1
  506. package/files-repository/files-repository.component.d.ts +1 -1
  507. package/files-repository/files-repository.component.d.ts.map +1 -1
  508. package/files-repository/files-repository.module.d.ts +6 -6
  509. package/files-repository/files-repository.module.d.ts.map +1 -1
  510. package/icon-selector/icon-name.pipe.d.ts +1 -1
  511. package/icon-selector/icon-name.pipe.d.ts.map +1 -1
  512. package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts +1 -1
  513. package/icon-selector/icon-selector-modal/icon-selector-modal.component.d.ts.map +1 -1
  514. package/icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.d.ts +1 -1
  515. package/icon-selector/icon-selector-wrapper/icon-selector-wrapper.component.d.ts.map +1 -1
  516. package/icon-selector/icon-selector.component.d.ts +1 -1
  517. package/icon-selector/icon-selector.component.d.ts.map +1 -1
  518. package/icon-selector/icon-selector.module.d.ts +8 -8
  519. package/icon-selector/icon-selector.module.d.ts.map +1 -1
  520. package/locales/de.po +23 -2
  521. package/locales/es.po +23 -2
  522. package/locales/fr.po +23 -2
  523. package/locales/ja_JP.po +23 -2
  524. package/locales/ko.po +23 -2
  525. package/locales/locales.pot +22 -1
  526. package/locales/nl.po +23 -2
  527. package/locales/pl.po +23 -2
  528. package/locales/pt_BR.po +23 -2
  529. package/locales/zh_CN.po +23 -2
  530. package/locales/zh_TW.po +23 -2
  531. package/location/add-location.component.d.ts +1 -1
  532. package/location/add-location.component.d.ts.map +1 -1
  533. package/location/location.component.d.ts +1 -1
  534. package/location/location.component.d.ts.map +1 -1
  535. package/location/location.module.d.ts +6 -6
  536. package/location/location.module.d.ts.map +1 -1
  537. package/loriot-device-registration/loriot-device-registration-button.component.d.ts +1 -1
  538. package/loriot-device-registration/loriot-device-registration-button.component.d.ts.map +1 -1
  539. package/loriot-device-registration/loriot-device-registration.component.d.ts +1 -1
  540. package/loriot-device-registration/loriot-device-registration.component.d.ts.map +1 -1
  541. package/loriot-device-registration/loriot-device-registration.module.d.ts +4 -4
  542. package/loriot-device-registration/loriot-device-registration.module.d.ts.map +1 -1
  543. package/map/cluster-map.component.d.ts +61 -1
  544. package/map/cluster-map.component.d.ts.map +1 -1
  545. package/map/map-popup.directive.d.ts +1 -1
  546. package/map/map-popup.directive.d.ts.map +1 -1
  547. package/map/map-status.component.d.ts +86 -3
  548. package/map/map-status.component.d.ts.map +1 -1
  549. package/map/map.component.d.ts +100 -5
  550. package/map/map.component.d.ts.map +1 -1
  551. package/map/map.model.d.ts +98 -4
  552. package/map/map.model.d.ts.map +1 -1
  553. package/map/map.module.d.ts +9 -9
  554. package/map/map.module.d.ts.map +1 -1
  555. package/package.json +1 -1
  556. package/platform-configuration/platform-configuration-form.component.d.ts +1 -1
  557. package/platform-configuration/platform-configuration-form.component.d.ts.map +1 -1
  558. package/platform-configuration/platform-configuration.module.d.ts +4 -4
  559. package/platform-configuration/platform-configuration.module.d.ts.map +1 -1
  560. package/protocol-lpwan/lpwan-protocol.module.d.ts +4 -4
  561. package/protocol-lpwan/lpwan-protocol.module.d.ts.map +1 -1
  562. package/protocol-lpwan/lpwan-set-connections.component.d.ts +1 -1
  563. package/protocol-lpwan/lpwan-set-connections.component.d.ts.map +1 -1
  564. package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts +1 -1
  565. package/protocol-lpwan/lpwan-set-device-protocol.component.d.ts.map +1 -1
  566. package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts +1 -1
  567. package/protocol-lpwan/multiple-lns-connectors/actility-multiple-lns-connector.component.d.ts.map +1 -1
  568. package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts +1 -1
  569. package/protocol-lpwan/multiple-lns-connectors/connection-info-with-download-csv.component.d.ts.map +1 -1
  570. package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts +1 -1
  571. package/protocol-lpwan/multiple-lns-connectors/loriot/loriot-multiple-lns-connector.component.d.ts.map +1 -1
  572. package/protocol-lpwan/multiple-lns-connectors/multiple-lns-connectors.module.d.ts +8 -8
  573. package/protocol-lpwan/multiple-lns-connectors/multiple-lns-connectors.module.d.ts.map +1 -1
  574. package/protocol-lpwan/multiple-lns-connectors/no-connections-found.component.d.ts +1 -1
  575. package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts +1 -1
  576. package/protocol-lpwan/multiple-lns-connectors/sigfox-multiple-lns-connector.component.d.ts.map +1 -1
  577. package/register-device/bulk/bulk-device-registration-button.component.d.ts +1 -1
  578. package/register-device/bulk/bulk-device-registration-button.component.d.ts.map +1 -1
  579. package/register-device/bulk/bulk-device-registration-modal.component.d.ts +1 -1
  580. package/register-device/bulk/bulk-device-registration-modal.component.d.ts.map +1 -1
  581. package/register-device/device-registration-view.component.d.ts +1 -1
  582. package/register-device/device-registration-view.component.d.ts.map +1 -1
  583. package/register-device/dropdown/register-device-dropdown.component.d.ts +1 -1
  584. package/register-device/dropdown/register-device-dropdown.component.d.ts.map +1 -1
  585. package/register-device/extensible/bulk/extensible-bulk-device-registration-button.component.d.ts +1 -1
  586. package/register-device/extensible/bulk/extensible-bulk-device-registration-button.component.d.ts.map +1 -1
  587. package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts +1 -1
  588. package/register-device/extensible/bulk/extensible-bulk-device-registration-modal.component.d.ts.map +1 -1
  589. package/register-device/extensible/single/extensible-device-registration-button.component.d.ts +1 -1
  590. package/register-device/extensible/single/extensible-device-registration-button.component.d.ts.map +1 -1
  591. package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts +1 -1
  592. package/register-device/extensible/single/extensible-device-registration-modal.component.d.ts.map +1 -1
  593. package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts +1 -1
  594. package/register-device/extensible/single/extensible-device-registration-stepper.component.d.ts.map +1 -1
  595. package/register-device/general/general-device-registration-button.component.d.ts +1 -1
  596. package/register-device/general/general-device-registration-button.component.d.ts.map +1 -1
  597. package/register-device/general/general-device-registration.component.d.ts +3 -6
  598. package/register-device/general/general-device-registration.component.d.ts.map +1 -1
  599. package/register-device/register-device.module.d.ts +16 -16
  600. package/register-device/register-device.module.d.ts.map +1 -1
  601. package/report-dashboard/report-dashboard-list.component.d.ts +1 -1
  602. package/report-dashboard/report-dashboard-list.component.d.ts.map +1 -1
  603. package/report-dashboard/report-dashboard.module.d.ts +7 -7
  604. package/reports/cron.component.d.ts +1 -1
  605. package/reports/cron.component.d.ts.map +1 -1
  606. package/reports/export-schedules.component.d.ts +2 -3
  607. package/reports/export-schedules.component.d.ts.map +1 -1
  608. package/reports/reports.module.d.ts +7 -7
  609. package/reports/reports.module.d.ts.map +1 -1
  610. package/reports/schedule-modal.component.d.ts +2 -3
  611. package/reports/schedule-modal.component.d.ts.map +1 -1
  612. package/search/search-action.component.d.ts +1 -1
  613. package/search/search-action.component.d.ts.map +1 -1
  614. package/search/search-custom-filters.component.d.ts +1 -1
  615. package/search/search-custom-filters.component.d.ts.map +1 -1
  616. package/search/search-grid.component.d.ts +1 -1
  617. package/search/search-grid.component.d.ts.map +1 -1
  618. package/search/search-results.component.d.ts +1 -1
  619. package/search/search-results.component.d.ts.map +1 -1
  620. package/search/search.module.d.ts +8 -8
  621. package/search/search.module.d.ts.map +1 -1
  622. package/sigfox-device-registration/sigfox-device-registration-button.component.d.ts +1 -1
  623. package/sigfox-device-registration/sigfox-device-registration-button.component.d.ts.map +1 -1
  624. package/sigfox-device-registration/sigfox-device-registration.component.d.ts +1 -1
  625. package/sigfox-device-registration/sigfox-device-registration.component.d.ts.map +1 -1
  626. package/sigfox-device-registration/sigfox-device-registration.module.d.ts +4 -4
  627. package/sigfox-device-registration/sigfox-device-registration.module.d.ts.map +1 -1
  628. package/sub-assets/add-group/add-group.component.d.ts +1 -1
  629. package/sub-assets/add-group/add-group.component.d.ts.map +1 -1
  630. package/sub-assets/add-group/add-group.module.d.ts +7 -7
  631. package/sub-assets/asset-properties-item.component.d.ts +1 -1
  632. package/sub-assets/asset-properties-item.component.d.ts.map +1 -1
  633. package/sub-assets/asset-properties.component.d.ts +1 -1
  634. package/sub-assets/asset-properties.component.d.ts.map +1 -1
  635. package/sub-assets/assign-devices/assign-child-devices.component.d.ts +2 -3
  636. package/sub-assets/assign-devices/assign-child-devices.component.d.ts.map +1 -1
  637. package/sub-assets/assign-devices/assign-devices.component.d.ts +1 -1
  638. package/sub-assets/assign-devices/assign-devices.component.d.ts.map +1 -1
  639. package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts +1 -1
  640. package/sub-assets/delete-assets-modal/delete-assets-modal.component.d.ts.map +1 -1
  641. package/sub-assets/group-info.component.d.ts +1 -1
  642. package/sub-assets/group-info.component.d.ts.map +1 -1
  643. package/sub-assets/groups.component.d.ts +1 -1
  644. package/sub-assets/groups.component.d.ts.map +1 -1
  645. package/sub-assets/location/asset-location.component.d.ts +1 -1
  646. package/sub-assets/location/asset-location.component.d.ts.map +1 -1
  647. package/sub-assets/sub-assets-grid.component.d.ts +1 -1
  648. package/sub-assets/sub-assets-grid.component.d.ts.map +1 -1
  649. package/sub-assets/sub-assets-grids.module.d.ts +9 -9
  650. package/sub-assets/sub-assets-grids.module.d.ts.map +1 -1
  651. package/sub-assets/sub-assets.component.d.ts +1 -1
  652. package/sub-assets/sub-assets.component.d.ts.map +1 -1
  653. package/sub-assets/sub-assets.module.d.ts +18 -18
  654. package/sub-assets/sub-assets.module.d.ts.map +1 -1
  655. package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts +1 -1
  656. package/sub-assets/unassign-assets-modal/unassign-modal.component.d.ts.map +1 -1
  657. package/tenants/tenant-form/tenant-form.component.d.ts +1 -1
  658. package/tenants/tenant-form/tenant-form.component.d.ts.map +1 -1
  659. package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts +2 -3
  660. package/tenants/tenant-list/creation-time.filtering-form-renderer.component.d.ts.map +1 -1
  661. package/tenants/tenant-list/status.filtering-form-renderer.component.d.ts +1 -1
  662. package/tenants/tenant-list/status.filtering-form-renderer.component.d.ts.map +1 -1
  663. package/tenants/tenant-list/tenant-list.component.d.ts +1 -1
  664. package/tenants/tenant-list/tenant-list.component.d.ts.map +1 -1
  665. package/tenants/tenants.module.d.ts +9 -9
  666. package/tenants/tenants.module.d.ts.map +1 -1
  667. package/trusted-certificates/crl/crl-check-settings.component.d.ts +1 -1
  668. package/trusted-certificates/crl/crl-check-settings.component.d.ts.map +1 -1
  669. package/trusted-certificates/crl/crl-settings.component.d.ts +1 -1
  670. package/trusted-certificates/crl/crl-settings.component.d.ts.map +1 -1
  671. package/trusted-certificates/crl/crl-settings.module.d.ts +8 -8
  672. package/trusted-certificates/crl/crl-settings.module.d.ts.map +1 -1
  673. package/trusted-certificates/list/add-trusted-certificate.component.d.ts +4 -3
  674. package/trusted-certificates/list/add-trusted-certificate.component.d.ts.map +1 -1
  675. package/trusted-certificates/list/trusted-certificate-list.component.d.ts +11 -2
  676. package/trusted-certificates/list/trusted-certificate-list.component.d.ts.map +1 -1
  677. package/trusted-certificates/list/trusted-certificate-list.module.d.ts +10 -10
  678. package/trusted-certificates/list/trusted-certificate-list.module.d.ts.map +1 -1
  679. package/trusted-certificates/list/trusted-certificate.model.d.ts +2 -0
  680. package/trusted-certificates/list/trusted-certificate.model.d.ts.map +1 -1
  681. package/trusted-certificates/pattern-messages.data.d.ts +6 -0
  682. package/trusted-certificates/pattern-messages.data.d.ts.map +1 -1
  683. package/upgrade/dashboard/dashboard-upgrade.module.d.ts +6 -6
  684. package/upgrade/dashboard/dashboard-upgrade.module.d.ts.map +1 -1
  685. package/upgrade/dashboard/device-selector.component.d.ts +1 -1
  686. package/upgrade/dashboard/device-selector.component.d.ts.map +1 -1
  687. package/upgrade/dashboard/widget.component.d.ts +1 -1
  688. package/upgrade/dashboard/widget.component.d.ts.map +1 -1
  689. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts +1 -1
  690. package/user-roles/inventory-role-selector/inventory-role-selector.component.d.ts.map +1 -1
  691. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts +1 -1
  692. package/user-roles/roles-asset-tree/roles-asset-tree.component.d.ts.map +1 -1
  693. package/user-roles/user-roles.module.d.ts +4 -4
  694. package/user-roles/user-roles.module.d.ts.map +1 -1
  695. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts +1 -1
  696. package/widgets/implementations/alarms/alarm-list-widget-config/alarm-list-widget-config.component.d.ts.map +1 -1
  697. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts +1 -1
  698. package/widgets/implementations/alarms/alarm-list-widget-view/alarm-list-widget.component.d.ts.map +1 -1
  699. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts +1 -1
  700. package/widgets/implementations/alarms/alarm-widget-alarms-reload.component.d.ts.map +1 -1
  701. package/widgets/implementations/alarms/alarms-widget.module.d.ts +13 -13
  702. package/widgets/implementations/alarms/alarms-widget.module.d.ts.map +1 -1
  703. package/widgets/implementations/alarms/severity-icon.pipe.d.ts +1 -1
  704. package/widgets/implementations/alarms/severity-icon.pipe.d.ts.map +1 -1
  705. package/widgets/implementations/alarms/sorting-description-popover-message.pipe.d.ts +1 -1
  706. package/widgets/implementations/alarms/sorting-description-popover-message.pipe.d.ts.map +1 -1
  707. package/widgets/implementations/device-management-welcome/device-management-welcome-widget.module.d.ts +4 -4
  708. package/widgets/implementations/device-management-welcome/device-management-welcome-widget.module.d.ts.map +1 -1
  709. package/widgets/implementations/device-management-welcome/welcome.component.d.ts +1 -1
  710. package/widgets/implementations/device-management-welcome/welcome.component.d.ts.map +1 -1
@@ -1,10 +1,10 @@
1
- import * as i2 from '@c8y/ngx-components';
2
- import { gettext, CommonModule, FormsModule } from '@c8y/ngx-components';
1
+ import * as i1 from '@c8y/ngx-components';
2
+ import { gettext, C8yTranslateDirective, FormGroupComponent, RequiredInputPlaceholderDirective, C8yTranslatePipe, CommonModule, FormsModule as FormsModule$1 } from '@c8y/ngx-components';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Injectable, EventEmitter, Output, Input, Component, NgModule } from '@angular/core';
5
- import * as i4 from '@angular/forms';
6
- import { FormControl, Validators, FormGroup, ReactiveFormsModule } from '@angular/forms';
7
- import * as i3 from '@angular/common';
5
+ import * as i2 from '@angular/forms';
6
+ import { FormControl, Validators, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
7
+ import { NgFor, NgSwitch, NgSwitchCase, NgTemplateOutlet, NgIf } from '@angular/common';
8
8
 
9
9
  class PlatformConfigurationFormProviderService {
10
10
  constructor(c8yDatePipe) {
@@ -367,7 +367,7 @@ class PlatformConfigurationFormProviderService {
367
367
  }
368
368
  ];
369
369
  }
370
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationFormProviderService, deps: [{ token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
370
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationFormProviderService, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable }); }
371
371
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationFormProviderService, providedIn: 'root' }); }
372
372
  }
373
373
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationFormProviderService, decorators: [{
@@ -375,7 +375,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
375
375
  args: [{
376
376
  providedIn: 'root'
377
377
  }]
378
- }], ctorParameters: () => [{ type: i2.DatePipe }] });
378
+ }], ctorParameters: () => [{ type: i1.DatePipe }] });
379
379
 
380
380
  class PlatformConfigurationFormComponent {
381
381
  set _optionsGroups(groupIds) {
@@ -482,11 +482,23 @@ class PlatformConfigurationFormComponent {
482
482
  }
483
483
  }
484
484
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationFormComponent, deps: [{ token: PlatformConfigurationFormProviderService }], target: i0.ɵɵFactoryTarget.Component }); }
485
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PlatformConfigurationFormComponent, isStandalone: false, selector: "c8y-platform-configuration-form", inputs: { _optionsGroups: ["optionsGroups", "_optionsGroups"], readOnly: "readOnly", formValue: "formValue" }, outputs: { onSave: "onSave" }, ngImport: i0, template: "<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n", dependencies: [{ kind: "directive", type: i2.C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i4.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i2.FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: i2.RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "pipe", type: i2.C8yTranslatePipe, name: "translate" }] }); }
485
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.14", type: PlatformConfigurationFormComponent, isStandalone: true, selector: "c8y-platform-configuration-form", inputs: { _optionsGroups: ["optionsGroups", "_optionsGroups"], readOnly: "readOnly", formValue: "formValue" }, outputs: { onSave: "onSave" }, ngImport: i0, template: "<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: C8yTranslateDirective, selector: "[translate],[ngx-translate]" }, { kind: "component", type: FormGroupComponent, selector: "c8y-form-group", inputs: ["hasError", "hasWarning", "hasSuccess", "novalidation", "status"] }, { kind: "directive", type: RequiredInputPlaceholderDirective, selector: "input[required], input[formControlName]" }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: C8yTranslatePipe, name: "translate" }] }); }
486
486
  }
487
487
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationFormComponent, decorators: [{
488
488
  type: Component,
489
- args: [{ selector: 'c8y-platform-configuration-form', standalone: false, template: "<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n" }]
489
+ args: [{ selector: 'c8y-platform-configuration-form', imports: [
490
+ FormsModule,
491
+ ReactiveFormsModule,
492
+ NgFor,
493
+ NgSwitch,
494
+ NgSwitchCase,
495
+ NgTemplateOutlet,
496
+ C8yTranslateDirective,
497
+ FormGroupComponent,
498
+ RequiredInputPlaceholderDirective,
499
+ NgIf,
500
+ C8yTranslatePipe
501
+ ], template: "<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n" }]
490
502
  }], ctorParameters: () => [{ type: PlatformConfigurationFormProviderService }], propDecorators: { _optionsGroups: [{
491
503
  type: Input,
492
504
  args: ['optionsGroups']
@@ -500,14 +512,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImpo
500
512
 
501
513
  class PlatformConfigurationModule {
502
514
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
503
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationModule, declarations: [PlatformConfigurationFormComponent], imports: [CommonModule, FormsModule, ReactiveFormsModule], exports: [PlatformConfigurationFormComponent] }); }
504
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationModule, imports: [CommonModule, FormsModule, ReactiveFormsModule] }); }
515
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationModule, imports: [CommonModule, FormsModule$1, ReactiveFormsModule, PlatformConfigurationFormComponent], exports: [PlatformConfigurationFormComponent] }); }
516
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationModule, imports: [CommonModule, FormsModule$1, ReactiveFormsModule, PlatformConfigurationFormComponent] }); }
505
517
  }
506
518
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: PlatformConfigurationModule, decorators: [{
507
519
  type: NgModule,
508
520
  args: [{
509
- imports: [CommonModule, FormsModule, ReactiveFormsModule],
510
- declarations: [PlatformConfigurationFormComponent],
521
+ imports: [CommonModule, FormsModule$1, ReactiveFormsModule, PlatformConfigurationFormComponent],
511
522
  exports: [PlatformConfigurationFormComponent]
512
523
  }]
513
524
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"c8y-ngx-components-platform-configuration.mjs","sources":["../../platform-configuration/platform-configuration-form-provider.service.ts","../../platform-configuration/platform-configuration-form.component.ts","../../platform-configuration/platform-configuration-form.component.html","../../platform-configuration/platform-configuration.module.ts","../../platform-configuration/c8y-ngx-components-platform-configuration.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { DatePipe, gettext } from '@c8y/ngx-components';\nimport { FormControl, Validators } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlatformConfigurationFormProviderService {\n lineBreakHint = gettext('Use [Enter] or <br> tag to add a new line');\n\n exampleTomorrowDate = (() => {\n const tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return this.c8yDatePipe.transform(tomorrow, 'yyyy-MM-ddTHH:mm:ssZ');\n })();\n\n platformConfigurationFormDefinitions = {\n 'system.password.enforce.strength': {\n formId: 'system.password.enforce.strength',\n title: gettext('Enforce \"green\" passwords for all users'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'system.password.limit.validity': {\n formId: 'system.password.limit.validity',\n title: gettext('Password validity limit (days)'),\n description: gettext(\n 'The number of days a password may be valid before it must be reset; minimum value is 0, maximum value is 999999. Leave empty to use the value from the tenant options.'\n ),\n type: 'number',\n control: new FormControl('', [Validators.min(0), Validators.max(999999)])\n },\n 'system.password.history.size': {\n formId: 'system.password.history.size',\n title: gettext('Password history size'),\n description: gettext(\n 'The number of times before the current password can be reused. Minimum value is 0, preset value is 10.'\n ),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '10' },\n control: new FormControl('', [Validators.min(0)])\n },\n 'system.password.green.min-length': {\n formId: 'system.password.green.min-length',\n title: gettext('Minimal length of \"green\" password'),\n description: gettext(\n 'The minimum number of characters which are required for a safe password. Minimum (and preset) value is 8, maximum value is 32. Leave empty to skip this constraint.'\n ),\n type: 'number',\n control: new FormControl('', [Validators.min(8), Validators.max(32)])\n },\n 'ui.email.protocolAndEncryption': {\n formId: 'ui.email.protocolAndEncryption',\n title: gettext('Protocol and encryption'),\n type: 'select',\n options: [\n {\n value: 'SMTP_PLAIN',\n name: gettext('SMTP (no encryption)')\n },\n {\n value: 'SMTP_ENCRYPTED',\n name: gettext('SMTP (STARTTLS)')\n },\n {\n value: 'SMTPS_ENCRYPTED',\n name: gettext('SMTPS (SSL/TLS)')\n }\n ],\n skipOnSave: true,\n control: new FormControl('')\n },\n 'email.protocol': {\n formId: 'email.protocol',\n title: gettext('Protocol'),\n type: 'select',\n options: [\n {\n value: 'smtp',\n name: 'SMTP'\n },\n {\n value: 'smtps',\n name: 'SMTPS'\n }\n ],\n control: new FormControl('')\n },\n 'email.connection.encrypted': {\n formId: 'email.connection.encrypted',\n title: gettext('Connection encrypted'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'email.host': {\n formId: 'email.host',\n title: gettext('Host'),\n type: 'string',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: 'localhost' },\n control: new FormControl('')\n },\n 'email.port': {\n formId: 'email.port',\n title: gettext('Port'),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '25' },\n control: new FormControl('', [Validators.min(1), Validators.max(65535)])\n },\n 'email.username': {\n formId: 'email.username',\n title: gettext('Username'),\n type: 'string',\n control: new FormControl('')\n },\n 'credentials.email.password': {\n formId: 'credentials.email.password',\n title: gettext('Password'),\n type: 'password',\n control: new FormControl('')\n },\n 'email.from': {\n formId: 'email.from',\n title: gettext('Sender address'),\n type: 'string',\n control: new FormControl('', [Validators.email])\n },\n 'passwordReset.sendNotificationToUnknownEmails': {\n formId: 'passwordReset.sendNotificationToUnknownEmails',\n title: gettext('Send notifications to unknown email addresses'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'passwordReset.email.subject': {\n formId: 'passwordReset.email.subject',\n title: gettext('Email subject'),\n description: gettext('Subject used for all password reset related emails'),\n type: 'string',\n control: new FormControl('')\n },\n 'passwordReset.token.email.template': {\n formId: 'passwordReset.token.email.template',\n title: gettext('Password reset email template (when address is known)'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {token}, {username}, {email}. Whole link to reset password can be, for example: {tenant-domain}/apps/devicemanagement/index.html?token={token}&email={email}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.user.not.found.email.template': {\n formId: 'passwordReset.user.not.found.email.template',\n title: gettext('Password reset email template (when address is not known)'),\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.success.email.template': {\n formId: 'passwordReset.success.email.template',\n title: gettext('Password change confirmation email template'),\n description: `${gettext('Placeholders: {host}, {tenant-domain}, {username}')}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.invite.template': {\n formId: 'passwordReset.invite.template',\n title: gettext('Invitation email template'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {token}, {username}, {email}. Whole link to setup password can be, for example: {tenant-domain}/apps/devicemanagement/index.html?token={token}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'export.data.mail.subject': {\n formId: 'export.data.mail.subject',\n title: gettext('Email subject'),\n description: gettext(\n 'Placeholders: {tenant-domain}, {host}, {binaryId}. Whole link to result file is: {tenant-domain}/inventory/binaries/{binaryId}'\n ),\n type: 'string',\n control: new FormControl('')\n },\n 'export.data.mail.text': {\n formId: 'export.data.mail.text',\n title: gettext('Email template'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {binaryId}. Whole link to result file is: {tenant-domain}/inventory/binaries/{binaryId}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'export.data.mail.text.userunauthorized': {\n formId: 'export.data.mail.text.userunauthorized',\n title: gettext('User unauthorized error message'),\n description: gettext('Placeholders: {user}, {exportApi}'),\n type: 'string',\n control: new FormControl('')\n },\n 'two-factor-authentication.token.sms.template': {\n formId: 'two-factor-authentication.token.sms.template',\n title: gettext('Verification token SMS template'),\n description: gettext('Placeholder: {token} - created token'),\n type: 'string',\n placeholder: gettext('e.g.: Verification code: {token}'),\n control: new FormControl('')\n },\n 'system.support.url': {\n formId: 'system.support.url',\n title: gettext('URL'),\n type: 'string',\n description: gettext(\n 'Possible values: URL string, \"false`KEEP_ORIGINAL`\" (hides the link) or leave empty (uses the default). Applications can override this setting by defining \"supportUrl`KEEP_ORIGINAL`\" application option.'\n ),\n control: new FormControl('')\n },\n 'storageLimit.warning.email.subject': {\n formId: 'storageLimit.warning.email.subject',\n title: gettext('Warning email subject'),\n description: gettext('Email which will be sent one day before data is deleted'),\n type: 'string',\n control: new FormControl('')\n },\n 'storageLimit.warning.email.template': {\n formId: 'storageLimit.warning.email.template',\n title: gettext('Warning email template'),\n description: `${gettext(\n 'Email which will be sent one day before data is deleted. Placeholders: {tenant-domain}, {tenant}, {size} - storage usage in %'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'storageLimit.process.email.subject': {\n formId: 'storageLimit.process.email.subject',\n title: gettext('Limit exceeded email subject'),\n description: gettext('Email which will be sent after over-limit data has been deleted'),\n type: 'string',\n control: new FormControl('')\n },\n 'storageLimit.process.email.template': {\n formId: 'storageLimit.process.email.template',\n title: gettext('Limit exceeded email template'),\n description: `${gettext(\n 'Email which will be sent after over-limit data has been deleted. Placeholders: {tenant-domain}, {tenant}, {size} - storage usage in %'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'tenantSuspend.mail.sendtosuspended': {\n formId: 'tenantSuspend.mail.sendtosuspended',\n title: gettext(\"Send email to suspended tenant's administrator\"),\n type: 'boolean',\n control: new FormControl('')\n },\n 'tenantSuspend.mail.additional.address': {\n formId: 'tenantSuspend.mail.additional.address',\n title: gettext('Tenant suspended email additional receiver'),\n type: 'string',\n control: new FormControl('', [Validators.email])\n },\n 'tenantSuspend.mail.subject': {\n formId: 'tenantSuspend.mail.subject',\n title: gettext('Tenant suspended email subject'),\n description: gettext(\n \"Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain\"\n ),\n type: 'string',\n control: new FormControl('')\n },\n 'tenantSuspend.mail.text': {\n formId: 'tenantSuspend.mail.text',\n title: gettext('Tenant suspended email template'),\n description: `${gettext(\n \"Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain\"\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'system.support-user.enabled': {\n formId: 'system.support-user.enabled',\n title: gettext('Activate support user'),\n description: gettext(\n 'Possible values: \"true`KEEP_ORIGINAL`\", \"false`KEEP_ORIGINAL`\", or a specific date until the user should remain active, for example, \"{{ exampleDate }}\". Leaving it blank, will set the value to \"true`KEEP_ORIGINAL`\".'\n ),\n descriptionTranslateParams: {\n exampleDate: this.exampleTomorrowDate\n },\n type: 'string',\n control: new FormControl(''),\n placeholder: this.exampleTomorrowDate\n },\n 'system.support-user.validity-limit': {\n formId: 'system.support-user.validity-limit',\n title: gettext('Validity limit'),\n description: gettext(\n 'Each support user request from subtenant user will prolong support user access by the given number of hours (default: 24 hours). Leaving it blank, will set the value to \"24\".'\n ),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '24' },\n control: new FormControl('', [Validators.min(0)])\n }\n };\n\n optionsGroups = [\n {\n title: gettext('Passwords'),\n id: 'passwordsOptions',\n items: [\n this.platformConfigurationFormDefinitions['system.password.enforce.strength'],\n this.platformConfigurationFormDefinitions['system.password.limit.validity'],\n this.platformConfigurationFormDefinitions['system.password.history.size'],\n this.platformConfigurationFormDefinitions['system.password.green.min-length']\n ]\n },\n {\n title: gettext('Two-factor authentication'),\n id: 'twoFactorAuthenticationOptions',\n items: [\n this.platformConfigurationFormDefinitions['two-factor-authentication.token.sms.template']\n ]\n },\n {\n title: gettext('Support link'),\n id: 'supportLinkOptions',\n items: [this.platformConfigurationFormDefinitions['system.support.url']]\n },\n {\n title: gettext('Password reset'),\n id: 'passwordResetOptions',\n items: [\n this.platformConfigurationFormDefinitions['passwordReset.sendNotificationToUnknownEmails'],\n this.platformConfigurationFormDefinitions['passwordReset.token.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.user.not.found.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.email.subject'],\n this.platformConfigurationFormDefinitions['passwordReset.success.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.invite.template']\n ]\n },\n {\n title: gettext('Support user'),\n id: 'supportUserOptions',\n items: [\n this.platformConfigurationFormDefinitions['system.support-user.enabled'],\n this.platformConfigurationFormDefinitions['system.support-user.validity-limit']\n ]\n },\n {\n title: gettext('Email server'),\n id: 'emailServerOptions',\n items: [\n this.platformConfigurationFormDefinitions['ui.email.protocolAndEncryption'],\n this.platformConfigurationFormDefinitions['email.host'],\n this.platformConfigurationFormDefinitions['email.port'],\n this.platformConfigurationFormDefinitions['email.username'],\n this.platformConfigurationFormDefinitions['credentials.email.password'],\n this.platformConfigurationFormDefinitions['email.from']\n ]\n },\n {\n title: gettext('Data export'),\n id: 'dataExportOptions',\n items: [\n this.platformConfigurationFormDefinitions['export.data.mail.subject'],\n this.platformConfigurationFormDefinitions['export.data.mail.text'],\n this.platformConfigurationFormDefinitions['export.data.mail.text.userunauthorized']\n ]\n },\n {\n title: gettext('Storage limit'),\n id: 'storageLimitOptions',\n items: [\n this.platformConfigurationFormDefinitions['storageLimit.warning.email.subject'],\n this.platformConfigurationFormDefinitions['storageLimit.warning.email.template'],\n this.platformConfigurationFormDefinitions['storageLimit.process.email.subject'],\n this.platformConfigurationFormDefinitions['storageLimit.process.email.template']\n ]\n },\n {\n title: gettext('Suspending tenants'),\n id: 'suspendingTenantsOptions',\n items: [\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.sendtosuspended'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.additional.address'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.subject'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.text']\n ]\n }\n ];\n\n constructor(private c8yDatePipe: DatePipe) {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { PlatformConfigurationFormProviderService } from './platform-configuration-form-provider.service';\n\n@Component({\n selector: 'c8y-platform-configuration-form',\n templateUrl: './platform-configuration-form.component.html',\n standalone: false\n})\nexport class PlatformConfigurationFormComponent {\n @Input('optionsGroups')\n set _optionsGroups(groupIds: string[]) {\n if (groupIds === undefined) {\n return;\n }\n this.optionsGroups = groupIds.map(groupId =>\n this.formProviderService.optionsGroups.find(option => option.id === groupId)\n );\n }\n\n @Input()\n set readOnly(disabled: boolean) {\n disabled ? this.form.disable() : this.form.enable();\n }\n\n @Input()\n set formValue(value) {\n if (value) {\n const convertedValue = this.afterLoad(value);\n this.form.patchValue(convertedValue, { emitEvent: false });\n this.form.markAsUntouched();\n this.form.markAsPristine();\n }\n }\n optionsGroups = [];\n\n @Output()\n onSave = new EventEmitter();\n\n form = new FormGroup({});\n\n lineBreakHint = this.formProviderService.lineBreakHint;\n\n constructor(private formProviderService: PlatformConfigurationFormProviderService) {\n Object.keys(formProviderService.platformConfigurationFormDefinitions).forEach(fieldId => {\n this.form.addControl(\n fieldId,\n formProviderService.platformConfigurationFormDefinitions[fieldId].control\n );\n });\n }\n\n /**\n * Parses provided object's property values\n * @param options\n */\n parseConfiguration(options: object): void {\n const definitions: object = this.formProviderService.platformConfigurationFormDefinitions;\n Object.entries(options).forEach(([key, rawValue]) => {\n if (\n definitions[key] &&\n (definitions[key].type === 'number' || definitions[key].type === 'boolean')\n ) {\n try {\n options[key] = JSON.parse(rawValue);\n } catch {\n options[key] = rawValue;\n }\n }\n });\n }\n\n /**\n * Parses incoming raw object before it is applied to FormGroup.\n */\n afterLoad(options: object): object {\n this.parseConfiguration(options);\n\n delete options['ui.email.protocolAndEncryption'];\n const emailProtocol = options['email.protocol'];\n const connectionEncrypted = options['email.connection.encrypted'] || false;\n if (emailProtocol === 'smtp') {\n if (connectionEncrypted) {\n options['ui.email.protocolAndEncryption'] = 'SMTP_ENCRYPTED';\n } else {\n options['ui.email.protocolAndEncryption'] = 'SMTP_PLAIN';\n }\n } else if (emailProtocol === 'smtps') {\n options['ui.email.protocolAndEncryption'] = 'SMTPS_ENCRYPTED';\n } else {\n options['ui.email.protocolAndEncryption'] = undefined;\n }\n return options;\n }\n\n /**\n * Translates ui.email.protocolAndEncryption field into\n * separate email.protocol and email.connection.encrypted\n */\n beforeSave(value): object {\n const protocolAndEncryption = value['ui.email.protocolAndEncryption'];\n if (protocolAndEncryption) {\n //email.protocol\n const protocol = protocolAndEncryption.match(/^(.+?)_(.+?)$/)[1];\n value['email.protocol'] = protocol ? protocol.toLowerCase() : protocol;\n\n // email.connection.encrypted\n const encryption = protocolAndEncryption.match(/^(.+?)_(.+?)$/)[2];\n value['email.connection.encrypted'] = encryption === 'ENCRYPTED';\n delete value['ui.email.protocolAndEncryption'];\n }\n\n return value;\n }\n\n getDirtyValues() {\n const dirtyValues = {};\n\n Object.keys(this.form.controls).forEach(key => {\n const currentControl = this.form.controls[key];\n\n if (currentControl.dirty) {\n dirtyValues[key] = currentControl.value;\n }\n });\n\n return dirtyValues;\n }\n\n emitForm() {\n if (this.form.valid) {\n const changedValues = this.getDirtyValues();\n const convertedValue = this.beforeSave(changedValues);\n this.onSave.emit(convertedValue);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n","import { CommonModule } from '@c8y/ngx-components';\nimport { NgModule } from '@angular/core';\nimport { PlatformConfigurationFormComponent } from './platform-configuration-form.component';\nimport { FormsModule } from '@c8y/ngx-components';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\n declarations: [PlatformConfigurationFormComponent],\n exports: [PlatformConfigurationFormComponent]\n})\nexport class PlatformConfigurationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.PlatformConfigurationFormProviderService"],"mappings":"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"}
1
+ {"version":3,"file":"c8y-ngx-components-platform-configuration.mjs","sources":["../../platform-configuration/platform-configuration-form-provider.service.ts","../../platform-configuration/platform-configuration-form.component.ts","../../platform-configuration/platform-configuration-form.component.html","../../platform-configuration/platform-configuration.module.ts","../../platform-configuration/c8y-ngx-components-platform-configuration.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { DatePipe, gettext } from '@c8y/ngx-components';\nimport { FormControl, Validators } from '@angular/forms';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PlatformConfigurationFormProviderService {\n lineBreakHint = gettext('Use [Enter] or <br> tag to add a new line');\n\n exampleTomorrowDate = (() => {\n const tomorrow = new Date();\n tomorrow.setDate(tomorrow.getDate() + 1);\n return this.c8yDatePipe.transform(tomorrow, 'yyyy-MM-ddTHH:mm:ssZ');\n })();\n\n platformConfigurationFormDefinitions = {\n 'system.password.enforce.strength': {\n formId: 'system.password.enforce.strength',\n title: gettext('Enforce \"green\" passwords for all users'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'system.password.limit.validity': {\n formId: 'system.password.limit.validity',\n title: gettext('Password validity limit (days)'),\n description: gettext(\n 'The number of days a password may be valid before it must be reset; minimum value is 0, maximum value is 999999. Leave empty to use the value from the tenant options.'\n ),\n type: 'number',\n control: new FormControl('', [Validators.min(0), Validators.max(999999)])\n },\n 'system.password.history.size': {\n formId: 'system.password.history.size',\n title: gettext('Password history size'),\n description: gettext(\n 'The number of times before the current password can be reused. Minimum value is 0, preset value is 10.'\n ),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '10' },\n control: new FormControl('', [Validators.min(0)])\n },\n 'system.password.green.min-length': {\n formId: 'system.password.green.min-length',\n title: gettext('Minimal length of \"green\" password'),\n description: gettext(\n 'The minimum number of characters which are required for a safe password. Minimum (and preset) value is 8, maximum value is 32. Leave empty to skip this constraint.'\n ),\n type: 'number',\n control: new FormControl('', [Validators.min(8), Validators.max(32)])\n },\n 'ui.email.protocolAndEncryption': {\n formId: 'ui.email.protocolAndEncryption',\n title: gettext('Protocol and encryption'),\n type: 'select',\n options: [\n {\n value: 'SMTP_PLAIN',\n name: gettext('SMTP (no encryption)')\n },\n {\n value: 'SMTP_ENCRYPTED',\n name: gettext('SMTP (STARTTLS)')\n },\n {\n value: 'SMTPS_ENCRYPTED',\n name: gettext('SMTPS (SSL/TLS)')\n }\n ],\n skipOnSave: true,\n control: new FormControl('')\n },\n 'email.protocol': {\n formId: 'email.protocol',\n title: gettext('Protocol'),\n type: 'select',\n options: [\n {\n value: 'smtp',\n name: 'SMTP'\n },\n {\n value: 'smtps',\n name: 'SMTPS'\n }\n ],\n control: new FormControl('')\n },\n 'email.connection.encrypted': {\n formId: 'email.connection.encrypted',\n title: gettext('Connection encrypted'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'email.host': {\n formId: 'email.host',\n title: gettext('Host'),\n type: 'string',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: 'localhost' },\n control: new FormControl('')\n },\n 'email.port': {\n formId: 'email.port',\n title: gettext('Port'),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '25' },\n control: new FormControl('', [Validators.min(1), Validators.max(65535)])\n },\n 'email.username': {\n formId: 'email.username',\n title: gettext('Username'),\n type: 'string',\n control: new FormControl('')\n },\n 'credentials.email.password': {\n formId: 'credentials.email.password',\n title: gettext('Password'),\n type: 'password',\n control: new FormControl('')\n },\n 'email.from': {\n formId: 'email.from',\n title: gettext('Sender address'),\n type: 'string',\n control: new FormControl('', [Validators.email])\n },\n 'passwordReset.sendNotificationToUnknownEmails': {\n formId: 'passwordReset.sendNotificationToUnknownEmails',\n title: gettext('Send notifications to unknown email addresses'),\n type: 'boolean',\n control: new FormControl('')\n },\n 'passwordReset.email.subject': {\n formId: 'passwordReset.email.subject',\n title: gettext('Email subject'),\n description: gettext('Subject used for all password reset related emails'),\n type: 'string',\n control: new FormControl('')\n },\n 'passwordReset.token.email.template': {\n formId: 'passwordReset.token.email.template',\n title: gettext('Password reset email template (when address is known)'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {token}, {username}, {email}. Whole link to reset password can be, for example: {tenant-domain}/apps/devicemanagement/index.html?token={token}&email={email}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.user.not.found.email.template': {\n formId: 'passwordReset.user.not.found.email.template',\n title: gettext('Password reset email template (when address is not known)'),\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.success.email.template': {\n formId: 'passwordReset.success.email.template',\n title: gettext('Password change confirmation email template'),\n description: `${gettext('Placeholders: {host}, {tenant-domain}, {username}')}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'passwordReset.invite.template': {\n formId: 'passwordReset.invite.template',\n title: gettext('Invitation email template'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {token}, {username}, {email}. Whole link to setup password can be, for example: {tenant-domain}/apps/devicemanagement/index.html?token={token}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'export.data.mail.subject': {\n formId: 'export.data.mail.subject',\n title: gettext('Email subject'),\n description: gettext(\n 'Placeholders: {tenant-domain}, {host}, {binaryId}. Whole link to result file is: {tenant-domain}/inventory/binaries/{binaryId}'\n ),\n type: 'string',\n control: new FormControl('')\n },\n 'export.data.mail.text': {\n formId: 'export.data.mail.text',\n title: gettext('Email template'),\n description: `${gettext(\n 'Placeholders: {tenant-domain}, {host}, {binaryId}. Whole link to result file is: {tenant-domain}/inventory/binaries/{binaryId}'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'export.data.mail.text.userunauthorized': {\n formId: 'export.data.mail.text.userunauthorized',\n title: gettext('User unauthorized error message'),\n description: gettext('Placeholders: {user}, {exportApi}'),\n type: 'string',\n control: new FormControl('')\n },\n 'two-factor-authentication.token.sms.template': {\n formId: 'two-factor-authentication.token.sms.template',\n title: gettext('Verification token SMS template'),\n description: gettext('Placeholder: {token} - created token'),\n type: 'string',\n placeholder: gettext('e.g.: Verification code: {token}'),\n control: new FormControl('')\n },\n 'system.support.url': {\n formId: 'system.support.url',\n title: gettext('URL'),\n type: 'string',\n description: gettext(\n 'Possible values: URL string, \"false`KEEP_ORIGINAL`\" (hides the link) or leave empty (uses the default). Applications can override this setting by defining \"supportUrl`KEEP_ORIGINAL`\" application option.'\n ),\n control: new FormControl('')\n },\n 'storageLimit.warning.email.subject': {\n formId: 'storageLimit.warning.email.subject',\n title: gettext('Warning email subject'),\n description: gettext('Email which will be sent one day before data is deleted'),\n type: 'string',\n control: new FormControl('')\n },\n 'storageLimit.warning.email.template': {\n formId: 'storageLimit.warning.email.template',\n title: gettext('Warning email template'),\n description: `${gettext(\n 'Email which will be sent one day before data is deleted. Placeholders: {tenant-domain}, {tenant}, {size} - storage usage in %'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'storageLimit.process.email.subject': {\n formId: 'storageLimit.process.email.subject',\n title: gettext('Limit exceeded email subject'),\n description: gettext('Email which will be sent after over-limit data has been deleted'),\n type: 'string',\n control: new FormControl('')\n },\n 'storageLimit.process.email.template': {\n formId: 'storageLimit.process.email.template',\n title: gettext('Limit exceeded email template'),\n description: `${gettext(\n 'Email which will be sent after over-limit data has been deleted. Placeholders: {tenant-domain}, {tenant}, {size} - storage usage in %'\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'tenantSuspend.mail.sendtosuspended': {\n formId: 'tenantSuspend.mail.sendtosuspended',\n title: gettext(\"Send email to suspended tenant's administrator\"),\n type: 'boolean',\n control: new FormControl('')\n },\n 'tenantSuspend.mail.additional.address': {\n formId: 'tenantSuspend.mail.additional.address',\n title: gettext('Tenant suspended email additional receiver'),\n type: 'string',\n control: new FormControl('', [Validators.email])\n },\n 'tenantSuspend.mail.subject': {\n formId: 'tenantSuspend.mail.subject',\n title: gettext('Tenant suspended email subject'),\n description: gettext(\n \"Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain\"\n ),\n type: 'string',\n control: new FormControl('')\n },\n 'tenantSuspend.mail.text': {\n formId: 'tenantSuspend.mail.text',\n title: gettext('Tenant suspended email template'),\n description: `${gettext(\n \"Placeholder: {tenant} - suspended tenant's ID; {tenant-domain} - tenant's domain\"\n )}`,\n type: 'textarea',\n control: new FormControl(''),\n lineBreakHint: true\n },\n 'system.support-user.enabled': {\n formId: 'system.support-user.enabled',\n title: gettext('Activate support user'),\n description: gettext(\n 'Possible values: \"true`KEEP_ORIGINAL`\", \"false`KEEP_ORIGINAL`\", or a specific date until the user should remain active, for example, \"{{ exampleDate }}\". Leaving it blank, will set the value to \"true`KEEP_ORIGINAL`\".'\n ),\n descriptionTranslateParams: {\n exampleDate: this.exampleTomorrowDate\n },\n type: 'string',\n control: new FormControl(''),\n placeholder: this.exampleTomorrowDate\n },\n 'system.support-user.validity-limit': {\n formId: 'system.support-user.validity-limit',\n title: gettext('Validity limit'),\n description: gettext(\n 'Each support user request from subtenant user will prolong support user access by the given number of hours (default: 24 hours). Leaving it blank, will set the value to \"24\".'\n ),\n type: 'number',\n placeholder: `${gettext('e.g. {{ example }}')}`,\n placeholderParams: { example: '24' },\n control: new FormControl('', [Validators.min(0)])\n }\n };\n\n optionsGroups = [\n {\n title: gettext('Passwords'),\n id: 'passwordsOptions',\n items: [\n this.platformConfigurationFormDefinitions['system.password.enforce.strength'],\n this.platformConfigurationFormDefinitions['system.password.limit.validity'],\n this.platformConfigurationFormDefinitions['system.password.history.size'],\n this.platformConfigurationFormDefinitions['system.password.green.min-length']\n ]\n },\n {\n title: gettext('Two-factor authentication'),\n id: 'twoFactorAuthenticationOptions',\n items: [\n this.platformConfigurationFormDefinitions['two-factor-authentication.token.sms.template']\n ]\n },\n {\n title: gettext('Support link'),\n id: 'supportLinkOptions',\n items: [this.platformConfigurationFormDefinitions['system.support.url']]\n },\n {\n title: gettext('Password reset'),\n id: 'passwordResetOptions',\n items: [\n this.platformConfigurationFormDefinitions['passwordReset.sendNotificationToUnknownEmails'],\n this.platformConfigurationFormDefinitions['passwordReset.token.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.user.not.found.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.email.subject'],\n this.platformConfigurationFormDefinitions['passwordReset.success.email.template'],\n this.platformConfigurationFormDefinitions['passwordReset.invite.template']\n ]\n },\n {\n title: gettext('Support user'),\n id: 'supportUserOptions',\n items: [\n this.platformConfigurationFormDefinitions['system.support-user.enabled'],\n this.platformConfigurationFormDefinitions['system.support-user.validity-limit']\n ]\n },\n {\n title: gettext('Email server'),\n id: 'emailServerOptions',\n items: [\n this.platformConfigurationFormDefinitions['ui.email.protocolAndEncryption'],\n this.platformConfigurationFormDefinitions['email.host'],\n this.platformConfigurationFormDefinitions['email.port'],\n this.platformConfigurationFormDefinitions['email.username'],\n this.platformConfigurationFormDefinitions['credentials.email.password'],\n this.platformConfigurationFormDefinitions['email.from']\n ]\n },\n {\n title: gettext('Data export'),\n id: 'dataExportOptions',\n items: [\n this.platformConfigurationFormDefinitions['export.data.mail.subject'],\n this.platformConfigurationFormDefinitions['export.data.mail.text'],\n this.platformConfigurationFormDefinitions['export.data.mail.text.userunauthorized']\n ]\n },\n {\n title: gettext('Storage limit'),\n id: 'storageLimitOptions',\n items: [\n this.platformConfigurationFormDefinitions['storageLimit.warning.email.subject'],\n this.platformConfigurationFormDefinitions['storageLimit.warning.email.template'],\n this.platformConfigurationFormDefinitions['storageLimit.process.email.subject'],\n this.platformConfigurationFormDefinitions['storageLimit.process.email.template']\n ]\n },\n {\n title: gettext('Suspending tenants'),\n id: 'suspendingTenantsOptions',\n items: [\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.sendtosuspended'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.additional.address'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.subject'],\n this.platformConfigurationFormDefinitions['tenantSuspend.mail.text']\n ]\n }\n ];\n\n constructor(private c8yDatePipe: DatePipe) {}\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PlatformConfigurationFormProviderService } from './platform-configuration-form-provider.service';\nimport { NgFor, NgSwitch, NgSwitchCase, NgTemplateOutlet, NgIf } from '@angular/common';\nimport {\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n C8yTranslatePipe\n} from '@c8y/ngx-components';\n\n@Component({\n selector: 'c8y-platform-configuration-form',\n templateUrl: './platform-configuration-form.component.html',\n imports: [\n FormsModule,\n ReactiveFormsModule,\n NgFor,\n NgSwitch,\n NgSwitchCase,\n NgTemplateOutlet,\n C8yTranslateDirective,\n FormGroupComponent,\n RequiredInputPlaceholderDirective,\n NgIf,\n C8yTranslatePipe\n ]\n})\nexport class PlatformConfigurationFormComponent {\n @Input('optionsGroups')\n set _optionsGroups(groupIds: string[]) {\n if (groupIds === undefined) {\n return;\n }\n this.optionsGroups = groupIds.map(groupId =>\n this.formProviderService.optionsGroups.find(option => option.id === groupId)\n );\n }\n\n @Input()\n set readOnly(disabled: boolean) {\n disabled ? this.form.disable() : this.form.enable();\n }\n\n @Input()\n set formValue(value) {\n if (value) {\n const convertedValue = this.afterLoad(value);\n this.form.patchValue(convertedValue, { emitEvent: false });\n this.form.markAsUntouched();\n this.form.markAsPristine();\n }\n }\n optionsGroups = [];\n\n @Output()\n onSave = new EventEmitter();\n\n form = new FormGroup({});\n\n lineBreakHint = this.formProviderService.lineBreakHint;\n\n constructor(private formProviderService: PlatformConfigurationFormProviderService) {\n Object.keys(formProviderService.platformConfigurationFormDefinitions).forEach(fieldId => {\n this.form.addControl(\n fieldId,\n formProviderService.platformConfigurationFormDefinitions[fieldId].control\n );\n });\n }\n\n /**\n * Parses provided object's property values\n * @param options\n */\n parseConfiguration(options: object): void {\n const definitions: object = this.formProviderService.platformConfigurationFormDefinitions;\n Object.entries(options).forEach(([key, rawValue]) => {\n if (\n definitions[key] &&\n (definitions[key].type === 'number' || definitions[key].type === 'boolean')\n ) {\n try {\n options[key] = JSON.parse(rawValue);\n } catch {\n options[key] = rawValue;\n }\n }\n });\n }\n\n /**\n * Parses incoming raw object before it is applied to FormGroup.\n */\n afterLoad(options: object): object {\n this.parseConfiguration(options);\n\n delete options['ui.email.protocolAndEncryption'];\n const emailProtocol = options['email.protocol'];\n const connectionEncrypted = options['email.connection.encrypted'] || false;\n if (emailProtocol === 'smtp') {\n if (connectionEncrypted) {\n options['ui.email.protocolAndEncryption'] = 'SMTP_ENCRYPTED';\n } else {\n options['ui.email.protocolAndEncryption'] = 'SMTP_PLAIN';\n }\n } else if (emailProtocol === 'smtps') {\n options['ui.email.protocolAndEncryption'] = 'SMTPS_ENCRYPTED';\n } else {\n options['ui.email.protocolAndEncryption'] = undefined;\n }\n return options;\n }\n\n /**\n * Translates ui.email.protocolAndEncryption field into\n * separate email.protocol and email.connection.encrypted\n */\n beforeSave(value): object {\n const protocolAndEncryption = value['ui.email.protocolAndEncryption'];\n if (protocolAndEncryption) {\n //email.protocol\n const protocol = protocolAndEncryption.match(/^(.+?)_(.+?)$/)[1];\n value['email.protocol'] = protocol ? protocol.toLowerCase() : protocol;\n\n // email.connection.encrypted\n const encryption = protocolAndEncryption.match(/^(.+?)_(.+?)$/)[2];\n value['email.connection.encrypted'] = encryption === 'ENCRYPTED';\n delete value['ui.email.protocolAndEncryption'];\n }\n\n return value;\n }\n\n getDirtyValues() {\n const dirtyValues = {};\n\n Object.keys(this.form.controls).forEach(key => {\n const currentControl = this.form.controls[key];\n\n if (currentControl.dirty) {\n dirtyValues[key] = currentControl.value;\n }\n });\n\n return dirtyValues;\n }\n\n emitForm() {\n if (this.form.valid) {\n const changedValues = this.getDirtyValues();\n const convertedValue = this.beforeSave(changedValues);\n this.onSave.emit(convertedValue);\n }\n }\n}\n","<form [formGroup]=\"form\">\n <div class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\">\n <div class=\"card-header separator\">\n <div class=\"card-title\">\n {{ 'Configuration' | translate }}\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-block\">\n <div>\n <fieldset\n class=\"row schema-form-fieldset separator-bottom p-t-24\"\n *ngFor=\"let category of optionsGroups\"\n >\n <div class=\"col-sm-3 col-md-2 p-l-24 p-l-xs-8 p-b-8\">\n <div\n class=\"h4 text-normal text-right text-left-xs\"\n data-cy=\"fieldset--section-title\"\n >\n {{ category.title | translate }}\n </div>\n </div>\n <div class=\"col-sm-9 col-md-8\">\n <div\n class=\"form-group\"\n *ngFor=\"let field of category.items\"\n >\n <ng-container [ngSwitch]=\"field.type\">\n <ng-container *ngSwitchCase=\"'string'\">\n <ng-container\n *ngTemplateOutlet=\"stringTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'number'\">\n <ng-container\n *ngTemplateOutlet=\"numberTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n <ng-container *ngSwitchCase=\"'password'\">\n <ng-container\n *ngTemplateOutlet=\"passwordTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'textarea'\">\n <ng-container\n *ngTemplateOutlet=\"textareaTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'boolean'\">\n <ng-container\n *ngTemplateOutlet=\"booleanTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"'select'\">\n <ng-container\n *ngTemplateOutlet=\"selectTemplate; context: { $implicit: field }\"\n ></ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </fieldset>\n </div>\n </div>\n </div>\n\n <div class=\"card-footer separator\">\n <button\n class=\"btn btn-primary\"\n [title]=\"'Save configuration' | translate\"\n type=\"submit\"\n (click)=\"emitForm()\"\n [disabled]=\"!form.dirty || form.invalid || form.disabled\"\n >\n <span translate>Save</span>\n </button>\n </div>\n </div>\n </div>\n </div>\n\n <ng-template\n #stringTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"text\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #passwordTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"password\"\n autocomplete=\"new-password\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #numberTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <input\n class=\"text-truncate form-control\"\n [title]=\"field.title | translate\"\n type=\"number\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n />\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #textareaTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n {{ field.title | translate }}\n </label>\n <textarea\n class=\"form-control\"\n [title]=\"field.title | translate\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n [placeholder]=\"field.placeholder || '' | translate : field.placeholderParams\"\n [rows]=\"10\"\n ></textarea>\n <div\n class=\"help-block\"\n *ngIf=\"field.description || field.lineBreakHint\"\n >\n <span *ngIf=\"field.description\">\n {{ field.description | translate : field.descriptionTranslateParams }}\n </span>\n <span *ngIf=\"field.description && field.lineBreakHint\"><br /></span>\n <span *ngIf=\"field.lineBreakHint\">{{ lineBreakHint | translate }}</span>\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #booleanTemplate\n let-field\n >\n <c8y-form-group>\n <label\n class=\"c8y-checkbox\"\n title=\"{{ field.title | translate }}\"\n >\n <input\n [title]=\"field.title | translate\"\n type=\"checkbox\"\n [formControlName]=\"field.formId\"\n />\n <span></span>\n <span>{{ field.title | translate }}</span>\n </label>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n\n <ng-template\n #selectTemplate\n let-field\n >\n <c8y-form-group>\n <label\n title=\"{{ field.title | translate }}\"\n [for]=\"field.formId\"\n >\n <span>{{ field.title | translate }}</span>\n </label>\n <div class=\"c8y-select-wrapper\">\n <select\n class=\"form-control\"\n [id]=\"field.formId\"\n [formControlName]=\"field.formId\"\n >\n <option></option>\n <option\n *ngFor=\"let option of field.options\"\n [value]=\"option.value\"\n >\n {{ option.name | translate }}\n </option>\n </select>\n <span></span>\n </div>\n\n <div\n class=\"help-block\"\n *ngIf=\"field.description\"\n >\n {{ field.description | translate : field.descriptionTranslateParams }}\n </div>\n </c8y-form-group>\n </ng-template>\n</form>\n","import { CommonModule, FormsModule } from '@c8y/ngx-components';\nimport { NgModule } from '@angular/core';\nimport { PlatformConfigurationFormComponent } from './platform-configuration-form.component';\nimport { ReactiveFormsModule } from '@angular/forms';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ReactiveFormsModule, PlatformConfigurationFormComponent],\n exports: [PlatformConfigurationFormComponent]\n})\nexport class PlatformConfigurationModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PlatformConfigurationFormProviderService","FormsModule"],"mappings":"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"}