@flightctl/ui-components 0.0.1

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 (408) hide show
  1. package/dist/__mocks__/fileMock.js +3 -0
  2. package/dist/__mocks__/fileMock.js.map +1 -0
  3. package/dist/__mocks__/styleMock.js +3 -0
  4. package/dist/__mocks__/styleMock.js.map +1 -0
  5. package/dist/jest.config.js +24 -0
  6. package/dist/jest.config.js.map +1 -0
  7. package/dist/src/components/DetailsPage/DetailsNotFound.js +69 -0
  8. package/dist/src/components/DetailsPage/DetailsNotFound.js.map +1 -0
  9. package/dist/src/components/DetailsPage/DetailsPage.css +3 -0
  10. package/dist/src/components/DetailsPage/DetailsPage.js +42 -0
  11. package/dist/src/components/DetailsPage/DetailsPage.js.map +1 -0
  12. package/dist/src/components/DetailsPage/DetailsPage.spec.js +81 -0
  13. package/dist/src/components/DetailsPage/DetailsPage.spec.js.map +1 -0
  14. package/dist/src/components/DetailsPage/DetailsPageActions.js +30 -0
  15. package/dist/src/components/DetailsPage/DetailsPageActions.js.map +1 -0
  16. package/dist/src/components/DetailsPage/DetailsPageCard.css +8 -0
  17. package/dist/src/components/DetailsPage/DetailsPageCard.js +12 -0
  18. package/dist/src/components/DetailsPage/DetailsPageCard.js.map +1 -0
  19. package/dist/src/components/DetailsPage/Tables/ApplicationsTable.js +27 -0
  20. package/dist/src/components/DetailsPage/Tables/ApplicationsTable.js.map +1 -0
  21. package/dist/src/components/DetailsPage/Tables/ConditionsTable.js +24 -0
  22. package/dist/src/components/DetailsPage/Tables/ConditionsTable.js.map +1 -0
  23. package/dist/src/components/DetailsPage/Tables/IntegrityDetails.js +22 -0
  24. package/dist/src/components/DetailsPage/Tables/IntegrityDetails.js.map +1 -0
  25. package/dist/src/components/DetailsPage/Tables/SystemdDetailsTable.js +40 -0
  26. package/dist/src/components/DetailsPage/Tables/SystemdDetailsTable.js.map +1 -0
  27. package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.js +63 -0
  28. package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.js.map +1 -0
  29. package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js +57 -0
  30. package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js.map +1 -0
  31. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.css +4 -0
  32. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js +114 -0
  33. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js.map +1 -0
  34. package/dist/src/components/Device/DeviceDetails/DeviceFleet.css +3 -0
  35. package/dist/src/components/Device/DeviceDetails/DeviceFleet.js +50 -0
  36. package/dist/src/components/Device/DeviceDetails/DeviceFleet.js.map +1 -0
  37. package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.css +3 -0
  38. package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.js +34 -0
  39. package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.js.map +1 -0
  40. package/dist/src/components/Device/DeviceDetails/SystemdTable.js +38 -0
  41. package/dist/src/components/Device/DeviceDetails/SystemdTable.js.map +1 -0
  42. package/dist/src/components/Device/DeviceDetails/TerminalTab.js +31 -0
  43. package/dist/src/components/Device/DeviceDetails/TerminalTab.js.map +1 -0
  44. package/dist/src/components/Device/DeviceList/DeviceFilterSelect.js +87 -0
  45. package/dist/src/components/Device/DeviceList/DeviceFilterSelect.js.map +1 -0
  46. package/dist/src/components/Device/DeviceList/DeviceList.js +157 -0
  47. package/dist/src/components/Device/DeviceList/DeviceList.js.map +1 -0
  48. package/dist/src/components/Device/DeviceList/DeviceTableRow.js +62 -0
  49. package/dist/src/components/Device/DeviceList/DeviceTableRow.js.map +1 -0
  50. package/dist/src/components/Device/DeviceList/DeviceTableToolbar.js +80 -0
  51. package/dist/src/components/Device/DeviceList/DeviceTableToolbar.js.map +1 -0
  52. package/dist/src/components/Device/DeviceList/types.js +4 -0
  53. package/dist/src/components/Device/DeviceList/types.js.map +1 -0
  54. package/dist/src/components/Device/DeviceList/useDeviceBackendFilters.js +94 -0
  55. package/dist/src/components/Device/DeviceList/useDeviceBackendFilters.js.map +1 -0
  56. package/dist/src/components/Device/DeviceList/useDeviceFilters.js +16 -0
  57. package/dist/src/components/Device/DeviceList/useDeviceFilters.js.map +1 -0
  58. package/dist/src/components/Device/DeviceList/useDeviceLikeResources.js +98 -0
  59. package/dist/src/components/Device/DeviceList/useDeviceLikeResources.js.map +1 -0
  60. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.css +4 -0
  61. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js +92 -0
  62. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js.map +1 -0
  63. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardFooter.js +32 -0
  64. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardFooter.js.map +1 -0
  65. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardNav.js +36 -0
  66. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardNav.js.map +1 -0
  67. package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js +171 -0
  68. package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js.map +1 -0
  69. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js +15 -0
  70. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js.map +1 -0
  71. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigK8sSecretTemplateForm.js +22 -0
  72. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigK8sSecretTemplateForm.js.map +1 -0
  73. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigTemplateForm.css +3 -0
  74. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigTemplateForm.js +96 -0
  75. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigTemplateForm.js.map +1 -0
  76. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js +94 -0
  77. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js.map +1 -0
  78. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js +45 -0
  79. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js.map +1 -0
  80. package/dist/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.js +48 -0
  81. package/dist/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.js.map +1 -0
  82. package/dist/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.js +45 -0
  83. package/dist/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.js.map +1 -0
  84. package/dist/src/components/Device/EditDeviceWizard/types.js +3 -0
  85. package/dist/src/components/Device/EditDeviceWizard/types.js.map +1 -0
  86. package/dist/src/components/Device/EditDeviceWizard/useEditDevice.js +35 -0
  87. package/dist/src/components/Device/EditDeviceWizard/useEditDevice.js.map +1 -0
  88. package/dist/src/components/Device/EditDeviceWizard/utils.js +65 -0
  89. package/dist/src/components/Device/EditDeviceWizard/utils.js.map +1 -0
  90. package/dist/src/components/Device/MatchPatternsModal/MatchPatternsForm.js +39 -0
  91. package/dist/src/components/Device/MatchPatternsModal/MatchPatternsForm.js.map +1 -0
  92. package/dist/src/components/Device/MatchPatternsModal/MatchPatternsModal.js +46 -0
  93. package/dist/src/components/Device/MatchPatternsModal/MatchPatternsModal.js.map +1 -0
  94. package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.css +3 -0
  95. package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js +103 -0
  96. package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js.map +1 -0
  97. package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.js +42 -0
  98. package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.js.map +1 -0
  99. package/dist/src/components/ErrorAlert/ErrorAlert.js +13 -0
  100. package/dist/src/components/ErrorAlert/ErrorAlert.js.map +1 -0
  101. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.css +3 -0
  102. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js +82 -0
  103. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js.map +1 -0
  104. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.js +32 -0
  105. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.js.map +1 -0
  106. package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js +85 -0
  107. package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js.map +1 -0
  108. package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.js +30 -0
  109. package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.js.map +1 -0
  110. package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.js +46 -0
  111. package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.js.map +1 -0
  112. package/dist/src/components/Fleet/CreateFleet/types.js +3 -0
  113. package/dist/src/components/Fleet/CreateFleet/types.js.map +1 -0
  114. package/dist/src/components/Fleet/CreateFleet/useEditFleet.js +35 -0
  115. package/dist/src/components/Fleet/CreateFleet/useEditFleet.js.map +1 -0
  116. package/dist/src/components/Fleet/CreateFleet/utils.js +143 -0
  117. package/dist/src/components/Fleet/CreateFleet/utils.js.map +1 -0
  118. package/dist/src/components/Fleet/DeleteFleetModal/DeleteFleetModal.js +55 -0
  119. package/dist/src/components/Fleet/DeleteFleetModal/DeleteFleetModal.js.map +1 -0
  120. package/dist/src/components/Fleet/FleetDetails/FleetDetails.js +49 -0
  121. package/dist/src/components/Fleet/FleetDetails/FleetDetails.js.map +1 -0
  122. package/dist/src/components/Fleet/FleetDetails/FleetDetailsContent.js +69 -0
  123. package/dist/src/components/Fleet/FleetDetails/FleetDetailsContent.js.map +1 -0
  124. package/dist/src/components/Fleet/FleetDetails/FleetDevices.js +40 -0
  125. package/dist/src/components/Fleet/FleetDetails/FleetDevices.js.map +1 -0
  126. package/dist/src/components/Fleet/FleetDetails/FleetOwnerLink.js +37 -0
  127. package/dist/src/components/Fleet/FleetDetails/FleetOwnerLink.js.map +1 -0
  128. package/dist/src/components/Fleet/FleetDetails/chartUtils.js +29 -0
  129. package/dist/src/components/Fleet/FleetDetails/chartUtils.js.map +1 -0
  130. package/dist/src/components/Fleet/FleetList.js +130 -0
  131. package/dist/src/components/Fleet/FleetList.js.map +1 -0
  132. package/dist/src/components/Fleet/FleetRow.js +64 -0
  133. package/dist/src/components/Fleet/FleetRow.js.map +1 -0
  134. package/dist/src/components/Fleet/FleetStatus.js +34 -0
  135. package/dist/src/components/Fleet/FleetStatus.js.map +1 -0
  136. package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.css +3 -0
  137. package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.js +106 -0
  138. package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.js.map +1 -0
  139. package/dist/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.js +69 -0
  140. package/dist/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.js.map +1 -0
  141. package/dist/src/components/Fleet/ImportFleetWizard/steps/ResourceSyncStep.js +31 -0
  142. package/dist/src/components/Fleet/ImportFleetWizard/steps/ResourceSyncStep.js.map +1 -0
  143. package/dist/src/components/Fleet/ImportFleetWizard/steps/ReviewStep.js +37 -0
  144. package/dist/src/components/Fleet/ImportFleetWizard/steps/ReviewStep.js.map +1 -0
  145. package/dist/src/components/Fleet/ImportFleetWizard/types.js +3 -0
  146. package/dist/src/components/Fleet/ImportFleetWizard/types.js.map +1 -0
  147. package/dist/src/components/Fleet/ResourceSyncRow.js +36 -0
  148. package/dist/src/components/Fleet/ResourceSyncRow.js.map +1 -0
  149. package/dist/src/components/ListPage/ListPage.js +12 -0
  150. package/dist/src/components/ListPage/ListPage.js.map +1 -0
  151. package/dist/src/components/ListPage/ListPageActions.js +30 -0
  152. package/dist/src/components/ListPage/ListPageActions.js.map +1 -0
  153. package/dist/src/components/ListPage/ListPageBody.js +21 -0
  154. package/dist/src/components/ListPage/ListPageBody.js.map +1 -0
  155. package/dist/src/components/ListPage/types.js +3 -0
  156. package/dist/src/components/ListPage/types.js.map +1 -0
  157. package/dist/src/components/NavItem/NavItem.js +20 -0
  158. package/dist/src/components/NavItem/NavItem.js.map +1 -0
  159. package/dist/src/components/OverviewPage/Cards/Status/ApplicationStatusChart.js +30 -0
  160. package/dist/src/components/OverviewPage/Cards/Status/ApplicationStatusChart.js.map +1 -0
  161. package/dist/src/components/OverviewPage/Cards/Status/DeviceStatusChart.js +32 -0
  162. package/dist/src/components/OverviewPage/Cards/Status/DeviceStatusChart.js.map +1 -0
  163. package/dist/src/components/OverviewPage/Cards/Status/StatusCard.js +61 -0
  164. package/dist/src/components/OverviewPage/Cards/Status/StatusCard.js.map +1 -0
  165. package/dist/src/components/OverviewPage/Cards/Status/StatusCardFilters.js +64 -0
  166. package/dist/src/components/OverviewPage/Cards/Status/StatusCardFilters.js.map +1 -0
  167. package/dist/src/components/OverviewPage/Cards/Status/SystemUpdateStatusChart.js +30 -0
  168. package/dist/src/components/OverviewPage/Cards/Status/SystemUpdateStatusChart.js.map +1 -0
  169. package/dist/src/components/OverviewPage/Cards/Status/utils.js +31 -0
  170. package/dist/src/components/OverviewPage/Cards/Status/utils.js.map +1 -0
  171. package/dist/src/components/OverviewPage/Cards/ToDo/ToDoCard.js +46 -0
  172. package/dist/src/components/OverviewPage/Cards/ToDo/ToDoCard.js.map +1 -0
  173. package/dist/src/components/OverviewPage/Overview.js +16 -0
  174. package/dist/src/components/OverviewPage/Overview.js.map +1 -0
  175. package/dist/src/components/OverviewPage/OverviewPage.js +17 -0
  176. package/dist/src/components/OverviewPage/OverviewPage.js.map +1 -0
  177. package/dist/src/components/Repository/CreateRepository/CreateRepository.js +102 -0
  178. package/dist/src/components/Repository/CreateRepository/CreateRepository.js.map +1 -0
  179. package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.css +7 -0
  180. package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js +215 -0
  181. package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js.map +1 -0
  182. package/dist/src/components/Repository/CreateRepository/CreateResourceSyncsForm.js +31 -0
  183. package/dist/src/components/Repository/CreateRepository/CreateResourceSyncsForm.js.map +1 -0
  184. package/dist/src/components/Repository/CreateRepository/types.js +3 -0
  185. package/dist/src/components/Repository/CreateRepository/types.js.map +1 -0
  186. package/dist/src/components/Repository/CreateRepository/utils.js +454 -0
  187. package/dist/src/components/Repository/CreateRepository/utils.js.map +1 -0
  188. package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.js +93 -0
  189. package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.js.map +1 -0
  190. package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js +39 -0
  191. package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js.map +1 -0
  192. package/dist/src/components/Repository/RepositoryDetails/RepositoryGeneralDetailsCard.js +64 -0
  193. package/dist/src/components/Repository/RepositoryDetails/RepositoryGeneralDetailsCard.js.map +1 -0
  194. package/dist/src/components/Repository/RepositoryDetails/RepositoryResourceSyncsCard.js +18 -0
  195. package/dist/src/components/Repository/RepositoryDetails/RepositoryResourceSyncsCard.js.map +1 -0
  196. package/dist/src/components/Repository/RepositoryDetails/RepositorySource.js +24 -0
  197. package/dist/src/components/Repository/RepositoryDetails/RepositorySource.js.map +1 -0
  198. package/dist/src/components/Repository/RepositoryDetails/RepositorySourceList.js +64 -0
  199. package/dist/src/components/Repository/RepositoryDetails/RepositorySourceList.js.map +1 -0
  200. package/dist/src/components/Repository/RepositoryList.js +133 -0
  201. package/dist/src/components/Repository/RepositoryList.js.map +1 -0
  202. package/dist/src/components/ResourceSync/RepositoryResourceSyncList.css +7 -0
  203. package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js +140 -0
  204. package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js.map +1 -0
  205. package/dist/src/components/ResourceSync/ResourceSyncStatus.js +65 -0
  206. package/dist/src/components/ResourceSync/ResourceSyncStatus.js.map +1 -0
  207. package/dist/src/components/ResourceSync/ResourceSyncToRepository.js +49 -0
  208. package/dist/src/components/ResourceSync/ResourceSyncToRepository.js.map +1 -0
  209. package/dist/src/components/Status/ApplicationStatus.js +23 -0
  210. package/dist/src/components/Status/ApplicationStatus.js.map +1 -0
  211. package/dist/src/components/Status/ApplicationSummaryStatus.js +23 -0
  212. package/dist/src/components/Status/ApplicationSummaryStatus.js.map +1 -0
  213. package/dist/src/components/Status/DeviceResourceStatus.js +84 -0
  214. package/dist/src/components/Status/DeviceResourceStatus.js.map +1 -0
  215. package/dist/src/components/Status/DeviceStatus.js +18 -0
  216. package/dist/src/components/Status/DeviceStatus.js.map +1 -0
  217. package/dist/src/components/Status/EnrollmentRequestStatus.js +18 -0
  218. package/dist/src/components/Status/EnrollmentRequestStatus.js.map +1 -0
  219. package/dist/src/components/Status/IntegrityStatus.js +17 -0
  220. package/dist/src/components/Status/IntegrityStatus.js.map +1 -0
  221. package/dist/src/components/Status/RepositoryStatus.js +37 -0
  222. package/dist/src/components/Status/RepositoryStatus.js.map +1 -0
  223. package/dist/src/components/Status/StatusDisplay.css +9 -0
  224. package/dist/src/components/Status/StatusDisplay.js +33 -0
  225. package/dist/src/components/Status/StatusDisplay.js.map +1 -0
  226. package/dist/src/components/Status/SystemUpdateStatus.js +24 -0
  227. package/dist/src/components/Status/SystemUpdateStatus.js.map +1 -0
  228. package/dist/src/components/Status/SystemdStatus.js +21 -0
  229. package/dist/src/components/Status/SystemdStatus.js.map +1 -0
  230. package/dist/src/components/Status/utils.js +10 -0
  231. package/dist/src/components/Status/utils.js.map +1 -0
  232. package/dist/src/components/Table/Table.js +28 -0
  233. package/dist/src/components/Table/Table.js.map +1 -0
  234. package/dist/src/components/Table/TableActions.js +16 -0
  235. package/dist/src/components/Table/TableActions.js.map +1 -0
  236. package/dist/src/components/Table/TableTextSearch.js +13 -0
  237. package/dist/src/components/Table/TableTextSearch.js.map +1 -0
  238. package/dist/src/components/Terminal/Terminal.css +1 -0
  239. package/dist/src/components/Terminal/Terminal.js +79 -0
  240. package/dist/src/components/Terminal/Terminal.js.map +1 -0
  241. package/dist/src/components/UserPreferences/UserPreferencesModal.js +34 -0
  242. package/dist/src/components/UserPreferences/UserPreferencesModal.js.map +1 -0
  243. package/dist/src/components/UserPreferences/UserPreferencesProvider.js +19 -0
  244. package/dist/src/components/UserPreferences/UserPreferencesProvider.js.map +1 -0
  245. package/dist/src/components/charts/DonutChart.css +10 -0
  246. package/dist/src/components/charts/DonutChart.js +47 -0
  247. package/dist/src/components/charts/DonutChart.js.map +1 -0
  248. package/dist/src/components/common/CopyButton.js +18 -0
  249. package/dist/src/components/common/CopyButton.js.map +1 -0
  250. package/dist/src/components/common/EditableLabelControl.js +39 -0
  251. package/dist/src/components/common/EditableLabelControl.js.map +1 -0
  252. package/dist/src/components/common/ErrorBoundary.js +36 -0
  253. package/dist/src/components/common/ErrorBoundary.js.map +1 -0
  254. package/dist/src/components/common/HelperTextItems.js +25 -0
  255. package/dist/src/components/common/HelperTextItems.js.map +1 -0
  256. package/dist/src/components/common/LabelsView.css +9 -0
  257. package/dist/src/components/common/LabelsView.js +18 -0
  258. package/dist/src/components/common/LabelsView.js.map +1 -0
  259. package/dist/src/components/common/LeaveFormConfirmation.js +51 -0
  260. package/dist/src/components/common/LeaveFormConfirmation.js.map +1 -0
  261. package/dist/src/components/common/ResourceLink.css +29 -0
  262. package/dist/src/components/common/ResourceLink.js +30 -0
  263. package/dist/src/components/common/ResourceLink.js.map +1 -0
  264. package/dist/src/components/common/ResourceListEmptyState.js +10 -0
  265. package/dist/src/components/common/ResourceListEmptyState.js.map +1 -0
  266. package/dist/src/components/common/WithHelperText.css +3 -0
  267. package/dist/src/components/common/WithHelperText.js +16 -0
  268. package/dist/src/components/common/WithHelperText.js.map +1 -0
  269. package/dist/src/components/common/WithTooltip.js +8 -0
  270. package/dist/src/components/common/WithTooltip.js.map +1 -0
  271. package/dist/src/components/form/CheckboxField.js +29 -0
  272. package/dist/src/components/form/CheckboxField.js.map +1 -0
  273. package/dist/src/components/form/FieldHelperText.js +27 -0
  274. package/dist/src/components/form/FieldHelperText.js.map +1 -0
  275. package/dist/src/components/form/FilterSelect.css +8 -0
  276. package/dist/src/components/form/FilterSelect.js +30 -0
  277. package/dist/src/components/form/FilterSelect.js.map +1 -0
  278. package/dist/src/components/form/FlightCtlActionGroup.css +9 -0
  279. package/dist/src/components/form/FlightCtlActionGroup.js +10 -0
  280. package/dist/src/components/form/FlightCtlActionGroup.js.map +1 -0
  281. package/dist/src/components/form/FlightCtlForm.js +13 -0
  282. package/dist/src/components/form/FlightCtlForm.js.map +1 -0
  283. package/dist/src/components/form/FormSelect.css +8 -0
  284. package/dist/src/components/form/FormSelect.js +50 -0
  285. package/dist/src/components/form/FormSelect.js.map +1 -0
  286. package/dist/src/components/form/LabelsField.js +61 -0
  287. package/dist/src/components/form/LabelsField.js.map +1 -0
  288. package/dist/src/components/form/NameField.js +63 -0
  289. package/dist/src/components/form/NameField.js.map +1 -0
  290. package/dist/src/components/form/RadioField.js +32 -0
  291. package/dist/src/components/form/RadioField.js.map +1 -0
  292. package/dist/src/components/form/RichValidationTextField.js +66 -0
  293. package/dist/src/components/form/RichValidationTextField.js.map +1 -0
  294. package/dist/src/components/form/TextAreaField.js +28 -0
  295. package/dist/src/components/form/TextAreaField.js.map +1 -0
  296. package/dist/src/components/form/TextField.js +29 -0
  297. package/dist/src/components/form/TextField.js.map +1 -0
  298. package/dist/src/components/form/validations.js +286 -0
  299. package/dist/src/components/form/validations.js.map +1 -0
  300. package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceForm.js +36 -0
  301. package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceForm.js.map +1 -0
  302. package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js +43 -0
  303. package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js.map +1 -0
  304. package/dist/src/components/modals/ApproveDeviceModal/DeviceLabelMatch.css +24 -0
  305. package/dist/src/components/modals/ApproveDeviceModal/DeviceLabelMatch.js +62 -0
  306. package/dist/src/components/modals/ApproveDeviceModal/DeviceLabelMatch.js.map +1 -0
  307. package/dist/src/components/modals/CreateRepositoryModal/CreateRepositoryModal.js +14 -0
  308. package/dist/src/components/modals/CreateRepositoryModal/CreateRepositoryModal.js.map +1 -0
  309. package/dist/src/components/modals/DeleteModal/DeleteModal.js +41 -0
  310. package/dist/src/components/modals/DeleteModal/DeleteModal.js.map +1 -0
  311. package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.js +63 -0
  312. package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.js.map +1 -0
  313. package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.css +4 -0
  314. package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.js +126 -0
  315. package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.js.map +1 -0
  316. package/dist/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.js +64 -0
  317. package/dist/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.js.map +1 -0
  318. package/dist/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.js +84 -0
  319. package/dist/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.js.map +1 -0
  320. package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js +94 -0
  321. package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js.map +1 -0
  322. package/dist/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.js +62 -0
  323. package/dist/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.js.map +1 -0
  324. package/dist/src/constants.js +8 -0
  325. package/dist/src/constants.js.map +1 -0
  326. package/dist/src/hooks/useAppContext.js +61 -0
  327. package/dist/src/hooks/useAppContext.js.map +1 -0
  328. package/dist/src/hooks/useDeviceLabelMatch.js +78 -0
  329. package/dist/src/hooks/useDeviceLabelMatch.js.map +1 -0
  330. package/dist/src/hooks/useDocumentTitle.js +17 -0
  331. package/dist/src/hooks/useDocumentTitle.js.map +1 -0
  332. package/dist/src/hooks/useFetch.js +10 -0
  333. package/dist/src/hooks/useFetch.js.map +1 -0
  334. package/dist/src/hooks/useFetchPeriodically.js +75 -0
  335. package/dist/src/hooks/useFetchPeriodically.js.map +1 -0
  336. package/dist/src/hooks/useNavigate.js +65 -0
  337. package/dist/src/hooks/useNavigate.js.map +1 -0
  338. package/dist/src/hooks/useTableSelect.js +45 -0
  339. package/dist/src/hooks/useTableSelect.js.map +1 -0
  340. package/dist/src/hooks/useTableSort.js +38 -0
  341. package/dist/src/hooks/useTableSort.js.map +1 -0
  342. package/dist/src/hooks/useTableTextSearch.js +23 -0
  343. package/dist/src/hooks/useTableTextSearch.js.map +1 -0
  344. package/dist/src/hooks/useTemplateVersion.js +22 -0
  345. package/dist/src/hooks/useTemplateVersion.js.map +1 -0
  346. package/dist/src/hooks/useThemePreferences.js +61 -0
  347. package/dist/src/hooks/useThemePreferences.js.map +1 -0
  348. package/dist/src/hooks/useTranslation.js +12 -0
  349. package/dist/src/hooks/useTranslation.js.map +1 -0
  350. package/dist/src/hooks/useUserPreferences.js +16 -0
  351. package/dist/src/hooks/useUserPreferences.js.map +1 -0
  352. package/dist/src/hooks/useWebSocket.js +69 -0
  353. package/dist/src/hooks/useWebSocket.js.map +1 -0
  354. package/dist/src/setupTests.js +24 -0
  355. package/dist/src/setupTests.js.map +1 -0
  356. package/dist/src/tests/test-utils.js +21 -0
  357. package/dist/src/tests/test-utils.js.map +1 -0
  358. package/dist/src/types/deviceSpec.js +20 -0
  359. package/dist/src/types/deviceSpec.js.map +1 -0
  360. package/dist/src/types/extraTypes.js +20 -0
  361. package/dist/src/types/extraTypes.js.map +1 -0
  362. package/dist/src/types/typeUtils.js +12 -0
  363. package/dist/src/types/typeUtils.js.map +1 -0
  364. package/dist/src/utils/api.js +68 -0
  365. package/dist/src/utils/api.js.map +1 -0
  366. package/dist/src/utils/dates.js +53 -0
  367. package/dist/src/utils/dates.js.map +1 -0
  368. package/dist/src/utils/devices.js +37 -0
  369. package/dist/src/utils/devices.js.map +1 -0
  370. package/dist/src/utils/error.js +25 -0
  371. package/dist/src/utils/error.js.map +1 -0
  372. package/dist/src/utils/labels.js +44 -0
  373. package/dist/src/utils/labels.js.map +1 -0
  374. package/dist/src/utils/metrics.js +48 -0
  375. package/dist/src/utils/metrics.js.map +1 -0
  376. package/dist/src/utils/patch.js +108 -0
  377. package/dist/src/utils/patch.js.map +1 -0
  378. package/dist/src/utils/resource.js +6 -0
  379. package/dist/src/utils/resource.js.map +1 -0
  380. package/dist/src/utils/search.js +14 -0
  381. package/dist/src/utils/search.js.map +1 -0
  382. package/dist/src/utils/sort/device.js +89 -0
  383. package/dist/src/utils/sort/device.js.map +1 -0
  384. package/dist/src/utils/sort/fleet.js +20 -0
  385. package/dist/src/utils/sort/fleet.js.map +1 -0
  386. package/dist/src/utils/sort/generic.js +34 -0
  387. package/dist/src/utils/sort/generic.js.map +1 -0
  388. package/dist/src/utils/sort/repository.js +28 -0
  389. package/dist/src/utils/sort/repository.js.map +1 -0
  390. package/dist/src/utils/sort/resourceSync.js +29 -0
  391. package/dist/src/utils/sort/resourceSync.js.map +1 -0
  392. package/dist/src/utils/status/applications.js +56 -0
  393. package/dist/src/utils/status/applications.js.map +1 -0
  394. package/dist/src/utils/status/common.js +63 -0
  395. package/dist/src/utils/status/common.js.map +1 -0
  396. package/dist/src/utils/status/devices.js +65 -0
  397. package/dist/src/utils/status/devices.js.map +1 -0
  398. package/dist/src/utils/status/enrollmentRequest.js +49 -0
  399. package/dist/src/utils/status/enrollmentRequest.js.map +1 -0
  400. package/dist/src/utils/status/fleet.js +38 -0
  401. package/dist/src/utils/status/fleet.js.map +1 -0
  402. package/dist/src/utils/status/integrity.js +28 -0
  403. package/dist/src/utils/status/integrity.js.map +1 -0
  404. package/dist/src/utils/status/repository.js +88 -0
  405. package/dist/src/utils/status/repository.js.map +1 -0
  406. package/dist/src/utils/status/system.js +29 -0
  407. package/dist/src/utils/status/system.js.map +1 -0
  408. package/package.json +48 -0
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deviceApprovalValidationSchema = exports.deviceSystemdUnitsValidationSchema = exports.validConfigTemplatesSchema = exports.validLabelsSchema = exports.maxLengthString = exports.validKubernetesLabelValue = exports.validKubernetesDnsSubdomain = exports.getInvalidKubernetesLabels = exports.hasUniqueLabelKeys = exports.getKubernetesDnsSubdomainErrors = exports.getKubernetesLabelValueErrors = exports.getDnsSubdomainValidations = exports.getLabelValueValidations = exports.MAX_TARGET_REVISION_LENGTH = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const Yup = tslib_1.__importStar(require("yup"));
6
+ const deviceSpec_1 = require("../../types/deviceSpec");
7
+ const yaml = tslib_1.__importStar(require("js-yaml"));
8
+ const SYSTEMD_PATTERNS_REGEXP = /^[a-z][a-z0-9-_.]*$/;
9
+ const SYSTEMD_UNITS_MAX_PATTERNS = 256;
10
+ // Accepts uppercase characters, and "underscore" symbols
11
+ const K8S_LABEL_VALUE_START_END = /^[a-z0-9A-Z](.*[a-z0-9A-Z])?$/;
12
+ const K8S_LABEL_VALUE_ALLOWED_CHARACTERS = /^[a-z0-9A-Z._-]*$/;
13
+ const K8S_LABEL_VALUE_MAX_LENGTH = 63;
14
+ // Does not accept uppercase characters, nor "underscore" symbols
15
+ const K8S_DNS_SUBDOMAIN_START_END = /^[a-z0-9](.*[a-z0-9])?$/;
16
+ const K8S_DNS_SUBDOMAIN_ALLOWED_CHARACTERS = /^[a-z0-9.-]*$/;
17
+ const K8S_DNS_SUBDOMAIN_VALUE_MAX_LENGTH = 253;
18
+ const absolutePathRegex = /^\/.*$/;
19
+ exports.MAX_TARGET_REVISION_LENGTH = 244;
20
+ const getLabelValueValidations = (t) => [
21
+ { key: 'labelValueStartAndEnd', message: t('Starts and ends with a letter or a number.') },
22
+ {
23
+ key: 'labelValueAllowedChars',
24
+ message: t('Contains only letters, numbers, dashes (-), dots (.), and underscores (_).'),
25
+ },
26
+ {
27
+ key: 'labelValueMaxLength',
28
+ message: t('1-{{ maxCharacters }} characters', { maxCharacters: K8S_LABEL_VALUE_MAX_LENGTH }),
29
+ },
30
+ ];
31
+ exports.getLabelValueValidations = getLabelValueValidations;
32
+ const getDnsSubdomainValidations = (t) => [
33
+ { key: 'dnsSubdomainStartAndEnd', message: t('Starts and ends with a lowercase letter or a number.') },
34
+ {
35
+ key: 'dnsSubdomainAllowedChars',
36
+ message: t('Contains only lowercase letters, numbers, dashes (-), and dots (.).'),
37
+ },
38
+ {
39
+ key: 'dnsSubdomainMaxLength',
40
+ message: t('1-{{ maxCharacters }} characters', { maxCharacters: K8S_DNS_SUBDOMAIN_VALUE_MAX_LENGTH }),
41
+ },
42
+ ];
43
+ exports.getDnsSubdomainValidations = getDnsSubdomainValidations;
44
+ const getKubernetesLabelValueErrors = (labelValue) => {
45
+ const errorKeys = {};
46
+ if (!K8S_LABEL_VALUE_START_END.test(labelValue)) {
47
+ errorKeys.labelValueStartAndEnd = 'failed';
48
+ }
49
+ if (!K8S_LABEL_VALUE_ALLOWED_CHARACTERS.test(labelValue)) {
50
+ errorKeys.labelValueAllowedChars = 'failed';
51
+ }
52
+ if ((labelValue === null || labelValue === void 0 ? void 0 : labelValue.length) > K8S_LABEL_VALUE_MAX_LENGTH) {
53
+ errorKeys.labelValueMaxLength = 'failed';
54
+ }
55
+ return errorKeys;
56
+ };
57
+ exports.getKubernetesLabelValueErrors = getKubernetesLabelValueErrors;
58
+ const getKubernetesDnsSubdomainErrors = (value) => {
59
+ const errorKeys = {};
60
+ if (!K8S_DNS_SUBDOMAIN_START_END.test(value)) {
61
+ errorKeys.dnsSubdomainStartAndEnd = 'failed';
62
+ }
63
+ if (!K8S_DNS_SUBDOMAIN_ALLOWED_CHARACTERS.test(value)) {
64
+ errorKeys.dnsSubdomainAllowedChars = 'failed';
65
+ }
66
+ if ((value === null || value === void 0 ? void 0 : value.length) > K8S_DNS_SUBDOMAIN_VALUE_MAX_LENGTH) {
67
+ errorKeys.dnsSubdomainMaxLength = 'failed';
68
+ }
69
+ return errorKeys;
70
+ };
71
+ exports.getKubernetesDnsSubdomainErrors = getKubernetesDnsSubdomainErrors;
72
+ const hasUniqueLabelKeys = (labels) => {
73
+ const uniqueKeys = new Set(labels.map((label) => label.key));
74
+ return uniqueKeys.size === labels.length;
75
+ };
76
+ exports.hasUniqueLabelKeys = hasUniqueLabelKeys;
77
+ const getInvalidKubernetesLabels = (labels) => {
78
+ return labels.filter((unvalidatedLabel) => {
79
+ const key = unvalidatedLabel.key || '';
80
+ const value = unvalidatedLabel.value || '';
81
+ const keyParts = key.split('/');
82
+ if (keyParts.length > 2) {
83
+ return true;
84
+ }
85
+ // Key prefix validations
86
+ const keyPrefix = keyParts.length === 2 ? keyParts[0] : '';
87
+ if (keyPrefix) {
88
+ if (keyPrefix.length > K8S_DNS_SUBDOMAIN_VALUE_MAX_LENGTH ||
89
+ !K8S_DNS_SUBDOMAIN_START_END.test(keyPrefix) ||
90
+ !K8S_DNS_SUBDOMAIN_ALLOWED_CHARACTERS.test(keyPrefix)) {
91
+ return true;
92
+ }
93
+ }
94
+ // Key name validations
95
+ const keyName = keyPrefix ? keyParts[1] : key;
96
+ if (keyName.length > K8S_LABEL_VALUE_MAX_LENGTH ||
97
+ !K8S_LABEL_VALUE_START_END.test(keyName) ||
98
+ !K8S_LABEL_VALUE_ALLOWED_CHARACTERS.test(keyName)) {
99
+ return true;
100
+ }
101
+ // Value validations
102
+ return value.length === 0
103
+ ? false
104
+ : value.length > K8S_LABEL_VALUE_MAX_LENGTH ||
105
+ !K8S_LABEL_VALUE_START_END.test(value) ||
106
+ !K8S_LABEL_VALUE_ALLOWED_CHARACTERS.test(value);
107
+ });
108
+ };
109
+ exports.getInvalidKubernetesLabels = getInvalidKubernetesLabels;
110
+ const validKubernetesDnsSubdomain = (t, { isRequired, fieldName }) => isRequired
111
+ ? Yup.string()
112
+ .defined(t('{{ fieldName }} is required', { fieldName: fieldName || t('Name') }))
113
+ .test('k8sDnsSubdomainFormat', (value, testContext) => {
114
+ const errorKeys = (0, exports.getKubernetesDnsSubdomainErrors)(value);
115
+ return Object.keys(errorKeys).length > 0
116
+ ? testContext.createError({
117
+ message: errorKeys,
118
+ })
119
+ : true;
120
+ })
121
+ : Yup.string();
122
+ exports.validKubernetesDnsSubdomain = validKubernetesDnsSubdomain;
123
+ const labelValueValidations = (labelValue, testContext) => {
124
+ if (!labelValue) {
125
+ return true;
126
+ }
127
+ const errorKeys = {};
128
+ if (!K8S_LABEL_VALUE_START_END.test(labelValue)) {
129
+ errorKeys.labelValueStartAndEnd = 'failed';
130
+ }
131
+ if (!K8S_LABEL_VALUE_ALLOWED_CHARACTERS.test(labelValue)) {
132
+ errorKeys.labelValueAllowedChars = 'failed';
133
+ }
134
+ if (labelValue.length > K8S_LABEL_VALUE_MAX_LENGTH) {
135
+ errorKeys.labelValueMaxLength = 'failed';
136
+ }
137
+ if (Object.keys(errorKeys).length === 0) {
138
+ return true;
139
+ }
140
+ return testContext.createError({
141
+ message: errorKeys,
142
+ });
143
+ };
144
+ const validKubernetesLabelValue = (t, { isRequired, fieldName }) => isRequired
145
+ ? Yup.string()
146
+ .required(t('{{ fieldName }} is required', { fieldName: fieldName || t('Name') }))
147
+ .test('k8sLabelValueFormat', labelValueValidations)
148
+ : Yup.string().test('k8sLabelValueFormat', labelValueValidations);
149
+ exports.validKubernetesLabelValue = validKubernetesLabelValue;
150
+ const maxLengthString = (t, props) => Yup.string().max(props.maxLength, t('{{ fieldName }} must not exceed {{ maxLength }} characters', props));
151
+ exports.maxLengthString = maxLengthString;
152
+ const validLabelsSchema = (t) => Yup.array()
153
+ .of(Yup.object().shape({
154
+ // We'll define the mandatory key restriction for all labels, not individually
155
+ key: Yup.string(),
156
+ value: Yup.string(),
157
+ }))
158
+ .required()
159
+ .test('missing keys', (labels, testContext) => {
160
+ const missingKeyLabels = labels.filter((label) => !label.key).map((label) => label.value);
161
+ return missingKeyLabels.length > 0
162
+ ? testContext.createError({
163
+ message: t('Label keys are required. Invalid labels: {{invalidLabels}}', {
164
+ invalidLabels: `=${missingKeyLabels.join(', =')}`,
165
+ }),
166
+ })
167
+ : true;
168
+ })
169
+ .test('unique keys', t('Label keys must be unique'), exports.hasUniqueLabelKeys)
170
+ .test('invalid-labels', (labels, testContext) => {
171
+ const invalidLabels = (0, exports.getInvalidKubernetesLabels)(labels);
172
+ return invalidLabels.length > 0
173
+ ? testContext.createError({
174
+ message: t('The following labels are not valid Kubernetes labels: {{invalidLabels}}', {
175
+ invalidLabels: `${invalidLabels
176
+ .map((label) => {
177
+ const suffix = label.value ? `=${label.value}` : '';
178
+ return `${label.key}${suffix}`;
179
+ })
180
+ .join(', ')}`,
181
+ }),
182
+ })
183
+ : true;
184
+ });
185
+ exports.validLabelsSchema = validLabelsSchema;
186
+ const validConfigTemplatesSchema = (t) => Yup.array()
187
+ .test('unique-names', t('Source names must be unique'), (templates) => {
188
+ if (!templates) {
189
+ return true;
190
+ }
191
+ const uniqueNames = new Set(templates.map((template) => template.name));
192
+ return uniqueNames.size === templates.length;
193
+ })
194
+ .of(Yup.lazy((value) => {
195
+ if ((0, deviceSpec_1.isGitConfigTemplate)(value)) {
196
+ return Yup.object().shape({
197
+ type: Yup.string().required(t('Source type is required.')),
198
+ name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
199
+ path: Yup.string().required(t('Path is required.')).matches(absolutePathRegex, t('Path must be absolute.')),
200
+ mountPath: Yup.string()
201
+ .required(t('Mount path is required.'))
202
+ .matches(absolutePathRegex, t('Mount path must be absolute.')),
203
+ repository: Yup.string().required(t('Repository is required.')),
204
+ targetRevision: (0, exports.maxLengthString)(t, {
205
+ maxLength: exports.MAX_TARGET_REVISION_LENGTH,
206
+ fieldName: t('Target revision'),
207
+ }).required(t('Branch/tag/commit is required.')),
208
+ });
209
+ }
210
+ else if ((0, deviceSpec_1.isHttpConfigTemplate)(value)) {
211
+ return Yup.object().shape({
212
+ type: Yup.string().required(t('Source type is required.')),
213
+ name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
214
+ filePath: Yup.string()
215
+ .required(t('File path is required.'))
216
+ .matches(absolutePathRegex, t('Path must be absolute.')),
217
+ suffix: Yup.string(),
218
+ });
219
+ }
220
+ else if ((0, deviceSpec_1.isKubeSecretTemplate)(value)) {
221
+ return Yup.object().shape({
222
+ type: Yup.string().required(t('Source type is required.')),
223
+ name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
224
+ secretName: Yup.string().required(t('Secret name is required.')),
225
+ secretNs: Yup.string().required(t('Secret namespace is required.')),
226
+ mountPath: Yup.string()
227
+ .required(t('Mount path is required.'))
228
+ .matches(absolutePathRegex, t('Mount path must be absolute.')),
229
+ });
230
+ }
231
+ else if ((0, deviceSpec_1.isInlineConfigTemplate)(value)) {
232
+ return Yup.object().shape({
233
+ type: Yup.string().required(t('Source type is required.')),
234
+ name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
235
+ inline: (0, exports.maxLengthString)(t, { fieldName: t('Inline config'), maxLength: 65535 })
236
+ .required(t('Inline config is required.'))
237
+ .test('yaml object', t('Inline config must be a valid yaml object.'), (value) => {
238
+ try {
239
+ const yamlResult = yaml.load(value);
240
+ return typeof yamlResult === 'object';
241
+ }
242
+ catch (err) {
243
+ return false;
244
+ }
245
+ }),
246
+ });
247
+ }
248
+ return Yup.object().shape({
249
+ name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
250
+ type: Yup.string().required(t('Source type is required.')),
251
+ });
252
+ }));
253
+ exports.validConfigTemplatesSchema = validConfigTemplatesSchema;
254
+ const deviceSystemdUnitsValidationSchema = (t) => Yup.object({
255
+ matchPatterns: Yup.array()
256
+ .max(SYSTEMD_UNITS_MAX_PATTERNS, t('The maximum number of systemd units is {{maxSystemUnits}}.', { maxSystemUnits: SYSTEMD_UNITS_MAX_PATTERNS }))
257
+ .of(Yup.string().required('Unit name is required.'))
258
+ .test('invalid patterns', (patterns, testContext) => {
259
+ // TODO analyze https://github.com/systemd/systemd/blob/9cebda59e818cdb89dc1e53ab5bb51b91b3dc3ff/src/basic/unit-name.c#L42
260
+ // and adjust the regular expression and / or the validation to accommodate for it
261
+ const invalidPatterns = (patterns || []).filter((pattern) => {
262
+ return pattern.length > SYSTEMD_UNITS_MAX_PATTERNS || !SYSTEMD_PATTERNS_REGEXP.test(pattern);
263
+ });
264
+ if (invalidPatterns.length === 0) {
265
+ return true;
266
+ }
267
+ return testContext.createError({
268
+ message: t('Invalid systemd unit names: {{invalidPatterns}}', {
269
+ invalidPatterns: invalidPatterns.join(', '),
270
+ }),
271
+ });
272
+ })
273
+ .test('unique patterns', t('Systemd unit names must be unique'), (patterns) => {
274
+ const uniqueKeys = new Set(patterns || []);
275
+ return uniqueKeys.size === ((patterns === null || patterns === void 0 ? void 0 : patterns.length) || 0);
276
+ }),
277
+ });
278
+ exports.deviceSystemdUnitsValidationSchema = deviceSystemdUnitsValidationSchema;
279
+ const deviceApprovalValidationSchema = (t, conf) => Yup.object({
280
+ deviceAlias: conf.isSingleDevice
281
+ ? (0, exports.validKubernetesLabelValue)(t, { isRequired: false, fieldName: t('Alias') })
282
+ : Yup.string().matches(/{{n}}/, t('Device aliases must be unique. Add a number to the template to generate unique aliases.')),
283
+ labels: (0, exports.validLabelsSchema)(t),
284
+ });
285
+ exports.deviceApprovalValidationSchema = deviceApprovalValidationSchema;
286
+ //# sourceMappingURL=validations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validations.js","sourceRoot":"","sources":["../../../../src/components/form/validations.ts"],"names":[],"mappings":";;;;AAAA,iDAA2B;AAG3B,uDAUgC;AAChC,sDAAgC;AAIhC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAEvC,yDAAyD;AACzD,MAAM,yBAAyB,GAAG,+BAA+B,CAAC;AAClE,MAAM,kCAAkC,GAAG,mBAAmB,CAAC;AAC/D,MAAM,0BAA0B,GAAG,EAAE,CAAC;AAEtC,iEAAiE;AACjE,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AAC9D,MAAM,oCAAoC,GAAG,eAAe,CAAC;AAC7D,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAE/C,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACtB,QAAA,0BAA0B,GAAG,GAAG,CAAC;AAEvC,MAAM,wBAAwB,GAAG,CAAC,CAAY,EAAE,EAAE,CAAC;IACxD,EAAE,GAAG,EAAE,uBAAuB,EAAE,OAAO,EAAE,CAAC,CAAC,4CAA4C,CAAC,EAAE;IAC1F;QACE,GAAG,EAAE,wBAAwB;QAC7B,OAAO,EAAE,CAAC,CAAC,4EAA4E,CAAC;KACzF;IACD;QACE,GAAG,EAAE,qBAAqB;QAC1B,OAAO,EAAE,CAAC,CAAC,kCAAkC,EAAE,EAAE,aAAa,EAAE,0BAA0B,EAAE,CAAC;KAC9F;CACF,CAAC;AAVW,QAAA,wBAAwB,4BAUnC;AAEK,MAAM,0BAA0B,GAAG,CAAC,CAAY,EAAE,EAAE,CAAC;IAC1D,EAAE,GAAG,EAAE,yBAAyB,EAAE,OAAO,EAAE,CAAC,CAAC,sDAAsD,CAAC,EAAE;IACtG;QACE,GAAG,EAAE,0BAA0B;QAC/B,OAAO,EAAE,CAAC,CAAC,qEAAqE,CAAC;KAClF;IACD;QACE,GAAG,EAAE,uBAAuB;QAC5B,OAAO,EAAE,CAAC,CAAC,kCAAkC,EAAE,EAAE,aAAa,EAAE,kCAAkC,EAAE,CAAC;KACtG;CACF,CAAC;AAVW,QAAA,0BAA0B,8BAUrC;AAEK,MAAM,6BAA6B,GAAG,CAAC,UAAkB,EAAE,EAAE;IAClE,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,SAAS,CAAC,qBAAqB,GAAG,QAAQ,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,SAAS,CAAC,sBAAsB,GAAG,QAAQ,CAAC;IAC9C,CAAC;IACD,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,IAAG,0BAA0B,EAAE,CAAC;QACpD,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAZW,QAAA,6BAA6B,iCAYxC;AAEK,MAAM,+BAA+B,GAAG,CAAC,KAAa,EAAE,EAAE;IAC/D,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,SAAS,CAAC,uBAAuB,GAAG,QAAQ,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtD,SAAS,CAAC,wBAAwB,GAAG,QAAQ,CAAC;IAChD,CAAC;IACD,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,IAAG,kCAAkC,EAAE,CAAC;QACvD,SAAS,CAAC,qBAAqB,GAAG,QAAQ,CAAC;IAC7C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAZW,QAAA,+BAA+B,mCAY1C;AAEK,MAAM,kBAAkB,GAAG,CAAC,MAA0B,EAAE,EAAE;IAC/D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC;AAC3C,CAAC,CAAC;AAHW,QAAA,kBAAkB,sBAG7B;AAEK,MAAM,0BAA0B,GAAG,CAAC,MAA0B,EAAE,EAAE;IACvE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,gBAAgB,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,IAAI,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC;QAE3C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,IAAI,SAAS,EAAE,CAAC;YACd,IACE,SAAS,CAAC,MAAM,GAAG,kCAAkC;gBACrD,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC5C,CAAC,oCAAoC,CAAC,IAAI,CAAC,SAAS,CAAC,EACrD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,IACE,OAAO,CAAC,MAAM,GAAG,0BAA0B;YAC3C,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;YACxC,CAAC,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,EACjD,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,oBAAoB;QACpB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;YACvB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,0BAA0B;gBACvC,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC;gBACtC,CAAC,kCAAkC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAvCW,QAAA,0BAA0B,8BAuCrC;AAEK,MAAM,2BAA2B,GAAG,CACzC,CAAY,EACZ,EAAE,UAAU,EAAE,SAAS,EAA+C,EACtE,EAAE,CACF,UAAU;IACR,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;SACT,OAAO,CAAC,CAAC,CAAC,6BAA6B,EAAE,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAChF,IAAI,CAAC,uBAAuB,EAAE,CAAC,KAAa,EAAE,WAAW,EAAE,EAAE;QAC5D,MAAM,SAAS,GAAG,IAAA,uCAA+B,EAAC,KAAK,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;YACtC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC;gBACtB,OAAO,EAAE,SAAS;aACnB,CAAC;YACJ,CAAC,CAAC,IAAI,CAAC;IACX,CAAC,CAAC;IACN,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;AAfN,QAAA,2BAA2B,+BAerB;AAEnB,MAAM,qBAAqB,GAAG,CAAC,UAA8B,EAAE,WAA4B,EAAE,EAAE;IAC7F,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAoC,EAAE,CAAC;IACtD,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAChD,SAAS,CAAC,qBAAqB,GAAG,QAAQ,CAAC;IAC7C,CAAC;IACD,IAAI,CAAC,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACzD,SAAS,CAAC,sBAAsB,GAAG,QAAQ,CAAC;IAC9C,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,GAAG,0BAA0B,EAAE,CAAC;QACnD,SAAS,CAAC,mBAAmB,GAAG,QAAQ,CAAC;IAC3C,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,WAAW,CAAC,WAAW,CAAC;QAC7B,OAAO,EAAE,SAAS;KACnB,CAAC,CAAC;AACL,CAAC,CAAC;AAEK,MAAM,yBAAyB,GAAG,CACvC,CAAY,EACZ,EAAE,UAAU,EAAE,SAAS,EAA+C,EACtE,EAAE,CACF,UAAU;IACR,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE;SACT,QAAQ,CAAC,CAAC,CAAC,6BAA6B,EAAE,EAAE,SAAS,EAAE,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACjF,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IACvD,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,qBAAqB,EAAE,qBAAqB,CAAC,CAAC;AARzD,QAAA,yBAAyB,6BAQgC;AAE/D,MAAM,eAAe,GAAG,CAAC,CAAY,EAAE,KAA+C,EAAE,EAAE,CAC/F,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,4DAA4D,EAAE,KAAK,CAAC,CAAC,CAAC;AAD/F,QAAA,eAAe,mBACgF;AAErG,MAAM,iBAAiB,GAAG,CAAC,CAAY,EAAE,EAAE,CAChD,GAAG,CAAC,KAAK,EAAE;KACR,EAAE,CACD,GAAG,CAAC,MAAM,EAAoB,CAAC,KAAK,CAAC;IACnC,8EAA8E;IAC9E,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;CACpB,CAAC,CACH;KACA,QAAQ,EAAE;KACV,IAAI,CAAC,cAAc,EAAE,CAAC,MAA0B,EAAE,WAAW,EAAE,EAAE;IAChE,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1F,OAAO,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAChC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,4DAA4D,EAAE;gBACvE,aAAa,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;aAClD,CAAC;SACH,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC;KACD,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,2BAA2B,CAAC,EAAE,0BAAkB,CAAC;KACvE,IAAI,CAAC,gBAAgB,EAAE,CAAC,MAA0B,EAAE,WAAW,EAAE,EAAE;IAClE,MAAM,aAAa,GAAG,IAAA,kCAA0B,EAAC,MAAM,CAAC,CAAC;IAEzD,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC;QAC7B,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC;YACtB,OAAO,EAAE,CAAC,CAAC,yEAAyE,EAAE;gBACpF,aAAa,EAAE,GAAG,aAAa;qBAC5B,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC;gBACjC,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,EAAE;aAChB,CAAC;SACH,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;AACX,CAAC,CAAC,CAAC;AApCM,QAAA,iBAAiB,qBAoCvB;AAEA,MAAM,0BAA0B,GAAG,CAAC,CAAY,EAAE,EAAE,CACzD,GAAG,CAAC,KAAK,EAAE;KACR,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,6BAA6B,CAAC,EAAE,CAAC,SAA2C,EAAE,EAAE;IACtG,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,OAAO,WAAW,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,CAAC;AAC/C,CAAC,CAAC;KACD,EAAE,CACD,GAAG,CAAC,IAAI,CAAC,CAAC,KAAyB,EAAE,EAAE;IACrC,IAAI,IAAA,gCAAmB,EAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,GAAG,CAAC,MAAM,EAAqB,CAAC,KAAK,CAAC;YAC3C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;YAC1D,IAAI,EAAE,IAAA,mCAA2B,EAAC,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC1D,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC;YAC3G,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;iBACpB,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;iBACtC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,8BAA8B,CAAC,CAAC;YAChE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;YAC/D,cAAc,EAAE,IAAA,uBAAe,EAAC,CAAC,EAAE;gBACjC,SAAS,EAAE,kCAA0B;gBACrC,SAAS,EAAE,CAAC,CAAC,iBAAiB,CAAC;aAChC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,IAAA,iCAAoB,EAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC,MAAM,EAAsB,CAAC,KAAK,CAAC;YAC5C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;YAC1D,IAAI,EAAE,IAAA,mCAA2B,EAAC,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC1D,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;iBACnB,QAAQ,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC;iBACrC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,wBAAwB,CAAC,CAAC;YAC1D,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;SACrB,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,IAAA,iCAAoB,EAAC,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,CAAC,MAAM,EAAsB,CAAC,KAAK,CAAC;YAC5C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;YAC1D,IAAI,EAAE,IAAA,mCAA2B,EAAC,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC1D,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;YAChE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;YACnE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE;iBACpB,QAAQ,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC;iBACtC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC,8BAA8B,CAAC,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,IAAA,mCAAsB,EAAC,KAAK,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,CAAC,MAAM,EAAwB,CAAC,KAAK,CAAC;YAC9C,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;YAC1D,IAAI,EAAE,IAAA,mCAA2B,EAAC,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAC1D,MAAM,EAAE,IAAA,uBAAe,EAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;iBAC5E,QAAQ,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC;iBACzC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,4CAA4C,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC9E,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACpC,OAAO,OAAO,UAAU,KAAK,QAAQ,CAAC;gBACxC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC,CAAC;SACL,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC,MAAM,EAAwB,CAAC,KAAK,CAAC;QAC9C,IAAI,EAAE,IAAA,mCAA2B,EAAC,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC1D,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;KAC3D,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC;AAlEO,QAAA,0BAA0B,8BAkEjC;AAEC,MAAM,kCAAkC,GAAG,CAAC,CAAY,EAAE,EAAE,CACjE,GAAG,CAAC,MAAM,CAAC;IACT,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE;SACvB,GAAG,CACF,0BAA0B,EAC1B,CAAC,CAAC,4DAA4D,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAChH;SACA,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAC;SACnD,IAAI,CAAC,kBAAkB,EAAE,CAAC,QAA8B,EAAE,WAAW,EAAE,EAAE;QACxE,0HAA0H;QAC1H,kFAAkF;QAClF,MAAM,eAAe,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1D,OAAO,OAAO,CAAC,MAAM,GAAG,0BAA0B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;QACH,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,WAAW,CAAC,WAAW,CAAC;YAC7B,OAAO,EAAE,CAAC,CAAC,iDAAiD,EAAE;gBAC5D,eAAe,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;aAC5C,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC;SACD,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,mCAAmC,CAAC,EAAE,CAAC,QAA8B,EAAE,EAAE;QAClG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC3C,OAAO,UAAU,CAAC,IAAI,KAAK,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,MAAM,KAAI,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC;CACL,CAAC,CAAC;AA3BQ,QAAA,kCAAkC,sCA2B1C;AAEE,MAAM,8BAA8B,GAAG,CAAC,CAAY,EAAE,IAAiC,EAAE,EAAE,CAChG,GAAG,CAAC,MAAM,CAAC;IACT,WAAW,EAAE,IAAI,CAAC,cAAc;QAC9B,CAAC,CAAC,IAAA,iCAAyB,EAAC,CAAC,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAClB,OAAO,EACP,CAAC,CAAC,yFAAyF,CAAC,CAC7F;IACL,MAAM,EAAE,IAAA,yBAAiB,EAAC,CAAC,CAAC;CAC7B,CAAC,CAAC;AATQ,QAAA,8BAA8B,kCAStC"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const React = tslib_1.__importStar(require("react"));
5
+ const formik_1 = require("formik");
6
+ const react_core_1 = require("@patternfly/react-core");
7
+ const RichValidationTextField_1 = tslib_1.__importDefault(require("../../form/RichValidationTextField"));
8
+ const LabelsField_1 = tslib_1.__importDefault(require("../../form/LabelsField"));
9
+ const validations_1 = require("../../form/validations");
10
+ const FlightCtlActionGroup_1 = tslib_1.__importDefault(require("../../form/FlightCtlActionGroup"));
11
+ const FlightCtlForm_1 = tslib_1.__importDefault(require("../../form/FlightCtlForm"));
12
+ const useTranslation_1 = require("../../../hooks/useTranslation");
13
+ const useDeviceLabelMatch_1 = tslib_1.__importDefault(require("../../../hooks/useDeviceLabelMatch"));
14
+ const ResourceLink_1 = tslib_1.__importDefault(require("../../common/ResourceLink"));
15
+ const DeviceLabelMatch_1 = tslib_1.__importDefault(require("./DeviceLabelMatch"));
16
+ const ApproveDeviceForm = ({ enrollmentRequest, onClose, error, children }) => {
17
+ const { t } = (0, useTranslation_1.useTranslation)();
18
+ const { submitForm, isSubmitting, errors: formErrors } = (0, formik_1.useFormikContext)();
19
+ const disableSubmit = Object.keys(formErrors).length > 0;
20
+ const [matchLabelsOnChange, matchStatus] = (0, useDeviceLabelMatch_1.default)();
21
+ return (React.createElement(FlightCtlForm_1.default, null,
22
+ React.createElement(RichValidationTextField_1.default, { fieldName: "deviceAlias", "aria-label": t('Alias'), validations: (0, validations_1.getLabelValueValidations)(t) }),
23
+ enrollmentRequest && (React.createElement(react_core_1.FormGroup, { label: t('Name'), "aria-label": t('Name') },
24
+ React.createElement(ResourceLink_1.default, { id: enrollmentRequest.metadata.name, variant: "full" }))),
25
+ React.createElement(react_core_1.FormGroup, { label: t('Labels') },
26
+ React.createElement(LabelsField_1.default, { name: "labels", onChangeCallback: matchLabelsOnChange })),
27
+ React.createElement(react_core_1.FormGroup, { label: t('Fleet name') },
28
+ React.createElement(DeviceLabelMatch_1.default, { matchStatus: matchStatus })),
29
+ children,
30
+ error && React.createElement(react_core_1.Alert, { isInline: true, title: error, variant: "danger" }),
31
+ React.createElement(FlightCtlActionGroup_1.default, null,
32
+ React.createElement(react_core_1.Button, { key: "confirm", variant: "primary", onClick: submitForm, isDisabled: disableSubmit || isSubmitting, isLoading: isSubmitting }, t('Approve')),
33
+ React.createElement(react_core_1.Button, { key: "cancel", variant: "link", onClick: () => onClose(), isDisabled: isSubmitting }, t('Cancel')))));
34
+ };
35
+ exports.default = ApproveDeviceForm;
36
+ //# sourceMappingURL=ApproveDeviceForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApproveDeviceForm.js","sourceRoot":"","sources":["../../../../../src/components/modals/ApproveDeviceModal/ApproveDeviceForm.tsx"],"names":[],"mappings":";;;AAAA,qDAA+B;AAC/B,mCAA0C;AAC1C,uDAAkE;AAGlE,yGAAyE;AACzE,iFAAiD;AACjD,wDAAkE;AAClE,mGAAmE;AACnE,qFAAqD;AAErD,kEAA+D;AAC/D,qGAAqE;AACrE,qFAAqD;AACrD,kFAAkD;AAclD,MAAM,iBAAiB,GAAqC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9G,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,yBAAgB,GAA2B,CAAC;IAErG,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACzD,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,GAAG,IAAA,6BAAmB,GAAE,CAAC;IAEjE,OAAO,CACL,oBAAC,uBAAa;QACZ,oBAAC,iCAAuB,IACtB,SAAS,EAAC,aAAa,gBACX,CAAC,CAAC,OAAO,CAAC,EACtB,WAAW,EAAE,IAAA,sCAAwB,EAAC,CAAC,CAAC,GACxC;QACD,iBAAiB,IAAI,CACpB,oBAAC,sBAAS,IAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAc,CAAC,CAAC,MAAM,CAAC;YAChD,oBAAC,sBAAY,IAAC,EAAE,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAc,EAAE,OAAO,EAAC,MAAM,GAAG,CACpE,CACb;QACD,oBAAC,sBAAS,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC;YAC3B,oBAAC,qBAAW,IAAC,IAAI,EAAC,QAAQ,EAAC,gBAAgB,EAAE,mBAAmB,GAAI,CAC1D;QACZ,oBAAC,sBAAS,IAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC;YAC/B,oBAAC,0BAAgB,IAAC,WAAW,EAAE,WAAW,GAAI,CACpC;QACX,QAAQ;QACR,KAAK,IAAI,oBAAC,kBAAK,IAAC,QAAQ,QAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAC,QAAQ,GAAG;QAC3D,oBAAC,8BAAoB;YACnB,oBAAC,mBAAM,IACL,GAAG,EAAC,SAAS,EACb,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,aAAa,IAAI,YAAY,EACzC,SAAS,EAAE,YAAY,IAEtB,CAAC,CAAC,SAAS,CAAC,CACN;YACT,oBAAC,mBAAM,IAAC,GAAG,EAAC,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,YAAY,IACnF,CAAC,CAAC,QAAQ,CAAC,CACL,CACY,CACT,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const React = tslib_1.__importStar(require("react"));
5
+ const react_core_1 = require("@patternfly/react-core");
6
+ const formik_1 = require("formik");
7
+ const useFetch_1 = require("../../../hooks/useFetch");
8
+ const error_1 = require("../../../utils/error");
9
+ const ApproveDeviceForm_1 = tslib_1.__importDefault(require("./ApproveDeviceForm"));
10
+ const enrollmentRequest_1 = require("../../../utils/status/enrollmentRequest");
11
+ const useTranslation_1 = require("../../../hooks/useTranslation");
12
+ const validations_1 = require("../../form/validations");
13
+ const labels_1 = require("../../../utils/labels");
14
+ const useAppContext_1 = require("../../../hooks/useAppContext");
15
+ const DeviceEnrollmentModal = ({ enrollmentRequest, onClose }) => {
16
+ const { t } = (0, useTranslation_1.useTranslation)();
17
+ const { post } = (0, useFetch_1.useFetch)();
18
+ const [error, setError] = React.useState();
19
+ const { user } = (0, useAppContext_1.useAppContext)();
20
+ return (React.createElement(formik_1.Formik, { initialValues: {
21
+ labels: (0, labels_1.fromAPILabel)(enrollmentRequest.spec.labels || {}, { isDefault: true }),
22
+ deviceAlias: '',
23
+ }, validationSchema: (0, validations_1.deviceApprovalValidationSchema)(t, { isSingleDevice: true }), onSubmit: ({ labels, deviceAlias }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
24
+ setError(undefined);
25
+ const deviceLabels = (0, labels_1.toAPILabel)(labels);
26
+ if (deviceAlias) {
27
+ deviceLabels.alias = deviceAlias;
28
+ }
29
+ try {
30
+ yield post(`enrollmentrequests/${enrollmentRequest.metadata.name}/approval`, {
31
+ approved: true,
32
+ labels: deviceLabels,
33
+ approvedBy: user,
34
+ });
35
+ onClose(true);
36
+ }
37
+ catch (e) {
38
+ setError((0, error_1.getErrorMessage)(e));
39
+ }
40
+ }) }, ({ isSubmitting }) => (React.createElement(react_core_1.Modal, { title: t('Device enrollment request'), isOpen: true, onClose: () => !isSubmitting && onClose(), variant: "small" }, (0, enrollmentRequest_1.getApprovalStatus)(enrollmentRequest) !== enrollmentRequest_1.EnrollmentRequestStatus.Approved ? (React.createElement(ApproveDeviceForm_1.default, { enrollmentRequest: enrollmentRequest, onClose: onClose, error: error })) : (React.createElement(react_core_1.Alert, { isInline: true, variant: "info", title: t('Enrollment request is already approved.') }))))));
41
+ };
42
+ exports.default = DeviceEnrollmentModal;
43
+ //# sourceMappingURL=ApproveDeviceModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApproveDeviceModal.js","sourceRoot":"","sources":["../../../../../src/components/modals/ApproveDeviceModal/ApproveDeviceModal.tsx"],"names":[],"mappings":";;;AAAA,qDAA+B;AAE/B,uDAAsD;AACtD,mCAAgC;AAEhC,sDAAmD;AACnD,gDAAuD;AACvD,oFAAyG;AACzG,+EAGiD;AACjD,kEAA+D;AAC/D,wDAAwE;AAExE,kDAAiE;AACjE,gEAA6D;AAI7D,MAAM,qBAAqB,GAAyC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,EAAE;IACrG,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACnD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,6BAAa,GAAE,CAAC;IACjC,OAAO,CACL,oBAAC,eAAM,IACL,aAAa,EAAE;YACb,MAAM,EAAE,IAAA,qBAAY,EAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC9E,WAAW,EAAE,EAAE;SAChB,EACD,gBAAgB,EAAE,IAAA,4CAA8B,EAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAC7E,QAAQ,EAAE,CAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE;YAC1C,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,MAAM,YAAY,GAAwC,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;YAC7E,IAAI,WAAW,EAAE,CAAC;gBAChB,YAAY,CAAC,KAAK,GAAG,WAAW,CAAC;YACnC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,CAA4B,sBAAsB,iBAAiB,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE;oBACtG,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,IAAA,uBAAe,EAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAA,IAEA,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CACrB,oBAAC,kBAAK,IAAC,KAAK,EAAE,CAAC,CAAC,2BAA2B,CAAC,EAAE,MAAM,QAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,OAAO,EAAE,EAAE,OAAO,EAAC,OAAO,IAC5G,IAAA,qCAAiB,EAAC,iBAAiB,CAAC,KAAK,2CAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC/E,oBAAC,2BAAiB,IAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAI,CAC5F,CAAC,CAAC,CAAC,CACF,oBAAC,kBAAK,IAAC,QAAQ,QAAC,OAAO,EAAC,MAAM,EAAC,KAAK,EAAE,CAAC,CAAC,yCAAyC,CAAC,GAAI,CACvF,CACK,CACT,CACM,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,qBAAqB,CAAC"}
@@ -0,0 +1,24 @@
1
+ /* Style to get the appearance of a disabled Input with messages spanning multiple lines */
2
+ .fctl-device-label-match {
3
+ display: flex;
4
+ align-items: center;
5
+ background-color: var(--pf-v5-global--disabled-color--300);
6
+ padding: 0.5rem;
7
+ }
8
+
9
+ .fctl-device-label-match__icon {
10
+ margin-right: 0.5rem;
11
+ }
12
+
13
+ .fctl-device-label-match__placeholder {
14
+ color: var(--pf-v5-global--disabled-color--100);
15
+ }
16
+
17
+ /* Dark theme variations */
18
+ .pf-v5-theme-dark .fctl-device-label-match {
19
+ background-color: var(--pf-v5-global--disabled-color--200);
20
+ }
21
+
22
+ .pf-v5-theme-dark .fctl-device-label-match__placeholder {
23
+ color: var(--pf-v5-global--Color--light-100);
24
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeviceLabelMatch = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const React = tslib_1.__importStar(require("react"));
6
+ const react_core_1 = require("@patternfly/react-core");
7
+ const check_circle_icon_1 = require("@patternfly/react-icons/dist/js/icons/check-circle-icon");
8
+ const exclamation_triangle_icon_1 = require("@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon");
9
+ const exclamation_circle_icon_1 = require("@patternfly/react-icons/dist/js/icons/exclamation-circle-icon");
10
+ const useTranslation_1 = require("../../../hooks/useTranslation");
11
+ require("./DeviceLabelMatch.css");
12
+ const DeviceLabelMatchContent = ({ iconStatus, text, isPlaceholder, }) => {
13
+ let icon;
14
+ switch (iconStatus) {
15
+ case 'warning':
16
+ icon = (React.createElement(react_core_1.Icon, { status: "warning" },
17
+ React.createElement(exclamation_triangle_icon_1.ExclamationTriangleIcon, null)));
18
+ break;
19
+ case 'danger':
20
+ icon = (React.createElement(react_core_1.Icon, { status: "danger" },
21
+ React.createElement(exclamation_circle_icon_1.ExclamationCircleIcon, null)));
22
+ break;
23
+ case 'success':
24
+ icon = (React.createElement(react_core_1.Icon, { status: "success" },
25
+ React.createElement(check_circle_icon_1.CheckCircleIcon, null)));
26
+ break;
27
+ case 'loader':
28
+ icon = React.createElement(react_core_1.Spinner, { size: "sm" });
29
+ break;
30
+ }
31
+ return (React.createElement("div", { className: "fctl-device-label-match" },
32
+ icon && React.createElement("span", { className: "fctl-device-label-match__icon" }, icon),
33
+ React.createElement("span", { className: isPlaceholder ? 'fctl-device-label-match__placeholder' : '' }, text)));
34
+ };
35
+ const DeviceLabelMatch = ({ matchStatus }) => {
36
+ const { t } = (0, useTranslation_1.useTranslation)();
37
+ switch (matchStatus.status) {
38
+ case 'unchecked':
39
+ return React.createElement(DeviceLabelMatchContent, { text: t('Add labels to select a fleet.'), isPlaceholder: true });
40
+ case 'unchecked--invalid':
41
+ return (React.createElement(DeviceLabelMatchContent, { iconStatus: "warning", text: t('Fleet label match cannot cannot be evaluated when there are invalid labels.'), isPlaceholder: true }));
42
+ case 'checking':
43
+ return React.createElement(DeviceLabelMatchContent, { iconStatus: "loader" });
44
+ case 'checked--unique':
45
+ return (React.createElement(DeviceLabelMatchContent, { iconStatus: "success",
46
+ /* The matching fleet's name */
47
+ text: matchStatus.detail }));
48
+ case 'checked--empty':
49
+ return React.createElement(DeviceLabelMatchContent, { iconStatus: "warning", text: t('No fleet is matching the selected labels.') });
50
+ case 'checked--multiple':
51
+ return (React.createElement(DeviceLabelMatchContent, { iconStatus: "danger", text: t("More than one fleet is matching the selected labels. The device will ignore the fleets' configurations.") }));
52
+ case 'checked--error': {
53
+ const text = t('Check for matching fleet(s) failed. {{errorMessage}}', {
54
+ errorMessage: matchStatus.detail || t('Unknown error'),
55
+ });
56
+ return React.createElement(DeviceLabelMatchContent, { iconStatus: "danger", text: text });
57
+ }
58
+ }
59
+ };
60
+ exports.DeviceLabelMatch = DeviceLabelMatch;
61
+ exports.default = exports.DeviceLabelMatch;
62
+ //# sourceMappingURL=DeviceLabelMatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeviceLabelMatch.js","sourceRoot":"","sources":["../../../../../src/components/modals/ApproveDeviceModal/DeviceLabelMatch.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,uDAAuD;AACvD,+FAA0F;AAC1F,+GAA0G;AAC1G,2GAAsG;AAEtG,kEAA+D;AAG/D,kCAAgC;AAEhC,MAAM,uBAAuB,GAAG,CAAC,EAC/B,UAAU,EACV,IAAI,EACJ,aAAa,GAKd,EAAE,EAAE;IACH,IAAI,IAAqB,CAAC;IAC1B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,IAAI,GAAG,CACL,oBAAC,iBAAI,IAAC,MAAM,EAAC,SAAS;gBACpB,oBAAC,mDAAuB,OAAG,CACtB,CACR,CAAC;YACF,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,GAAG,CACL,oBAAC,iBAAI,IAAC,MAAM,EAAC,QAAQ;gBACnB,oBAAC,+CAAqB,OAAG,CACpB,CACR,CAAC;YACF,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,GAAG,CACL,oBAAC,iBAAI,IAAC,MAAM,EAAC,SAAS;gBACpB,oBAAC,mCAAe,OAAG,CACd,CACR,CAAC;YACF,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,GAAG,oBAAC,oBAAO,IAAC,IAAI,EAAC,IAAI,GAAG,CAAC;YAC7B,MAAM;IACV,CAAC;IAED,OAAO,CACL,6BAAK,SAAS,EAAC,yBAAyB;QACrC,IAAI,IAAI,8BAAM,SAAS,EAAC,+BAA+B,IAAE,IAAI,CAAQ;QACtE,8BAAM,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE,IAAG,IAAI,CAAQ,CACvF,CACP,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,EAAE,WAAW,EAAsC,EAAE,EAAE;IACtF,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAE/B,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,WAAW;YACd,OAAO,oBAAC,uBAAuB,IAAC,IAAI,EAAE,CAAC,CAAC,+BAA+B,CAAC,EAAE,aAAa,SAAG,CAAC;QAC7F,KAAK,oBAAoB;YACvB,OAAO,CACL,oBAAC,uBAAuB,IACtB,UAAU,EAAC,SAAS,EACpB,IAAI,EAAE,CAAC,CAAC,6EAA6E,CAAC,EACtF,aAAa,SACb,CACH,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,oBAAC,uBAAuB,IAAC,UAAU,EAAC,QAAQ,GAAG,CAAC;QACzD,KAAK,iBAAiB;YACpB,OAAO,CACL,oBAAC,uBAAuB,IACtB,UAAU,EAAC,SAAS;gBACpB,+BAA+B;gBAC/B,IAAI,EAAE,WAAW,CAAC,MAAM,GACxB,CACH,CAAC;QACJ,KAAK,gBAAgB;YACnB,OAAO,oBAAC,uBAAuB,IAAC,UAAU,EAAC,SAAS,EAAC,IAAI,EAAE,CAAC,CAAC,2CAA2C,CAAC,GAAI,CAAC;QAChH,KAAK,mBAAmB;YACtB,OAAO,CACL,oBAAC,uBAAuB,IACtB,UAAU,EAAC,QAAQ,EACnB,IAAI,EAAE,CAAC,CACL,yGAAyG,CAC1G,GACD,CACH,CAAC;QACJ,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,CAAC,CAAC,sDAAsD,EAAE;gBACrE,YAAY,EAAE,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,eAAe,CAAC;aACvD,CAAC,CAAC;YACH,OAAO,oBAAC,uBAAuB,IAAC,UAAU,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,GAAI,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AA1CW,QAAA,gBAAgB,oBA0C3B;AAEF,kBAAe,wBAAgB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const React = tslib_1.__importStar(require("react"));
5
+ const react_core_1 = require("@patternfly/react-core");
6
+ const useTranslation_1 = require("../../../hooks/useTranslation");
7
+ const CreateRepositoryForm_1 = tslib_1.__importDefault(require("../../Repository/CreateRepository/CreateRepositoryForm"));
8
+ const CreateRepositoryModal = ({ options, onClose, onSuccess }) => {
9
+ const { t } = (0, useTranslation_1.useTranslation)();
10
+ return (React.createElement(react_core_1.Modal, { variant: "medium", isOpen: true, title: t('Create repository'), showClose: false },
11
+ React.createElement(CreateRepositoryForm_1.default, { onClose: onClose, onSuccess: onSuccess, options: options })));
12
+ };
13
+ exports.default = CreateRepositoryModal;
14
+ //# sourceMappingURL=CreateRepositoryModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CreateRepositoryModal.js","sourceRoot":"","sources":["../../../../../src/components/modals/CreateRepositoryModal/CreateRepositoryModal.tsx"],"names":[],"mappings":";;;AAAA,qDAA+B;AAC/B,uDAA+C;AAG/C,kEAA+D;AAC/D,0HAEgE;AAQhE,MAAM,qBAAqB,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAA8B,EAAE,EAAE;IAC5F,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAC/B,OAAO,CACL,oBAAC,kBAAK,IAAC,OAAO,EAAC,QAAQ,EAAC,MAAM,QAAC,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,KAAK;QAC5E,oBAAC,8BAAoB,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAI,CAC5E,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,qBAAqB,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const error_1 = require("../../../utils/error");
5
+ const react_core_1 = require("@patternfly/react-core");
6
+ const React = tslib_1.__importStar(require("react"));
7
+ const react_i18next_1 = require("react-i18next");
8
+ const useTranslation_1 = require("../../../hooks/useTranslation");
9
+ const DeleteModal = ({ onDelete, onClose, resourceType, resourceName }) => {
10
+ const { t } = (0, useTranslation_1.useTranslation)();
11
+ const [isDeleting, setIsDeleting] = React.useState(false);
12
+ const [error, setError] = React.useState();
13
+ return (React.createElement(react_core_1.Modal, { title: t('Delete {{resourceType}} ?', { resourceType }), isOpen: true, onClose: onClose, variant: "small", titleIconVariant: "warning", actions: [
14
+ React.createElement(react_core_1.Button, { key: "confirm", variant: "danger", isDisabled: isDeleting, isLoading: isDeleting, onClick: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
15
+ setError(undefined);
16
+ try {
17
+ setIsDeleting(true);
18
+ yield onDelete();
19
+ }
20
+ catch (err) {
21
+ setError((0, error_1.getErrorMessage)(err));
22
+ }
23
+ finally {
24
+ setIsDeleting(false);
25
+ }
26
+ }) }, t('Delete {{ resourceType }}', { resourceType })),
27
+ React.createElement(react_core_1.Button, { key: "cancel", variant: "link", onClick: onClose, isDisabled: isDeleting }, t('Cancel')),
28
+ ] },
29
+ React.createElement(react_core_1.Stack, { hasGutter: true },
30
+ React.createElement(react_core_1.StackItem, null,
31
+ React.createElement(react_i18next_1.Trans, { t: t },
32
+ "Are you sure you want to delete ",
33
+ resourceType,
34
+ " ",
35
+ React.createElement("b", null, resourceName),
36
+ "?")),
37
+ error && (React.createElement(react_core_1.StackItem, null,
38
+ React.createElement(react_core_1.Alert, { isInline: true, variant: "danger", title: t('An error occurred') }, error))))));
39
+ };
40
+ exports.default = DeleteModal;
41
+ //# sourceMappingURL=DeleteModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DeleteModal.js","sourceRoot":"","sources":["../../../../../src/components/modals/DeleteModal/DeleteModal.tsx"],"names":[],"mappings":";;;AAAA,gDAAuD;AACvD,uDAAgF;AAChF,qDAA+B;AAC/B,iDAAsC;AACtC,kEAA+D;AAS/D,MAAM,WAAW,GAA+B,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE;IACpG,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACnD,OAAO,CACL,oBAAC,kBAAK,IACJ,KAAK,EAAE,CAAC,CAAC,2BAA2B,EAAE,EAAE,YAAY,EAAE,CAAC,EACvD,MAAM,QACN,OAAO,EAAE,OAAO,EAChB,OAAO,EAAC,OAAO,EACf,gBAAgB,EAAC,SAAS,EAC1B,OAAO,EAAE;YACP,oBAAC,mBAAM,IACL,GAAG,EAAC,SAAS,EACb,OAAO,EAAC,QAAQ,EAChB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,GAAS,EAAE;oBAClB,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACpB,IAAI,CAAC;wBACH,aAAa,CAAC,IAAI,CAAC,CAAC;wBACpB,MAAM,QAAQ,EAAE,CAAC;oBACnB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,QAAQ,CAAC,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC,CAAC;oBACjC,CAAC;4BAAS,CAAC;wBACT,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAA,IAEA,CAAC,CAAC,2BAA2B,EAAE,EAAE,YAAY,EAAE,CAAC,CAC1C;YACT,oBAAC,mBAAM,IAAC,GAAG,EAAC,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,IACzE,CAAC,CAAC,QAAQ,CAAC,CACL;SACV;QAED,oBAAC,kBAAK,IAAC,SAAS;YACd,oBAAC,sBAAS;gBACR,oBAAC,qBAAK,IAAC,CAAC,EAAE,CAAC;;oBACwB,YAAY;;oBAAE,+BAAI,YAAY,CAAK;wBAC9D,CACE;YACX,KAAK,IAAI,CACR,oBAAC,sBAAS;gBACR,oBAAC,kBAAK,IAAC,QAAQ,QAAC,OAAO,EAAC,QAAQ,EAAC,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAC3D,KAAK,CACA,CACE,CACb,CACK,CACF,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ const React = tslib_1.__importStar(require("react"));
5
+ const formik_1 = require("formik");
6
+ const react_core_1 = require("@patternfly/react-core");
7
+ const Yup = tslib_1.__importStar(require("yup"));
8
+ const debounce_1 = tslib_1.__importDefault(require("lodash/debounce"));
9
+ const LabelsField_1 = tslib_1.__importDefault(require("../../form/LabelsField"));
10
+ const FlightCtlForm_1 = tslib_1.__importDefault(require("../../form/FlightCtlForm"));
11
+ const useFetch_1 = require("../../../hooks/useFetch");
12
+ const useTranslation_1 = require("../../../hooks/useTranslation");
13
+ const labels_1 = require("../../../utils/labels");
14
+ const validations_1 = require("../../form/validations");
15
+ const error_1 = require("../../../utils/error");
16
+ const patch_1 = require("../../../utils/patch");
17
+ const getValidationSchema = (t) => {
18
+ return Yup.object({
19
+ labels: (0, validations_1.validLabelsSchema)(t),
20
+ });
21
+ };
22
+ const delayResponse = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
23
+ const EditLabelsFormContent = ({ isSubmitting, submitForm }) => {
24
+ const { t } = (0, useTranslation_1.useTranslation)();
25
+ const [submitError, setSubmitError] = React.useState();
26
+ const onChangedLabels = (newLabels, hasErrors) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
27
+ setSubmitError(undefined);
28
+ if (!hasErrors) {
29
+ const error = yield submitForm({ labels: newLabels });
30
+ setSubmitError(error);
31
+ }
32
+ });
33
+ // eslint-disable-next-line react-hooks/exhaustive-deps
34
+ const debouncedSubmit = React.useCallback((0, debounce_1.default)(onChangedLabels, 2000), []);
35
+ return (React.createElement(FlightCtlForm_1.default, null,
36
+ React.createElement(react_core_1.FormGroup, { label: t('Device labels') },
37
+ React.createElement(LabelsField_1.default, { name: "labels", addButtonText: isSubmitting ? t('Saving...') : undefined, isFormEditable: !isSubmitting, onChangeCallback: debouncedSubmit })),
38
+ submitError && React.createElement(react_core_1.Alert, { isInline: true, title: submitError, variant: "danger" })));
39
+ };
40
+ const EditLabelsForm = ({ device, onDeviceUpdate }) => {
41
+ const { t } = (0, useTranslation_1.useTranslation)();
42
+ const { patch } = (0, useFetch_1.useFetch)();
43
+ const currentLabels = device.metadata.labels || {};
44
+ return (React.createElement(formik_1.Formik, { initialValues: {
45
+ labels: (0, labels_1.fromAPILabel)(currentLabels),
46
+ }, onSubmit: (values) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
47
+ try {
48
+ const labelsPatch = (0, patch_1.getLabelPatches)('/metadata/labels', currentLabels, values.labels);
49
+ if (labelsPatch.length > 0) {
50
+ yield patch(`devices/${device.metadata.name}`, labelsPatch);
51
+ // The API call is "too" quick, allow the "Saving" button to be briefly seen
52
+ yield delayResponse(150);
53
+ onDeviceUpdate();
54
+ }
55
+ return null;
56
+ }
57
+ catch (e) {
58
+ return (0, error_1.getErrorMessage)(e);
59
+ }
60
+ }), validationSchema: getValidationSchema(t) }, ({ isSubmitting, submitForm }) => React.createElement(EditLabelsFormContent, { isSubmitting: isSubmitting, submitForm: submitForm })));
61
+ };
62
+ exports.default = EditLabelsForm;
63
+ //# sourceMappingURL=EditLabelsForm.js.map