@flightctl/ui-components 0.0.10 → 0.4.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/Tables/ApplicationsTable.css +7 -0
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.d.ts +8 -1
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.d.ts.map +1 -1
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.js +91 -9
- 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 +15 -51
- package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.js.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.d.ts +10 -0
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.d.ts.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.js +65 -0
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.d.ts +5 -4
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js +18 -9
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.d.ts +3 -4
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js +6 -18
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js.map +1 -1
- package/dist/src/components/Device/DeviceDetails/TerminalTab.d.ts +4 -3
- package/dist/src/components/Device/DeviceDetails/TerminalTab.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/TerminalTab.js +13 -4
- package/dist/src/components/Device/DeviceDetails/TerminalTab.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceFilterSelect.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceFilterSelect.js +4 -14
- package/dist/src/components/Device/DevicesPage/DeviceFilterSelect.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceTableRow.d.ts +2 -0
- package/dist/src/components/Device/DevicesPage/DeviceTableRow.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceTableRow.js +14 -6
- package/dist/src/components/Device/DevicesPage/DeviceTableRow.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceTableToolbar.d.ts +0 -3
- package/dist/src/components/Device/DevicesPage/DeviceTableToolbar.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceTableToolbar.js +2 -2
- package/dist/src/components/Device/DevicesPage/DeviceTableToolbar.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.d.ts +1 -4
- package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.js +70 -16
- package/dist/src/components/Device/DevicesPage/DeviceToolbarFilters.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DevicesPage.d.ts +6 -8
- package/dist/src/components/Device/DevicesPage/DevicesPage.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DevicesPage.js +41 -37
- package/dist/src/components/Device/DevicesPage/DevicesPage.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/types.d.ts +1 -10
- package/dist/src/components/Device/DevicesPage/types.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/types.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/useDevices.d.ts +9 -10
- package/dist/src/components/Device/DevicesPage/useDevices.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/useDevices.js +9 -29
- package/dist/src/components/Device/DevicesPage/useDevices.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.d.ts +2 -2
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js +19 -4
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.d.ts +7 -2
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js +99 -7
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.d.ts +5 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.d.ts.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/{ApplicationsForm.js → ApplicationTemplates.js} +31 -24
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js +9 -10
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.d.ts +2 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js +5 -6
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.d.ts +4 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.d.ts.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/{ConfigTemplateForm.js → ConfigurationTemplates.js} +42 -28
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js +53 -12
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.d.ts +7 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.d.ts.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.js +13 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.d.ts +4 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.d.ts.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.js +38 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/types.d.ts +3 -0
- package/dist/src/components/Device/EditDeviceWizard/types.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/utils.d.ts +1 -0
- package/dist/src/components/Device/EditDeviceWizard/utils.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/utils.js +5 -2
- package/dist/src/components/Device/EditDeviceWizard/utils.js.map +1 -1
- package/dist/src/components/Device/{MatchPatternsModal/MatchPatternsModal.d.ts → SystemdUnitsModal/SystemdUnitsModal.d.ts} +6 -6
- package/dist/src/components/Device/SystemdUnitsModal/SystemdUnitsModal.d.ts.map +1 -0
- package/dist/src/components/Device/{MatchPatternsModal/MatchPatternsModal.js → SystemdUnitsModal/SystemdUnitsModal.js} +28 -15
- package/dist/src/components/Device/SystemdUnitsModal/SystemdUnitsModal.js.map +1 -0
- package/dist/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.d.ts +15 -0
- package/dist/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.d.ts.map +1 -0
- package/dist/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.js +57 -0
- package/dist/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.js.map +1 -0
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.d.ts +2 -2
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.d.ts.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js +14 -4
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.d.ts +9 -0
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.d.ts.map +1 -0
- package/dist/src/components/{Device/DevicesPage → EnrollmentRequest}/EnrollmentRequestList.js +40 -38
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.js.map +1 -0
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.d.ts +2 -0
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.d.ts.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.js +15 -11
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.js.map +1 -1
- package/dist/src/components/{Device/DevicesPage → EnrollmentRequest}/EnrollmentRequestTableToolbar.d.ts +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableToolbar.d.ts.map +1 -0
- package/dist/src/components/{Device/DevicesPage → EnrollmentRequest}/EnrollmentRequestTableToolbar.js +2 -2
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableToolbar.js.map +1 -0
- package/dist/src/components/EnrollmentRequest/useEnrollmentRequests.d.ts +9 -0
- package/dist/src/components/EnrollmentRequest/useEnrollmentRequests.d.ts.map +1 -0
- package/dist/src/components/EnrollmentRequest/useEnrollmentRequests.js +42 -0
- package/dist/src/components/EnrollmentRequest/useEnrollmentRequests.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.d.ts +2 -2
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js +19 -2
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js +2 -4
- package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.js +6 -1
- package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/utils.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/utils.js +61 -35
- package/dist/src/components/Fleet/CreateFleet/utils.js.map +1 -1
- package/dist/src/components/Fleet/FleetDetails/FleetDetails.d.ts +2 -2
- package/dist/src/components/Fleet/FleetDetails/FleetDetails.d.ts.map +1 -1
- package/dist/src/components/Fleet/FleetDetails/FleetDetails.js +16 -6
- package/dist/src/components/Fleet/FleetDetails/FleetDetails.js.map +1 -1
- package/dist/src/components/Fleet/FleetResourceSyncs.d.ts +2 -5
- package/dist/src/components/Fleet/FleetResourceSyncs.d.ts.map +1 -1
- package/dist/src/components/Fleet/FleetResourceSyncs.js +38 -24
- package/dist/src/components/Fleet/FleetResourceSyncs.js.map +1 -1
- package/dist/src/components/Fleet/FleetRow.d.ts +2 -0
- package/dist/src/components/Fleet/FleetRow.d.ts.map +1 -1
- package/dist/src/components/Fleet/FleetRow.js +16 -14
- package/dist/src/components/Fleet/FleetRow.js.map +1 -1
- package/dist/src/components/Fleet/FleetsPage.d.ts +2 -2
- package/dist/src/components/Fleet/FleetsPage.d.ts.map +1 -1
- package/dist/src/components/Fleet/FleetsPage.js +34 -24
- package/dist/src/components/Fleet/FleetsPage.js.map +1 -1
- package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.d.ts +2 -2
- package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.d.ts.map +1 -1
- package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.js +11 -2
- package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.js.map +1 -1
- package/dist/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.d.ts.map +1 -1
- package/dist/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.js +5 -2
- package/dist/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.js.map +1 -1
- package/dist/src/components/Fleet/useFleets.d.ts +11 -3
- package/dist/src/components/Fleet/useFleets.d.ts.map +1 -1
- package/dist/src/components/Fleet/useFleets.js +22 -12
- package/dist/src/components/Fleet/useFleets.js.map +1 -1
- package/dist/src/components/OverviewPage/Cards/Status/StatusCard.d.ts.map +1 -1
- package/dist/src/components/OverviewPage/Cards/Status/StatusCard.js +5 -14
- package/dist/src/components/OverviewPage/Cards/Status/StatusCard.js.map +1 -1
- package/dist/src/components/OverviewPage/Cards/Status/StatusCardFilters.d.ts +0 -3
- package/dist/src/components/OverviewPage/Cards/Status/StatusCardFilters.d.ts.map +1 -1
- package/dist/src/components/OverviewPage/Cards/Status/StatusCardFilters.js +2 -2
- package/dist/src/components/OverviewPage/Cards/Status/StatusCardFilters.js.map +1 -1
- package/dist/src/components/OverviewPage/Overview.d.ts.map +1 -1
- package/dist/src/components/OverviewPage/Overview.js +11 -5
- package/dist/src/components/OverviewPage/Overview.js.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateRepository.d.ts +2 -2
- package/dist/src/components/Repository/CreateRepository/CreateRepository.d.ts.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateRepository.js +15 -6
- package/dist/src/components/Repository/CreateRepository/CreateRepository.js.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.d.ts.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js +4 -1
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js.map +1 -1
- package/dist/src/components/Repository/CreateRepository/utils.d.ts.map +1 -1
- package/dist/src/components/Repository/CreateRepository/utils.js +22 -6
- package/dist/src/components/Repository/CreateRepository/utils.js.map +1 -1
- package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.d.ts.map +1 -1
- package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.js +3 -2
- package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.js.map +1 -1
- package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.d.ts +2 -2
- package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.d.ts.map +1 -1
- package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js +16 -5
- package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js.map +1 -1
- package/dist/src/components/Repository/RepositoryList.d.ts +0 -1
- package/dist/src/components/Repository/RepositoryList.d.ts.map +1 -1
- package/dist/src/components/Repository/RepositoryList.js +55 -46
- package/dist/src/components/Repository/RepositoryList.js.map +1 -1
- package/dist/src/components/Repository/useRepositories.d.ts +16 -0
- package/dist/src/components/Repository/useRepositories.d.ts.map +1 -0
- package/dist/src/components/Repository/useRepositories.js +40 -0
- package/dist/src/components/Repository/useRepositories.js.map +1 -0
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.d.ts.map +1 -1
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js +21 -23
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js.map +1 -1
- package/dist/src/components/Table/Table.d.ts +0 -1
- package/dist/src/components/Table/Table.d.ts.map +1 -1
- package/dist/src/components/Table/Table.js +2 -2
- package/dist/src/components/Table/Table.js.map +1 -1
- package/dist/src/components/Table/TablePagination.d.ts +8 -0
- package/dist/src/components/Table/TablePagination.d.ts.map +1 -0
- package/dist/src/components/Table/TablePagination.js +38 -0
- package/dist/src/components/Table/TablePagination.js.map +1 -0
- package/dist/src/components/Terminal/Terminal.d.ts.map +1 -1
- package/dist/src/components/Terminal/Terminal.js +1 -0
- package/dist/src/components/Terminal/Terminal.js.map +1 -1
- package/dist/src/components/common/AccessDenied.d.ts +4 -0
- package/dist/src/components/common/AccessDenied.d.ts.map +1 -0
- package/dist/src/components/common/AccessDenied.js +15 -0
- package/dist/src/components/common/AccessDenied.js.map +1 -0
- package/dist/src/components/common/ButtonWithPermissions.d.ts +8 -0
- package/dist/src/components/common/ButtonWithPermissions.d.ts.map +1 -0
- package/dist/src/components/common/ButtonWithPermissions.js +12 -0
- package/dist/src/components/common/ButtonWithPermissions.js.map +1 -0
- package/dist/src/components/common/LearnMoreLink.d.ts +7 -0
- package/dist/src/components/common/LearnMoreLink.d.ts.map +1 -0
- package/dist/src/components/common/LearnMoreLink.js +13 -0
- package/dist/src/components/common/LearnMoreLink.js.map +1 -0
- package/dist/src/components/common/PageWithPermissions.d.ts +7 -0
- package/dist/src/components/common/PageWithPermissions.d.ts.map +1 -0
- package/dist/src/components/common/PageWithPermissions.js +17 -0
- package/dist/src/components/common/PageWithPermissions.js.map +1 -0
- package/dist/src/components/form/FilterSelect.d.ts +2 -4
- package/dist/src/components/form/FilterSelect.d.ts.map +1 -1
- package/dist/src/components/form/FilterSelect.js.map +1 -1
- package/dist/src/components/form/FlightCtlForm.css +3 -0
- package/dist/src/components/form/FlightCtlForm.d.ts +1 -0
- package/dist/src/components/form/FlightCtlForm.d.ts.map +1 -1
- package/dist/src/components/form/FlightCtlForm.js +2 -1
- package/dist/src/components/form/FlightCtlForm.js.map +1 -1
- package/dist/src/components/form/FormSelect.d.ts +1 -0
- package/dist/src/components/form/FormSelect.d.ts.map +1 -1
- package/dist/src/components/form/FormSelect.js +14 -2
- package/dist/src/components/form/FormSelect.js.map +1 -1
- package/dist/src/components/form/LabelsField.d.ts +2 -1
- package/dist/src/components/form/LabelsField.d.ts.map +1 -1
- package/dist/src/components/form/LabelsField.js +6 -6
- package/dist/src/components/form/LabelsField.js.map +1 -1
- package/dist/src/components/form/validations.d.ts +13 -2
- package/dist/src/components/form/validations.d.ts.map +1 -1
- package/dist/src/components/form/validations.js +39 -24
- package/dist/src/components/form/validations.js.map +1 -1
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.d.ts.map +1 -1
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js +2 -5
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js.map +1 -1
- package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.d.ts +2 -1
- package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.d.ts.map +1 -1
- package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.js +4 -4
- package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.js.map +1 -1
- package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.d.ts.map +1 -1
- package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.js +2 -3
- package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.js.map +1 -1
- package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.d.ts +1 -1
- package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.d.ts.map +1 -1
- package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js +6 -5
- package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js.map +1 -1
- package/dist/src/constants.d.ts +2 -1
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +3 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/hooks/useAccessReview.d.ts +4 -0
- package/dist/src/hooks/useAccessReview.d.ts.map +1 -0
- package/dist/src/hooks/useAccessReview.js +33 -0
- package/dist/src/hooks/useAccessReview.js.map +1 -0
- package/dist/src/hooks/useAppContext.d.ts +4 -3
- package/dist/src/hooks/useAppContext.d.ts.map +1 -1
- package/dist/src/hooks/useAppContext.js +2 -2
- package/dist/src/hooks/useAppContext.js.map +1 -1
- package/dist/src/hooks/useFetch.d.ts +4 -2
- package/dist/src/hooks/useFetch.d.ts.map +1 -1
- package/dist/src/hooks/useFetchPeriodically.d.ts +1 -1
- package/dist/src/hooks/useFetchPeriodically.d.ts.map +1 -1
- package/dist/src/hooks/useFetchPeriodically.js +4 -1
- package/dist/src/hooks/useFetchPeriodically.js.map +1 -1
- package/dist/src/hooks/useFleetImportAccessReview.d.ts +3 -0
- package/dist/src/hooks/useFleetImportAccessReview.d.ts.map +1 -0
- package/dist/src/hooks/useFleetImportAccessReview.js +12 -0
- package/dist/src/hooks/useFleetImportAccessReview.js.map +1 -0
- package/dist/src/hooks/useTablePagination.d.ts +10 -0
- package/dist/src/hooks/useTablePagination.d.ts.map +1 -0
- package/dist/src/hooks/useTablePagination.js +33 -0
- package/dist/src/hooks/useTablePagination.js.map +1 -0
- package/dist/src/hooks/useWebSocket.d.ts +2 -2
- package/dist/src/hooks/useWebSocket.d.ts.map +1 -1
- 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 -0
- package/dist/src/links.js +6 -0
- package/dist/src/links.js.map +1 -0
- package/dist/src/types/rbac.d.ts +18 -0
- package/dist/src/types/rbac.d.ts.map +1 -0
- package/dist/src/types/rbac.js +23 -0
- package/dist/src/types/rbac.js.map +1 -0
- package/dist/src/utils/api.d.ts +3 -3
- package/dist/src/utils/api.d.ts.map +1 -1
- package/dist/src/utils/api.js.map +1 -1
- package/dist/src/utils/labels.d.ts +1 -1
- package/dist/src/utils/labels.d.ts.map +1 -1
- package/dist/src/utils/labels.js +4 -8
- package/dist/src/utils/labels.js.map +1 -1
- package/dist/src/utils/query.d.ts +9 -0
- package/dist/src/utils/query.d.ts.map +1 -1
- package/dist/src/utils/query.js +33 -1
- package/dist/src/utils/query.js.map +1 -1
- package/dist/src/utils/search.d.ts +1 -0
- package/dist/src/utils/search.d.ts.map +1 -1
- package/dist/src/utils/search.js +7 -7
- package/dist/src/utils/search.js.map +1 -1
- package/package.json +5 -5
- package/src/components/DetailsPage/Tables/ApplicationsTable.css +7 -0
- package/src/components/DetailsPage/Tables/ApplicationsTable.tsx +150 -13
- package/src/components/Device/AddDeviceModal/AddDeviceModal.tsx +31 -132
- package/src/components/Device/DeviceDetails/DeviceApplications.tsx +102 -0
- package/src/components/Device/DeviceDetails/DeviceDetailsPage.tsx +33 -16
- package/src/components/Device/DeviceDetails/DeviceDetailsTab.tsx +8 -38
- package/src/components/Device/DeviceDetails/TerminalTab.tsx +21 -4
- package/src/components/Device/DevicesPage/DeviceFilterSelect.tsx +13 -34
- package/src/components/Device/DevicesPage/DeviceTableRow.tsx +21 -9
- package/src/components/Device/DevicesPage/DeviceTableToolbar.tsx +0 -7
- package/src/components/Device/DevicesPage/DeviceToolbarFilters.tsx +93 -40
- package/src/components/Device/DevicesPage/DevicesPage.tsx +64 -58
- package/src/components/Device/DevicesPage/types.ts +1 -13
- package/src/components/Device/DevicesPage/useDevices.ts +19 -38
- package/src/components/Device/EditDeviceWizard/EditDeviceWizard.tsx +24 -4
- package/src/components/Device/EditDeviceWizard/deviceSpecUtils.ts +156 -47
- package/src/components/Device/EditDeviceWizard/steps/{ApplicationsForm.tsx → ApplicationTemplates.tsx} +89 -53
- package/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.tsx +22 -26
- package/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.tsx +17 -12
- package/src/components/Device/EditDeviceWizard/steps/{ConfigTemplateForm.tsx → ConfigurationTemplates.tsx} +110 -52
- package/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.tsx +108 -11
- package/src/components/Device/EditDeviceWizard/steps/ReviewTrackedSystemdServices.tsx +19 -0
- package/src/components/Device/EditDeviceWizard/steps/SystemdUnitsForm.tsx +75 -0
- package/src/components/Device/EditDeviceWizard/types.ts +3 -0
- package/src/components/Device/EditDeviceWizard/utils.ts +14 -4
- package/src/components/Device/{MatchPatternsModal/MatchPatternsModal.tsx → SystemdUnitsModal/SystemdUnitsModal.tsx} +36 -19
- package/src/components/Device/SystemdUnitsModal/TrackSystemdUnitsForm.tsx +114 -0
- package/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.tsx +28 -9
- package/src/components/{Device/DevicesPage → EnrollmentRequest}/EnrollmentRequestList.tsx +57 -48
- package/src/components/EnrollmentRequest/EnrollmentRequestTableRow.tsx +28 -17
- package/src/components/{Device/DevicesPage → EnrollmentRequest}/EnrollmentRequestTableToolbar.tsx +3 -2
- package/src/components/EnrollmentRequest/useEnrollmentRequests.ts +63 -0
- package/src/components/Fleet/CreateFleet/CreateFleetWizard.tsx +28 -2
- package/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.tsx +2 -5
- package/src/components/Fleet/CreateFleet/steps/ReviewStep.tsx +7 -0
- package/src/components/Fleet/CreateFleet/utils.ts +101 -49
- package/src/components/Fleet/FleetDetails/FleetDetails.tsx +57 -36
- package/src/components/Fleet/FleetResourceSyncs.tsx +53 -41
- package/src/components/Fleet/FleetRow.tsx +28 -16
- package/src/components/Fleet/FleetsPage.tsx +63 -53
- package/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.tsx +16 -3
- package/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.tsx +25 -19
- package/src/components/Fleet/useFleets.ts +40 -22
- package/src/components/OverviewPage/Cards/Status/StatusCard.tsx +5 -18
- package/src/components/OverviewPage/Cards/Status/StatusCardFilters.tsx +0 -7
- package/src/components/OverviewPage/Overview.tsx +20 -8
- package/src/components/Repository/CreateRepository/CreateRepository.tsx +25 -9
- package/src/components/Repository/CreateRepository/CreateRepositoryForm.tsx +5 -2
- package/src/components/Repository/CreateRepository/utils.ts +23 -7
- package/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.tsx +5 -3
- package/src/components/Repository/RepositoryDetails/RepositoryDetails.tsx +32 -10
- package/src/components/Repository/RepositoryList.tsx +113 -71
- package/src/components/Repository/useRepositories.ts +59 -0
- package/src/components/ResourceSync/RepositoryResourceSyncList.tsx +41 -40
- package/src/components/Table/Table.tsx +3 -4
- package/src/components/Table/TablePagination.tsx +74 -0
- package/src/components/Terminal/Terminal.tsx +1 -0
- package/src/components/common/AccessDenied.tsx +17 -0
- package/src/components/common/ButtonWithPermissions.tsx +14 -0
- package/src/components/common/LearnMoreLink.tsx +26 -0
- package/src/components/common/PageWithPermissions.tsx +19 -0
- package/src/components/form/FilterSelect.tsx +2 -4
- package/src/components/form/FlightCtlForm.css +3 -0
- package/src/components/form/FlightCtlForm.tsx +3 -1
- package/src/components/form/FormSelect.tsx +22 -2
- package/src/components/form/LabelsField.tsx +17 -13
- package/src/components/form/validations.ts +53 -25
- package/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.tsx +2 -5
- package/src/components/modals/EditLabelsModal/EditLabelsForm.tsx +9 -4
- package/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.tsx +2 -4
- package/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.tsx +8 -5
- package/src/constants.ts +2 -1
- package/src/hooks/useAccessReview.ts +33 -0
- package/src/hooks/useAppContext.tsx +6 -5
- package/src/hooks/useFetchPeriodically.ts +4 -0
- package/src/hooks/useFleetImportAccessReview.ts +8 -0
- package/src/hooks/useTablePagination.tsx +44 -0
- package/src/hooks/useWebSocket.ts +4 -4
- package/src/links.ts +5 -0
- package/src/types/rbac.ts +18 -0
- package/src/utils/api.ts +3 -3
- package/src/utils/labels.ts +3 -7
- package/src/utils/query.ts +41 -0
- package/src/utils/search.ts +1 -1
- package/dist/src/components/DetailsPage/Tables/SystemdDetailsTable.d.ts +0 -12
- package/dist/src/components/DetailsPage/Tables/SystemdDetailsTable.d.ts.map +0 -1
- package/dist/src/components/DetailsPage/Tables/SystemdDetailsTable.js +0 -40
- package/dist/src/components/DetailsPage/Tables/SystemdDetailsTable.js.map +0 -1
- package/dist/src/components/Device/DeviceDetails/SystemdTable.d.ts +0 -10
- package/dist/src/components/Device/DeviceDetails/SystemdTable.d.ts.map +0 -1
- package/dist/src/components/Device/DeviceDetails/SystemdTable.js +0 -38
- package/dist/src/components/Device/DeviceDetails/SystemdTable.js.map +0 -1
- package/dist/src/components/Device/DevicesPage/EnrollmentRequestList.d.ts +0 -6
- package/dist/src/components/Device/DevicesPage/EnrollmentRequestList.d.ts.map +0 -1
- package/dist/src/components/Device/DevicesPage/EnrollmentRequestList.js.map +0 -1
- package/dist/src/components/Device/DevicesPage/EnrollmentRequestTableToolbar.d.ts.map +0 -1
- package/dist/src/components/Device/DevicesPage/EnrollmentRequestTableToolbar.js.map +0 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationsForm.d.ts +0 -5
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationsForm.d.ts.map +0 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationsForm.js.map +0 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigTemplateForm.d.ts +0 -4
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigTemplateForm.d.ts.map +0 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigTemplateForm.js.map +0 -1
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsForm.d.ts +0 -11
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsForm.d.ts.map +0 -1
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsForm.js +0 -39
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsForm.js.map +0 -1
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsModal.d.ts.map +0 -1
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsModal.js.map +0 -1
- package/dist/src/components/common/HelperTextItems.d.ts +0 -3
- package/dist/src/components/common/HelperTextItems.d.ts.map +0 -1
- package/dist/src/components/common/HelperTextItems.js +0 -17
- package/dist/src/components/common/HelperTextItems.js.map +0 -1
- package/dist/src/hooks/useApiTableSort.d.ts +0 -8
- package/dist/src/hooks/useApiTableSort.d.ts.map +0 -1
- package/dist/src/hooks/useApiTableSort.js +0 -44
- package/dist/src/hooks/useApiTableSort.js.map +0 -1
- package/dist/src/hooks/useTableSort.d.ts +0 -7
- package/dist/src/hooks/useTableSort.d.ts.map +0 -1
- package/dist/src/hooks/useTableSort.js +0 -38
- package/dist/src/hooks/useTableSort.js.map +0 -1
- package/dist/src/utils/sort/generic.d.ts +0 -5
- package/dist/src/utils/sort/generic.d.ts.map +0 -1
- package/dist/src/utils/sort/generic.js +0 -10
- package/dist/src/utils/sort/generic.js.map +0 -1
- package/dist/src/utils/sort/repository.d.ts +0 -6
- package/dist/src/utils/sort/repository.d.ts.map +0 -1
- package/dist/src/utils/sort/repository.js +0 -28
- package/dist/src/utils/sort/repository.js.map +0 -1
- package/dist/src/utils/sort/resourceSync.d.ts +0 -6
- package/dist/src/utils/sort/resourceSync.d.ts.map +0 -1
- package/dist/src/utils/sort/resourceSync.js +0 -29
- package/dist/src/utils/sort/resourceSync.js.map +0 -1
- package/src/components/DetailsPage/Tables/SystemdDetailsTable.tsx +0 -63
- package/src/components/Device/DeviceDetails/SystemdTable.tsx +0 -65
- package/src/components/Device/MatchPatternsModal/MatchPatternsForm.tsx +0 -92
- package/src/components/common/HelperTextItems.tsx +0 -25
- package/src/hooks/useApiTableSort.ts +0 -49
- package/src/hooks/useTableSort.ts +0 -42
- package/src/utils/sort/generic.ts +0 -8
- package/src/utils/sort/repository.ts +0 -28
- package/src/utils/sort/resourceSync.ts +0 -30
|
@@ -1,24 +1,17 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
EmptyStateActions,
|
|
5
|
-
EmptyStateBody,
|
|
6
|
-
EmptyStateFooter,
|
|
7
|
-
PageSection,
|
|
8
|
-
PageSectionVariants,
|
|
9
|
-
ToolbarItem,
|
|
10
|
-
} from '@patternfly/react-core';
|
|
11
|
-
import { Tbody, ThProps } from '@patternfly/react-table';
|
|
2
|
+
import { Button, EmptyStateActions, EmptyStateBody, EmptyStateFooter, ToolbarItem } from '@patternfly/react-core';
|
|
3
|
+
import { Tbody } from '@patternfly/react-table';
|
|
12
4
|
import { MicrochipIcon } from '@patternfly/react-icons/dist/js/icons/microchip-icon';
|
|
13
5
|
import { Trans } from 'react-i18next';
|
|
14
6
|
import { TFunction } from 'i18next';
|
|
15
7
|
|
|
16
8
|
import { useFetch } from '../../../hooks/useFetch';
|
|
17
|
-
import { Device
|
|
9
|
+
import { Device } from '@flightctl/types';
|
|
18
10
|
|
|
19
11
|
import ListPage from '../../ListPage/ListPage';
|
|
20
12
|
import ListPageBody from '../../ListPage/ListPageBody';
|
|
21
13
|
import { useDeleteListAction } from '../../ListPage/ListPageActions';
|
|
14
|
+
import TablePagination from '../../Table/TablePagination';
|
|
22
15
|
import AddDeviceModal from '../AddDeviceModal/AddDeviceModal';
|
|
23
16
|
import Table, { ApiSortTableColumn } from '../../Table/Table';
|
|
24
17
|
import DeviceTableToolbar from './DeviceTableToolbar';
|
|
@@ -29,6 +22,7 @@ import ResourceListEmptyState from '../../common/ResourceListEmptyState';
|
|
|
29
22
|
import { useTableSelect } from '../../../hooks/useTableSelect';
|
|
30
23
|
import { useTranslation } from '../../../hooks/useTranslation';
|
|
31
24
|
import { Link, ROUTE } from '../../../hooks/useNavigate';
|
|
25
|
+
import { PaginationDetails, useTablePagination } from '../../../hooks/useTablePagination';
|
|
32
26
|
import { useDevices } from './useDevices';
|
|
33
27
|
import { useDeviceBackendFilters } from './useDeviceBackendFilters';
|
|
34
28
|
import {
|
|
@@ -36,10 +30,11 @@ import {
|
|
|
36
30
|
getDeviceStatusHelperText,
|
|
37
31
|
getUpdateStatusHelperText,
|
|
38
32
|
} from '../../Status/utils';
|
|
39
|
-
import EnrollmentRequestList from '
|
|
33
|
+
import EnrollmentRequestList from '../../EnrollmentRequest/EnrollmentRequestList';
|
|
40
34
|
import { FilterStatusMap } from './types';
|
|
41
|
-
import
|
|
42
|
-
import {
|
|
35
|
+
import PageWithPermissions from '../../common/PageWithPermissions';
|
|
36
|
+
import { RESOURCE, VERB } from '../../../types/rbac';
|
|
37
|
+
import { useAccessReview } from '../../../hooks/useAccessReview';
|
|
43
38
|
|
|
44
39
|
type DeviceEmptyStateProps = {
|
|
45
40
|
onAddDevice: VoidFunction;
|
|
@@ -47,13 +42,18 @@ type DeviceEmptyStateProps = {
|
|
|
47
42
|
|
|
48
43
|
const DeviceEmptyState: React.FC<DeviceEmptyStateProps> = ({ onAddDevice }) => {
|
|
49
44
|
const { t } = useTranslation();
|
|
45
|
+
const [canCreateFleet] = useAccessReview(RESOURCE.FLEET, VERB.CREATE);
|
|
50
46
|
return (
|
|
51
47
|
<ResourceListEmptyState icon={MicrochipIcon} titleText={t('No devices here!')}>
|
|
52
48
|
<EmptyStateBody>
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
{canCreateFleet ? (
|
|
50
|
+
<Trans t={t}>
|
|
51
|
+
You can add devices and label them to match fleets, or you can{' '}
|
|
52
|
+
<Link to={ROUTE.FLEET_CREATE}>start with a fleet</Link> and add devices into it.
|
|
53
|
+
</Trans>
|
|
54
|
+
) : (
|
|
55
|
+
t('You can add devices and label them to match fleets')
|
|
56
|
+
)}
|
|
57
57
|
</EmptyStateBody>
|
|
58
58
|
<EmptyStateFooter>
|
|
59
59
|
<EmptyStateActions>
|
|
@@ -67,36 +67,27 @@ const DeviceEmptyState: React.FC<DeviceEmptyStateProps> = ({ onAddDevice }) => {
|
|
|
67
67
|
const getDeviceColumns = (t: TFunction): ApiSortTableColumn[] => [
|
|
68
68
|
{
|
|
69
69
|
name: t('Alias'),
|
|
70
|
-
// Sorting works on this field even though "alias" is actually a label
|
|
71
|
-
sortableField: 'metadata.alias',
|
|
72
70
|
},
|
|
73
71
|
{
|
|
74
72
|
name: t('Name'),
|
|
75
|
-
sortableField: 'metadata.name',
|
|
76
73
|
},
|
|
77
74
|
{
|
|
78
75
|
name: t('Fleet'),
|
|
79
|
-
sortableField: 'metadata.owner',
|
|
80
76
|
},
|
|
81
77
|
{
|
|
82
78
|
name: t('Application status'),
|
|
83
79
|
helperText: getApplicationStatusHelperText(t),
|
|
84
|
-
sortableField: 'status.applicationsSummary.status',
|
|
85
80
|
},
|
|
86
81
|
{
|
|
87
82
|
name: t('Device status'),
|
|
88
83
|
helperText: getDeviceStatusHelperText(t),
|
|
89
|
-
sortableField: 'status.summary.status',
|
|
90
|
-
defaultSort: true,
|
|
91
84
|
},
|
|
92
85
|
{
|
|
93
86
|
name: t('Update status'),
|
|
94
87
|
helperText: getUpdateStatusHelperText(t),
|
|
95
|
-
sortableField: 'status.updated.status',
|
|
96
88
|
},
|
|
97
89
|
{
|
|
98
90
|
name: t('Last seen'),
|
|
99
|
-
sortableField: 'status.lastSeen',
|
|
100
91
|
},
|
|
101
92
|
];
|
|
102
93
|
|
|
@@ -110,13 +101,12 @@ interface DeviceTableProps {
|
|
|
110
101
|
setNameOrAlias: (text: string) => void;
|
|
111
102
|
setOwnerFleets: (ownerFleets: string[]) => void;
|
|
112
103
|
setActiveStatuses: (activeStatuses: FilterStatusMap) => void;
|
|
113
|
-
allLabels: FlightCtlLabel[];
|
|
114
104
|
selectedLabels: FlightCtlLabel[];
|
|
115
105
|
setSelectedLabels: (labels: FlightCtlLabel[]) => void;
|
|
116
|
-
fleets: Fleet[];
|
|
117
106
|
isFilterUpdating: boolean;
|
|
118
107
|
deviceColumns: ApiSortTableColumn[];
|
|
119
|
-
|
|
108
|
+
pagination: Pick<PaginationDetails, 'currentPage' | 'setCurrentPage' | 'itemCount'>;
|
|
109
|
+
// getSortParams: (columnIndex: number) => ThProps['sort'];
|
|
120
110
|
}
|
|
121
111
|
|
|
122
112
|
export const DeviceTable = ({
|
|
@@ -128,14 +118,12 @@ export const DeviceTable = ({
|
|
|
128
118
|
setOwnerFleets,
|
|
129
119
|
activeStatuses,
|
|
130
120
|
setActiveStatuses,
|
|
131
|
-
allLabels,
|
|
132
121
|
selectedLabels,
|
|
133
122
|
setSelectedLabels,
|
|
134
123
|
hasFiltersEnabled,
|
|
135
|
-
fleets,
|
|
136
124
|
isFilterUpdating,
|
|
137
125
|
deviceColumns,
|
|
138
|
-
|
|
126
|
+
pagination,
|
|
139
127
|
}: DeviceTableProps) => {
|
|
140
128
|
const { t } = useTranslation();
|
|
141
129
|
const [addDeviceModal, setAddDeviceModal] = React.useState(false);
|
|
@@ -152,6 +140,9 @@ export const DeviceTable = ({
|
|
|
152
140
|
},
|
|
153
141
|
});
|
|
154
142
|
|
|
143
|
+
const [canDelete] = useAccessReview(RESOURCE.DEVICE, VERB.DELETE);
|
|
144
|
+
const [canEdit] = useAccessReview(RESOURCE.DEVICE, VERB.PATCH);
|
|
145
|
+
|
|
155
146
|
return (
|
|
156
147
|
<>
|
|
157
148
|
<DeviceTableToolbar
|
|
@@ -161,20 +152,20 @@ export const DeviceTable = ({
|
|
|
161
152
|
setOwnerFleets={setOwnerFleets}
|
|
162
153
|
activeStatuses={activeStatuses}
|
|
163
154
|
setActiveStatuses={setActiveStatuses}
|
|
164
|
-
allLabels={allLabels}
|
|
165
155
|
selectedLabels={selectedLabels}
|
|
166
156
|
setSelectedLabels={setSelectedLabels}
|
|
167
|
-
fleets={fleets}
|
|
168
157
|
isFilterUpdating={isFilterUpdating}
|
|
169
158
|
>
|
|
170
159
|
<ToolbarItem>
|
|
171
160
|
<Button onClick={() => setAddDeviceModal(true)}>{t('Add devices')}</Button>
|
|
172
161
|
</ToolbarItem>
|
|
173
|
-
|
|
174
|
-
<
|
|
175
|
-
{
|
|
176
|
-
|
|
177
|
-
|
|
162
|
+
{canDelete && (
|
|
163
|
+
<ToolbarItem>
|
|
164
|
+
<Button isDisabled={!hasSelectedRows} onClick={() => setIsMassDeleteModalOpen(true)} variant="secondary">
|
|
165
|
+
{t('Delete devices')}
|
|
166
|
+
</Button>
|
|
167
|
+
</ToolbarItem>
|
|
168
|
+
)}
|
|
178
169
|
</DeviceTableToolbar>
|
|
179
170
|
<Table
|
|
180
171
|
aria-label={t('Devices table')}
|
|
@@ -182,7 +173,6 @@ export const DeviceTable = ({
|
|
|
182
173
|
columns={deviceColumns}
|
|
183
174
|
emptyFilters={!hasFiltersEnabled}
|
|
184
175
|
emptyData={devices.length === 0}
|
|
185
|
-
getSortParams={getSortParams}
|
|
186
176
|
isAllSelected={isAllSelected}
|
|
187
177
|
onSelectAll={setAllSelected}
|
|
188
178
|
>
|
|
@@ -195,10 +185,13 @@ export const DeviceTable = ({
|
|
|
195
185
|
onRowSelect={onRowSelect}
|
|
196
186
|
isRowSelected={isRowSelected}
|
|
197
187
|
rowIndex={index}
|
|
188
|
+
canDelete={canDelete}
|
|
189
|
+
canEdit={canEdit}
|
|
198
190
|
/>
|
|
199
191
|
))}
|
|
200
192
|
</Tbody>
|
|
201
193
|
</Table>
|
|
194
|
+
<TablePagination isUpdating={isFilterUpdating} pagination={pagination} />
|
|
202
195
|
{!hasFiltersEnabled && devices.length === 0 && <DeviceEmptyState onAddDevice={() => setAddDeviceModal(true)} />}
|
|
203
196
|
{deleteDeviceModal}
|
|
204
197
|
{addDeviceModal && <AddDeviceModal onClose={() => setAddDeviceModal(false)} />}
|
|
@@ -216,7 +209,7 @@ export const DeviceTable = ({
|
|
|
216
209
|
);
|
|
217
210
|
};
|
|
218
211
|
|
|
219
|
-
const DevicesPage = () => {
|
|
212
|
+
const DevicesPage = ({ canListER }: { canListER: boolean }) => {
|
|
220
213
|
const { t } = useTranslation();
|
|
221
214
|
const deviceColumns = React.useMemo(() => getDeviceColumns(t), [t]);
|
|
222
215
|
|
|
@@ -231,30 +224,33 @@ const DevicesPage = () => {
|
|
|
231
224
|
selectedLabels,
|
|
232
225
|
setSelectedLabels,
|
|
233
226
|
} = useDeviceBackendFilters();
|
|
234
|
-
const {
|
|
235
|
-
|
|
236
|
-
const [data, loading, error, updating, refetch, allLabels] = useDevices({
|
|
227
|
+
const { currentPage, setCurrentPage, onPageFetched, nextContinue, itemCount } = useTablePagination();
|
|
228
|
+
const [data, loading, error, updating, refetch] = useDevices({
|
|
237
229
|
nameOrAlias,
|
|
238
230
|
ownerFleets,
|
|
239
231
|
activeStatuses,
|
|
240
232
|
labels: selectedLabels,
|
|
241
|
-
|
|
242
|
-
|
|
233
|
+
nextContinue,
|
|
234
|
+
onPageFetched,
|
|
243
235
|
});
|
|
244
236
|
|
|
245
|
-
const
|
|
246
|
-
|
|
247
|
-
|
|
237
|
+
const pagination = React.useMemo(
|
|
238
|
+
() => ({
|
|
239
|
+
currentPage,
|
|
240
|
+
setCurrentPage,
|
|
241
|
+
itemCount,
|
|
242
|
+
}),
|
|
243
|
+
[currentPage, setCurrentPage, itemCount],
|
|
244
|
+
);
|
|
248
245
|
|
|
249
246
|
return (
|
|
250
|
-
|
|
251
|
-
<EnrollmentRequestList refetchDevices={refetch} />
|
|
247
|
+
<>
|
|
248
|
+
{canListER && <EnrollmentRequestList refetchDevices={refetch} />}
|
|
252
249
|
|
|
253
250
|
<ListPage title={t('Devices')}>
|
|
254
|
-
<ListPageBody error={error
|
|
251
|
+
<ListPageBody error={error} loading={loading}>
|
|
255
252
|
<DeviceTable
|
|
256
253
|
devices={data}
|
|
257
|
-
allLabels={allLabels}
|
|
258
254
|
refetch={refetch}
|
|
259
255
|
nameOrAlias={nameOrAlias}
|
|
260
256
|
setNameOrAlias={setNameOrAlias}
|
|
@@ -265,15 +261,25 @@ const DevicesPage = () => {
|
|
|
265
261
|
setActiveStatuses={setActiveStatuses}
|
|
266
262
|
selectedLabels={selectedLabels}
|
|
267
263
|
setSelectedLabels={setSelectedLabels}
|
|
268
|
-
fleets={fleetsList?.items || []}
|
|
269
264
|
isFilterUpdating={updating}
|
|
270
265
|
deviceColumns={deviceColumns}
|
|
271
|
-
|
|
266
|
+
pagination={pagination}
|
|
272
267
|
/>
|
|
273
268
|
</ListPageBody>
|
|
274
269
|
</ListPage>
|
|
275
|
-
|
|
270
|
+
</>
|
|
271
|
+
);
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
const DevicesPageWithPermissions = () => {
|
|
275
|
+
const [canListDevice, deviceLoading] = useAccessReview(RESOURCE.DEVICE, VERB.LIST);
|
|
276
|
+
const [canListER, erLoading] = useAccessReview(RESOURCE.ENROLLMENT_REQUEST, VERB.LIST);
|
|
277
|
+
|
|
278
|
+
return (
|
|
279
|
+
<PageWithPermissions loading={deviceLoading || erLoading} allowed={canListDevice || canListER}>
|
|
280
|
+
{canListDevice ? <DevicesPage canListER={canListER} /> : <EnrollmentRequestList isStandalone />}
|
|
281
|
+
</PageWithPermissions>
|
|
276
282
|
);
|
|
277
283
|
};
|
|
278
284
|
|
|
279
|
-
export default
|
|
285
|
+
export default DevicesPageWithPermissions;
|
|
@@ -1,18 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { StatusItem } from '../../../utils/status/common';
|
|
1
|
+
import { FilterSearchParams } from '../../../utils/status/devices';
|
|
3
2
|
import { ApplicationsSummaryStatusType, DeviceSummaryStatusType, DeviceUpdatedStatusType } from '@flightctl/types';
|
|
4
3
|
|
|
5
|
-
type FilterOptionsProps<T extends DeviceSummaryStatus> = {
|
|
6
|
-
filter: string;
|
|
7
|
-
items: Array<StatusItem<T>>;
|
|
8
|
-
selectedFilters: Array<T>;
|
|
9
|
-
onClick: (value: string) => void;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export type FilterOptionsFC = <T extends DeviceSummaryStatus>(
|
|
13
|
-
props: FilterOptionsProps<T>,
|
|
14
|
-
) => JSX.Element | JSX.Element[];
|
|
15
|
-
|
|
16
4
|
export type FilterStatusMap = {
|
|
17
5
|
[FilterSearchParams.AppStatus]: ApplicationsSummaryStatusType[];
|
|
18
6
|
[FilterSearchParams.DeviceStatus]: DeviceSummaryStatusType[];
|
|
@@ -1,22 +1,20 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
1
|
import { useDebounce } from 'use-debounce';
|
|
3
2
|
|
|
4
|
-
import { Device, DeviceList, DevicesSummary
|
|
3
|
+
import { Device, DeviceList, DevicesSummary } from '@flightctl/types';
|
|
5
4
|
import { FilterSearchParams } from '../../../utils/status/devices';
|
|
6
5
|
import * as queryUtils from '../../../utils/query';
|
|
7
|
-
import { fromAPILabel } from '../../../utils/labels';
|
|
8
6
|
import { useFetchPeriodically } from '../../../hooks/useFetchPeriodically';
|
|
9
7
|
import { FlightCtlLabel } from '../../../types/extraTypes';
|
|
10
8
|
import { FilterStatusMap } from './types';
|
|
9
|
+
import { PAGE_SIZE } from '../../../constants';
|
|
11
10
|
|
|
12
11
|
type DevicesEndpointArgs = {
|
|
13
12
|
nameOrAlias?: string;
|
|
14
13
|
ownerFleets?: string[];
|
|
15
14
|
activeStatuses?: FilterStatusMap;
|
|
16
15
|
labels?: FlightCtlLabel[];
|
|
17
|
-
sortField?: string;
|
|
18
|
-
direction?: string;
|
|
19
16
|
summaryOnly?: boolean;
|
|
17
|
+
nextContinue?: string;
|
|
20
18
|
};
|
|
21
19
|
|
|
22
20
|
const getDevicesEndpoint = ({
|
|
@@ -24,8 +22,7 @@ const getDevicesEndpoint = ({
|
|
|
24
22
|
ownerFleets,
|
|
25
23
|
activeStatuses,
|
|
26
24
|
labels,
|
|
27
|
-
|
|
28
|
-
direction,
|
|
25
|
+
nextContinue,
|
|
29
26
|
summaryOnly,
|
|
30
27
|
}: DevicesEndpointArgs) => {
|
|
31
28
|
const filterByAppStatus = activeStatuses?.[FilterSearchParams.AppStatus];
|
|
@@ -56,9 +53,11 @@ const getDevicesEndpoint = ({
|
|
|
56
53
|
if (summaryOnly) {
|
|
57
54
|
params.set('summaryOnly', 'true');
|
|
58
55
|
}
|
|
59
|
-
if (
|
|
60
|
-
params.set('
|
|
61
|
-
|
|
56
|
+
if (nextContinue !== undefined) {
|
|
57
|
+
params.set('limit', `${PAGE_SIZE}`);
|
|
58
|
+
}
|
|
59
|
+
if (nextContinue) {
|
|
60
|
+
params.set('continue', nextContinue);
|
|
62
61
|
}
|
|
63
62
|
return params.size ? `devices?${params.toString()}` : 'devices';
|
|
64
63
|
};
|
|
@@ -89,35 +88,17 @@ export const useDevices = (args: {
|
|
|
89
88
|
ownerFleets?: string[];
|
|
90
89
|
activeStatuses?: FilterStatusMap;
|
|
91
90
|
labels?: FlightCtlLabel[];
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}): [Device[], boolean, unknown, boolean, VoidFunction
|
|
95
|
-
const [deviceLabelList] = useFetchPeriodically<DeviceList>({
|
|
96
|
-
endpoint: 'devices',
|
|
97
|
-
});
|
|
91
|
+
nextContinue?: string;
|
|
92
|
+
onPageFetched?: (data: DeviceList) => void;
|
|
93
|
+
}): [Device[], boolean, unknown, boolean, VoidFunction] => {
|
|
98
94
|
const [devicesEndpoint, devicesDebouncing] = useDevicesEndpoint(args);
|
|
99
|
-
const [devicesList, devicesLoading, devicesError, devicesRefetch, updating] = useFetchPeriodically<DeviceList>({
|
|
100
|
-
endpoint: devicesEndpoint,
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
const allLabels = React.useMemo(() => {
|
|
104
|
-
const labelsSet = new Set<FlightCtlLabel>();
|
|
105
95
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
return Array.from(labelsSet);
|
|
113
|
-
}, [deviceLabelList]);
|
|
96
|
+
const [devicesList, devicesLoading, devicesError, devicesRefetch, updating] = useFetchPeriodically<DeviceList>(
|
|
97
|
+
{
|
|
98
|
+
endpoint: devicesEndpoint,
|
|
99
|
+
},
|
|
100
|
+
args.onPageFetched,
|
|
101
|
+
);
|
|
114
102
|
|
|
115
|
-
return [
|
|
116
|
-
devicesList?.items || [],
|
|
117
|
-
devicesLoading,
|
|
118
|
-
devicesError,
|
|
119
|
-
updating || devicesDebouncing,
|
|
120
|
-
devicesRefetch,
|
|
121
|
-
allLabels || [],
|
|
122
|
-
];
|
|
103
|
+
return [devicesList?.items || [], devicesLoading, devicesError, updating || devicesDebouncing, devicesRefetch];
|
|
123
104
|
};
|
|
@@ -25,11 +25,14 @@ import GeneralInfoStep, { generalInfoStepId, isGeneralInfoStepValid } from './st
|
|
|
25
25
|
import DeviceTemplateStep, { deviceTemplateStepId, isDeviceTemplateStepValid } from './steps/DeviceTemplateStep';
|
|
26
26
|
import ReviewDeviceStep, { reviewDeviceStepId } from './steps/ReviewDeviceStep';
|
|
27
27
|
import { getDevicePatches, getValidationSchema } from './utils';
|
|
28
|
-
import { getApplicationValues, getConfigTemplatesValues } from './deviceSpecUtils';
|
|
28
|
+
import { getApplicationValues, getConfigTemplatesValues, hasMicroshiftRegistrationConfig } from './deviceSpecUtils';
|
|
29
29
|
import { useFetch } from '../../../hooks/useFetch';
|
|
30
30
|
import { useEditDevice } from './useEditDevice';
|
|
31
31
|
import EditDeviceWizardNav from './EditDeviceWizardNav';
|
|
32
32
|
import EditDeviceWizardFooter from './EditDeviceWizardFooter';
|
|
33
|
+
import PageWithPermissions from '../../common/PageWithPermissions';
|
|
34
|
+
import { RESOURCE, VERB } from '../../../types/rbac';
|
|
35
|
+
import { useAccessReview } from '../../../hooks/useAccessReview';
|
|
33
36
|
|
|
34
37
|
import './EditDeviceWizard.css';
|
|
35
38
|
|
|
@@ -64,15 +67,18 @@ const EditDeviceWizard = () => {
|
|
|
64
67
|
</Alert>
|
|
65
68
|
);
|
|
66
69
|
} else if (device) {
|
|
70
|
+
const registerMicroShift = hasMicroshiftRegistrationConfig(device.spec);
|
|
67
71
|
body = (
|
|
68
72
|
<Formik<EditDeviceFormValues>
|
|
69
73
|
initialValues={{
|
|
70
74
|
deviceAlias,
|
|
71
|
-
osImage: device.spec?.os?.image,
|
|
75
|
+
osImage: device.spec?.os?.image || '',
|
|
72
76
|
labels: fromAPILabel(device.metadata.labels || {}).filter((label) => label.key !== 'alias'),
|
|
73
|
-
configTemplates: getConfigTemplatesValues(device.spec),
|
|
77
|
+
configTemplates: getConfigTemplatesValues(device.spec, registerMicroShift),
|
|
74
78
|
fleetMatch: '', // Initially this is always a fleetless device
|
|
75
79
|
applications: getApplicationValues(device.spec),
|
|
80
|
+
systemdUnits: [],
|
|
81
|
+
registerMicroShift,
|
|
76
82
|
}}
|
|
77
83
|
validationSchema={getValidationSchema(t)}
|
|
78
84
|
validateOnMount
|
|
@@ -102,6 +108,11 @@ const EditDeviceWizard = () => {
|
|
|
102
108
|
className="fctl-edit-device__wizard"
|
|
103
109
|
footer={<EditDeviceWizardFooter />}
|
|
104
110
|
nav={<EditDeviceWizardNav />}
|
|
111
|
+
onStepChange={() => {
|
|
112
|
+
if (submitError) {
|
|
113
|
+
setSubmitError(undefined);
|
|
114
|
+
}
|
|
115
|
+
}}
|
|
105
116
|
>
|
|
106
117
|
<WizardStep name={t('General info')} id={generalInfoStepId}>
|
|
107
118
|
<GeneralInfoStep />
|
|
@@ -147,4 +158,13 @@ const EditDeviceWizard = () => {
|
|
|
147
158
|
);
|
|
148
159
|
};
|
|
149
160
|
|
|
150
|
-
|
|
161
|
+
const EditDeviceWizardWithPermissions = () => {
|
|
162
|
+
const [allowed, loading] = useAccessReview(RESOURCE.DEVICE, VERB.PATCH);
|
|
163
|
+
return (
|
|
164
|
+
<PageWithPermissions allowed={allowed} loading={loading}>
|
|
165
|
+
<EditDeviceWizard />
|
|
166
|
+
</PageWithPermissions>
|
|
167
|
+
);
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
export default EditDeviceWizardWithPermissions;
|