@flightctl/ui-components 0.7.2 → 0.8.0-rc2

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 (410) hide show
  1. package/dist/src/components/DetailsPage/DetailsPageActions.d.ts +1 -1
  2. package/dist/src/components/DetailsPage/DetailsPageActions.d.ts.map +1 -1
  3. package/dist/src/components/DetailsPage/DetailsPageActions.js +1 -1
  4. package/dist/src/components/DetailsPage/DetailsPageActions.js.map +1 -1
  5. package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.d.ts.map +1 -1
  6. package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.js +18 -14
  7. package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.js.map +1 -1
  8. package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.d.ts.map +1 -1
  9. package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js +10 -11
  10. package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js.map +1 -1
  11. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.d.ts.map +1 -1
  12. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js +31 -10
  13. package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js.map +1 -1
  14. package/dist/src/components/Device/DevicesPage/DecommissionedDevicesTable.js +2 -2
  15. package/dist/src/components/Device/DevicesPage/DecommissionedDevicesTable.js.map +1 -1
  16. package/dist/src/components/Device/DevicesPage/EnrolledDevicesTable.js +2 -2
  17. package/dist/src/components/Device/DevicesPage/EnrolledDevicesTable.js.map +1 -1
  18. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.d.ts.map +1 -1
  19. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js +4 -2
  20. package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js.map +1 -1
  21. package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.d.ts.map +1 -1
  22. package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js +30 -5
  23. package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js.map +1 -1
  24. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.d.ts +2 -1
  25. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.d.ts.map +1 -1
  26. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.js +6 -5
  27. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.js.map +1 -1
  28. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.d.ts +3 -2
  29. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.d.ts.map +1 -1
  30. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.js +13 -9
  31. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.js.map +1 -1
  32. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.d.ts +3 -1
  33. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.d.ts.map +1 -1
  34. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.js +20 -17
  35. package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.js.map +1 -1
  36. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.d.ts +2 -1
  37. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.d.ts.map +1 -1
  38. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js +18 -14
  39. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js.map +1 -1
  40. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.d.ts +2 -1
  41. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.d.ts.map +1 -1
  42. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js +20 -15
  43. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js.map +1 -1
  44. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.d.ts +3 -1
  45. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.d.ts.map +1 -1
  46. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.js +34 -20
  47. package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.js.map +1 -1
  48. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.d.ts +2 -1
  49. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.d.ts.map +1 -1
  50. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js +14 -15
  51. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js.map +1 -1
  52. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.d.ts +3 -1
  53. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.d.ts.map +1 -1
  54. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.js +6 -36
  55. package/dist/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.js.map +1 -1
  56. package/dist/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.js +1 -1
  57. package/dist/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.js.map +1 -1
  58. package/dist/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.js +1 -1
  59. package/dist/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.js.map +1 -1
  60. package/dist/src/components/Device/EditDeviceWizard/steps/ReviewUpdatePolicy.js +2 -2
  61. package/dist/src/components/Device/EditDeviceWizard/steps/ReviewUpdatePolicy.js.map +1 -1
  62. package/dist/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.d.ts +4 -2
  63. package/dist/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.d.ts.map +1 -1
  64. package/dist/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.js +19 -1
  65. package/dist/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.js.map +1 -1
  66. package/dist/src/components/Device/EditDeviceWizard/utils.d.ts +2 -16
  67. package/dist/src/components/Device/EditDeviceWizard/utils.d.ts.map +1 -1
  68. package/dist/src/components/Device/EditDeviceWizard/utils.js +3 -3
  69. package/dist/src/components/Device/EditDeviceWizard/utils.js.map +1 -1
  70. package/dist/src/components/Device/SystemdUnitsModal/SystemdUnitsModal.d.ts.map +1 -1
  71. package/dist/src/components/Device/SystemdUnitsModal/SystemdUnitsModal.js +28 -26
  72. package/dist/src/components/Device/SystemdUnitsModal/SystemdUnitsModal.js.map +1 -1
  73. package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.d.ts.map +1 -1
  74. package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js +11 -16
  75. package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js.map +1 -1
  76. package/dist/src/components/Events/EventItem.d.ts +7 -0
  77. package/dist/src/components/Events/EventItem.d.ts.map +1 -0
  78. package/dist/src/components/Events/EventItem.js +25 -0
  79. package/dist/src/components/Events/EventItem.js.map +1 -0
  80. package/dist/src/components/Events/EventsCard.css +5 -0
  81. package/dist/src/components/Events/EventsCard.d.ts +11 -0
  82. package/dist/src/components/Events/EventsCard.d.ts.map +1 -0
  83. package/dist/src/components/Events/EventsCard.js +81 -0
  84. package/dist/src/components/Events/EventsCard.js.map +1 -0
  85. package/dist/src/components/Events/useEvents.d.ts +21 -0
  86. package/dist/src/components/Events/useEvents.d.ts.map +1 -0
  87. package/dist/src/components/Events/useEvents.js +105 -0
  88. package/dist/src/components/Events/useEvents.js.map +1 -0
  89. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.d.ts.map +1 -1
  90. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js +27 -9
  91. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js.map +1 -1
  92. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.d.ts +2 -1
  93. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.d.ts.map +1 -1
  94. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.js +13 -2
  95. package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.js.map +1 -1
  96. package/dist/src/components/Fleet/CreateFleet/fleetSpecUtils.d.ts +3 -33
  97. package/dist/src/components/Fleet/CreateFleet/fleetSpecUtils.d.ts.map +1 -1
  98. package/dist/src/components/Fleet/CreateFleet/fleetSpecUtils.js +7 -21
  99. package/dist/src/components/Fleet/CreateFleet/fleetSpecUtils.js.map +1 -1
  100. package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.d.ts +4 -2
  101. package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.d.ts.map +1 -1
  102. package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js +10 -1
  103. package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js.map +1 -1
  104. package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.d.ts +5 -3
  105. package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.d.ts.map +1 -1
  106. package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.js +4 -4
  107. package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.js.map +1 -1
  108. package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.d.ts.map +1 -1
  109. package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.js +10 -9
  110. package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.js.map +1 -1
  111. package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.d.ts +3 -1
  112. package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.d.ts.map +1 -1
  113. package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.js +8 -86
  114. package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.js.map +1 -1
  115. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.d.ts +3 -1
  116. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.d.ts.map +1 -1
  117. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.js +4 -4
  118. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.js.map +1 -1
  119. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.d.ts +3 -1
  120. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.d.ts.map +1 -1
  121. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.js +16 -13
  122. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.js.map +1 -1
  123. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.d.ts +3 -1
  124. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.d.ts.map +1 -1
  125. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.js +20 -20
  126. package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.js.map +1 -1
  127. package/dist/src/components/Fleet/CreateFleet/utils.d.ts +1 -1
  128. package/dist/src/components/Fleet/CreateFleet/utils.d.ts.map +1 -1
  129. package/dist/src/components/Fleet/CreateFleet/utils.js +37 -23
  130. package/dist/src/components/Fleet/CreateFleet/utils.js.map +1 -1
  131. package/dist/src/components/Fleet/DeleteFleetModal/DeleteFleetModal.d.ts.map +1 -1
  132. package/dist/src/components/Fleet/DeleteFleetModal/DeleteFleetModal.js +20 -16
  133. package/dist/src/components/Fleet/DeleteFleetModal/DeleteFleetModal.js.map +1 -1
  134. package/dist/src/components/Fleet/FleetDetails/FleetDetailsContent.d.ts.map +1 -1
  135. package/dist/src/components/Fleet/FleetDetails/FleetDetailsContent.js +8 -5
  136. package/dist/src/components/Fleet/FleetDetails/FleetDetailsContent.js.map +1 -1
  137. package/dist/src/components/Fleet/FleetDetails/{FleetDetails.d.ts → FleetDetailsPage.d.ts} +1 -1
  138. package/dist/src/components/Fleet/FleetDetails/FleetDetailsPage.d.ts.map +1 -0
  139. package/dist/src/components/Fleet/FleetDetails/{FleetDetails.js → FleetDetailsPage.js} +23 -17
  140. package/dist/src/components/Fleet/FleetDetails/FleetDetailsPage.js.map +1 -0
  141. package/dist/src/components/Fleet/FleetRow.d.ts.map +1 -1
  142. package/dist/src/components/Fleet/FleetRow.js +9 -12
  143. package/dist/src/components/Fleet/FleetRow.js.map +1 -1
  144. package/dist/src/components/Masthead/UserPreferencesModal.d.ts.map +1 -1
  145. package/dist/src/components/Masthead/UserPreferencesModal.js +14 -15
  146. package/dist/src/components/Masthead/UserPreferencesModal.js.map +1 -1
  147. package/dist/src/components/Masthead/UserPreferencesProvider.d.ts +8 -5
  148. package/dist/src/components/Masthead/UserPreferencesProvider.d.ts.map +1 -1
  149. package/dist/src/components/Masthead/UserPreferencesProvider.js +7 -5
  150. package/dist/src/components/Masthead/UserPreferencesProvider.js.map +1 -1
  151. package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.d.ts.map +1 -1
  152. package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js +11 -7
  153. package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js.map +1 -1
  154. package/dist/src/components/Repository/CreateRepository/utils.d.ts.map +1 -1
  155. package/dist/src/components/Repository/CreateRepository/utils.js +2 -3
  156. package/dist/src/components/Repository/CreateRepository/utils.js.map +1 -1
  157. package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.d.ts.map +1 -1
  158. package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.js +25 -24
  159. package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.js.map +1 -1
  160. package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.d.ts.map +1 -1
  161. package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js +22 -8
  162. package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js.map +1 -1
  163. package/dist/src/components/ResourceSync/RepositoryResourceSyncList.d.ts.map +1 -1
  164. package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js +18 -15
  165. package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js.map +1 -1
  166. package/dist/src/components/common/CodeEditor/CodeEditorTheme.d.ts +5 -0
  167. package/dist/src/components/common/CodeEditor/CodeEditorTheme.d.ts.map +1 -0
  168. package/dist/src/components/common/CodeEditor/CodeEditorTheme.js +52 -0
  169. package/dist/src/components/common/CodeEditor/CodeEditorTheme.js.map +1 -0
  170. package/dist/src/components/common/CodeEditor/Shortcut.css +22 -0
  171. package/dist/src/components/common/CodeEditor/Shortcut.d.ts +20 -0
  172. package/dist/src/components/common/CodeEditor/Shortcut.d.ts.map +1 -0
  173. package/dist/src/components/common/CodeEditor/Shortcut.js +46 -0
  174. package/dist/src/components/common/CodeEditor/Shortcut.js.map +1 -0
  175. package/dist/src/components/common/CodeEditor/YamlEditor.css +12 -0
  176. package/dist/src/components/common/CodeEditor/YamlEditor.d.ts +16 -0
  177. package/dist/src/components/common/CodeEditor/YamlEditor.d.ts.map +1 -0
  178. package/dist/src/components/common/CodeEditor/YamlEditor.js +48 -0
  179. package/dist/src/components/common/CodeEditor/YamlEditor.js.map +1 -0
  180. package/dist/src/components/common/CodeEditor/YamlEditorBase.css +3 -0
  181. package/dist/src/components/common/CodeEditor/YamlEditorBase.d.ts +11 -0
  182. package/dist/src/components/common/CodeEditor/YamlEditorBase.d.ts.map +1 -0
  183. package/dist/src/components/common/CodeEditor/YamlEditorBase.js +75 -0
  184. package/dist/src/components/common/CodeEditor/YamlEditorBase.js.map +1 -0
  185. package/dist/src/components/common/CodeEditor/useShortcutPopover.d.ts +3 -0
  186. package/dist/src/components/common/CodeEditor/useShortcutPopover.d.ts.map +1 -0
  187. package/dist/src/components/common/CodeEditor/useShortcutPopover.js +26 -0
  188. package/dist/src/components/common/CodeEditor/useShortcutPopover.js.map +1 -0
  189. package/dist/src/components/common/LabelsView.d.ts +1 -3
  190. package/dist/src/components/common/LabelsView.d.ts.map +1 -1
  191. package/dist/src/components/common/LabelsView.js +2 -4
  192. package/dist/src/components/common/LabelsView.js.map +1 -1
  193. package/dist/src/components/common/LeaveFormConfirmation.d.ts.map +1 -1
  194. package/dist/src/components/common/LeaveFormConfirmation.js +8 -7
  195. package/dist/src/components/common/LeaveFormConfirmation.js.map +1 -1
  196. package/dist/src/components/common/TechPreviewBadge.d.ts.map +1 -1
  197. package/dist/src/components/common/TechPreviewBadge.js +3 -2
  198. package/dist/src/components/common/TechPreviewBadge.js.map +1 -1
  199. package/dist/src/components/form/FlightCtlActionGroup.d.ts +1 -1
  200. package/dist/src/components/form/FlightCtlActionGroup.d.ts.map +1 -1
  201. package/dist/src/components/form/FlightCtlActionGroup.js.map +1 -1
  202. package/dist/src/components/form/FormSelect.d.ts +4 -2
  203. package/dist/src/components/form/FormSelect.d.ts.map +1 -1
  204. package/dist/src/components/form/FormSelect.js +12 -1
  205. package/dist/src/components/form/FormSelect.js.map +1 -1
  206. package/dist/src/components/form/FormSelectTypeahead.d.ts +4 -3
  207. package/dist/src/components/form/FormSelectTypeahead.d.ts.map +1 -1
  208. package/dist/src/components/form/FormSelectTypeahead.js +18 -1
  209. package/dist/src/components/form/FormSelectTypeahead.js.map +1 -1
  210. package/dist/src/components/form/LabelsField.d.ts +4 -3
  211. package/dist/src/components/form/LabelsField.d.ts.map +1 -1
  212. package/dist/src/components/form/LabelsField.js +15 -5
  213. package/dist/src/components/form/LabelsField.js.map +1 -1
  214. package/dist/src/components/form/NameField.d.ts +2 -2
  215. package/dist/src/components/form/NameField.d.ts.map +1 -1
  216. package/dist/src/components/form/NameField.js +14 -4
  217. package/dist/src/components/form/NameField.js.map +1 -1
  218. package/dist/src/components/form/RichValidationTextField.d.ts +2 -2
  219. package/dist/src/components/form/RichValidationTextField.d.ts.map +1 -1
  220. package/dist/src/components/form/RichValidationTextField.js +13 -1
  221. package/dist/src/components/form/RichValidationTextField.js.map +1 -1
  222. package/dist/src/components/form/TextListField.d.ts +4 -2
  223. package/dist/src/components/form/TextListField.d.ts.map +1 -1
  224. package/dist/src/components/form/TextListField.js +13 -3
  225. package/dist/src/components/form/TextListField.js.map +1 -1
  226. package/dist/src/components/form/UploadField.d.ts +3 -2
  227. package/dist/src/components/form/UploadField.d.ts.map +1 -1
  228. package/dist/src/components/form/UploadField.js +10 -1
  229. package/dist/src/components/form/UploadField.js.map +1 -1
  230. package/dist/src/components/form/validations.d.ts +1 -2
  231. package/dist/src/components/form/validations.d.ts.map +1 -1
  232. package/dist/src/components/form/validations.js +1 -4
  233. package/dist/src/components/form/validations.js.map +1 -1
  234. package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.d.ts.map +1 -1
  235. package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js +4 -1
  236. package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js.map +1 -1
  237. package/dist/src/components/modals/CreateRepositoryModal/CreateRepositoryModal.d.ts.map +1 -1
  238. package/dist/src/components/modals/CreateRepositoryModal/CreateRepositoryModal.js +5 -3
  239. package/dist/src/components/modals/CreateRepositoryModal/CreateRepositoryModal.js.map +1 -1
  240. package/dist/src/components/modals/DecommissionModal/DecommissionModal.d.ts.map +1 -1
  241. package/dist/src/components/modals/DecommissionModal/DecommissionModal.js +32 -29
  242. package/dist/src/components/modals/DecommissionModal/DecommissionModal.js.map +1 -1
  243. package/dist/src/components/modals/DeleteModal/DeleteModal.d.ts.map +1 -1
  244. package/dist/src/components/modals/DeleteModal/DeleteModal.js +18 -15
  245. package/dist/src/components/modals/DeleteModal/DeleteModal.js.map +1 -1
  246. package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.d.ts.map +1 -1
  247. package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.js +33 -30
  248. package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.js.map +1 -1
  249. package/dist/src/components/modals/massModals/MassDecommissionDeviceModal/MassDecommissionDeviceModal.d.ts.map +1 -1
  250. package/dist/src/components/modals/massModals/MassDecommissionDeviceModal/MassDecommissionDeviceModal.js +27 -24
  251. package/dist/src/components/modals/massModals/MassDecommissionDeviceModal/MassDecommissionDeviceModal.js.map +1 -1
  252. package/dist/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.d.ts.map +1 -1
  253. package/dist/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.js +26 -23
  254. package/dist/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.js.map +1 -1
  255. package/dist/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.d.ts.map +1 -1
  256. package/dist/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.js +30 -25
  257. package/dist/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.js.map +1 -1
  258. package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.d.ts.map +1 -1
  259. package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js +29 -26
  260. package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js.map +1 -1
  261. package/dist/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.d.ts +1 -1
  262. package/dist/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.d.ts.map +1 -1
  263. package/dist/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.js +28 -25
  264. package/dist/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.js.map +1 -1
  265. package/dist/src/constants.d.ts +2 -1
  266. package/dist/src/constants.d.ts.map +1 -1
  267. package/dist/src/constants.js +3 -1
  268. package/dist/src/constants.js.map +1 -1
  269. package/dist/src/hooks/useAppLinks.d.ts +5 -0
  270. package/dist/src/hooks/useAppLinks.d.ts.map +1 -0
  271. package/dist/src/hooks/useAppLinks.js +45 -0
  272. package/dist/src/hooks/useAppLinks.js.map +1 -0
  273. package/dist/src/{components/EnrollmentRequest/EnrollmentRequestDetails/useEnrollmentRequestSystemInfo.d.ts → hooks/useDeviceSpecSystemInfo.d.ts} +2 -2
  274. package/dist/src/hooks/useDeviceSpecSystemInfo.d.ts.map +1 -0
  275. package/dist/src/{components/EnrollmentRequest/EnrollmentRequestDetails/useEnrollmentRequestSystemInfo.js → hooks/useDeviceSpecSystemInfo.js} +18 -10
  276. package/dist/src/hooks/useDeviceSpecSystemInfo.js.map +1 -0
  277. package/dist/src/hooks/useFetchPeriodically.d.ts +2 -2
  278. package/dist/src/hooks/useFetchPeriodically.d.ts.map +1 -1
  279. package/dist/src/hooks/useFetchPeriodically.js +1 -1
  280. package/dist/src/hooks/useFetchPeriodically.js.map +1 -1
  281. package/dist/src/hooks/useThemePreferences.d.ts +6 -3
  282. package/dist/src/hooks/useThemePreferences.d.ts.map +1 -1
  283. package/dist/src/hooks/useThemePreferences.js +46 -23
  284. package/dist/src/hooks/useThemePreferences.js.map +1 -1
  285. package/dist/src/types/deviceSpec.d.ts +7 -2
  286. package/dist/src/types/deviceSpec.d.ts.map +1 -1
  287. package/dist/src/types/deviceSpec.js +16 -12
  288. package/dist/src/types/deviceSpec.js.map +1 -1
  289. package/dist/src/types/extraTypes.d.ts +3 -2
  290. package/dist/src/types/extraTypes.d.ts.map +1 -1
  291. package/dist/src/types/extraTypes.js.map +1 -1
  292. package/dist/src/utils/dates.d.ts +2 -1
  293. package/dist/src/utils/dates.d.ts.map +1 -1
  294. package/dist/src/utils/dates.js +20 -20
  295. package/dist/src/utils/dates.js.map +1 -1
  296. package/dist/src/utils/patch.d.ts.map +1 -1
  297. package/dist/src/utils/patch.js +2 -1
  298. package/dist/src/utils/patch.js.map +1 -1
  299. package/package.json +6 -2
  300. package/src/components/DetailsPage/DetailsPageActions.tsx +2 -1
  301. package/src/components/Device/AddDeviceModal/AddDeviceModal.tsx +27 -22
  302. package/src/components/Device/DeviceDetails/DeviceDetailsPage.tsx +10 -19
  303. package/src/components/Device/DeviceDetails/DeviceDetailsTab.tsx +65 -21
  304. package/src/components/Device/DevicesPage/DecommissionedDevicesTable.tsx +2 -2
  305. package/src/components/Device/DevicesPage/EnrolledDevicesTable.tsx +2 -2
  306. package/src/components/Device/EditDeviceWizard/EditDeviceWizard.tsx +6 -1
  307. package/src/components/Device/EditDeviceWizard/deviceSpecUtils.ts +29 -5
  308. package/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.tsx +19 -5
  309. package/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.tsx +53 -23
  310. package/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.tsx +68 -53
  311. package/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.tsx +40 -25
  312. package/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.tsx +38 -17
  313. package/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.tsx +81 -38
  314. package/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.tsx +15 -19
  315. package/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.tsx +7 -47
  316. package/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.tsx +1 -1
  317. package/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.tsx +1 -1
  318. package/src/components/Device/EditDeviceWizard/steps/ReviewUpdatePolicy.tsx +2 -2
  319. package/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.tsx +30 -2
  320. package/src/components/Device/EditDeviceWizard/utils.ts +6 -7
  321. package/src/components/Device/SystemdUnitsModal/SystemdUnitsModal.tsx +38 -35
  322. package/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.tsx +8 -19
  323. package/src/components/Events/EventItem.tsx +38 -0
  324. package/src/components/Events/EventsCard.css +5 -0
  325. package/src/components/Events/EventsCard.tsx +157 -0
  326. package/src/components/Events/useEvents.ts +136 -0
  327. package/src/components/Fleet/CreateFleet/CreateFleetWizard.tsx +29 -13
  328. package/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.tsx +25 -10
  329. package/src/components/Fleet/CreateFleet/fleetSpecUtils.ts +9 -23
  330. package/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.tsx +12 -1
  331. package/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.tsx +10 -5
  332. package/src/components/Fleet/CreateFleet/steps/ReviewStep.tsx +20 -17
  333. package/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.tsx +18 -122
  334. package/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.tsx +4 -1
  335. package/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.tsx +50 -31
  336. package/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.tsx +57 -12
  337. package/src/components/Fleet/CreateFleet/utils.ts +40 -22
  338. package/src/components/Fleet/DeleteFleetModal/DeleteFleetModal.tsx +28 -28
  339. package/src/components/Fleet/FleetDetails/FleetDetailsContent.tsx +10 -9
  340. package/src/components/Fleet/FleetDetails/{FleetDetails.tsx → FleetDetailsPage.tsx} +40 -25
  341. package/src/components/Fleet/FleetRow.tsx +10 -11
  342. package/src/components/Masthead/UserPreferencesModal.tsx +43 -56
  343. package/src/components/Masthead/UserPreferencesProvider.tsx +15 -10
  344. package/src/components/Repository/CreateRepository/CreateRepositoryForm.tsx +14 -15
  345. package/src/components/Repository/CreateRepository/utils.ts +2 -3
  346. package/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.tsx +54 -55
  347. package/src/components/Repository/RepositoryDetails/RepositoryDetails.tsx +47 -14
  348. package/src/components/ResourceSync/RepositoryResourceSyncList.tsx +28 -25
  349. package/src/components/common/CodeEditor/CodeEditorTheme.ts +53 -0
  350. package/src/components/common/CodeEditor/Shortcut.css +22 -0
  351. package/src/components/common/CodeEditor/Shortcut.tsx +90 -0
  352. package/src/components/common/CodeEditor/YamlEditor.css +12 -0
  353. package/src/components/common/CodeEditor/YamlEditor.tsx +81 -0
  354. package/src/components/common/CodeEditor/YamlEditorBase.css +3 -0
  355. package/src/components/common/CodeEditor/YamlEditorBase.tsx +124 -0
  356. package/src/components/common/CodeEditor/useShortcutPopover.tsx +39 -0
  357. package/src/components/common/LabelsView.tsx +2 -11
  358. package/src/components/common/LeaveFormConfirmation.tsx +14 -18
  359. package/src/components/common/TechPreviewBadge.tsx +3 -1
  360. package/src/components/form/FlightCtlActionGroup.tsx +1 -1
  361. package/src/components/form/FormSelect.tsx +14 -3
  362. package/src/components/form/FormSelectTypeahead.tsx +24 -3
  363. package/src/components/form/LabelsField.tsx +20 -20
  364. package/src/components/form/NameField.tsx +18 -4
  365. package/src/components/form/RichValidationTextField.tsx +20 -1
  366. package/src/components/form/TextListField.tsx +19 -3
  367. package/src/components/form/UploadField.tsx +16 -2
  368. package/src/components/form/validations.ts +1 -4
  369. package/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.tsx +12 -7
  370. package/src/components/modals/CreateRepositoryModal/CreateRepositoryModal.tsx +6 -3
  371. package/src/components/modals/DecommissionModal/DecommissionModal.tsx +60 -56
  372. package/src/components/modals/DeleteModal/DeleteModal.tsx +25 -27
  373. package/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.tsx +81 -92
  374. package/src/components/modals/massModals/MassDecommissionDeviceModal/MassDecommissionDeviceModal.tsx +64 -67
  375. package/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.tsx +60 -62
  376. package/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.tsx +80 -87
  377. package/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.tsx +70 -73
  378. package/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.tsx +62 -63
  379. package/src/constants.ts +2 -1
  380. package/src/hooks/useAppLinks.ts +49 -0
  381. package/src/{components/EnrollmentRequest/EnrollmentRequestDetails/useEnrollmentRequestSystemInfo.tsx → hooks/useDeviceSpecSystemInfo.tsx} +15 -7
  382. package/src/hooks/useFetchPeriodically.ts +3 -3
  383. package/src/hooks/useThemePreferences.ts +48 -21
  384. package/src/types/deviceSpec.ts +25 -13
  385. package/src/types/extraTypes.ts +7 -4
  386. package/src/utils/dates.ts +23 -24
  387. package/src/utils/patch.ts +3 -1
  388. package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.css +0 -3
  389. package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.d.ts +0 -9
  390. package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.d.ts.map +0 -1
  391. package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.js +0 -34
  392. package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.js.map +0 -1
  393. package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/useEnrollmentRequestSystemInfo.d.ts.map +0 -1
  394. package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/useEnrollmentRequestSystemInfo.js.map +0 -1
  395. package/dist/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.d.ts +0 -9
  396. package/dist/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.d.ts.map +0 -1
  397. package/dist/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.js +0 -61
  398. package/dist/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.js.map +0 -1
  399. package/dist/src/components/Fleet/FleetDetails/FleetDetails.d.ts.map +0 -1
  400. package/dist/src/components/Fleet/FleetDetails/FleetDetails.js.map +0 -1
  401. package/dist/src/components/common/LabelsView.css +0 -9
  402. package/dist/src/links.d.ts +0 -7
  403. package/dist/src/links.d.ts.map +0 -1
  404. package/dist/src/links.js +0 -14
  405. package/dist/src/links.js.map +0 -1
  406. package/src/components/Device/DeviceDetails/DeviceStatusDebugModal.css +0 -3
  407. package/src/components/Device/DeviceDetails/DeviceStatusDebugModal.tsx +0 -60
  408. package/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.tsx +0 -96
  409. package/src/components/common/LabelsView.css +0 -9
  410. package/src/links.ts +0 -16
@@ -24,9 +24,10 @@ type ScheduleBlockProps = {
24
24
  blockType: ScheduleBlockType;
25
25
  weekDayError?: string[] | string | Weekday;
26
26
  onScheduleModeSwitch: (blockType: ScheduleBlockType) => void;
27
+ isReadOnly?: boolean;
27
28
  };
28
29
 
29
- const ScheduleTimeZone = ({ blockType }: { blockType: ScheduleBlockType }) => {
30
+ const ScheduleTimeZone = ({ blockType, isReadOnly }: { blockType: ScheduleBlockType; isReadOnly?: boolean }) => {
30
31
  const { t } = useTranslation();
31
32
 
32
33
  const id = `updatePolicy.${blockType}TimeZone`;
@@ -49,14 +50,23 @@ const ScheduleTimeZone = ({ blockType }: { blockType: ScheduleBlockType }) => {
49
50
  id={id}
50
51
  onChange={onChangeTimezoneCheckbox}
51
52
  label={t("Use device's local timezone")}
53
+ isDisabled={isReadOnly}
52
54
  />
53
55
 
54
- {timeZone !== timeUtils.localDeviceTimezone && <FormSelectTypeahead name={id} defaultId="" items={zones} />}
56
+ {timeZone !== timeUtils.localDeviceTimezone && (
57
+ <FormSelectTypeahead name={id} defaultId="" items={zones} isDisabled={isReadOnly} />
58
+ )}
55
59
  </FormGroup>
56
60
  );
57
61
  };
58
62
 
59
- const ScheduleBlock = ({ blockType, updatePolicy, onScheduleModeSwitch, weekDayError }: ScheduleBlockProps) => {
63
+ const ScheduleBlock = ({
64
+ blockType,
65
+ updatePolicy,
66
+ onScheduleModeSwitch,
67
+ weekDayError,
68
+ isReadOnly,
69
+ }: ScheduleBlockProps) => {
60
70
  const { t } = useTranslation();
61
71
 
62
72
  let ariaLabel: string;
@@ -115,6 +125,7 @@ const ScheduleBlock = ({ blockType, updatePolicy, onScheduleModeSwitch, weekDayE
115
125
  items={selectableTimes}
116
126
  isValidTypedItem={isValidTypedItem}
117
127
  transformTypedItem={transformTypedItem}
128
+ isDisabled={isReadOnly}
118
129
  />
119
130
  </FlexItem>
120
131
  <FlexItem>
@@ -125,6 +136,7 @@ const ScheduleBlock = ({ blockType, updatePolicy, onScheduleModeSwitch, weekDayE
125
136
  items={selectableTimes}
126
137
  isValidTypedItem={isValidTypedItem}
127
138
  transformTypedItem={transformTypedItem}
139
+ isDisabled={isReadOnly}
128
140
  />
129
141
  </FlexItem>
130
142
  <FlexItem>
@@ -133,6 +145,7 @@ const ScheduleBlock = ({ blockType, updatePolicy, onScheduleModeSwitch, weekDayE
133
145
  name={`updatePolicy.${blockType}ScheduleMode`}
134
146
  label={t('Daily')}
135
147
  checkedValue={timeUtils.UpdateScheduleMode.Daily}
148
+ isDisabled={isReadOnly}
136
149
  />
137
150
  </FlexItem>
138
151
  <FlexItem>
@@ -142,6 +155,7 @@ const ScheduleBlock = ({ blockType, updatePolicy, onScheduleModeSwitch, weekDayE
142
155
  label={t('Weekly')}
143
156
  checkedValue={timeUtils.UpdateScheduleMode.Weekly}
144
157
  onChangeCustom={() => onScheduleModeSwitch(blockType)}
158
+ isDisabled={isReadOnly}
145
159
  />
146
160
  </FlexItem>
147
161
  </Flex>
@@ -153,25 +167,53 @@ const ScheduleBlock = ({ blockType, updatePolicy, onScheduleModeSwitch, weekDayE
153
167
  <StackItem>
154
168
  <Flex>
155
169
  <FlexItem>
156
- <CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[0]`} label={t('Sun')} />
170
+ <CheckboxFieldGroupValidation
171
+ name={`updatePolicy.${blockType}WeekDays[0]`}
172
+ label={t('Sun')}
173
+ isDisabled={isReadOnly}
174
+ />
157
175
  </FlexItem>
158
176
  <FlexItem>
159
- <CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[1]`} label={t('Mon')} />
177
+ <CheckboxFieldGroupValidation
178
+ name={`updatePolicy.${blockType}WeekDays[1]`}
179
+ label={t('Mon')}
180
+ isDisabled={isReadOnly}
181
+ />
160
182
  </FlexItem>
161
183
  <FlexItem>
162
- <CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[2]`} label={t('Tue')} />
184
+ <CheckboxFieldGroupValidation
185
+ name={`updatePolicy.${blockType}WeekDays[2]`}
186
+ label={t('Tue')}
187
+ isDisabled={isReadOnly}
188
+ />
163
189
  </FlexItem>
164
190
  <FlexItem>
165
- <CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[3]`} label={t('Wed')} />
191
+ <CheckboxFieldGroupValidation
192
+ name={`updatePolicy.${blockType}WeekDays[3]`}
193
+ label={t('Wed')}
194
+ isDisabled={isReadOnly}
195
+ />
166
196
  </FlexItem>
167
197
  <FlexItem>
168
- <CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[4]`} label={t('Thu')} />
198
+ <CheckboxFieldGroupValidation
199
+ name={`updatePolicy.${blockType}WeekDays[4]`}
200
+ label={t('Thu')}
201
+ isDisabled={isReadOnly}
202
+ />
169
203
  </FlexItem>
170
204
  <FlexItem>
171
- <CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[5]`} label={t('Fri')} />
205
+ <CheckboxFieldGroupValidation
206
+ name={`updatePolicy.${blockType}WeekDays[5]`}
207
+ label={t('Fri')}
208
+ isDisabled={isReadOnly}
209
+ />
172
210
  </FlexItem>
173
211
  <FlexItem>
174
- <CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[6]`} label={t('Sat')} />
212
+ <CheckboxFieldGroupValidation
213
+ name={`updatePolicy.${blockType}WeekDays[6]`}
214
+ label={t('Sat')}
215
+ isDisabled={isReadOnly}
216
+ />
175
217
  </FlexItem>
176
218
  </Flex>
177
219
  </StackItem>
@@ -183,14 +225,14 @@ const ScheduleBlock = ({ blockType, updatePolicy, onScheduleModeSwitch, weekDayE
183
225
  </FieldArray>
184
226
  )}
185
227
  <StackItem style={{ maxWidth: 500 }}>
186
- <ScheduleTimeZone blockType={blockType} />
228
+ <ScheduleTimeZone blockType={blockType} isReadOnly={isReadOnly} />
187
229
  </StackItem>
188
230
  </Stack>
189
231
  </FormGroupWithHelperText>
190
232
  );
191
233
  };
192
234
 
193
- const UpdateStepUpdatePolicy = () => {
235
+ const UpdateStepUpdatePolicy = ({ isReadOnly }: { isReadOnly?: boolean }) => {
194
236
  const { t } = useTranslation();
195
237
 
196
238
  const {
@@ -217,6 +259,7 @@ const UpdateStepUpdatePolicy = () => {
217
259
  <CheckboxField
218
260
  label={t('Use different update schedules for downloading and installing updates')}
219
261
  name="updatePolicy.downloadAndInstallDiffer"
262
+ isDisabled={isReadOnly}
220
263
  />
221
264
  </StackItem>
222
265
 
@@ -226,6 +269,7 @@ const UpdateStepUpdatePolicy = () => {
226
269
  updatePolicy={updatePolicy}
227
270
  weekDayError={errors.updatePolicy?.downloadWeekDays}
228
271
  onScheduleModeSwitch={onSwitchToWeeklyMode}
272
+ isReadOnly={isReadOnly}
229
273
  />
230
274
  </StackItem>
231
275
 
@@ -236,6 +280,7 @@ const UpdateStepUpdatePolicy = () => {
236
280
  updatePolicy={updatePolicy}
237
281
  weekDayError={errors.updatePolicy?.installWeekDays}
238
282
  onScheduleModeSwitch={onSwitchToWeeklyMode}
283
+ isReadOnly={isReadOnly}
239
284
  />
240
285
  </StackItem>
241
286
  )}
@@ -39,18 +39,27 @@ import { getDisruptionBudgetValues, getRolloutPolicyValues, getUpdatePolicyValue
39
39
  import { FleetFormValues, UpdatePolicyForm } from '../../../types/deviceSpec';
40
40
 
41
41
  export const getValidationSchema = (t: TFunction) => {
42
- return Yup.object<FleetFormValues>({
43
- name: validKubernetesDnsSubdomain(t, { isRequired: true }),
44
- osImage: validOsImage(t, { isFleet: true }),
45
- fleetLabels: validLabelsSchema(t),
46
- labels: validLabelsSchema(t),
47
- configTemplates: validConfigTemplatesSchema(t),
48
- applications: validApplicationsSchema(t),
49
- systemdUnits: systemdUnitListValidationSchema(t),
50
- rolloutPolicy: validFleetRolloutPolicySchema(t),
51
- disruptionBudget: validFleetDisruptionBudgetSchema(t),
52
- updatePolicy: validUpdatePolicySchema(t),
53
- });
42
+ return Yup.lazy((values: FleetFormValues) =>
43
+ Yup.object<FleetFormValues>({
44
+ name: validKubernetesDnsSubdomain(t, { isRequired: true }),
45
+ osImage: validOsImage(t, { isFleet: true }),
46
+ fleetLabels: validLabelsSchema(t),
47
+ labels: validLabelsSchema(t),
48
+ configTemplates: validConfigTemplatesSchema(t),
49
+ applications: validApplicationsSchema(t),
50
+ systemdUnits: systemdUnitListValidationSchema(t),
51
+ rolloutPolicy:
52
+ !values.useBasicUpdateConfig && values.rolloutPolicy?.isAdvanced
53
+ ? validFleetRolloutPolicySchema(t)
54
+ : Yup.object(),
55
+ disruptionBudget:
56
+ !values.useBasicUpdateConfig && values.disruptionBudget?.isAdvanced
57
+ ? validFleetDisruptionBudgetSchema(t)
58
+ : Yup.object(),
59
+ updatePolicy:
60
+ !values.useBasicUpdateConfig && values.updatePolicy?.isAdvanced ? validUpdatePolicySchema(t) : Yup.object(),
61
+ }),
62
+ );
54
63
  };
55
64
 
56
65
  export const getFleetPatches = (currentFleet: Fleet, updatedFleet: FleetFormValues) => {
@@ -149,7 +158,10 @@ export const getFleetPatches = (currentFleet: Fleet, updatedFleet: FleetFormValu
149
158
  const updatePolicyPatches = getUpdatePolicyPatches(
150
159
  '/spec/template/spec/updatePolicy',
151
160
  currentFleet.spec.template.spec.updatePolicy,
152
- updatedFleet.updatePolicy as Required<UpdatePolicyForm>,
161
+ {
162
+ ...updatedFleet.updatePolicy,
163
+ isAdvanced: !updatedFleet.useBasicUpdateConfig && updatedFleet.updatePolicy.isAdvanced,
164
+ } as Required<UpdatePolicyForm>,
153
165
  );
154
166
  allPatches = allPatches.concat(updatePolicyPatches);
155
167
  return allPatches;
@@ -194,19 +206,23 @@ export const getFleetResource = (values: FleetFormValues): Fleet => {
194
206
  if (values.registerMicroShift) {
195
207
  fleet.spec.template.spec.config?.push(ACMCrdConfig, ACMImportConfig, MicroshiftRegistrationHook);
196
208
  }
197
- if (values.rolloutPolicy.isAdvanced || values.disruptionBudget.isAdvanced) {
198
- fleet.spec.rolloutPolicy = getRolloutPolicyData(values);
199
- }
200
- if (values.updatePolicy.isAdvanced) {
201
- fleet.spec.template.spec.updatePolicy = updatePolicyFormToApi(values.updatePolicy as Required<UpdatePolicyForm>);
209
+ if (!values.useBasicUpdateConfig) {
210
+ if (values.rolloutPolicy.isAdvanced || values.disruptionBudget.isAdvanced) {
211
+ fleet.spec.rolloutPolicy = getRolloutPolicyData(values);
212
+ }
213
+ if (values.updatePolicy.isAdvanced) {
214
+ fleet.spec.template.spec.updatePolicy = updatePolicyFormToApi(values.updatePolicy as Required<UpdatePolicyForm>);
215
+ }
202
216
  }
203
-
204
217
  return fleet;
205
218
  };
206
219
 
207
220
  export const getInitialValues = (fleet?: Fleet): FleetFormValues => {
208
221
  if (fleet) {
209
222
  const registerMicroShift = hasMicroshiftRegistrationConfig(fleet.spec.template.spec);
223
+ const rolloutPolicy = getRolloutPolicyValues(fleet.spec);
224
+ const disruptionBudget = getDisruptionBudgetValues(fleet.spec);
225
+ const updatePolicy = getUpdatePolicyValues(fleet.spec.template?.spec?.updatePolicy);
210
226
  return {
211
227
  name: fleet.metadata.name || '',
212
228
  labels: Object.keys(fleet.spec.selector?.matchLabels || {}).map((key) => ({
@@ -225,9 +241,10 @@ export const getInitialValues = (fleet?: Fleet): FleetFormValues => {
225
241
  exists: true,
226
242
  })),
227
243
  registerMicroShift,
228
- rolloutPolicy: getRolloutPolicyValues(fleet.spec),
229
- disruptionBudget: getDisruptionBudgetValues(fleet.spec),
230
- updatePolicy: getUpdatePolicyValues(fleet.spec.template?.spec?.updatePolicy),
244
+ rolloutPolicy,
245
+ disruptionBudget,
246
+ updatePolicy,
247
+ useBasicUpdateConfig: !rolloutPolicy.isAdvanced && !disruptionBudget.isAdvanced && !updatePolicy.isAdvanced,
231
248
  };
232
249
  }
233
250
 
@@ -243,5 +260,6 @@ export const getInitialValues = (fleet?: Fleet): FleetFormValues => {
243
260
  rolloutPolicy: getRolloutPolicyValues(undefined),
244
261
  disruptionBudget: getDisruptionBudgetValues(undefined),
245
262
  updatePolicy: getUpdatePolicyValues(undefined),
263
+ useBasicUpdateConfig: true,
246
264
  };
247
265
  };
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
- import { Alert, Button, Modal, Stack, StackItem } from '@patternfly/react-core';
3
2
  import { Trans } from 'react-i18next';
3
+ import { Alert, Button, Stack, StackItem } from '@patternfly/react-core';
4
+ import { Modal, ModalBody, ModalFooter, ModalHeader } from '@patternfly/react-core/next';
4
5
 
5
6
  import { useTranslation } from '../../../hooks/useTranslation';
6
7
  import { useFetch } from '../../../hooks/useFetch';
@@ -23,14 +24,34 @@ const DeleteFleetModal = ({ fleetId, onClose }: { fleetId: string; onClose: (has
23
24
 
24
25
  return (
25
26
  <Modal
26
- title={t('Delete fleet ?')}
27
27
  isOpen
28
28
  onClose={() => {
29
29
  onClose();
30
30
  }}
31
31
  variant="small"
32
- titleIconVariant="warning"
33
- actions={[
32
+ >
33
+ <ModalHeader title={t('Delete fleet?')} titleIconVariant="warning" />
34
+ <ModalBody>
35
+ <Stack hasGutter>
36
+ <StackItem>
37
+ <Trans t={t}>
38
+ <strong>{fleetId}</strong> will be deleted permanently. If the device selector of a remaining fleet
39
+ matches a device in <strong>{fleetId}</strong>, the device will be moved to the new fleet. If there&apos;s
40
+ no matching fleet for a device, it will be unlinked from any fleet.
41
+ </Trans>
42
+ </StackItem>
43
+ <StackItem>{t('Are you sure you want to delete?')}</StackItem>
44
+ {error && (
45
+ <StackItem>
46
+ <Alert isInline variant="danger" title={t('An error occurred')}>
47
+ <div>{error.text}</div>
48
+ {error.details && <div>{t('Details: {{errorDetails}}', { errorDetails: error.details })}</div>}
49
+ </Alert>
50
+ </StackItem>
51
+ )}
52
+ </Stack>
53
+ </ModalBody>
54
+ <ModalFooter>
34
55
  <Button
35
56
  key="confirm"
36
57
  variant="danger"
@@ -49,7 +70,7 @@ const DeleteFleetModal = ({ fleetId, onClose }: { fleetId: string; onClose: (has
49
70
  }}
50
71
  >
51
72
  {t('Delete fleet')}
52
- </Button>,
73
+ </Button>
53
74
  <Button
54
75
  key="cancel"
55
76
  variant="link"
@@ -59,29 +80,8 @@ const DeleteFleetModal = ({ fleetId, onClose }: { fleetId: string; onClose: (has
59
80
  isDisabled={isDeleting}
60
81
  >
61
82
  {t('Cancel')}
62
- </Button>,
63
- ]}
64
- >
65
- <Stack hasGutter>
66
- <StackItem>
67
- <Trans t={t}>
68
- Are you sure you want to delete fleet <strong>{fleetId}</strong>?
69
- </Trans>
70
- </StackItem>
71
- <StackItem>
72
- {t(
73
- 'Devices bound to this fleet may join another fleet matching their labels, otherwise they will remain unlinked from any fleet.',
74
- )}
75
- </StackItem>
76
- {error && (
77
- <StackItem>
78
- <Alert isInline variant="danger" title={t('An error occurred')}>
79
- <div>{error.text}</div>
80
- {error.details && <div>{t('Details: {{errorDetails}}', { errorDetails: error.details })}</div>}
81
- </Alert>
82
- </StackItem>
83
- )}
84
- </Stack>
83
+ </Button>
84
+ </ModalFooter>
85
85
  </Modal>
86
86
  );
87
87
  };
@@ -11,7 +11,7 @@ import {
11
11
  GridItem,
12
12
  } from '@patternfly/react-core';
13
13
 
14
- import { Fleet } from '@flightctl/types';
14
+ import { Fleet, ResourceKind } from '@flightctl/types';
15
15
  import FlightControlDescriptionList from '../../common/FlightCtlDescriptionList';
16
16
  import LabelsView from '../../common/LabelsView';
17
17
  import { getDateDisplay } from '../../../utils/dates';
@@ -22,6 +22,7 @@ import FleetOwnerLink from './FleetOwnerLink';
22
22
  import FleetDevicesCharts from './FleetDevicesCharts';
23
23
  import FleetStatus from '../FleetStatus';
24
24
  import FleetDevicesCount from './FleetDevicesCount';
25
+ import EventsCard from '../../Events/EventsCard';
25
26
 
26
27
  const FleetDetailsContent = ({ fleet }: { fleet: Fleet }) => {
27
28
  const { t } = useTranslation();
@@ -31,7 +32,7 @@ const FleetDetailsContent = ({ fleet }: { fleet: Fleet }) => {
31
32
 
32
33
  return (
33
34
  <Grid hasGutter>
34
- <GridItem md={12}>
35
+ <GridItem md={9}>
35
36
  <Card>
36
37
  <CardTitle>{t('Details')}</CardTitle>
37
38
  <CardBody>
@@ -81,18 +82,18 @@ const FleetDetailsContent = ({ fleet }: { fleet: Fleet }) => {
81
82
  </FlightControlDescriptionList>
82
83
  </CardBody>
83
84
  </Card>
84
- </GridItem>
85
- {devicesSummary && (
86
- <GridItem md={12}>
87
- <Card>
85
+ {devicesSummary && (
86
+ <Card className="pf-v5-u-mt-md">
88
87
  <CardTitle>{t('Fleet devices')}</CardTitle>
89
-
90
88
  <CardBody>
91
89
  <FleetDevicesCharts fleetId={fleetId} devicesSummary={devicesSummary} />
92
90
  </CardBody>
93
91
  </Card>
94
- </GridItem>
95
- )}
92
+ )}
93
+ </GridItem>
94
+ <GridItem md={3}>
95
+ <EventsCard kind={ResourceKind.FLEET} objId={fleetId} />
96
+ </GridItem>
96
97
  </Grid>
97
98
  );
98
99
  };
@@ -1,25 +1,28 @@
1
1
  import React from 'react';
2
- import { DropdownItem, DropdownList } from '@patternfly/react-core';
2
+ import { DropdownItem, DropdownList, Nav, NavList } from '@patternfly/react-core';
3
3
  import { Fleet } from '@flightctl/types';
4
4
 
5
+ import { RESOURCE, VERB } from '../../../types/rbac';
6
+ import PageWithPermissions from '../../common/PageWithPermissions';
5
7
  import { useFetchPeriodically } from '../../../hooks/useFetchPeriodically';
6
- import DetailsPage from '../../DetailsPage/DetailsPage';
7
- import DetailsPageActions from '../../DetailsPage/DetailsPageActions';
8
- import FleetDetailsContent from './FleetDetailsContent';
9
8
  import { useTranslation } from '../../../hooks/useTranslation';
10
9
  import { ROUTE, useNavigate } from '../../../hooks/useNavigate';
10
+ import { useAccessReview } from '../../../hooks/useAccessReview';
11
11
  import { useAppContext } from '../../../hooks/useAppContext';
12
+ import NavItem from '../../NavItem/NavItem';
13
+ import DetailsPage from '../../DetailsPage/DetailsPage';
14
+ import DetailsPageActions from '../../DetailsPage/DetailsPageActions';
12
15
  import DeleteFleetModal from '../DeleteFleetModal/DeleteFleetModal';
13
- import { useAccessReview } from '../../../hooks/useAccessReview';
14
- import { RESOURCE, VERB } from '../../../types/rbac';
15
- import PageWithPermissions from '../../common/PageWithPermissions';
16
+ import FleetDetailsContent from './FleetDetailsContent';
17
+ import YamlEditor from '../../common/CodeEditor/YamlEditor';
16
18
 
17
- const FleetDetails = () => {
19
+ const FleetDetailPage = () => {
18
20
  const { t } = useTranslation();
19
21
 
20
22
  const {
21
- router: { useParams },
23
+ router: { useParams, Routes, Route, Navigate },
22
24
  } = useAppContext();
25
+
23
26
  const { fleetId } = useParams() as { fleetId: string };
24
27
  const [fleet, isLoading, error, refetch] = useFetchPeriodically<Required<Fleet>>({
25
28
  endpoint: `fleets/${fleetId}?addDevicesSummary=true`,
@@ -32,6 +35,7 @@ const FleetDetails = () => {
32
35
  const [canEdit] = useAccessReview(RESOURCE.FLEET, VERB.PATCH);
33
36
 
34
37
  const isManaged = !!fleet?.metadata?.owner;
38
+ const hasActions = canDelete || (canEdit && !isManaged) || isManaged;
35
39
 
36
40
  return (
37
41
  <DetailsPage
@@ -41,25 +45,29 @@ const FleetDetails = () => {
41
45
  resourceLink={ROUTE.FLEETS}
42
46
  resourceType="Fleets"
43
47
  resourceTypeLabel={t('Fleets')}
48
+ nav={
49
+ <Nav variant="tertiary">
50
+ <NavList>
51
+ <NavItem to="details">{t('Details')}</NavItem>
52
+ <NavItem to="yaml">{t('YAML')}</NavItem>
53
+ </NavList>
54
+ </Nav>
55
+ }
44
56
  actions={
45
- (canDelete || canEdit) && (
57
+ hasActions && (
46
58
  <DetailsPageActions>
47
59
  <DropdownList>
48
- {canEdit && (
49
- <DropdownItem
50
- isAriaDisabled={isManaged}
51
- tooltipProps={
52
- isManaged
53
- ? {
54
- content: t('Fleets managed by a resource sync cannot be edited'),
55
- }
56
- : undefined
57
- }
58
- onClick={() => navigate({ route: ROUTE.FLEET_EDIT, postfix: fleetId })}
59
- >
60
- {t('Edit fleet')}
60
+ {isManaged && (
61
+ <DropdownItem onClick={() => navigate({ route: ROUTE.FLEET_EDIT, postfix: fleetId })}>
62
+ {t('View fleet configurations')}
63
+ </DropdownItem>
64
+ )}
65
+ {canEdit && !isManaged && (
66
+ <DropdownItem onClick={() => navigate({ route: ROUTE.FLEET_EDIT, postfix: fleetId })}>
67
+ {t('Edit fleet configurations')}
61
68
  </DropdownItem>
62
69
  )}
70
+
63
71
  {canDelete && (
64
72
  <DropdownItem
65
73
  title={t('Delete fleet')}
@@ -87,7 +95,14 @@ const FleetDetails = () => {
87
95
  >
88
96
  {fleet && (
89
97
  <>
90
- <FleetDetailsContent fleet={fleet} />
98
+ <Routes>
99
+ <Route index element={<Navigate to="details" replace />} />
100
+ <Route path="details" element={<FleetDetailsContent fleet={fleet} />} />
101
+ <Route
102
+ path="yaml"
103
+ element={<YamlEditor filename={fleet.metadata.name || 'fleet'} apiObj={fleet} refetch={refetch} />}
104
+ />
105
+ </Routes>
91
106
  {isDeleteModalOpen && (
92
107
  <DeleteFleetModal
93
108
  fleetId={fleetId}
@@ -110,7 +125,7 @@ const FleetDetailsWithPermissions = () => {
110
125
  const [allowed, loading] = useAccessReview(RESOURCE.FLEET, VERB.GET);
111
126
  return (
112
127
  <PageWithPermissions allowed={allowed} loading={loading}>
113
- <FleetDetails />
128
+ <FleetDetailPage />
114
129
  </PageWithPermissions>
115
130
  );
116
131
  };
@@ -26,17 +26,16 @@ const useFleetActions = (fleetName: string, isManaged: boolean, canEdit: boolean
26
26
  const navigate = useNavigate();
27
27
  const { t } = useTranslation();
28
28
 
29
- if (isManaged || !canEdit) {
30
- actions.push({
31
- title: t("View fleet's configuration"),
32
- onClick: () => navigate({ route: ROUTE.FLEET_DETAILS, postfix: fleetName }),
33
- });
34
- } else {
35
- actions.push({
36
- title: t('Edit fleet'),
37
- onClick: () => navigate({ route: ROUTE.FLEET_EDIT, postfix: fleetName }),
38
- });
39
- }
29
+ actions.push({
30
+ title: t('View fleet details'),
31
+ onClick: () => navigate({ route: ROUTE.FLEET_DETAILS, postfix: fleetName }),
32
+ });
33
+
34
+ // If users can't edit, the wizard will be in read-only mode
35
+ actions.push({
36
+ title: isManaged || !canEdit ? t('View fleet configurations') : t('Edit fleet configurations'),
37
+ onClick: () => navigate({ route: ROUTE.FLEET_EDIT, postfix: fleetName }),
38
+ });
40
39
  return actions;
41
40
  };
42
41