@flightctl/ui-components 0.10.0-rc7 → 1.0.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/AuthProvider/AuthProviderDetails/AuthProviderDetails.d.ts +4 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetails.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetails.js +57 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetails.js.map +1 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetailsTab.d.ts +7 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetailsTab.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetailsTab.js +118 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetailsTab.js.map +1 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/DeleteAuthProviderModal.d.ts +9 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/DeleteAuthProviderModal.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/DeleteAuthProviderModal.js +55 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/DeleteAuthProviderModal.js.map +1 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/RoleAssigmentDetails.d.ts +7 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/RoleAssigmentDetails.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/RoleAssigmentDetails.js +35 -0
- package/dist/src/components/AuthProvider/AuthProviderDetails/RoleAssigmentDetails.js.map +1 -0
- package/dist/src/components/AuthProvider/AuthProviderRow.d.ts +8 -0
- package/dist/src/components/AuthProvider/AuthProviderRow.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/AuthProviderRow.js +67 -0
- package/dist/src/components/AuthProvider/AuthProviderRow.js.map +1 -0
- package/dist/src/components/AuthProvider/AuthProvidersPage.d.ts +4 -0
- package/dist/src/components/AuthProvider/AuthProvidersPage.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/AuthProvidersPage.js +90 -0
- package/dist/src/components/AuthProvider/AuthProvidersPage.js.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/AuthOrganizationAssignment.d.ts +4 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/AuthOrganizationAssignment.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/AuthOrganizationAssignment.js +39 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/AuthOrganizationAssignment.js.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/AuthProviderHelperText.d.ts +6 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/AuthProviderHelperText.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/AuthProviderHelperText.js +87 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/AuthProviderHelperText.js.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/CreateAuthProvider.d.ts +4 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/CreateAuthProvider.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/CreateAuthProvider.js +94 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/CreateAuthProvider.js.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/CreateAuthProviderForm.d.ts +13 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/CreateAuthProviderForm.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/CreateAuthProviderForm.js +161 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/CreateAuthProviderForm.js.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/Oauth2ProviderFields.d.ts +4 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/Oauth2ProviderFields.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/Oauth2ProviderFields.js +19 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/Oauth2ProviderFields.js.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/RoleAssignmentSection.d.ts +4 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/RoleAssignmentSection.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/RoleAssignmentSection.js +71 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/RoleAssignmentSection.js.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/types.d.ts +57 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/types.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/types.js +33 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/types.js.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/utils.d.ts +15 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/utils.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/utils.js +466 -0
- package/dist/src/components/AuthProvider/CreateAuthProvider/utils.js.map +1 -0
- package/dist/src/components/AuthProvider/TestConnectionModal/TestConnectionModal.d.ts +9 -0
- package/dist/src/components/AuthProvider/TestConnectionModal/TestConnectionModal.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/TestConnectionModal/TestConnectionModal.js +67 -0
- package/dist/src/components/AuthProvider/TestConnectionModal/TestConnectionModal.js.map +1 -0
- package/dist/src/components/AuthProvider/useAuthProviders.d.ts +8 -0
- package/dist/src/components/AuthProvider/useAuthProviders.d.ts.map +1 -0
- package/dist/src/components/AuthProvider/useAuthProviders.js +19 -0
- package/dist/src/components/AuthProvider/useAuthProviders.js.map +1 -0
- package/dist/src/components/DetailsPage/DetailsPage.d.ts +1 -1
- package/dist/src/components/DetailsPage/DetailsPage.d.ts.map +1 -1
- package/dist/src/components/DetailsPage/DetailsPageActions.d.ts.map +1 -1
- package/dist/src/components/DetailsPage/DetailsPageActions.js +1 -1
- package/dist/src/components/DetailsPage/DetailsPageActions.js.map +1 -1
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.d.ts +1 -7
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.d.ts.map +1 -1
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.js +26 -81
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.js.map +1 -1
- package/dist/src/components/DetailsPage/Tables/SystemdUnitsTable.d.ts +8 -0
- package/dist/src/components/DetailsPage/Tables/SystemdUnitsTable.d.ts.map +1 -0
- package/dist/src/components/DetailsPage/Tables/SystemdUnitsTable.js +67 -0
- package/dist/src/components/DetailsPage/Tables/SystemdUnitsTable.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.d.ts +1 -3
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceApplications.js +5 -49
- 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 +15 -9
- 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 +5 -2
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js.map +1 -1
- package/dist/src/components/Device/DeviceDetails/DeviceSystemdUnits.d.ts +8 -0
- package/dist/src/components/Device/DeviceDetails/DeviceSystemdUnits.d.ts.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceSystemdUnits.js +19 -0
- package/dist/src/components/Device/DeviceDetails/DeviceSystemdUnits.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/TerminalTab.d.ts.map +1 -1
- package/dist/src/components/Device/DeviceDetails/TerminalTab.js +36 -10
- 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 +7 -3
- package/dist/src/components/Device/DevicesPage/DecommissionedDevicesTable.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DevicesEmptyStates.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DevicesEmptyStates.js +3 -2
- package/dist/src/components/Device/DevicesPage/DevicesEmptyStates.js.map +1 -1
- package/dist/src/components/Device/DevicesPage/DevicesPage.d.ts.map +1 -1
- package/dist/src/components/Device/DevicesPage/DevicesPage.js +9 -15
- 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 +8 -4
- 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 +4 -3
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.d.ts +2 -1
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js +235 -56
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationContainerForm.css +5 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationContainerForm.d.ts +10 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationContainerForm.d.ts.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationContainerForm.js +167 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationContainerForm.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.d.ts +2 -2
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.d.ts +2 -2
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.js +100 -38
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationVolumeForm.d.ts +11 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationVolumeForm.d.ts.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationVolumeForm.js +63 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ApplicationVolumeForm.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.js +6 -4
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewApplications.d.ts.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewApplications.js +21 -10
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewApplications.js.map +1 -1
- package/dist/src/components/Device/EditDeviceWizard/utils.d.ts +55 -3
- 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/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.d.ts.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js +9 -4
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.d.ts +1 -3
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.d.ts.map +1 -1
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.js +8 -9
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestList.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js +10 -5
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/utils.d.ts.map +1 -1
- package/dist/src/components/Fleet/CreateFleet/utils.js +2 -5
- package/dist/src/components/Fleet/CreateFleet/utils.js.map +1 -1
- package/dist/src/components/Fleet/FleetDetails/FleetDetailsPage.d.ts.map +1 -1
- package/dist/src/components/Fleet/FleetDetails/FleetDetailsPage.js +11 -6
- package/dist/src/components/Fleet/FleetDetails/FleetDetailsPage.js.map +1 -1
- package/dist/src/components/Fleet/FleetDetails/FleetYaml.d.ts +9 -0
- package/dist/src/components/Fleet/FleetDetails/FleetYaml.d.ts.map +1 -0
- package/dist/src/components/Fleet/FleetDetails/FleetYaml.js +13 -0
- package/dist/src/components/Fleet/FleetDetails/FleetYaml.js.map +1 -0
- package/dist/src/components/Fleet/FleetResourceSyncs.d.ts.map +1 -1
- package/dist/src/components/Fleet/FleetResourceSyncs.js +3 -2
- package/dist/src/components/Fleet/FleetResourceSyncs.js.map +1 -1
- package/dist/src/components/Fleet/FleetsPage.d.ts.map +1 -1
- package/dist/src/components/Fleet/FleetsPage.js +22 -13
- package/dist/src/components/Fleet/FleetsPage.js.map +1 -1
- package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.d.ts.map +1 -1
- package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.js +9 -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 +3 -2
- package/dist/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.js.map +1 -1
- package/dist/src/components/ListPage/ListPage.d.ts +0 -1
- package/dist/src/components/ListPage/ListPage.d.ts.map +1 -1
- package/dist/src/components/ListPage/ListPage.js +2 -5
- package/dist/src/components/ListPage/ListPage.js.map +1 -1
- package/dist/src/components/Login/ProviderSelector.d.ts +11 -0
- package/dist/src/components/Login/ProviderSelector.d.ts.map +1 -0
- package/dist/src/components/Login/ProviderSelector.js +66 -0
- package/dist/src/components/Login/ProviderSelector.js.map +1 -0
- package/dist/src/components/Login/TokenLoginForm.d.ts +9 -0
- package/dist/src/components/Login/TokenLoginForm.d.ts.map +1 -0
- package/dist/src/components/Login/TokenLoginForm.js +107 -0
- package/dist/src/components/Login/TokenLoginForm.js.map +1 -0
- package/dist/src/components/Masthead/CommandLineToolsPage.d.ts.map +1 -1
- package/dist/src/components/Masthead/CommandLineToolsPage.js +1 -6
- package/dist/src/components/Masthead/CommandLineToolsPage.js.map +1 -1
- package/dist/src/components/OverviewPage/Cards/Alerts/AlertsCard.d.ts.map +1 -1
- package/dist/src/components/OverviewPage/Cards/Alerts/AlertsCard.js +2 -0
- package/dist/src/components/OverviewPage/Cards/Alerts/AlertsCard.js.map +1 -1
- package/dist/src/components/OverviewPage/Overview.d.ts.map +1 -1
- package/dist/src/components/OverviewPage/Overview.js +8 -4
- package/dist/src/components/OverviewPage/Overview.js.map +1 -1
- package/dist/src/components/OverviewPage/OverviewPage.d.ts.map +1 -1
- package/dist/src/components/OverviewPage/OverviewPage.js +3 -8
- package/dist/src/components/OverviewPage/OverviewPage.js.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateRepository.d.ts.map +1 -1
- package/dist/src/components/Repository/CreateRepository/CreateRepository.js +3 -2
- 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 +3 -2
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js.map +1 -1
- package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.d.ts.map +1 -1
- package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js +11 -6
- package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js.map +1 -1
- package/dist/src/components/Repository/RepositoryList.d.ts.map +1 -1
- package/dist/src/components/Repository/RepositoryList.js +11 -5
- 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 +7 -3
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js.map +1 -1
- package/dist/src/components/Terminal/Terminal.css +12 -1
- package/dist/src/components/Terminal/Terminal.js +3 -3
- package/dist/src/components/Terminal/Terminal.js.map +1 -1
- package/dist/src/components/common/CodeEditor/YamlEditor.d.ts +7 -5
- package/dist/src/components/common/CodeEditor/YamlEditor.d.ts.map +1 -1
- package/dist/src/components/common/CodeEditor/YamlEditor.js +142 -10
- package/dist/src/components/common/CodeEditor/YamlEditor.js.map +1 -1
- package/dist/src/components/common/CodeEditor/YamlEditorBase.d.ts +7 -1
- package/dist/src/components/common/CodeEditor/YamlEditorBase.d.ts.map +1 -1
- package/dist/src/components/common/CodeEditor/YamlEditorBase.js +16 -8
- package/dist/src/components/common/CodeEditor/YamlEditorBase.js.map +1 -1
- package/dist/src/components/common/OrganizationGuard.d.ts +1 -1
- package/dist/src/components/common/OrganizationGuard.d.ts.map +1 -1
- package/dist/src/components/common/OrganizationGuard.js +16 -22
- package/dist/src/components/common/OrganizationGuard.js.map +1 -1
- package/dist/src/components/common/OrganizationSelector.d.ts.map +1 -1
- package/dist/src/components/common/OrganizationSelector.js +20 -6
- package/dist/src/components/common/OrganizationSelector.js.map +1 -1
- package/dist/src/components/common/PageNavigation.css +9 -0
- package/dist/src/components/common/PageNavigation.d.ts +4 -1
- package/dist/src/components/common/PageNavigation.d.ts.map +1 -1
- package/dist/src/components/common/PageNavigation.js +25 -10
- package/dist/src/components/common/PageNavigation.js.map +1 -1
- package/dist/src/components/common/PermissionsContext.d.ts +14 -0
- package/dist/src/components/common/PermissionsContext.d.ts.map +1 -0
- package/dist/src/components/common/PermissionsContext.js +84 -0
- package/dist/src/components/common/PermissionsContext.js.map +1 -0
- package/dist/src/components/form/FilterSelect.d.ts.map +1 -1
- package/dist/src/components/form/FilterSelect.js +1 -1
- package/dist/src/components/form/FilterSelect.js.map +1 -1
- package/dist/src/components/form/FormSelect.d.ts.map +1 -1
- package/dist/src/components/form/FormSelect.js +1 -1
- package/dist/src/components/form/FormSelect.js.map +1 -1
- package/dist/src/components/form/FormSelectTypeahead.d.ts.map +1 -1
- package/dist/src/components/form/FormSelectTypeahead.js +84 -4
- package/dist/src/components/form/FormSelectTypeahead.js.map +1 -1
- package/dist/src/components/form/ListItemField.d.ts +12 -0
- package/dist/src/components/form/ListItemField.d.ts.map +1 -0
- package/dist/src/components/form/ListItemField.js +67 -0
- package/dist/src/components/form/ListItemField.js.map +1 -0
- package/dist/src/components/form/NameField.d.ts +1 -1
- package/dist/src/components/form/NameField.d.ts.map +1 -1
- package/dist/src/components/form/NameField.js +4 -2
- package/dist/src/components/form/NameField.js.map +1 -1
- package/dist/src/components/form/SwitchField.d.ts +2 -1
- package/dist/src/components/form/SwitchField.d.ts.map +1 -1
- package/dist/src/components/form/SwitchField.js +2 -2
- package/dist/src/components/form/SwitchField.js.map +1 -1
- package/dist/src/components/form/validations.d.ts +64 -4
- package/dist/src/components/form/validations.d.ts.map +1 -1
- package/dist/src/components/form/validations.js +340 -41
- package/dist/src/components/form/validations.js.map +1 -1
- package/dist/src/constants.d.ts +1 -1
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +1 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/hooks/useAlertsEnabled.d.ts.map +1 -1
- package/dist/src/hooks/useAlertsEnabled.js +10 -4
- package/dist/src/hooks/useAlertsEnabled.js.map +1 -1
- package/dist/src/hooks/useAppContext.d.ts +4 -2
- package/dist/src/hooks/useAppContext.d.ts.map +1 -1
- package/dist/src/hooks/useAppContext.js +4 -1
- package/dist/src/hooks/useAppContext.js.map +1 -1
- package/dist/src/hooks/useFetch.d.ts +0 -1
- package/dist/src/hooks/useFetch.d.ts.map +1 -1
- package/dist/src/hooks/useNavigate.d.ts +6 -2
- package/dist/src/hooks/useNavigate.d.ts.map +1 -1
- package/dist/src/hooks/useNavigate.js +4 -0
- package/dist/src/hooks/useNavigate.js.map +1 -1
- package/dist/src/hooks/usePendingEnrollmentRequestsCount.d.ts.map +1 -1
- package/dist/src/hooks/usePendingEnrollmentRequestsCount.js +9 -1
- package/dist/src/hooks/usePendingEnrollmentRequestsCount.js.map +1 -1
- package/dist/src/hooks/useSystemRestoreContext.d.ts.map +1 -1
- package/dist/src/hooks/useSystemRestoreContext.js +3 -2
- package/dist/src/hooks/useSystemRestoreContext.js.map +1 -1
- package/dist/src/hooks/useWebSocket.d.ts.map +1 -1
- package/dist/src/hooks/useWebSocket.js +47 -19
- package/dist/src/hooks/useWebSocket.js.map +1 -1
- package/dist/src/types/deviceSpec.d.ts +50 -15
- package/dist/src/types/deviceSpec.d.ts.map +1 -1
- package/dist/src/types/deviceSpec.js +17 -8
- package/dist/src/types/deviceSpec.js.map +1 -1
- package/dist/src/types/extraTypes.d.ts +14 -2
- package/dist/src/types/extraTypes.d.ts.map +1 -1
- package/dist/src/types/extraTypes.js +11 -1
- package/dist/src/types/extraTypes.js.map +1 -1
- package/dist/src/types/rbac.d.ts +2 -1
- package/dist/src/types/rbac.d.ts.map +1 -1
- package/dist/src/types/rbac.js +1 -0
- package/dist/src/types/rbac.js.map +1 -1
- package/dist/src/utils/authProvider.d.ts +4 -0
- package/dist/src/utils/authProvider.d.ts.map +1 -0
- package/dist/src/utils/authProvider.js +22 -0
- package/dist/src/utils/authProvider.js.map +1 -0
- package/dist/src/utils/error.d.ts +1 -0
- package/dist/src/utils/error.d.ts.map +1 -1
- package/dist/src/utils/error.js +6 -1
- package/dist/src/utils/error.js.map +1 -1
- package/dist/src/utils/k8sProvider.d.ts +3 -0
- package/dist/src/utils/k8sProvider.d.ts.map +1 -0
- package/dist/src/utils/k8sProvider.js +18 -0
- package/dist/src/utils/k8sProvider.js.map +1 -0
- package/dist/src/utils/patch.d.ts.map +1 -1
- package/dist/src/utils/patch.js +3 -1
- package/dist/src/utils/patch.js.map +1 -1
- package/dist/src/utils/status/applications.d.ts.map +1 -1
- package/dist/src/utils/status/applications.js +7 -0
- package/dist/src/utils/status/applications.js.map +1 -1
- package/package.json +1 -1
- package/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetails.tsx +111 -0
- package/src/components/AuthProvider/AuthProviderDetails/AuthProviderDetailsTab.tsx +239 -0
- package/src/components/AuthProvider/AuthProviderDetails/DeleteAuthProviderModal.tsx +95 -0
- package/src/components/AuthProvider/AuthProviderDetails/RoleAssigmentDetails.tsx +53 -0
- package/src/components/AuthProvider/AuthProviderRow.tsx +84 -0
- package/src/components/AuthProvider/AuthProvidersPage.tsx +168 -0
- package/src/components/AuthProvider/CreateAuthProvider/AuthOrganizationAssignment.tsx +102 -0
- package/src/components/AuthProvider/CreateAuthProvider/AuthProviderHelperText.tsx +78 -0
- package/src/components/AuthProvider/CreateAuthProvider/CreateAuthProvider.tsx +145 -0
- package/src/components/AuthProvider/CreateAuthProvider/CreateAuthProviderForm.tsx +284 -0
- package/src/components/AuthProvider/CreateAuthProvider/Oauth2ProviderFields.tsx +24 -0
- package/src/components/AuthProvider/CreateAuthProvider/RoleAssignmentSection.tsx +165 -0
- package/src/components/AuthProvider/CreateAuthProvider/types.ts +96 -0
- package/src/components/AuthProvider/CreateAuthProvider/utils.ts +557 -0
- package/src/components/AuthProvider/TestConnectionModal/TestConnectionModal.tsx +136 -0
- package/src/components/AuthProvider/useAuthProviders.ts +18 -0
- package/src/components/DetailsPage/DetailsPage.tsx +1 -1
- package/src/components/DetailsPage/DetailsPageActions.tsx +2 -0
- package/src/components/DetailsPage/Tables/ApplicationsTable.tsx +29 -132
- package/src/components/DetailsPage/Tables/SystemdUnitsTable.tsx +98 -0
- package/src/components/Device/DeviceDetails/DeviceApplications.tsx +3 -73
- package/src/components/Device/DeviceDetails/DeviceDetailsPage.tsx +19 -9
- package/src/components/Device/DeviceDetails/DeviceDetailsTab.tsx +6 -2
- package/src/components/Device/DeviceDetails/DeviceSystemdUnits.tsx +30 -0
- package/src/components/Device/DeviceDetails/TerminalTab.tsx +57 -24
- package/src/components/Device/DevicesPage/DecommissionedDevicesTable.tsx +8 -3
- package/src/components/Device/DevicesPage/DevicesEmptyStates.tsx +3 -2
- package/src/components/Device/DevicesPage/DevicesPage.tsx +9 -15
- package/src/components/Device/DevicesPage/EnrolledDevicesTable.tsx +9 -4
- package/src/components/Device/EditDeviceWizard/EditDeviceWizard.tsx +10 -4
- package/src/components/Device/EditDeviceWizard/deviceSpecUtils.ts +295 -60
- package/src/components/Device/EditDeviceWizard/steps/ApplicationContainerForm.css +5 -0
- package/src/components/Device/EditDeviceWizard/steps/ApplicationContainerForm.tsx +312 -0
- package/src/components/Device/EditDeviceWizard/steps/ApplicationImageForm.tsx +2 -2
- package/src/components/Device/EditDeviceWizard/steps/ApplicationInlineForm.tsx +3 -3
- package/src/components/Device/EditDeviceWizard/steps/ApplicationTemplates.tsx +196 -80
- package/src/components/Device/EditDeviceWizard/steps/ApplicationVolumeForm.tsx +149 -0
- package/src/components/Device/EditDeviceWizard/steps/ConfigurationTemplates.tsx +6 -4
- package/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.tsx +1 -1
- package/src/components/Device/EditDeviceWizard/steps/ReviewApplications.tsx +26 -10
- package/src/components/Device/EditDeviceWizard/utils.ts +15 -1
- package/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.tsx +10 -4
- package/src/components/EnrollmentRequest/EnrollmentRequestList.tsx +9 -13
- package/src/components/Fleet/CreateFleet/CreateFleetWizard.tsx +11 -8
- package/src/components/Fleet/CreateFleet/utils.ts +2 -4
- package/src/components/Fleet/FleetDetails/FleetDetailsPage.tsx +11 -6
- package/src/components/Fleet/FleetDetails/FleetYaml.tsx +13 -0
- package/src/components/Fleet/FleetResourceSyncs.tsx +3 -2
- package/src/components/Fleet/FleetsPage.tsx +34 -27
- package/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.tsx +10 -2
- package/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.tsx +3 -2
- package/src/components/ListPage/ListPage.tsx +1 -8
- package/src/components/Login/ProviderSelector.tsx +114 -0
- package/src/components/Login/TokenLoginForm.tsx +202 -0
- package/src/components/Masthead/CommandLineToolsPage.tsx +1 -11
- package/src/components/OverviewPage/Cards/Alerts/AlertsCard.tsx +2 -0
- package/src/components/OverviewPage/Overview.tsx +9 -4
- package/src/components/OverviewPage/OverviewPage.tsx +6 -13
- package/src/components/Repository/CreateRepository/CreateRepository.tsx +3 -2
- package/src/components/Repository/CreateRepository/CreateRepositoryForm.tsx +3 -2
- package/src/components/Repository/RepositoryDetails/RepositoryDetails.tsx +11 -9
- package/src/components/Repository/RepositoryList.tsx +11 -5
- package/src/components/ResourceSync/RepositoryResourceSyncList.tsx +8 -3
- package/src/components/Terminal/Terminal.css +12 -1
- package/src/components/Terminal/Terminal.tsx +3 -3
- package/src/components/common/CodeEditor/YamlEditor.tsx +195 -15
- package/src/components/common/CodeEditor/YamlEditorBase.tsx +42 -8
- package/src/components/common/OrganizationGuard.tsx +19 -27
- package/src/components/common/OrganizationSelector.tsx +65 -38
- package/src/components/common/PageNavigation.css +9 -0
- package/src/components/common/PageNavigation.tsx +42 -14
- package/src/components/common/PermissionsContext.tsx +108 -0
- package/src/components/form/FilterSelect.tsx +2 -0
- package/src/components/form/FormSelect.tsx +2 -0
- package/src/components/form/FormSelectTypeahead.tsx +97 -4
- package/src/components/form/ListItemField.tsx +123 -0
- package/src/components/form/NameField.tsx +3 -1
- package/src/components/form/SwitchField.tsx +3 -2
- package/src/components/form/validations.ts +430 -65
- package/src/constants.ts +1 -1
- package/src/hooks/useAlertsEnabled.ts +10 -5
- package/src/hooks/useAppContext.tsx +4 -3
- package/src/hooks/useNavigate.tsx +7 -1
- package/src/hooks/usePendingEnrollmentRequestsCount.ts +13 -1
- package/src/hooks/useSystemRestoreContext.tsx +3 -2
- package/src/hooks/useWebSocket.ts +53 -16
- package/src/types/deviceSpec.ts +72 -22
- package/src/types/extraTypes.ts +19 -1
- package/src/types/rbac.ts +1 -0
- package/src/utils/authProvider.ts +20 -0
- package/src/utils/error.ts +5 -0
- package/src/utils/k8sProvider.ts +11 -0
- package/src/utils/patch.ts +3 -1
- package/src/utils/status/applications.ts +7 -0
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.css +0 -7
- package/dist/src/components/common/ButtonWithPermissions.d.ts +0 -8
- package/dist/src/components/common/ButtonWithPermissions.d.ts.map +0 -1
- package/dist/src/components/common/ButtonWithPermissions.js +0 -12
- package/dist/src/components/common/ButtonWithPermissions.js.map +0 -1
- package/dist/src/components/common/TechPreviewBadge.d.ts +0 -4
- package/dist/src/components/common/TechPreviewBadge.d.ts.map +0 -1
- package/dist/src/components/common/TechPreviewBadge.js +0 -24
- package/dist/src/components/common/TechPreviewBadge.js.map +0 -1
- package/dist/src/hooks/useAccessReview.d.ts +0 -4
- package/dist/src/hooks/useAccessReview.d.ts.map +0 -1
- package/dist/src/hooks/useAccessReview.js +0 -46
- package/dist/src/hooks/useAccessReview.js.map +0 -1
- package/dist/src/hooks/useFleetImportAccessReview.d.ts +0 -3
- package/dist/src/hooks/useFleetImportAccessReview.d.ts.map +0 -1
- package/dist/src/hooks/useFleetImportAccessReview.js +0 -12
- package/dist/src/hooks/useFleetImportAccessReview.js.map +0 -1
- package/src/components/DetailsPage/Tables/ApplicationsTable.css +0 -7
- package/src/components/common/ButtonWithPermissions.tsx +0 -14
- package/src/components/common/TechPreviewBadge.tsx +0 -45
- package/src/hooks/useAccessReview.ts +0 -49
- package/src/hooks/useFleetImportAccessReview.ts +0 -8
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { DeviceSummaryStatusType, DevicesSummary } from '@flightctl/types';
|
|
3
3
|
import { useDevicesSummary } from '../components/Device/DevicesPage/useDevices';
|
|
4
|
-
import {
|
|
4
|
+
import { usePermissionsContext } from '../components/common/PermissionsContext';
|
|
5
5
|
import { RESOURCE, VERB } from '../types/rbac';
|
|
6
6
|
|
|
7
7
|
interface SystemRestoreContextData {
|
|
@@ -18,7 +18,8 @@ const SystemRestoreContext = React.createContext<SystemRestoreContextData | unde
|
|
|
18
18
|
* This provides data needed for showing consistent restore banners across all pages.
|
|
19
19
|
*/
|
|
20
20
|
export const SystemRestoreProvider = ({ children }: React.PropsWithChildren) => {
|
|
21
|
-
const
|
|
21
|
+
const { checkPermissions } = usePermissionsContext();
|
|
22
|
+
const [canListDevices] = checkPermissions([{ kind: RESOURCE.DEVICE, verb: VERB.LIST }]);
|
|
22
23
|
|
|
23
24
|
// We obtain the unfiltered device summary to detect if any devices are in system restore statuses
|
|
24
25
|
const [devicesSummary, isLoading] = useDevicesSummary({});
|
|
@@ -33,6 +33,7 @@ export const useWebSocket = <T>(
|
|
|
33
33
|
} = useAppContext();
|
|
34
34
|
const { t } = useTranslation();
|
|
35
35
|
const wsRef = React.useRef<WebSocket>();
|
|
36
|
+
const isMountedRef = React.useRef(true);
|
|
36
37
|
const [isConnecting, setIsConnecting] = React.useState(true);
|
|
37
38
|
const [isClosed, setIsClosed] = React.useState(false);
|
|
38
39
|
const [error, setError] = React.useState<unknown>();
|
|
@@ -42,6 +43,13 @@ export const useWebSocket = <T>(
|
|
|
42
43
|
wsRef.current?.send(msgToBytes(data, resize));
|
|
43
44
|
}, []);
|
|
44
45
|
|
|
46
|
+
React.useEffect(() => {
|
|
47
|
+
isMountedRef.current = true;
|
|
48
|
+
return () => {
|
|
49
|
+
isMountedRef.current = false;
|
|
50
|
+
};
|
|
51
|
+
}, []);
|
|
52
|
+
|
|
45
53
|
React.useEffect(() => {
|
|
46
54
|
try {
|
|
47
55
|
setIsConnecting(true);
|
|
@@ -58,25 +66,49 @@ export const useWebSocket = <T>(
|
|
|
58
66
|
}
|
|
59
67
|
|
|
60
68
|
const ws = new WebSocket(`${wsEndpoint}?${params.toString()}`, 'v5.channel.k8s.io');
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
|
|
70
|
+
const handleOpen = () => {
|
|
71
|
+
if (isMountedRef.current) {
|
|
72
|
+
setIsConnecting(false);
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const handleClose = () => {
|
|
77
|
+
if (isMountedRef.current) {
|
|
78
|
+
setIsClosed(true);
|
|
79
|
+
}
|
|
64
80
|
wsRef.current = undefined;
|
|
65
|
-
}
|
|
66
|
-
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
const handleError = (evt: Event) => {
|
|
67
84
|
// eslint-disable-next-line no-console
|
|
68
85
|
console.error('Error creating websocket:', evt);
|
|
69
|
-
|
|
70
|
-
|
|
86
|
+
if (isMountedRef.current) {
|
|
87
|
+
setError(t('Websocket error occured'));
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
ws.addEventListener('open', handleOpen);
|
|
92
|
+
ws.addEventListener('close', handleClose);
|
|
93
|
+
ws.addEventListener('error', handleError);
|
|
71
94
|
wsRef.current = ws;
|
|
95
|
+
|
|
96
|
+
return () => {
|
|
97
|
+
ws.removeEventListener('open', handleOpen);
|
|
98
|
+
ws.removeEventListener('close', handleClose);
|
|
99
|
+
ws.removeEventListener('error', handleError);
|
|
100
|
+
ws.close();
|
|
101
|
+
wsRef.current = undefined;
|
|
102
|
+
};
|
|
72
103
|
} catch (err) {
|
|
73
|
-
|
|
74
|
-
|
|
104
|
+
if (isMountedRef.current) {
|
|
105
|
+
setIsConnecting(false);
|
|
106
|
+
setError(err);
|
|
107
|
+
}
|
|
108
|
+
return () => {
|
|
109
|
+
// No cleanup needed if WebSocket creation failed
|
|
110
|
+
};
|
|
75
111
|
}
|
|
76
|
-
return () => {
|
|
77
|
-
wsRef.current?.close();
|
|
78
|
-
wsRef.current = undefined;
|
|
79
|
-
};
|
|
80
112
|
}, [deviceId, organizationId, t, getWsEndpoint, reset, wsMetadata]);
|
|
81
113
|
|
|
82
114
|
const reconnect = React.useCallback(() => {
|
|
@@ -86,10 +118,15 @@ export const useWebSocket = <T>(
|
|
|
86
118
|
}, []);
|
|
87
119
|
|
|
88
120
|
React.useEffect(() => {
|
|
89
|
-
const listener = (evt: MessageEvent<T>) =>
|
|
90
|
-
|
|
121
|
+
const listener = (evt: MessageEvent<T>) => {
|
|
122
|
+
if (isMountedRef.current) {
|
|
123
|
+
onMsgReceived(evt.data);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
const ws = wsRef.current;
|
|
127
|
+
ws?.addEventListener('message', listener);
|
|
91
128
|
return () => {
|
|
92
|
-
|
|
129
|
+
ws?.removeEventListener('message', listener);
|
|
93
130
|
};
|
|
94
131
|
}, [onMsgReceived, reset]);
|
|
95
132
|
|
package/src/types/deviceSpec.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AppType,
|
|
3
|
+
ApplicationResourceLimits,
|
|
2
4
|
ConfigProviderSpec,
|
|
3
5
|
DisruptionBudget,
|
|
4
6
|
GitConfigProviderSpec,
|
|
5
7
|
HttpConfigProviderSpec,
|
|
6
8
|
ImageApplicationProviderSpec,
|
|
7
9
|
ImagePullPolicy,
|
|
8
|
-
InlineApplicationProviderSpec,
|
|
9
10
|
InlineConfigProviderSpec,
|
|
10
11
|
KubernetesSecretProviderSpec,
|
|
11
12
|
} from '@flightctl/types';
|
|
12
|
-
import { FlightCtlLabel } from './extraTypes';
|
|
13
|
+
import { ApplicationProviderSpecFixed, FlightCtlLabel } from './extraTypes';
|
|
13
14
|
import { UpdateScheduleMode } from '../utils/time';
|
|
14
|
-
import { ApplicationProviderSpecFixed } from './extraTypes';
|
|
15
15
|
|
|
16
16
|
export enum ConfigType {
|
|
17
17
|
GIT = 'git',
|
|
@@ -44,26 +44,53 @@ type InlineContent = {
|
|
|
44
44
|
};
|
|
45
45
|
|
|
46
46
|
type AppBase = {
|
|
47
|
+
appType: AppType;
|
|
47
48
|
specType: AppSpecType;
|
|
48
|
-
// appType: AppType - commented out for now, since it only accepts one value ("compose")
|
|
49
49
|
name?: string;
|
|
50
50
|
variables: { name: string; value: string }[];
|
|
51
|
-
volumes?:
|
|
52
|
-
name: string;
|
|
53
|
-
reference: string;
|
|
54
|
-
pullPolicy?: ImagePullPolicy;
|
|
55
|
-
}[];
|
|
51
|
+
volumes?: ApplicationVolumeForm[];
|
|
56
52
|
};
|
|
57
53
|
|
|
58
|
-
export type
|
|
59
|
-
|
|
54
|
+
export type PortMapping = {
|
|
55
|
+
hostPort: string;
|
|
56
|
+
containerPort: string;
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export type SingleContainerAppForm = AppBase & {
|
|
60
|
+
appType: AppType.AppTypeContainer;
|
|
61
|
+
specType: AppSpecType.OCI_IMAGE;
|
|
62
|
+
name: string;
|
|
63
|
+
image: string;
|
|
64
|
+
ports?: PortMapping[];
|
|
65
|
+
limits?: ApplicationResourceLimits;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export type QuadletImageAppForm = AppBase & {
|
|
69
|
+
appType: AppType.AppTypeQuadlet;
|
|
70
|
+
specType: AppSpecType.OCI_IMAGE;
|
|
71
|
+
image: string;
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
export type QuadletInlineAppForm = AppBase & {
|
|
75
|
+
appType: AppType.AppTypeQuadlet;
|
|
76
|
+
specType: AppSpecType.INLINE;
|
|
77
|
+
name: string; // transforms the field in required
|
|
60
78
|
files: InlineContent[];
|
|
61
79
|
};
|
|
62
80
|
|
|
63
|
-
export type
|
|
81
|
+
export type ComposeImageAppForm = AppBase & {
|
|
82
|
+
appType: AppType.AppTypeCompose;
|
|
83
|
+
specType: AppSpecType.OCI_IMAGE;
|
|
64
84
|
image: string;
|
|
65
85
|
};
|
|
66
86
|
|
|
87
|
+
export type ComposeInlineAppForm = AppBase & {
|
|
88
|
+
appType: AppType.AppTypeCompose;
|
|
89
|
+
specType: AppSpecType.INLINE;
|
|
90
|
+
name: string;
|
|
91
|
+
files: InlineContent[];
|
|
92
|
+
};
|
|
93
|
+
|
|
67
94
|
export const isGitConfigTemplate = (configTemplate: ConfigTemplate): configTemplate is GitConfigTemplate =>
|
|
68
95
|
configTemplate.type === ConfigType.GIT;
|
|
69
96
|
|
|
@@ -81,20 +108,43 @@ export type RepoConfig = GitConfigProviderSpec | HttpConfigProviderSpec;
|
|
|
81
108
|
export const isRepoConfig = (config: ConfigSourceProvider): config is RepoConfig =>
|
|
82
109
|
isGitProviderSpec(config) || isHttpProviderSpec(config);
|
|
83
110
|
|
|
84
|
-
export type AppForm =
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
export const
|
|
92
|
-
|
|
111
|
+
export type AppForm =
|
|
112
|
+
| QuadletImageAppForm
|
|
113
|
+
| QuadletInlineAppForm
|
|
114
|
+
| ComposeImageAppForm
|
|
115
|
+
| ComposeInlineAppForm
|
|
116
|
+
| SingleContainerAppForm;
|
|
117
|
+
|
|
118
|
+
export const isImageAppProvider = (
|
|
119
|
+
app: ApplicationProviderSpecFixed,
|
|
120
|
+
): app is ApplicationProviderSpecFixed & ImageApplicationProviderSpec => 'image' in app;
|
|
121
|
+
|
|
122
|
+
// Type guards for the 5 explicit types
|
|
123
|
+
export const isQuadletImageAppForm = (app: AppBase): app is QuadletImageAppForm =>
|
|
124
|
+
app.appType === AppType.AppTypeQuadlet && app.specType === AppSpecType.OCI_IMAGE;
|
|
125
|
+
export const isQuadletInlineAppForm = (app: AppBase): app is QuadletInlineAppForm =>
|
|
126
|
+
app.appType === AppType.AppTypeQuadlet && app.specType === AppSpecType.INLINE;
|
|
127
|
+
export const isComposeImageAppForm = (app: AppBase): app is ComposeImageAppForm =>
|
|
128
|
+
app.appType === AppType.AppTypeCompose && app.specType === AppSpecType.OCI_IMAGE;
|
|
129
|
+
export const isComposeInlineAppForm = (app: AppBase): app is ComposeInlineAppForm =>
|
|
130
|
+
app.appType === AppType.AppTypeCompose && app.specType === AppSpecType.INLINE;
|
|
131
|
+
export const isSingleContainerAppForm = (app: AppBase): app is SingleContainerAppForm =>
|
|
132
|
+
app.appType === AppType.AppTypeContainer;
|
|
133
|
+
|
|
134
|
+
export type ApplicationVolumeForm = {
|
|
135
|
+
name: string;
|
|
136
|
+
imageRef?: string;
|
|
137
|
+
imagePullPolicy?: ImagePullPolicy;
|
|
138
|
+
mountPath?: string;
|
|
139
|
+
};
|
|
93
140
|
|
|
94
141
|
const hasTemplateVariables = (str: string) => /{{.+?}}/.test(str);
|
|
95
142
|
|
|
96
143
|
export const getAppIdentifier = (app: AppForm) => {
|
|
97
|
-
if (
|
|
144
|
+
if (isSingleContainerAppForm(app)) {
|
|
145
|
+
return app.name || app.image;
|
|
146
|
+
}
|
|
147
|
+
if (isQuadletImageAppForm(app) || isComposeImageAppForm(app)) {
|
|
98
148
|
return app.name || app.image;
|
|
99
149
|
}
|
|
100
150
|
// Name is mandatory for inline applications
|
package/src/types/extraTypes.ts
CHANGED
|
@@ -2,12 +2,15 @@ import {
|
|
|
2
2
|
AppType,
|
|
3
3
|
ApplicationEnvVars,
|
|
4
4
|
ApplicationVolumeProviderSpec,
|
|
5
|
+
AuthProvider,
|
|
5
6
|
ConditionType,
|
|
6
7
|
Device,
|
|
7
8
|
EnrollmentRequest,
|
|
8
9
|
FileContent,
|
|
9
10
|
Fleet,
|
|
10
11
|
ImageApplicationProviderSpec,
|
|
12
|
+
OAuth2ProviderSpec,
|
|
13
|
+
OIDCProviderSpec,
|
|
11
14
|
RelativePath,
|
|
12
15
|
ResourceSync,
|
|
13
16
|
} from '@flightctl/types';
|
|
@@ -44,7 +47,7 @@ export type InlineApplicationFileFixed = FileContent & RelativePath;
|
|
|
44
47
|
export type ApplicationProviderSpecFixed = ApplicationEnvVars &
|
|
45
48
|
ApplicationVolumeProviderSpec & {
|
|
46
49
|
name?: string;
|
|
47
|
-
appType
|
|
50
|
+
appType: AppType;
|
|
48
51
|
} & (ImageApplicationProviderSpec | { inline: InlineApplicationFileFixed[] });
|
|
49
52
|
|
|
50
53
|
type CliArtifact = {
|
|
@@ -75,3 +78,18 @@ export type AlertManagerAlert = {
|
|
|
75
78
|
};
|
|
76
79
|
receivers: Array<{ name: string }>;
|
|
77
80
|
};
|
|
81
|
+
|
|
82
|
+
// AuthProviders that can be added dynamically to the system can only be OAuth2 or OIDC.
|
|
83
|
+
export type DynamicAuthProviderSpec = OIDCProviderSpec | OAuth2ProviderSpec;
|
|
84
|
+
export type DynamicAuthProvider = AuthProvider & { spec: DynamicAuthProviderSpec };
|
|
85
|
+
|
|
86
|
+
export const isDynamicAuthProvider = (provider: AuthProvider): provider is DynamicAuthProvider =>
|
|
87
|
+
provider.spec.providerType === ProviderType.OIDC || provider.spec.providerType === ProviderType.OAuth2;
|
|
88
|
+
|
|
89
|
+
export enum ProviderType {
|
|
90
|
+
OIDC = 'oidc',
|
|
91
|
+
OAuth2 = 'oauth2',
|
|
92
|
+
K8s = 'k8s',
|
|
93
|
+
AAP = 'aap',
|
|
94
|
+
OpenShift = 'openshift',
|
|
95
|
+
}
|
package/src/types/rbac.ts
CHANGED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { TFunction } from 'react-i18next';
|
|
2
|
+
import { AuthProvider } from '@flightctl/types';
|
|
3
|
+
import { ProviderType } from '../types/extraTypes';
|
|
4
|
+
|
|
5
|
+
export const getProviderDisplayName = (provider: AuthProvider, t: TFunction): string => {
|
|
6
|
+
const spec = provider.spec;
|
|
7
|
+
if ('displayName' in spec && spec.displayName) {
|
|
8
|
+
return spec.displayName;
|
|
9
|
+
}
|
|
10
|
+
if (provider.spec.providerType === ProviderType.OpenShift) {
|
|
11
|
+
return t('OpenShift');
|
|
12
|
+
}
|
|
13
|
+
if (provider.spec.providerType === ProviderType.K8s) {
|
|
14
|
+
return t('Kubernetes');
|
|
15
|
+
}
|
|
16
|
+
if (provider.spec.providerType === ProviderType.AAP) {
|
|
17
|
+
return t('Ansible Automation Platform');
|
|
18
|
+
}
|
|
19
|
+
return provider.metadata.name as string;
|
|
20
|
+
};
|
package/src/utils/error.ts
CHANGED
|
@@ -22,3 +22,8 @@ export const getConditionMessage = (condition: Condition, reason?: string): stri
|
|
|
22
22
|
[uppercaseSentence(reason || condition.reason), uppercaseSentence(condition.message)]
|
|
23
23
|
.filter((msg) => !!msg)
|
|
24
24
|
.join('. ');
|
|
25
|
+
|
|
26
|
+
export const isResourceVersionTestFailure = (error: unknown): boolean => {
|
|
27
|
+
const errorMessage = getErrorMessage(error);
|
|
28
|
+
return errorMessage.includes('Error 400') && errorMessage.includes('/metadata/resourceVersion');
|
|
29
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Simple JWT format validation - checks if token has 3 parts separated by dots
|
|
2
|
+
export const isValidJwtTokenFormat = (token: string): boolean => {
|
|
3
|
+
if (!token) return false;
|
|
4
|
+
const parts = token.split('.');
|
|
5
|
+
if (parts.length !== 3) return false;
|
|
6
|
+
// Check that each part contains only valid base64url characters
|
|
7
|
+
const base64urlPattern = /^[A-Za-z0-9_-]+$/;
|
|
8
|
+
return parts.every((part) => part.length > 0 && base64urlPattern.test(part));
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export const nowInSeconds = () => Math.round(Date.now() / 1000);
|
package/src/utils/patch.ts
CHANGED
|
@@ -36,7 +36,9 @@ export const appendJSONPatch = <V = unknown>({
|
|
|
36
36
|
if (newValue === originalValue) {
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
// For boolean values, we should never remove them, only set them to true or false
|
|
40
|
+
// For other values, if newValue is falsy and originalValue exists, remove the field
|
|
41
|
+
if (!newValue && originalValue && typeof newValue !== 'boolean') {
|
|
40
42
|
patches.push({
|
|
41
43
|
op: 'remove',
|
|
42
44
|
path,
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
ApplicationsSummaryStatusType as AppSummaryStatus,
|
|
6
6
|
} from '@flightctl/types';
|
|
7
7
|
import { StatusItem } from './common';
|
|
8
|
+
import { ResourcesEmptyIcon } from '@patternfly/react-icons/dist/js/icons/resources-empty-icon';
|
|
8
9
|
|
|
9
10
|
export const getApplicationSummaryStatusItems = (t: TFunction): StatusItem<AppSummaryStatus>[] => [
|
|
10
11
|
{
|
|
@@ -23,6 +24,12 @@ export const getApplicationSummaryStatusItems = (t: TFunction): StatusItem<AppSu
|
|
|
23
24
|
label: t('Unknown'),
|
|
24
25
|
level: 'unknown',
|
|
25
26
|
},
|
|
27
|
+
{
|
|
28
|
+
id: AppSummaryStatus.ApplicationsSummaryStatusNoApplications,
|
|
29
|
+
label: t('No applications'),
|
|
30
|
+
level: 'info',
|
|
31
|
+
customIcon: ResourcesEmptyIcon,
|
|
32
|
+
},
|
|
26
33
|
{
|
|
27
34
|
id: AppSummaryStatus.ApplicationsSummaryStatusHealthy,
|
|
28
35
|
label: t('Healthy'),
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { ButtonProps } from '@patternfly/react-core';
|
|
3
|
-
import { AccessReviewResult } from '../../hooks/useAccessReview';
|
|
4
|
-
declare const ButtonWithPermissions: ({ permissions, children, ...rest }: ButtonProps & {
|
|
5
|
-
permissions: AccessReviewResult;
|
|
6
|
-
}) => false | React.JSX.Element;
|
|
7
|
-
export default ButtonWithPermissions;
|
|
8
|
-
//# sourceMappingURL=ButtonWithPermissions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonWithPermissions.d.ts","sourceRoot":"","sources":["../../../../src/components/common/ButtonWithPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAU,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,QAAA,MAAM,qBAAqB;;+BAO1B,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const React = tslib_1.__importStar(require("react"));
|
|
5
|
-
const react_core_1 = require("@patternfly/react-core");
|
|
6
|
-
const ButtonWithPermissions = (_a) => {
|
|
7
|
-
var { permissions, children } = _a, rest = tslib_1.__rest(_a, ["permissions", "children"]);
|
|
8
|
-
const [allowed] = permissions;
|
|
9
|
-
return allowed && React.createElement(react_core_1.Button, Object.assign({}, rest), children);
|
|
10
|
-
};
|
|
11
|
-
exports.default = ButtonWithPermissions;
|
|
12
|
-
//# sourceMappingURL=ButtonWithPermissions.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonWithPermissions.js","sourceRoot":"","sources":["../../../../src/components/common/ButtonWithPermissions.tsx"],"names":[],"mappings":";;;AAAA,qDAA+B;AAC/B,uDAA6D;AAG7D,MAAM,qBAAqB,GAAG,CAAC,EAIqB,EAAE,EAAE;QAJzB,EAC7B,WAAW,EACX,QAAQ,OAE0C,EAD/C,IAAI,sBAHsB,2BAI9B,CADQ;IAEP,MAAM,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC;IAC9B,OAAO,OAAO,IAAI,oBAAC,mBAAM,oBAAK,IAAI,GAAG,QAAQ,CAAU,CAAC;AAC1D,CAAC,CAAC;AAEF,kBAAe,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TechPreviewBadge.d.ts","sourceRoot":"","sources":["../../../../src/components/common/TechPreviewBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA2B/B,QAAA,MAAM,gBAAgB,yBAerB,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const tslib_1 = require("tslib");
|
|
4
|
-
const React = tslib_1.__importStar(require("react"));
|
|
5
|
-
const react_core_1 = require("@patternfly/react-core");
|
|
6
|
-
const icons_1 = require("@patternfly/react-icons/dist/js/icons");
|
|
7
|
-
const useTranslation_1 = require("../../hooks/useTranslation");
|
|
8
|
-
const LearnMoreLink_1 = tslib_1.__importDefault(require("./LearnMoreLink"));
|
|
9
|
-
// Links to general Red Hat docs
|
|
10
|
-
const TECH_PREVIEW_LEVEL_LINK = 'https://access.redhat.com/support/offerings/techpreview';
|
|
11
|
-
const TechPreviewPopoverContent = () => {
|
|
12
|
-
const { t } = (0, useTranslation_1.useTranslation)();
|
|
13
|
-
return (React.createElement(react_core_1.Stack, null,
|
|
14
|
-
React.createElement(react_core_1.StackItem, null, t('Technology preview features provide early access to upcoming product innovations, enabling you to test functionality and provide feedback during the development process.')),
|
|
15
|
-
React.createElement(react_core_1.StackItem, null,
|
|
16
|
-
React.createElement(LearnMoreLink_1.default, { link: TECH_PREVIEW_LEVEL_LINK }))));
|
|
17
|
-
};
|
|
18
|
-
const TechPreviewBadge = () => {
|
|
19
|
-
const { t } = (0, useTranslation_1.useTranslation)();
|
|
20
|
-
return (React.createElement(react_core_1.Popover, { "aria-label": t('Technology preview description'), bodyContent: React.createElement(TechPreviewPopoverContent, null), withFocusTrap: true, triggerAction: "click" },
|
|
21
|
-
React.createElement(react_core_1.Label, { color: "orange", icon: React.createElement(icons_1.InfoCircleIcon, null) }, t('Technology preview'))));
|
|
22
|
-
};
|
|
23
|
-
exports.default = TechPreviewBadge;
|
|
24
|
-
//# sourceMappingURL=TechPreviewBadge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TechPreviewBadge.js","sourceRoot":"","sources":["../../../../src/components/common/TechPreviewBadge.tsx"],"names":[],"mappings":";;;AAAA,qDAA+B;AAC/B,uDAA0E;AAC1E,iEAAuE;AAEvE,+DAA4D;AAC5D,4EAA4C;AAE5C,gCAAgC;AAChC,MAAM,uBAAuB,GAAG,yDAAyD,CAAC;AAE1F,MAAM,yBAAyB,GAAG,GAAG,EAAE;IACrC,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAE/B,OAAO,CACL,oBAAC,kBAAK;QACJ,oBAAC,sBAAS,QACP,CAAC,CACA,2KAA2K,CAC5K,CACS;QACZ,oBAAC,sBAAS;YACR,oBAAC,uBAAa,IAAC,IAAI,EAAE,uBAAuB,GAAI,CACtC,CACN,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC5B,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAE/B,OAAO,CACL,oBAAC,oBAAO,kBACM,CAAC,CAAC,gCAAgC,CAAC,EAC/C,WAAW,EAAE,oBAAC,yBAAyB,OAAG,EAC1C,aAAa,QACb,aAAa,EAAC,OAAO;QAErB,oBAAC,kBAAK,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,EAAE,oBAAC,sBAAc,OAAG,IAC3C,CAAC,CAAC,oBAAoB,CAAC,CAClB,CACA,CACX,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAccessReview.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAccessReview.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAExE,eAAO,MAAM,eAAe,SAAU,QAAQ,QAAQ,IAAI,uBAyCzD,CAAC"}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useAccessReview = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const React = tslib_1.__importStar(require("react"));
|
|
6
|
-
const useAppContext_1 = require("./useAppContext");
|
|
7
|
-
const error_1 = require("../utils/error");
|
|
8
|
-
const useAccessReview = (kind, verb) => {
|
|
9
|
-
const [isLoading, setIsLoading] = React.useState(true);
|
|
10
|
-
const [error, setError] = React.useState();
|
|
11
|
-
const [isAllowed, setIsAllowed] = React.useState(false);
|
|
12
|
-
const { fetch: { checkPermissions }, } = (0, useAppContext_1.useAppContext)();
|
|
13
|
-
React.useEffect(() => {
|
|
14
|
-
let isMounted = true;
|
|
15
|
-
const doItAsync = () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
if (!isMounted)
|
|
17
|
-
return;
|
|
18
|
-
setIsLoading(true);
|
|
19
|
-
try {
|
|
20
|
-
const allowed = yield checkPermissions(kind, verb);
|
|
21
|
-
if (isMounted) {
|
|
22
|
-
setIsAllowed(allowed);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
catch (err) {
|
|
26
|
-
if (isMounted) {
|
|
27
|
-
setError((0, error_1.getErrorMessage)(err));
|
|
28
|
-
setIsAllowed(false);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
finally {
|
|
32
|
-
if (isMounted) {
|
|
33
|
-
setIsLoading(false);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
doItAsync();
|
|
38
|
-
// Cleanup function to prevent state updates after unmount
|
|
39
|
-
return () => {
|
|
40
|
-
isMounted = false;
|
|
41
|
-
};
|
|
42
|
-
}, [kind, verb, checkPermissions]);
|
|
43
|
-
return [isAllowed, isLoading, error];
|
|
44
|
-
};
|
|
45
|
-
exports.useAccessReview = useAccessReview;
|
|
46
|
-
//# sourceMappingURL=useAccessReview.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAccessReview.js","sourceRoot":"","sources":["../../../src/hooks/useAccessReview.ts"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,mDAAgD;AAChD,0CAAiD;AAK1C,MAAM,eAAe,GAAG,CAAC,IAAc,EAAE,IAAU,EAAsB,EAAE;IAChF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACnD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAExD,MAAM,EACJ,KAAK,EAAE,EAAE,gBAAgB,EAAE,GAC5B,GAAG,IAAA,6BAAa,GAAE,CAAC;IACpB,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,MAAM,SAAS,GAAG,GAAS,EAAE;YAC3B,IAAI,CAAC,SAAS;gBAAE,OAAO;YAEvB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBACnD,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,SAAS,EAAE,CAAC;oBACd,QAAQ,CAAC,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC,CAAC;oBAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;oBAAS,CAAC;gBACT,IAAI,SAAS,EAAE,CAAC;oBACd,YAAY,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC,CAAA,CAAC;QAEF,SAAS,EAAE,CAAC;QAEZ,0DAA0D;QAC1D,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEnC,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AAzCW,QAAA,eAAe,mBAyC1B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFleetImportAccessReview.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFleetImportAccessReview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAmB,MAAM,mBAAmB,CAAC;AAGxE,eAAO,MAAM,0BAA0B,0BAItC,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useFleetImportAccessReview = void 0;
|
|
4
|
-
const useAccessReview_1 = require("./useAccessReview");
|
|
5
|
-
const rbac_1 = require("../types/rbac");
|
|
6
|
-
const useFleetImportAccessReview = () => {
|
|
7
|
-
const canCreateRs = (0, useAccessReview_1.useAccessReview)(rbac_1.RESOURCE.RESOURCE_SYNC, rbac_1.VERB.CREATE);
|
|
8
|
-
const canReadRepo = (0, useAccessReview_1.useAccessReview)(rbac_1.RESOURCE.REPOSITORY, rbac_1.VERB.LIST);
|
|
9
|
-
return [canCreateRs[0] && canReadRepo[0], canCreateRs[1] || canReadRepo[1], canCreateRs[2] || canReadRepo[2]];
|
|
10
|
-
};
|
|
11
|
-
exports.useFleetImportAccessReview = useFleetImportAccessReview;
|
|
12
|
-
//# sourceMappingURL=useFleetImportAccessReview.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFleetImportAccessReview.js","sourceRoot":"","sources":["../../../src/hooks/useFleetImportAccessReview.ts"],"names":[],"mappings":";;;AAAA,uDAAwE;AACxE,wCAA+C;AAExC,MAAM,0BAA0B,GAAG,GAAuB,EAAE;IACjE,MAAM,WAAW,GAAG,IAAA,iCAAe,EAAC,eAAQ,CAAC,aAAa,EAAE,WAAI,CAAC,MAAM,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,IAAA,iCAAe,EAAC,eAAQ,CAAC,UAAU,EAAE,WAAI,CAAC,IAAI,CAAC,CAAC;IACpE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AAChH,CAAC,CAAC;AAJW,QAAA,0BAA0B,8BAIrC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { Button, ButtonProps } from '@patternfly/react-core';
|
|
3
|
-
import { AccessReviewResult } from '../../hooks/useAccessReview';
|
|
4
|
-
|
|
5
|
-
const ButtonWithPermissions = ({
|
|
6
|
-
permissions,
|
|
7
|
-
children,
|
|
8
|
-
...rest
|
|
9
|
-
}: ButtonProps & { permissions: AccessReviewResult }) => {
|
|
10
|
-
const [allowed] = permissions;
|
|
11
|
-
return allowed && <Button {...rest}>{children}</Button>;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export default ButtonWithPermissions;
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
import { Label, Popover, Stack, StackItem } from '@patternfly/react-core';
|
|
3
|
-
import { InfoCircleIcon } from '@patternfly/react-icons/dist/js/icons';
|
|
4
|
-
|
|
5
|
-
import { useTranslation } from '../../hooks/useTranslation';
|
|
6
|
-
import LearnMoreLink from './LearnMoreLink';
|
|
7
|
-
|
|
8
|
-
// Links to general Red Hat docs
|
|
9
|
-
const TECH_PREVIEW_LEVEL_LINK = 'https://access.redhat.com/support/offerings/techpreview';
|
|
10
|
-
|
|
11
|
-
const TechPreviewPopoverContent = () => {
|
|
12
|
-
const { t } = useTranslation();
|
|
13
|
-
|
|
14
|
-
return (
|
|
15
|
-
<Stack>
|
|
16
|
-
<StackItem>
|
|
17
|
-
{t(
|
|
18
|
-
'Technology preview features provide early access to upcoming product innovations, enabling you to test functionality and provide feedback during the development process.',
|
|
19
|
-
)}
|
|
20
|
-
</StackItem>
|
|
21
|
-
<StackItem>
|
|
22
|
-
<LearnMoreLink link={TECH_PREVIEW_LEVEL_LINK} />
|
|
23
|
-
</StackItem>
|
|
24
|
-
</Stack>
|
|
25
|
-
);
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
const TechPreviewBadge = () => {
|
|
29
|
-
const { t } = useTranslation();
|
|
30
|
-
|
|
31
|
-
return (
|
|
32
|
-
<Popover
|
|
33
|
-
aria-label={t('Technology preview description')}
|
|
34
|
-
bodyContent={<TechPreviewPopoverContent />}
|
|
35
|
-
withFocusTrap
|
|
36
|
-
triggerAction="click"
|
|
37
|
-
>
|
|
38
|
-
<Label color="orange" icon={<InfoCircleIcon />}>
|
|
39
|
-
{t('Technology preview')}
|
|
40
|
-
</Label>
|
|
41
|
-
</Popover>
|
|
42
|
-
);
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export default TechPreviewBadge;
|