@flightctl/ui-components 0.5.1 → 0.6.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.
- package/dist/src/components/DetailsPage/DetailsPage.d.ts +3 -2
- package/dist/src/components/DetailsPage/DetailsPage.d.ts.map +1 -1
- package/dist/src/components/DetailsPage/DetailsPage.js +2 -2
- package/dist/src/components/DetailsPage/DetailsPage.js.map +1 -1
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.d.ts.map +1 -1
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.js +5 -3
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.js.map +1 -1
- package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.d.ts.map +1 -1
- package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.js +4 -5
- package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.js.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceAliasEdit.d.ts +10 -0
- package/dist/src/components/Device/DeviceDetails/DeviceAliasEdit.d.ts.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceAliasEdit.js +110 -0
- package/dist/src/components/Device/DeviceDetails/DeviceAliasEdit.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.js +7 -1
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.js.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js +9 -6
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTabContent/StatusContent.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTabContent/StatusContent.js +3 -3
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTabContent/StatusContent.js.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTabContent/SystemResourcesContent.js +3 -3
- package/dist/src/components/Device/DeviceDetails/TerminalTab.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/TerminalTab.js +34 -3
- package/dist/src/components/Device/DeviceDetails/TerminalTab.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DecommissionedDevicesTable.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DecommissionedDevicesTable.js +1 -1
- package/dist/src/components/Device/DevicesPage/DecommissionedDevicesTable.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.js +35 -30
- package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DevicesPage.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DevicesPage.js +11 -2
- package/dist/src/components/Device/DevicesPage/DevicesPage.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/EnrolledDevicesTable.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/EnrolledDevicesTable.js +14 -11
- package/dist/src/components/Device/DevicesPage/EnrolledDevicesTable.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js +9 -2
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardFooter.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardFooter.js +21 -6
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardFooter.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardNav.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardNav.js +11 -4
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardNav.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.d.ts +6 -5
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js +123 -10
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.d.ts +8 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.d.ts.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.js +19 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.d.ts +8 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.d.ts.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.js +49 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.js +52 -19
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js +13 -16
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigK8sSecretTemplateForm.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigK8sSecretTemplateForm.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js +5 -5
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.js +2 -2
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.d.ts +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js +16 -16
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.d.ts +8 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.d.ts.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.js +58 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.d.ts +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewApplications.d.ts +2 -2
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewApplications.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewApplications.js +17 -12
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewApplications.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.js +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.d.ts +2 -4
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewUpdatePolicy.d.ts +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewUpdatePolicy.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewUpdatePolicy.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/utils.d.ts +29 -3
- package/dist/src/components/Device/EditDeviceWizard/utils.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/utils.js +8 -7
- package/dist/src/components/Device/EditDeviceWizard/utils.js.map +1 -1
- package/dist/src/components/Device/SystemdUnitsModal/SystemdUnitsModal.d.ts.map +1 -1
- package/dist/src/components/Device/SystemdUnitsModal/SystemdUnitsModal.js.map +1 -1
- package/dist/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.d.ts +1 -4
- package/dist/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.d.ts.map +1 -1
- package/dist/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.js.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.d.ts.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js +5 -5
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.d.ts +2 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.d.ts.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.js +19 -11
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.js.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.d.ts.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.js +5 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.js.map +1 -1
- package/dist/src/components/EnrollmentRequest/useEnrollmentRequests.d.ts +2 -1
- package/dist/src/components/EnrollmentRequest/useEnrollmentRequests.d.ts.map +1 -1
- package/dist/src/components/EnrollmentRequest/useEnrollmentRequests.js +8 -4
- package/dist/src/components/EnrollmentRequest/useEnrollmentRequests.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js +2 -2
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.js +8 -1
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/fleetSpecUtils.d.ts +19 -2
- package/dist/src/components/Fleet/CreateFleet/fleetSpecUtils.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/fleetSpecUtils.js +53 -18
- package/dist/src/components/Fleet/CreateFleet/fleetSpecUtils.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.d.ts +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.js +1 -2
- package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.js +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.d.ts +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.js +9 -0
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.d.ts +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.js +22 -9
- package/dist/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.js +4 -4
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.js +5 -5
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.css +3 -0
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.d.ts +9 -0
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.d.ts.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.js +127 -0
- package/dist/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/utils.d.ts +1 -1
- package/dist/src/components/Fleet/CreateFleet/utils.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/utils.js +13 -4
- package/dist/src/components/Fleet/CreateFleet/utils.js.map +1 -1
- package/dist/src/components/Fleet/FleetsPage.d.ts.map +1 -1
- package/dist/src/components/Fleet/FleetsPage.js +8 -12
- package/dist/src/components/Fleet/FleetsPage.js.map +1 -1
- package/dist/src/components/Fleet/ImportFleetWizard/steps/ResourceSyncStep.js +1 -1
- package/dist/src/components/Fleet/ImportFleetWizard/steps/ResourceSyncStep.js.map +1 -1
- package/dist/src/components/ListPage/ListPage.d.ts +1 -0
- package/dist/src/components/ListPage/ListPage.d.ts.map +1 -1
- package/dist/src/components/ListPage/ListPage.js +3 -3
- package/dist/src/components/ListPage/ListPage.js.map +1 -1
- package/dist/src/components/Masthead/CommandLineToolsPage.d.ts +4 -0
- package/dist/src/components/Masthead/CommandLineToolsPage.d.ts.map +1 -0
- package/dist/src/components/Masthead/CommandLineToolsPage.js +90 -0
- package/dist/src/components/Masthead/CommandLineToolsPage.js.map +1 -0
- package/dist/src/components/Masthead/UserPreferencesModal.d.ts.map +1 -0
- package/dist/src/components/Masthead/UserPreferencesModal.js.map +1 -0
- package/dist/src/components/Masthead/UserPreferencesProvider.d.ts.map +1 -0
- package/dist/src/components/Masthead/UserPreferencesProvider.js.map +1 -0
- package/dist/src/components/OverviewPage/Cards/Status/StatusCard.js +3 -3
- package/dist/src/components/OverviewPage/Cards/Status/StatusCard.js.map +1 -1
- package/dist/src/components/OverviewPage/Cards/Tasks/TasksCard.d.ts +4 -0
- package/dist/src/components/OverviewPage/Cards/Tasks/TasksCard.d.ts.map +1 -0
- package/dist/src/components/OverviewPage/Cards/{ToDo/ToDoCard.js → Tasks/TasksCard.js} +4 -4
- package/dist/src/components/OverviewPage/Cards/Tasks/TasksCard.js.map +1 -0
- package/dist/src/components/OverviewPage/Overview.js +2 -2
- package/dist/src/components/OverviewPage/Overview.js.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.d.ts.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js +6 -5
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateResourceSyncsForm.d.ts.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateResourceSyncsForm.js +3 -3
- package/dist/src/components/Repository/CreateRepository/CreateResourceSyncsForm.js.map +1 -1
- package/dist/src/components/Repository/CreateRepository/utils.d.ts.map +1 -1
- package/dist/src/components/Repository/CreateRepository/utils.js +4 -1
- package/dist/src/components/Repository/CreateRepository/utils.js.map +1 -1
- package/dist/src/components/Repository/RepositoryDetails/RepositoryResourceSyncsCard.d.ts.map +1 -1
- package/dist/src/components/Repository/RepositoryDetails/RepositoryResourceSyncsCard.js +1 -1
- package/dist/src/components/Repository/RepositoryDetails/RepositoryResourceSyncsCard.js.map +1 -1
- package/dist/src/components/Repository/RepositoryList.d.ts.map +1 -1
- package/dist/src/components/Repository/RepositoryList.js +3 -11
- package/dist/src/components/Repository/RepositoryList.js.map +1 -1
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.d.ts.map +1 -1
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js +3 -6
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js.map +1 -1
- package/dist/src/components/Status/DeviceResourceStatus.js +3 -3
- package/dist/src/components/Status/utils.d.ts.map +1 -1
- package/dist/src/components/Status/utils.js +3 -3
- package/dist/src/components/Status/utils.js.map +1 -1
- package/dist/src/components/Table/Table.d.ts +2 -1
- package/dist/src/components/Table/Table.d.ts.map +1 -1
- package/dist/src/components/Table/Table.js +9 -5
- package/dist/src/components/Table/Table.js.map +1 -1
- package/dist/src/components/Table/TablePagination.d.ts.map +1 -1
- package/dist/src/components/Table/TablePagination.js +1 -1
- package/dist/src/components/Table/TablePagination.js.map +1 -1
- package/dist/src/components/Terminal/Terminal.d.ts +1 -1
- package/dist/src/components/Terminal/Terminal.d.ts.map +1 -1
- package/dist/src/components/Terminal/Terminal.js +10 -3
- package/dist/src/components/Terminal/Terminal.js.map +1 -1
- package/dist/src/components/charts/DonutChart.js +1 -1
- package/dist/src/components/charts/DonutChart.js.map +1 -1
- package/dist/src/components/common/LeaveFormConfirmation.js +1 -1
- package/dist/src/components/common/LeaveFormConfirmation.js.map +1 -1
- package/dist/src/components/common/WithHelperText.d.ts +10 -5
- package/dist/src/components/common/WithHelperText.d.ts.map +1 -1
- package/dist/src/components/common/WithHelperText.js +13 -8
- package/dist/src/components/common/WithHelperText.js.map +1 -1
- package/dist/src/components/form/CheckboxField.d.ts +6 -3
- package/dist/src/components/form/CheckboxField.d.ts.map +1 -1
- package/dist/src/components/form/CheckboxField.js +20 -1
- package/dist/src/components/form/CheckboxField.js.map +1 -1
- package/dist/src/components/form/FormSelectTypeahead.d.ts +3 -3
- package/dist/src/components/form/FormSelectTypeahead.d.ts.map +1 -1
- package/dist/src/components/form/FormSelectTypeahead.js +43 -53
- package/dist/src/components/form/FormSelectTypeahead.js.map +1 -1
- package/dist/src/components/form/RichValidationTextField.d.ts +1 -1
- package/dist/src/components/form/RichValidationTextField.d.ts.map +1 -1
- package/dist/src/components/form/RichValidationTextField.js +8 -4
- package/dist/src/components/form/RichValidationTextField.js.map +1 -1
- package/dist/src/components/form/validations.d.ts +44 -4
- package/dist/src/components/form/validations.d.ts.map +1 -1
- package/dist/src/components/form/validations.js +148 -25
- package/dist/src/components/form/validations.js.map +1 -1
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceForm.js +5 -3
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceForm.js.map +1 -1
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.d.ts.map +1 -1
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js +3 -2
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js.map +1 -1
- package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.d.ts.map +1 -1
- package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.js +7 -12
- package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.js.map +1 -1
- package/dist/src/components/modals/massModals/MassDecommissionDeviceModal/MassDecommissionDeviceModal.js +4 -4
- package/dist/src/components/modals/massModals/MassDecommissionDeviceModal/MassDecommissionDeviceModal.js.map +1 -1
- package/dist/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.js +4 -4
- package/dist/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.js.map +1 -1
- package/dist/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.js +2 -2
- package/dist/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.js.map +1 -1
- package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js +2 -2
- package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js.map +1 -1
- package/dist/src/hooks/timeZones.d.ts +3 -0
- package/dist/src/hooks/timeZones.d.ts.map +1 -0
- package/dist/src/hooks/timeZones.js +607 -0
- package/dist/src/hooks/timeZones.js.map +1 -0
- package/dist/src/hooks/useAppContext.d.ts +14 -8
- package/dist/src/hooks/useAppContext.d.ts.map +1 -1
- package/dist/src/hooks/useAppContext.js +13 -6
- package/dist/src/hooks/useAppContext.js.map +1 -1
- package/dist/src/hooks/useFetch.d.ts +3 -5
- package/dist/src/hooks/useFetch.d.ts.map +1 -1
- package/dist/src/hooks/useFetch.js +3 -2
- package/dist/src/hooks/useFetch.js.map +1 -1
- package/dist/src/hooks/useNavigate.d.ts +2 -1
- package/dist/src/hooks/useNavigate.d.ts.map +1 -1
- package/dist/src/hooks/useNavigate.js +1 -0
- package/dist/src/hooks/useNavigate.js.map +1 -1
- package/dist/src/hooks/useTimeZones.d.ts +4 -0
- package/dist/src/hooks/useTimeZones.d.ts.map +1 -0
- package/dist/src/hooks/useTimeZones.js +22 -0
- package/dist/src/hooks/useTimeZones.js.map +1 -0
- package/dist/src/hooks/useWebSocket.d.ts +6 -2
- package/dist/src/hooks/useWebSocket.d.ts.map +1 -1
- package/dist/src/hooks/useWebSocket.js +22 -7
- package/dist/src/hooks/useWebSocket.js.map +1 -1
- package/dist/src/links.d.ts +3 -0
- package/dist/src/links.d.ts.map +1 -1
- package/dist/src/links.js +10 -3
- package/dist/src/links.js.map +1 -1
- package/dist/src/types/deviceSpec.d.ts +93 -5
- package/dist/src/types/deviceSpec.d.ts.map +1 -1
- package/dist/src/types/deviceSpec.js +28 -2
- package/dist/src/types/deviceSpec.js.map +1 -1
- package/dist/src/types/extraTypes.d.ts +19 -1
- package/dist/src/types/extraTypes.d.ts.map +1 -1
- package/dist/src/types/extraTypes.js.map +1 -1
- package/dist/src/utils/labels.d.ts +1 -0
- package/dist/src/utils/labels.d.ts.map +1 -1
- package/dist/src/utils/labels.js +9 -2
- package/dist/src/utils/labels.js.map +1 -1
- package/dist/src/utils/patch.d.ts +13 -5
- package/dist/src/utils/patch.d.ts.map +1 -1
- package/dist/src/utils/patch.js +115 -71
- package/dist/src/utils/patch.js.map +1 -1
- package/dist/src/utils/query.d.ts +1 -0
- package/dist/src/utils/query.d.ts.map +1 -1
- package/dist/src/utils/query.js +10 -3
- package/dist/src/utils/query.js.map +1 -1
- package/dist/src/utils/search.d.ts +6 -0
- package/dist/src/utils/search.d.ts.map +1 -1
- package/dist/src/utils/search.js +9 -1
- package/dist/src/utils/search.js.map +1 -1
- package/dist/src/utils/time.d.ts +31 -0
- package/dist/src/utils/time.d.ts.map +1 -0
- package/dist/src/utils/time.js +134 -0
- package/dist/src/utils/time.js.map +1 -0
- package/package.json +1 -4
- package/src/components/DetailsPage/DetailsPage.tsx +6 -4
- package/src/components/DetailsPage/Tables/ApplicationsTable.tsx +6 -3
- package/src/components/Device/AddDeviceModal/AddDeviceModal.tsx +4 -13
- package/src/components/Device/DeviceDetails/DeviceAliasEdit.tsx +180 -0
- package/src/components/Device/DeviceDetails/DeviceApplications.tsx +8 -1
- package/src/components/Device/DeviceDetails/DeviceDetailsPage.tsx +21 -5
- package/src/components/Device/DeviceDetails/DeviceDetailsTab.tsx +3 -4
- package/src/components/Device/DeviceDetails/DeviceDetailsTabContent/StatusContent.tsx +7 -10
- package/src/components/Device/DeviceDetails/DeviceDetailsTabContent/SystemResourcesContent.tsx +3 -3
- package/src/components/Device/DeviceDetails/TerminalTab.tsx +43 -5
- package/src/components/Device/DevicesPage/DecommissionedDevicesTable.tsx +2 -1
- package/src/components/Device/DevicesPage/DeviceToolbarFilters.tsx +66 -38
- package/src/components/Device/DevicesPage/DevicesPage.tsx +11 -2
- package/src/components/Device/DevicesPage/EnrolledDevicesTable.tsx +16 -11
- package/src/components/Device/EditDeviceWizard/EditDeviceWizard.tsx +11 -2
- package/src/components/Device/EditDeviceWizard/EditDeviceWizardFooter.tsx +22 -6
- package/src/components/Device/EditDeviceWizard/EditDeviceWizardNav.tsx +15 -2
- package/src/components/Device/EditDeviceWizard/deviceSpecUtils.ts +147 -14
- package/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.tsx +28 -0
- package/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.tsx +94 -0
- package/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.tsx +81 -50
- package/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.tsx +23 -28
- package/src/components/Device/EditDeviceWizard/steps/ConfigK8sSecretTemplateForm.tsx +1 -2
- package/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.tsx +18 -39
- package/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.tsx +8 -14
- package/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.tsx +26 -39
- package/src/components/Device/EditDeviceWizard/steps/DeviceUpdateStep.tsx +88 -0
- package/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.tsx +1 -1
- package/src/components/Device/EditDeviceWizard/steps/ReviewApplications.tsx +18 -19
- package/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.tsx +3 -3
- package/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.tsx +2 -2
- package/src/components/Device/EditDeviceWizard/steps/ReviewUpdatePolicy.tsx +2 -1
- package/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.tsx +1 -1
- package/src/components/Device/EditDeviceWizard/utils.ts +16 -9
- package/src/components/Device/SystemdUnitsModal/SystemdUnitsModal.tsx +7 -6
- package/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.tsx +1 -5
- package/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.tsx +7 -9
- package/src/components/EnrollmentRequest/EnrollmentRequestList.tsx +30 -17
- package/src/components/EnrollmentRequest/EnrollmentRequestTableRow.tsx +5 -1
- package/src/components/EnrollmentRequest/useEnrollmentRequests.ts +12 -4
- package/src/components/Fleet/CreateFleet/CreateFleetWizard.tsx +4 -3
- package/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.tsx +9 -2
- package/src/components/Fleet/CreateFleet/fleetSpecUtils.ts +51 -17
- package/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.tsx +1 -1
- package/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.tsx +2 -13
- package/src/components/Fleet/CreateFleet/steps/ReviewStep.tsx +3 -3
- package/src/components/Fleet/CreateFleet/steps/UpdateConfirmChangesModal.tsx +10 -1
- package/src/components/Fleet/CreateFleet/steps/UpdatePolicyStep.tsx +49 -16
- package/src/components/Fleet/CreateFleet/steps/UpdateStepDisruptionBudget.tsx +18 -33
- package/src/components/Fleet/CreateFleet/steps/UpdateStepRolloutPolicy.tsx +14 -24
- package/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.css +3 -0
- package/src/components/Fleet/CreateFleet/steps/UpdateStepUpdatePolicy.tsx +246 -0
- package/src/components/Fleet/CreateFleet/utils.ts +23 -7
- package/src/components/Fleet/FleetsPage.tsx +15 -17
- package/src/components/Fleet/ImportFleetWizard/steps/ResourceSyncStep.tsx +1 -1
- package/src/components/ListPage/ListPage.tsx +7 -4
- package/src/components/Masthead/CommandLineToolsPage.tsx +179 -0
- package/src/components/OverviewPage/Cards/Status/StatusCard.tsx +6 -6
- package/src/components/OverviewPage/Cards/{ToDo/ToDoCard.tsx → Tasks/TasksCard.tsx} +3 -3
- package/src/components/OverviewPage/Overview.tsx +2 -2
- package/src/components/Repository/CreateRepository/CreateRepositoryForm.tsx +11 -26
- package/src/components/Repository/CreateRepository/CreateResourceSyncsForm.tsx +8 -17
- package/src/components/Repository/CreateRepository/utils.ts +4 -1
- package/src/components/Repository/RepositoryDetails/RepositoryResourceSyncsCard.tsx +3 -4
- package/src/components/Repository/RepositoryList.tsx +9 -16
- package/src/components/ResourceSync/RepositoryResourceSyncList.tsx +7 -11
- package/src/components/Status/DeviceResourceStatus.tsx +4 -4
- package/src/components/Status/utils.ts +3 -5
- package/src/components/Table/Table.tsx +32 -9
- package/src/components/Table/TablePagination.tsx +0 -1
- package/src/components/Terminal/Terminal.tsx +10 -4
- package/src/components/charts/DonutChart.tsx +2 -2
- package/src/components/common/LeaveFormConfirmation.tsx +2 -2
- package/src/components/common/WithHelperText.tsx +53 -21
- package/src/components/form/CheckboxField.tsx +28 -3
- package/src/components/form/FormSelectTypeahead.tsx +53 -80
- package/src/components/form/RichValidationTextField.tsx +73 -62
- package/src/components/form/validations.ts +207 -28
- package/src/components/modals/ApproveDeviceModal/ApproveDeviceForm.tsx +5 -5
- package/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.tsx +3 -2
- package/src/components/modals/EditLabelsModal/EditLabelsForm.tsx +9 -20
- package/src/components/modals/massModals/MassDecommissionDeviceModal/MassDecommissionDeviceModal.tsx +2 -2
- package/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.tsx +2 -2
- package/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.tsx +2 -2
- package/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.tsx +2 -2
- package/src/hooks/timeZones.ts +606 -0
- package/src/hooks/useAppContext.tsx +20 -10
- package/src/hooks/useFetch.ts +3 -2
- package/src/hooks/useNavigate.tsx +1 -0
- package/src/hooks/useTimeZones.ts +26 -0
- package/src/hooks/useWebSocket.ts +29 -7
- package/src/links.ts +13 -4
- package/src/types/deviceSpec.ts +118 -2
- package/src/types/extraTypes.ts +33 -1
- package/src/utils/labels.ts +7 -1
- package/src/utils/patch.ts +126 -72
- package/src/utils/query.ts +13 -4
- package/src/utils/search.ts +8 -0
- package/src/utils/time.ts +147 -0
- package/dist/jest.config.d.ts +0 -12
- package/dist/jest.config.d.ts.map +0 -1
- package/dist/jest.config.js +0 -24
- package/dist/jest.config.js.map +0 -1
- package/dist/src/components/DetailsPage/DetailsPage.spec.d.ts +0 -2
- package/dist/src/components/DetailsPage/DetailsPage.spec.d.ts.map +0 -1
- package/dist/src/components/DetailsPage/DetailsPage.spec.js +0 -81
- package/dist/src/components/DetailsPage/DetailsPage.spec.js.map +0 -1
- package/dist/src/components/Device/EditDeviceWizard/types.d.ts +0 -23
- package/dist/src/components/Device/EditDeviceWizard/types.d.ts.map +0 -1
- package/dist/src/components/Device/EditDeviceWizard/types.js +0 -3
- package/dist/src/components/Device/EditDeviceWizard/types.js.map +0 -1
- package/dist/src/components/Fleet/CreateFleet/types.d.ts +0 -29
- package/dist/src/components/Fleet/CreateFleet/types.d.ts.map +0 -1
- package/dist/src/components/Fleet/CreateFleet/types.js +0 -9
- package/dist/src/components/Fleet/CreateFleet/types.js.map +0 -1
- package/dist/src/components/OverviewPage/Cards/ToDo/ToDoCard.d.ts +0 -4
- package/dist/src/components/OverviewPage/Cards/ToDo/ToDoCard.d.ts.map +0 -1
- package/dist/src/components/OverviewPage/Cards/ToDo/ToDoCard.js.map +0 -1
- package/dist/src/components/UserPreferences/UserPreferencesModal.d.ts.map +0 -1
- package/dist/src/components/UserPreferences/UserPreferencesModal.js.map +0 -1
- package/dist/src/components/UserPreferences/UserPreferencesProvider.d.ts.map +0 -1
- package/dist/src/components/UserPreferences/UserPreferencesProvider.js.map +0 -1
- package/dist/src/setupTests.d.ts +0 -2
- package/dist/src/setupTests.d.ts.map +0 -1
- package/dist/src/setupTests.js +0 -24
- package/dist/src/setupTests.js.map +0 -1
- package/dist/src/tests/test-utils.d.ts +0 -7
- package/dist/src/tests/test-utils.d.ts.map +0 -1
- package/dist/src/tests/test-utils.js +0 -21
- package/dist/src/tests/test-utils.js.map +0 -1
- package/src/components/DetailsPage/DetailsPage.spec.tsx +0 -128
- package/src/components/Device/EditDeviceWizard/types.ts +0 -22
- package/src/components/Fleet/CreateFleet/types.ts +0 -33
- package/src/setupTests.ts +0 -21
- package/src/tests/test-utils.tsx +0 -21
- /package/dist/src/components/{UserPreferences → Masthead}/UserPreferencesModal.d.ts +0 -0
- /package/dist/src/components/{UserPreferences → Masthead}/UserPreferencesModal.js +0 -0
- /package/dist/src/components/{UserPreferences → Masthead}/UserPreferencesProvider.d.ts +0 -0
- /package/dist/src/components/{UserPreferences → Masthead}/UserPreferencesProvider.js +0 -0
- /package/src/components/{UserPreferences → Masthead}/UserPreferencesModal.tsx +0 -0
- /package/src/components/{UserPreferences → Masthead}/UserPreferencesProvider.tsx +0 -0
|
@@ -6,8 +6,8 @@ import { useTranslation } from '../../../../hooks/useTranslation';
|
|
|
6
6
|
import NumberField from '../../../form/NumberField';
|
|
7
7
|
import TextListField from '../../../form/TextListField';
|
|
8
8
|
import ErrorHelperText from '../../../form/FieldHelperText';
|
|
9
|
-
import
|
|
10
|
-
import { DisruptionBudgetForm } from '
|
|
9
|
+
import { FormGroupWithHelperText } from '../../../common/WithHelperText';
|
|
10
|
+
import { DisruptionBudgetForm } from '../../../../types/deviceSpec';
|
|
11
11
|
|
|
12
12
|
const UpdateStepDisruptionBudget = () => {
|
|
13
13
|
const { t } = useTranslation();
|
|
@@ -16,14 +16,9 @@ const UpdateStepDisruptionBudget = () => {
|
|
|
16
16
|
|
|
17
17
|
return (
|
|
18
18
|
<>
|
|
19
|
-
<
|
|
20
|
-
label={
|
|
21
|
-
|
|
22
|
-
ariaLabel={t('Group devices by label keys')}
|
|
23
|
-
content={t('The disruption budget will be applied to all group combinations independently.')}
|
|
24
|
-
showLabel
|
|
25
|
-
/>
|
|
26
|
-
}
|
|
19
|
+
<FormGroupWithHelperText
|
|
20
|
+
label={t('Group devices by label keys')}
|
|
21
|
+
content={t('The disruption budget will be applied to all group combinations independently.')}
|
|
27
22
|
>
|
|
28
23
|
<TextListField
|
|
29
24
|
name="disruptionBudget.groupBy"
|
|
@@ -35,46 +30,36 @@ const UpdateStepDisruptionBudget = () => {
|
|
|
35
30
|
</Stack>
|
|
36
31
|
}
|
|
37
32
|
/>
|
|
38
|
-
</
|
|
33
|
+
</FormGroupWithHelperText>
|
|
39
34
|
<FormGroup>
|
|
40
35
|
<Flex>
|
|
41
36
|
<FlexItem>
|
|
42
|
-
<
|
|
43
|
-
label={
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
'At least this number of devices will be available at any given moment, for each group defined above.',
|
|
48
|
-
)}
|
|
49
|
-
showLabel
|
|
50
|
-
/>
|
|
51
|
-
}
|
|
37
|
+
<FormGroupWithHelperText
|
|
38
|
+
label={t('Minimum number of available devices')}
|
|
39
|
+
content={t(
|
|
40
|
+
'At least this number of devices will be available at any given moment, for each group defined above.',
|
|
41
|
+
)}
|
|
52
42
|
>
|
|
53
43
|
<NumberField
|
|
54
44
|
aria-label={t('Minimum number of available devices')}
|
|
55
45
|
name="disruptionBudget.minAvailable"
|
|
56
46
|
min={1}
|
|
57
47
|
/>
|
|
58
|
-
</
|
|
48
|
+
</FormGroupWithHelperText>
|
|
59
49
|
</FlexItem>
|
|
60
50
|
<FlexItem>
|
|
61
|
-
<
|
|
62
|
-
label={
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
'No more than this number of devices will be unavailable at any given moment, for each group defined above.',
|
|
67
|
-
)}
|
|
68
|
-
showLabel
|
|
69
|
-
/>
|
|
70
|
-
}
|
|
51
|
+
<FormGroupWithHelperText
|
|
52
|
+
label={t('Maximum number of unavailable devices')}
|
|
53
|
+
content={t(
|
|
54
|
+
'No more than this number of devices will be unavailable at any given moment, for each group defined above.',
|
|
55
|
+
)}
|
|
71
56
|
>
|
|
72
57
|
<NumberField
|
|
73
58
|
aria-label={t('Maximum number of unavailable devices')}
|
|
74
59
|
name="disruptionBudget.maxUnavailable"
|
|
75
60
|
min={1}
|
|
76
61
|
/>
|
|
77
|
-
</
|
|
62
|
+
</FormGroupWithHelperText>
|
|
78
63
|
</FlexItem>
|
|
79
64
|
{/* Show error when both numeric values are unset */}
|
|
80
65
|
{typeof meta.error === 'string' && <ErrorHelperText meta={meta} />}
|
|
@@ -14,13 +14,13 @@ import {
|
|
|
14
14
|
import { FieldArray, useField, useFormikContext } from 'formik';
|
|
15
15
|
import { MinusCircleIcon, PlusCircleIcon } from '@patternfly/react-icons/dist/js/icons';
|
|
16
16
|
|
|
17
|
-
import { BatchForm, BatchLimitType, FleetFormValues } from '
|
|
17
|
+
import { BatchForm, BatchLimitType, FleetFormValues } from '../../../../types/deviceSpec';
|
|
18
18
|
import ErrorHelperText from '../../../form/FieldHelperText';
|
|
19
19
|
import ExpandableFormSection from '../../../form/ExpandableFormSection';
|
|
20
20
|
import LabelsField from '../../../form/LabelsField';
|
|
21
21
|
import FormSelect from '../../../form/FormSelect';
|
|
22
22
|
import NumberField from '../../../form/NumberField';
|
|
23
|
-
import
|
|
23
|
+
import { FormGroupWithHelperText } from '../../../common/WithHelperText';
|
|
24
24
|
import { useTranslation } from '../../../../hooks/useTranslation';
|
|
25
25
|
import { getEmptyInitializedBatch } from '../fleetSpecUtils';
|
|
26
26
|
|
|
@@ -70,17 +70,12 @@ const RolloutPolicyBatch = ({ index }: { index: number }) => {
|
|
|
70
70
|
</SplitItem>
|
|
71
71
|
</Split>
|
|
72
72
|
</FormGroup>
|
|
73
|
-
<
|
|
73
|
+
<FormGroupWithHelperText
|
|
74
|
+
label={t('Success threshold')}
|
|
75
|
+
content={t(
|
|
76
|
+
'The minimum percentage of devices that must be updated successfully in order to continue updating the next batch of devices.',
|
|
77
|
+
)}
|
|
74
78
|
isRequired
|
|
75
|
-
label={
|
|
76
|
-
<WithHelperText
|
|
77
|
-
ariaLabel={t('Success threshold')}
|
|
78
|
-
content={t(
|
|
79
|
-
'The minimum percentage of devices that must be updated successfully in order to continue updating the next batch of devices.',
|
|
80
|
-
)}
|
|
81
|
-
showLabel
|
|
82
|
-
/>
|
|
83
|
-
}
|
|
84
79
|
>
|
|
85
80
|
<Flex flexWrap={{ default: 'wrap' }}>
|
|
86
81
|
<FlexItem>{t('If')} </FlexItem>
|
|
@@ -99,7 +94,7 @@ const RolloutPolicyBatch = ({ index }: { index: number }) => {
|
|
|
99
94
|
)}
|
|
100
95
|
</FlexItem>
|
|
101
96
|
</Flex>
|
|
102
|
-
</
|
|
97
|
+
</FormGroupWithHelperText>
|
|
103
98
|
</Grid>
|
|
104
99
|
</ExpandableFormSection>
|
|
105
100
|
);
|
|
@@ -121,17 +116,12 @@ const UpdateStepRolloutPolicy = () => {
|
|
|
121
116
|
<br />
|
|
122
117
|
{t('Devices that are not part of any batch will be updated last.')}
|
|
123
118
|
</Alert>
|
|
124
|
-
<
|
|
119
|
+
<FormGroupWithHelperText
|
|
120
|
+
label={t('Update timeout')}
|
|
121
|
+
content={t(
|
|
122
|
+
"The time-frame within which a device must be updated. If it exceeds it, device will be counted as a 'failed to update' in the batch success threshold.",
|
|
123
|
+
)}
|
|
125
124
|
isRequired
|
|
126
|
-
label={
|
|
127
|
-
<WithHelperText
|
|
128
|
-
ariaLabel={t('Update timeout')}
|
|
129
|
-
content={t(
|
|
130
|
-
"The time-frame within which a device must be updated. If it exceeds it, device will be counted as a 'failed to update' in the batch success threshold.",
|
|
131
|
-
)}
|
|
132
|
-
showLabel
|
|
133
|
-
/>
|
|
134
|
-
}
|
|
135
125
|
>
|
|
136
126
|
<Flex>
|
|
137
127
|
<FlexItem>{t('Timeout devices that fail to update after')}</FlexItem>
|
|
@@ -140,7 +130,7 @@ const UpdateStepRolloutPolicy = () => {
|
|
|
140
130
|
</FlexItem>
|
|
141
131
|
<FlexItem>{t('minutes')}.</FlexItem>
|
|
142
132
|
</Flex>
|
|
143
|
-
</
|
|
133
|
+
</FormGroupWithHelperText>
|
|
144
134
|
|
|
145
135
|
<FormGroup>
|
|
146
136
|
<FieldArray name="rolloutPolicy.batches">
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Checkbox, Flex, FlexItem, FormGroup, Stack, StackItem, Weekday } from '@patternfly/react-core';
|
|
3
|
+
import { FieldArray, useField, useFormikContext } from 'formik';
|
|
4
|
+
|
|
5
|
+
import { useTranslation } from '../../../../hooks/useTranslation';
|
|
6
|
+
import useTimeZones from '../../../../hooks/useTimeZones';
|
|
7
|
+
import * as timeUtils from '../../../../utils/time';
|
|
8
|
+
import { FleetFormValues, UpdatePolicyForm } from '../../../../types/deviceSpec';
|
|
9
|
+
import { FormGroupWithHelperText } from '../../../common/WithHelperText';
|
|
10
|
+
import CheckboxField, { CheckboxFieldGroupValidation } from '../../../form/CheckboxField';
|
|
11
|
+
import FormSelectTypeahead from '../../../form/FormSelectTypeahead';
|
|
12
|
+
import RadioField from '../../../form/RadioField';
|
|
13
|
+
import ErrorHelperText from '../../../form/FieldHelperText';
|
|
14
|
+
|
|
15
|
+
import './UpdateStepUpdatePolicy.css';
|
|
16
|
+
|
|
17
|
+
export enum ScheduleBlockType {
|
|
18
|
+
Download = 'download',
|
|
19
|
+
Install = 'install',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
type ScheduleBlockProps = {
|
|
23
|
+
updatePolicy: UpdatePolicyForm;
|
|
24
|
+
blockType: ScheduleBlockType;
|
|
25
|
+
weekDayError?: string[] | string | Weekday;
|
|
26
|
+
onScheduleModeSwitch: (blockType: ScheduleBlockType) => void;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const ScheduleTimeZone = ({ blockType }: { blockType: ScheduleBlockType }) => {
|
|
30
|
+
const { t } = useTranslation();
|
|
31
|
+
|
|
32
|
+
const id = `updatePolicy.${blockType}TimeZone`;
|
|
33
|
+
|
|
34
|
+
const [{ value: timeZone, ...rest }, , { setValue }] = useField<string>({
|
|
35
|
+
name: id,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
const zones = useTimeZones();
|
|
39
|
+
|
|
40
|
+
const onChangeTimezoneCheckbox = (_, isChecked: boolean) => {
|
|
41
|
+
setValue(isChecked ? timeUtils.localDeviceTimezone : '');
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
return (
|
|
45
|
+
<FormGroup id={`form-control__${id}`} fieldId={id} isStack className="fctl-policy-timezone">
|
|
46
|
+
<Checkbox
|
|
47
|
+
{...rest}
|
|
48
|
+
isChecked={timeZone === timeUtils.localDeviceTimezone}
|
|
49
|
+
id={id}
|
|
50
|
+
onChange={onChangeTimezoneCheckbox}
|
|
51
|
+
label={t("Use device's local timezone")}
|
|
52
|
+
/>
|
|
53
|
+
|
|
54
|
+
{timeZone !== timeUtils.localDeviceTimezone && <FormSelectTypeahead name={id} defaultId="" items={zones} />}
|
|
55
|
+
</FormGroup>
|
|
56
|
+
);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const ScheduleBlock = ({ blockType, updatePolicy, onScheduleModeSwitch, weekDayError }: ScheduleBlockProps) => {
|
|
60
|
+
const { t } = useTranslation();
|
|
61
|
+
|
|
62
|
+
let ariaLabel: string;
|
|
63
|
+
let helperContent: string;
|
|
64
|
+
|
|
65
|
+
switch (blockType) {
|
|
66
|
+
case ScheduleBlockType.Download:
|
|
67
|
+
{
|
|
68
|
+
if (updatePolicy.downloadAndInstallDiffer) {
|
|
69
|
+
ariaLabel = t('Downloading schedule');
|
|
70
|
+
helperContent = t('Time frame during which devices can start downloading their new configurations.');
|
|
71
|
+
} else {
|
|
72
|
+
ariaLabel = t('Downloading and installing schedule');
|
|
73
|
+
helperContent = t(
|
|
74
|
+
'Time frame during which devices can start downloading and installing their new configurations.',
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
break;
|
|
80
|
+
case ScheduleBlockType.Install:
|
|
81
|
+
ariaLabel = t('Installing schedule');
|
|
82
|
+
helperContent = t('Time frame during which devices can start installing their new configurations.');
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const selectableTimes = React.useMemo(() => timeUtils.getSelectableTimes(), []);
|
|
87
|
+
|
|
88
|
+
const isValidTypedItem = React.useCallback((value: string) => timeUtils.valid24HourClockRegExp.test(value), []);
|
|
89
|
+
|
|
90
|
+
const transformTypedItem = React.useCallback((time: string) => {
|
|
91
|
+
if (timeUtils.formatted24HourClockRegExp.test(time)) {
|
|
92
|
+
return time;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// We "fix" the value when it misses the optional leading 0, or the semicolon
|
|
96
|
+
// The value is known to be valid at this point, so there should always be a match.
|
|
97
|
+
const match = time.match(/^(\d{1,2})?:?(\d{2})?$/);
|
|
98
|
+
return match ? `${timeUtils.formatTimePart(match[1])}:${match[2]}` : timeUtils.defaultStartTime;
|
|
99
|
+
}, []);
|
|
100
|
+
|
|
101
|
+
const scheduleMode =
|
|
102
|
+
blockType === ScheduleBlockType.Download ? updatePolicy.downloadScheduleMode : updatePolicy.installScheduleMode;
|
|
103
|
+
const isWeekly = scheduleMode === timeUtils.UpdateScheduleMode.Weekly;
|
|
104
|
+
|
|
105
|
+
return (
|
|
106
|
+
<FormGroupWithHelperText isRequired label={ariaLabel} content={helperContent}>
|
|
107
|
+
<Stack hasGutter>
|
|
108
|
+
<StackItem>
|
|
109
|
+
<Flex>
|
|
110
|
+
<FlexItem>
|
|
111
|
+
<FormSelectTypeahead
|
|
112
|
+
name={`updatePolicy.${blockType}StartsAt`}
|
|
113
|
+
placeholderText={t('hh:mm', { nsSeparator: '|' })}
|
|
114
|
+
defaultId={timeUtils.defaultStartTime}
|
|
115
|
+
items={selectableTimes}
|
|
116
|
+
isValidTypedItem={isValidTypedItem}
|
|
117
|
+
transformTypedItem={transformTypedItem}
|
|
118
|
+
/>
|
|
119
|
+
</FlexItem>
|
|
120
|
+
<FlexItem>
|
|
121
|
+
<FormSelectTypeahead
|
|
122
|
+
name={`updatePolicy.${blockType}EndsAt`}
|
|
123
|
+
placeholderText={t('hh:mm', { nsSeparator: '|' })}
|
|
124
|
+
defaultId={timeUtils.defaultEndTime}
|
|
125
|
+
items={selectableTimes}
|
|
126
|
+
isValidTypedItem={isValidTypedItem}
|
|
127
|
+
transformTypedItem={transformTypedItem}
|
|
128
|
+
/>
|
|
129
|
+
</FlexItem>
|
|
130
|
+
<FlexItem>
|
|
131
|
+
<RadioField
|
|
132
|
+
id={`daily-${blockType}`}
|
|
133
|
+
name={`updatePolicy.${blockType}ScheduleMode`}
|
|
134
|
+
label={t('Daily')}
|
|
135
|
+
checkedValue={timeUtils.UpdateScheduleMode.Daily}
|
|
136
|
+
/>
|
|
137
|
+
</FlexItem>
|
|
138
|
+
<FlexItem>
|
|
139
|
+
<RadioField
|
|
140
|
+
id={`weekly-${blockType}`}
|
|
141
|
+
name={`updatePolicy.${blockType}ScheduleMode`}
|
|
142
|
+
label={t('Weekly')}
|
|
143
|
+
checkedValue={timeUtils.UpdateScheduleMode.Weekly}
|
|
144
|
+
onChangeCustom={() => onScheduleModeSwitch(blockType)}
|
|
145
|
+
/>
|
|
146
|
+
</FlexItem>
|
|
147
|
+
</Flex>
|
|
148
|
+
</StackItem>
|
|
149
|
+
{isWeekly && (
|
|
150
|
+
<FieldArray name={`updatePolicy.${blockType}WeekDays`}>
|
|
151
|
+
{() => (
|
|
152
|
+
<>
|
|
153
|
+
<StackItem>
|
|
154
|
+
<Flex>
|
|
155
|
+
<FlexItem>
|
|
156
|
+
<CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[0]`} label={t('Sun')} />
|
|
157
|
+
</FlexItem>
|
|
158
|
+
<FlexItem>
|
|
159
|
+
<CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[1]`} label={t('Mon')} />
|
|
160
|
+
</FlexItem>
|
|
161
|
+
<FlexItem>
|
|
162
|
+
<CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[2]`} label={t('Tue')} />
|
|
163
|
+
</FlexItem>
|
|
164
|
+
<FlexItem>
|
|
165
|
+
<CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[3]`} label={t('Wed')} />
|
|
166
|
+
</FlexItem>
|
|
167
|
+
<FlexItem>
|
|
168
|
+
<CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[4]`} label={t('Thu')} />
|
|
169
|
+
</FlexItem>
|
|
170
|
+
<FlexItem>
|
|
171
|
+
<CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[5]`} label={t('Fri')} />
|
|
172
|
+
</FlexItem>
|
|
173
|
+
<FlexItem>
|
|
174
|
+
<CheckboxFieldGroupValidation name={`updatePolicy.${blockType}WeekDays[6]`} label={t('Sat')} />
|
|
175
|
+
</FlexItem>
|
|
176
|
+
</Flex>
|
|
177
|
+
</StackItem>
|
|
178
|
+
<StackItem>
|
|
179
|
+
<ErrorHelperText error={weekDayError} />
|
|
180
|
+
</StackItem>
|
|
181
|
+
</>
|
|
182
|
+
)}
|
|
183
|
+
</FieldArray>
|
|
184
|
+
)}
|
|
185
|
+
<StackItem style={{ maxWidth: 500 }}>
|
|
186
|
+
<ScheduleTimeZone blockType={blockType} />
|
|
187
|
+
</StackItem>
|
|
188
|
+
</Stack>
|
|
189
|
+
</FormGroupWithHelperText>
|
|
190
|
+
);
|
|
191
|
+
};
|
|
192
|
+
|
|
193
|
+
const UpdateStepUpdatePolicy = () => {
|
|
194
|
+
const { t } = useTranslation();
|
|
195
|
+
|
|
196
|
+
const {
|
|
197
|
+
values: { updatePolicy },
|
|
198
|
+
errors,
|
|
199
|
+
setFieldValue,
|
|
200
|
+
} = useFormikContext<FleetFormValues>();
|
|
201
|
+
|
|
202
|
+
// When switching to "daily" mode, we keep the selected weekdays, as they will be ignored.
|
|
203
|
+
// By doing this, if users switch to "weekly" again, we can show the weekdays they selected previously instead of all/none
|
|
204
|
+
const onSwitchToWeeklyMode = (blockType: ScheduleBlockType) => {
|
|
205
|
+
const selectedDays =
|
|
206
|
+
blockType === ScheduleBlockType.Download ? updatePolicy.downloadWeekDays : updatePolicy.installWeekDays;
|
|
207
|
+
|
|
208
|
+
const isAllWeekSelected = selectedDays.every(Boolean);
|
|
209
|
+
if (isAllWeekSelected) {
|
|
210
|
+
setFieldValue(`updatePolicy.${blockType}WeekDays`, [false, false, false, false, false, false, false]);
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
return (
|
|
215
|
+
<Stack hasGutter>
|
|
216
|
+
<StackItem>
|
|
217
|
+
<CheckboxField
|
|
218
|
+
label={t('Use different update schedules for downloading and installing updates')}
|
|
219
|
+
name="updatePolicy.downloadAndInstallDiffer"
|
|
220
|
+
/>
|
|
221
|
+
</StackItem>
|
|
222
|
+
|
|
223
|
+
<StackItem>
|
|
224
|
+
<ScheduleBlock
|
|
225
|
+
blockType={ScheduleBlockType.Download}
|
|
226
|
+
updatePolicy={updatePolicy}
|
|
227
|
+
weekDayError={errors.updatePolicy?.downloadWeekDays}
|
|
228
|
+
onScheduleModeSwitch={onSwitchToWeeklyMode}
|
|
229
|
+
/>
|
|
230
|
+
</StackItem>
|
|
231
|
+
|
|
232
|
+
{updatePolicy.downloadAndInstallDiffer && (
|
|
233
|
+
<StackItem>
|
|
234
|
+
<ScheduleBlock
|
|
235
|
+
blockType={ScheduleBlockType.Install}
|
|
236
|
+
updatePolicy={updatePolicy}
|
|
237
|
+
weekDayError={errors.updatePolicy?.installWeekDays}
|
|
238
|
+
onScheduleModeSwitch={onSwitchToWeeklyMode}
|
|
239
|
+
/>
|
|
240
|
+
</StackItem>
|
|
241
|
+
)}
|
|
242
|
+
</Stack>
|
|
243
|
+
);
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
export default UpdateStepUpdatePolicy;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Fleet, PatchRequest } from '@flightctl/types';
|
|
2
2
|
import { TFunction } from 'i18next';
|
|
3
3
|
import * as Yup from 'yup';
|
|
4
|
-
import { FleetFormValues } from './types';
|
|
5
4
|
import { API_VERSION } from '../../../constants';
|
|
6
5
|
import { toAPILabel } from '../../../utils/labels';
|
|
7
6
|
import {
|
|
@@ -13,27 +12,31 @@ import {
|
|
|
13
12
|
validKubernetesDnsSubdomain,
|
|
14
13
|
validLabelsSchema,
|
|
15
14
|
validOsImage,
|
|
15
|
+
validUpdatePolicySchema,
|
|
16
16
|
} from '../../form/validations';
|
|
17
17
|
import {
|
|
18
18
|
appendJSONPatch,
|
|
19
|
-
getApplicationPatches,
|
|
20
19
|
getLabelPatches,
|
|
21
20
|
getRolloutPolicyData,
|
|
22
21
|
getRolloutPolicyPatches,
|
|
23
22
|
getStringListPatches,
|
|
24
|
-
|
|
23
|
+
getUpdatePolicyPatches,
|
|
24
|
+
updatePolicyFormToApi,
|
|
25
25
|
} from '../../../utils/patch';
|
|
26
26
|
import {
|
|
27
27
|
ACMCrdConfig,
|
|
28
28
|
ACMImportConfig,
|
|
29
29
|
MicroshiftRegistrationHook,
|
|
30
|
-
|
|
30
|
+
getApiConfig,
|
|
31
|
+
getApplicationPatches,
|
|
31
32
|
getApplicationValues,
|
|
32
33
|
getConfigTemplatesValues,
|
|
33
34
|
getDeviceSpecConfigPatches,
|
|
34
35
|
hasMicroshiftRegistrationConfig,
|
|
36
|
+
toAPIApplication,
|
|
35
37
|
} from '../../Device/EditDeviceWizard/deviceSpecUtils';
|
|
36
|
-
import { getDisruptionBudgetValues, getRolloutPolicyValues } from './fleetSpecUtils';
|
|
38
|
+
import { getDisruptionBudgetValues, getRolloutPolicyValues, getUpdatePolicyValues } from './fleetSpecUtils';
|
|
39
|
+
import { FleetFormValues, UpdatePolicyForm } from '../../../types/deviceSpec';
|
|
37
40
|
|
|
38
41
|
export const getValidationSchema = (t: TFunction) => {
|
|
39
42
|
return Yup.object<FleetFormValues>({
|
|
@@ -46,6 +49,7 @@ export const getValidationSchema = (t: TFunction) => {
|
|
|
46
49
|
systemdUnits: systemdUnitListValidationSchema(t),
|
|
47
50
|
rolloutPolicy: validFleetRolloutPolicySchema(t),
|
|
48
51
|
disruptionBudget: validFleetDisruptionBudgetSchema(t),
|
|
52
|
+
updatePolicy: validUpdatePolicySchema(t),
|
|
49
53
|
});
|
|
50
54
|
};
|
|
51
55
|
|
|
@@ -113,7 +117,7 @@ export const getFleetPatches = (currentFleet: Fleet, updatedFleet: FleetFormValu
|
|
|
113
117
|
|
|
114
118
|
// Configurations
|
|
115
119
|
const currentConfigs = currentFleet.spec.template.spec.config || [];
|
|
116
|
-
const newConfigs = updatedFleet.configTemplates.map(
|
|
120
|
+
const newConfigs = updatedFleet.configTemplates.map(getApiConfig);
|
|
117
121
|
if (updatedFleet.registerMicroShift) {
|
|
118
122
|
newConfigs.push(ACMCrdConfig, ACMImportConfig, MicroshiftRegistrationHook);
|
|
119
123
|
}
|
|
@@ -141,6 +145,13 @@ export const getFleetPatches = (currentFleet: Fleet, updatedFleet: FleetFormValu
|
|
|
141
145
|
const rolloutPolicyPatches = getRolloutPolicyPatches(currentFleet.spec.rolloutPolicy, updatedFleet);
|
|
142
146
|
allPatches = allPatches.concat(rolloutPolicyPatches);
|
|
143
147
|
|
|
148
|
+
// Update policies
|
|
149
|
+
const updatePolicyPatches = getUpdatePolicyPatches(
|
|
150
|
+
'/spec/template/spec/updatePolicy',
|
|
151
|
+
currentFleet.spec.template.spec.updatePolicy,
|
|
152
|
+
updatedFleet.updatePolicy as Required<UpdatePolicyForm>,
|
|
153
|
+
);
|
|
154
|
+
allPatches = allPatches.concat(updatePolicyPatches);
|
|
144
155
|
return allPatches;
|
|
145
156
|
};
|
|
146
157
|
|
|
@@ -172,7 +183,7 @@ export const getFleetResource = (values: FleetFormValues): Fleet => {
|
|
|
172
183
|
},
|
|
173
184
|
spec: {
|
|
174
185
|
os: values.osImage ? { image: values.osImage || '' } : undefined,
|
|
175
|
-
config: values.configTemplates.map(
|
|
186
|
+
config: values.configTemplates.map(getApiConfig),
|
|
176
187
|
applications: values.applications.map(toAPIApplication),
|
|
177
188
|
...systemdPatterns,
|
|
178
189
|
},
|
|
@@ -186,6 +197,9 @@ export const getFleetResource = (values: FleetFormValues): Fleet => {
|
|
|
186
197
|
if (values.rolloutPolicy.isAdvanced || values.disruptionBudget.isAdvanced) {
|
|
187
198
|
fleet.spec.rolloutPolicy = getRolloutPolicyData(values);
|
|
188
199
|
}
|
|
200
|
+
if (values.updatePolicy.isAdvanced) {
|
|
201
|
+
fleet.spec.template.spec.updatePolicy = updatePolicyFormToApi(values.updatePolicy as Required<UpdatePolicyForm>);
|
|
202
|
+
}
|
|
189
203
|
|
|
190
204
|
return fleet;
|
|
191
205
|
};
|
|
@@ -213,6 +227,7 @@ export const getInitialValues = (fleet?: Fleet): FleetFormValues => {
|
|
|
213
227
|
registerMicroShift,
|
|
214
228
|
rolloutPolicy: getRolloutPolicyValues(fleet.spec),
|
|
215
229
|
disruptionBudget: getDisruptionBudgetValues(fleet.spec),
|
|
230
|
+
updatePolicy: getUpdatePolicyValues(fleet.spec.template?.spec?.updatePolicy),
|
|
216
231
|
};
|
|
217
232
|
}
|
|
218
233
|
|
|
@@ -227,5 +242,6 @@ export const getInitialValues = (fleet?: Fleet): FleetFormValues => {
|
|
|
227
242
|
registerMicroShift: false,
|
|
228
243
|
rolloutPolicy: getRolloutPolicyValues(undefined),
|
|
229
244
|
disruptionBudget: getDisruptionBudgetValues(undefined),
|
|
245
|
+
updatePolicy: getUpdatePolicyValues(undefined),
|
|
230
246
|
};
|
|
231
247
|
};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import {
|
|
3
|
+
Button,
|
|
3
4
|
EmptyStateActions,
|
|
4
5
|
EmptyStateBody,
|
|
5
6
|
EmptyStateFooter,
|
|
6
|
-
SelectList,
|
|
7
|
-
SelectOption,
|
|
8
7
|
Split,
|
|
9
8
|
SplitItem,
|
|
9
|
+
Stack,
|
|
10
|
+
StackItem,
|
|
10
11
|
Toolbar,
|
|
11
12
|
ToolbarContent,
|
|
12
13
|
ToolbarGroup,
|
|
@@ -14,7 +15,6 @@ import {
|
|
|
14
15
|
} from '@patternfly/react-core';
|
|
15
16
|
import { Tbody } from '@patternfly/react-table';
|
|
16
17
|
import { TopologyIcon } from '@patternfly/react-icons/dist/js/icons/topology-icon';
|
|
17
|
-
import { Trans } from 'react-i18next';
|
|
18
18
|
import { TFunction } from 'i18next';
|
|
19
19
|
|
|
20
20
|
import ListPage from '../ListPage/ListPage';
|
|
@@ -23,7 +23,6 @@ import TablePagination from '../Table/TablePagination';
|
|
|
23
23
|
import TableTextSearch from '../Table/TableTextSearch';
|
|
24
24
|
import Table, { ApiSortTableColumn } from '../Table/Table';
|
|
25
25
|
import { useTableSelect } from '../../hooks/useTableSelect';
|
|
26
|
-
import TableActions from '../Table/TableActions';
|
|
27
26
|
import { getResourceId } from '../../utils/resource';
|
|
28
27
|
import MassDeleteFleetModal from '../modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal';
|
|
29
28
|
import FleetRow from './FleetRow';
|
|
@@ -72,13 +71,13 @@ const FleetPageActions = ({ createText }: { createText?: string }) => {
|
|
|
72
71
|
const FleetEmptyState = () => {
|
|
73
72
|
const { t } = useTranslation();
|
|
74
73
|
return (
|
|
75
|
-
<ResourceListEmptyState icon={TopologyIcon} titleText={t('No fleets
|
|
74
|
+
<ResourceListEmptyState icon={TopologyIcon} titleText={t('No fleets yet')}>
|
|
76
75
|
<EmptyStateBody>
|
|
77
|
-
<
|
|
78
|
-
Fleets
|
|
79
|
-
<
|
|
80
|
-
|
|
81
|
-
</
|
|
76
|
+
<Stack>
|
|
77
|
+
<StackItem>{t('Fleets make it easier to manage multiple devices with shared configurations.')}</StackItem>
|
|
78
|
+
<StackItem>{t('Fleets allow you to edit and update your devices at once.')}</StackItem>
|
|
79
|
+
<StackItem>{t('To get started, create a new fleet or import an existing configuration.')}</StackItem>
|
|
80
|
+
</Stack>
|
|
82
81
|
</EmptyStateBody>
|
|
83
82
|
<EmptyStateFooter>
|
|
84
83
|
<EmptyStateActions>
|
|
@@ -137,11 +136,9 @@ const FleetTable = () => {
|
|
|
137
136
|
)}
|
|
138
137
|
{canDelete && (
|
|
139
138
|
<ToolbarItem>
|
|
140
|
-
<
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
</SelectList>
|
|
144
|
-
</TableActions>
|
|
139
|
+
<Button isDisabled={!hasSelectedRows} onClick={() => setIsMassDeleteModalOpen(true)} variant="secondary">
|
|
140
|
+
{t('Delete fleets')}
|
|
141
|
+
</Button>
|
|
145
142
|
</ToolbarItem>
|
|
146
143
|
)}
|
|
147
144
|
</ToolbarContent>
|
|
@@ -150,8 +147,9 @@ const FleetTable = () => {
|
|
|
150
147
|
aria-label={t('Fleets table')}
|
|
151
148
|
loading={isUpdating}
|
|
152
149
|
columns={fleetColumns}
|
|
153
|
-
|
|
150
|
+
hasFilters={hasFiltersEnabled}
|
|
154
151
|
emptyData={fleets.length === 0}
|
|
152
|
+
clearFilters={() => setName('')}
|
|
155
153
|
isAllSelected={isAllSelected}
|
|
156
154
|
onSelectAll={setAllSelected}
|
|
157
155
|
>
|
|
@@ -173,7 +171,7 @@ const FleetTable = () => {
|
|
|
173
171
|
</Tbody>
|
|
174
172
|
</Table>
|
|
175
173
|
<TablePagination pagination={pagination} isUpdating={isUpdating} />
|
|
176
|
-
{fleets.length === 0 && <FleetEmptyState />}
|
|
174
|
+
{!isUpdating && fleets.length === 0 && !name && <FleetEmptyState />}
|
|
177
175
|
{fleetToDeleteId && (
|
|
178
176
|
<DeleteFleetModal
|
|
179
177
|
fleetId={fleetToDeleteId}
|
|
@@ -23,7 +23,7 @@ const ResourceSyncStep = () => {
|
|
|
23
23
|
<TextContent>
|
|
24
24
|
<Text>
|
|
25
25
|
{t(
|
|
26
|
-
|
|
26
|
+
'A resource sync is an automated Gitops method that helps manage your imported fleets by monitoring source repository changes and updating your fleet configuration accordingly.',
|
|
27
27
|
)}
|
|
28
28
|
</Text>
|
|
29
29
|
</TextContent>
|
|
@@ -7,9 +7,10 @@ type ListPageProps = {
|
|
|
7
7
|
title: string;
|
|
8
8
|
headingLevel?: TitleProps['headingLevel'];
|
|
9
9
|
children: React.ReactNode;
|
|
10
|
+
withBadge?: boolean;
|
|
10
11
|
};
|
|
11
12
|
|
|
12
|
-
const ListPage: React.FC<ListPageProps> = ({ title, headingLevel = 'h1', children }) => {
|
|
13
|
+
const ListPage: React.FC<ListPageProps> = ({ title, headingLevel = 'h1', withBadge = true, children }) => {
|
|
13
14
|
return (
|
|
14
15
|
<PageSection variant={PageSectionVariants.light}>
|
|
15
16
|
<Flex gap={{ default: 'gapMd' }} alignItems={{ default: 'alignItemsCenter' }}>
|
|
@@ -18,9 +19,11 @@ const ListPage: React.FC<ListPageProps> = ({ title, headingLevel = 'h1', childre
|
|
|
18
19
|
{title}
|
|
19
20
|
</Title>
|
|
20
21
|
</FlexItem>
|
|
21
|
-
|
|
22
|
-
<
|
|
23
|
-
|
|
22
|
+
{withBadge && (
|
|
23
|
+
<FlexItem>
|
|
24
|
+
<TechPreviewBadge />
|
|
25
|
+
</FlexItem>
|
|
26
|
+
)}
|
|
24
27
|
</Flex>
|
|
25
28
|
{children}
|
|
26
29
|
</PageSection>
|