@flightctl/ui-components 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__mocks__/fileMock.js +3 -0
- package/dist/__mocks__/fileMock.js.map +1 -0
- package/dist/__mocks__/styleMock.js +3 -0
- package/dist/__mocks__/styleMock.js.map +1 -0
- package/dist/jest.config.js +24 -0
- package/dist/jest.config.js.map +1 -0
- package/dist/src/components/DetailsPage/DetailsNotFound.js +69 -0
- package/dist/src/components/DetailsPage/DetailsNotFound.js.map +1 -0
- package/dist/src/components/DetailsPage/DetailsPage.css +3 -0
- package/dist/src/components/DetailsPage/DetailsPage.js +42 -0
- package/dist/src/components/DetailsPage/DetailsPage.js.map +1 -0
- package/dist/src/components/DetailsPage/DetailsPage.spec.js +81 -0
- package/dist/src/components/DetailsPage/DetailsPage.spec.js.map +1 -0
- package/dist/src/components/DetailsPage/DetailsPageActions.js +30 -0
- package/dist/src/components/DetailsPage/DetailsPageActions.js.map +1 -0
- package/dist/src/components/DetailsPage/DetailsPageCard.css +8 -0
- package/dist/src/components/DetailsPage/DetailsPageCard.js +12 -0
- package/dist/src/components/DetailsPage/DetailsPageCard.js.map +1 -0
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.js +27 -0
- package/dist/src/components/DetailsPage/Tables/ApplicationsTable.js.map +1 -0
- package/dist/src/components/DetailsPage/Tables/ConditionsTable.js +24 -0
- package/dist/src/components/DetailsPage/Tables/ConditionsTable.js.map +1 -0
- package/dist/src/components/DetailsPage/Tables/IntegrityDetails.js +22 -0
- package/dist/src/components/DetailsPage/Tables/IntegrityDetails.js.map +1 -0
- package/dist/src/components/DetailsPage/Tables/SystemdDetailsTable.js +40 -0
- package/dist/src/components/DetailsPage/Tables/SystemdDetailsTable.js.map +1 -0
- package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.js +63 -0
- package/dist/src/components/Device/AddDeviceModal/AddDeviceModal.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js +57 -0
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsPage.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.css +4 -0
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js +114 -0
- package/dist/src/components/Device/DeviceDetails/DeviceDetailsTab.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceFleet.css +3 -0
- package/dist/src/components/Device/DeviceDetails/DeviceFleet.js +50 -0
- package/dist/src/components/Device/DeviceDetails/DeviceFleet.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.css +3 -0
- package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.js +34 -0
- package/dist/src/components/Device/DeviceDetails/DeviceStatusDebugModal.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/SystemdTable.js +38 -0
- package/dist/src/components/Device/DeviceDetails/SystemdTable.js.map +1 -0
- package/dist/src/components/Device/DeviceDetails/TerminalTab.js +31 -0
- package/dist/src/components/Device/DeviceDetails/TerminalTab.js.map +1 -0
- package/dist/src/components/Device/DeviceList/DeviceFilterSelect.js +87 -0
- package/dist/src/components/Device/DeviceList/DeviceFilterSelect.js.map +1 -0
- package/dist/src/components/Device/DeviceList/DeviceList.js +157 -0
- package/dist/src/components/Device/DeviceList/DeviceList.js.map +1 -0
- package/dist/src/components/Device/DeviceList/DeviceTableRow.js +62 -0
- package/dist/src/components/Device/DeviceList/DeviceTableRow.js.map +1 -0
- package/dist/src/components/Device/DeviceList/DeviceTableToolbar.js +80 -0
- package/dist/src/components/Device/DeviceList/DeviceTableToolbar.js.map +1 -0
- package/dist/src/components/Device/DeviceList/types.js +4 -0
- package/dist/src/components/Device/DeviceList/types.js.map +1 -0
- package/dist/src/components/Device/DeviceList/useDeviceBackendFilters.js +94 -0
- package/dist/src/components/Device/DeviceList/useDeviceBackendFilters.js.map +1 -0
- package/dist/src/components/Device/DeviceList/useDeviceFilters.js +16 -0
- package/dist/src/components/Device/DeviceList/useDeviceFilters.js.map +1 -0
- package/dist/src/components/Device/DeviceList/useDeviceLikeResources.js +98 -0
- package/dist/src/components/Device/DeviceList/useDeviceLikeResources.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.css +4 -0
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js +92 -0
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizard.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardFooter.js +32 -0
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardFooter.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardNav.js +36 -0
- package/dist/src/components/Device/EditDeviceWizard/EditDeviceWizardNav.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js +171 -0
- package/dist/src/components/Device/EditDeviceWizard/deviceSpecUtils.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js +15 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigInlineTemplateForm.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigK8sSecretTemplateForm.js +22 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigK8sSecretTemplateForm.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigTemplateForm.css +3 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigTemplateForm.js +96 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigTemplateForm.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js +94 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ConfigWithRepositoryTemplateForm.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js +45 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/DeviceTemplateStep.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.js +48 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/GeneralInfoStep.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.js +45 -0
- package/dist/src/components/Device/EditDeviceWizard/steps/ReviewDeviceStep.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/types.js +3 -0
- package/dist/src/components/Device/EditDeviceWizard/types.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/useEditDevice.js +35 -0
- package/dist/src/components/Device/EditDeviceWizard/useEditDevice.js.map +1 -0
- package/dist/src/components/Device/EditDeviceWizard/utils.js +65 -0
- package/dist/src/components/Device/EditDeviceWizard/utils.js.map +1 -0
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsForm.js +39 -0
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsForm.js.map +1 -0
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsModal.js +46 -0
- package/dist/src/components/Device/MatchPatternsModal/MatchPatternsModal.js.map +1 -0
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.css +3 -0
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js +103 -0
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestDetails/EnrollmentRequestDetails.js.map +1 -0
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.js +42 -0
- package/dist/src/components/EnrollmentRequest/EnrollmentRequestTableRow.js.map +1 -0
- package/dist/src/components/ErrorAlert/ErrorAlert.js +13 -0
- package/dist/src/components/ErrorAlert/ErrorAlert.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.css +3 -0
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js +82 -0
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizard.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.js +32 -0
- package/dist/src/components/Fleet/CreateFleet/CreateFleetWizardFooter.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js +85 -0
- package/dist/src/components/Fleet/CreateFleet/steps/DeviceLabelSelector.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.js +30 -0
- package/dist/src/components/Fleet/CreateFleet/steps/GeneralInfoStep.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.js +46 -0
- package/dist/src/components/Fleet/CreateFleet/steps/ReviewStep.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/types.js +3 -0
- package/dist/src/components/Fleet/CreateFleet/types.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/useEditFleet.js +35 -0
- package/dist/src/components/Fleet/CreateFleet/useEditFleet.js.map +1 -0
- package/dist/src/components/Fleet/CreateFleet/utils.js +143 -0
- package/dist/src/components/Fleet/CreateFleet/utils.js.map +1 -0
- package/dist/src/components/Fleet/DeleteFleetModal/DeleteFleetModal.js +55 -0
- package/dist/src/components/Fleet/DeleteFleetModal/DeleteFleetModal.js.map +1 -0
- package/dist/src/components/Fleet/FleetDetails/FleetDetails.js +49 -0
- package/dist/src/components/Fleet/FleetDetails/FleetDetails.js.map +1 -0
- package/dist/src/components/Fleet/FleetDetails/FleetDetailsContent.js +69 -0
- package/dist/src/components/Fleet/FleetDetails/FleetDetailsContent.js.map +1 -0
- package/dist/src/components/Fleet/FleetDetails/FleetDevices.js +40 -0
- package/dist/src/components/Fleet/FleetDetails/FleetDevices.js.map +1 -0
- package/dist/src/components/Fleet/FleetDetails/FleetOwnerLink.js +37 -0
- package/dist/src/components/Fleet/FleetDetails/FleetOwnerLink.js.map +1 -0
- package/dist/src/components/Fleet/FleetDetails/chartUtils.js +29 -0
- package/dist/src/components/Fleet/FleetDetails/chartUtils.js.map +1 -0
- package/dist/src/components/Fleet/FleetList.js +130 -0
- package/dist/src/components/Fleet/FleetList.js.map +1 -0
- package/dist/src/components/Fleet/FleetRow.js +64 -0
- package/dist/src/components/Fleet/FleetRow.js.map +1 -0
- package/dist/src/components/Fleet/FleetStatus.js +34 -0
- package/dist/src/components/Fleet/FleetStatus.js.map +1 -0
- package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.css +3 -0
- package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.js +106 -0
- package/dist/src/components/Fleet/ImportFleetWizard/ImportFleetWizard.js.map +1 -0
- package/dist/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.js +69 -0
- package/dist/src/components/Fleet/ImportFleetWizard/steps/RepositoryStep.js.map +1 -0
- package/dist/src/components/Fleet/ImportFleetWizard/steps/ResourceSyncStep.js +31 -0
- package/dist/src/components/Fleet/ImportFleetWizard/steps/ResourceSyncStep.js.map +1 -0
- package/dist/src/components/Fleet/ImportFleetWizard/steps/ReviewStep.js +37 -0
- package/dist/src/components/Fleet/ImportFleetWizard/steps/ReviewStep.js.map +1 -0
- package/dist/src/components/Fleet/ImportFleetWizard/types.js +3 -0
- package/dist/src/components/Fleet/ImportFleetWizard/types.js.map +1 -0
- package/dist/src/components/Fleet/ResourceSyncRow.js +36 -0
- package/dist/src/components/Fleet/ResourceSyncRow.js.map +1 -0
- package/dist/src/components/ListPage/ListPage.js +12 -0
- package/dist/src/components/ListPage/ListPage.js.map +1 -0
- package/dist/src/components/ListPage/ListPageActions.js +30 -0
- package/dist/src/components/ListPage/ListPageActions.js.map +1 -0
- package/dist/src/components/ListPage/ListPageBody.js +21 -0
- package/dist/src/components/ListPage/ListPageBody.js.map +1 -0
- package/dist/src/components/ListPage/types.js +3 -0
- package/dist/src/components/ListPage/types.js.map +1 -0
- package/dist/src/components/NavItem/NavItem.js +20 -0
- package/dist/src/components/NavItem/NavItem.js.map +1 -0
- package/dist/src/components/OverviewPage/Cards/Status/ApplicationStatusChart.js +30 -0
- package/dist/src/components/OverviewPage/Cards/Status/ApplicationStatusChart.js.map +1 -0
- package/dist/src/components/OverviewPage/Cards/Status/DeviceStatusChart.js +32 -0
- package/dist/src/components/OverviewPage/Cards/Status/DeviceStatusChart.js.map +1 -0
- package/dist/src/components/OverviewPage/Cards/Status/StatusCard.js +61 -0
- package/dist/src/components/OverviewPage/Cards/Status/StatusCard.js.map +1 -0
- package/dist/src/components/OverviewPage/Cards/Status/StatusCardFilters.js +64 -0
- package/dist/src/components/OverviewPage/Cards/Status/StatusCardFilters.js.map +1 -0
- package/dist/src/components/OverviewPage/Cards/Status/SystemUpdateStatusChart.js +30 -0
- package/dist/src/components/OverviewPage/Cards/Status/SystemUpdateStatusChart.js.map +1 -0
- package/dist/src/components/OverviewPage/Cards/Status/utils.js +31 -0
- package/dist/src/components/OverviewPage/Cards/Status/utils.js.map +1 -0
- package/dist/src/components/OverviewPage/Cards/ToDo/ToDoCard.js +46 -0
- package/dist/src/components/OverviewPage/Cards/ToDo/ToDoCard.js.map +1 -0
- package/dist/src/components/OverviewPage/Overview.js +16 -0
- package/dist/src/components/OverviewPage/Overview.js.map +1 -0
- package/dist/src/components/OverviewPage/OverviewPage.js +17 -0
- package/dist/src/components/OverviewPage/OverviewPage.js.map +1 -0
- package/dist/src/components/Repository/CreateRepository/CreateRepository.js +102 -0
- package/dist/src/components/Repository/CreateRepository/CreateRepository.js.map +1 -0
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.css +7 -0
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js +215 -0
- package/dist/src/components/Repository/CreateRepository/CreateRepositoryForm.js.map +1 -0
- package/dist/src/components/Repository/CreateRepository/CreateResourceSyncsForm.js +31 -0
- package/dist/src/components/Repository/CreateRepository/CreateResourceSyncsForm.js.map +1 -0
- package/dist/src/components/Repository/CreateRepository/types.js +3 -0
- package/dist/src/components/Repository/CreateRepository/types.js.map +1 -0
- package/dist/src/components/Repository/CreateRepository/utils.js +454 -0
- package/dist/src/components/Repository/CreateRepository/utils.js.map +1 -0
- package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.js +93 -0
- package/dist/src/components/Repository/RepositoryDetails/DeleteRepositoryModal.js.map +1 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js +39 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositoryDetails.js.map +1 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositoryGeneralDetailsCard.js +64 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositoryGeneralDetailsCard.js.map +1 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositoryResourceSyncsCard.js +18 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositoryResourceSyncsCard.js.map +1 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositorySource.js +24 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositorySource.js.map +1 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositorySourceList.js +64 -0
- package/dist/src/components/Repository/RepositoryDetails/RepositorySourceList.js.map +1 -0
- package/dist/src/components/Repository/RepositoryList.js +133 -0
- package/dist/src/components/Repository/RepositoryList.js.map +1 -0
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.css +7 -0
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js +140 -0
- package/dist/src/components/ResourceSync/RepositoryResourceSyncList.js.map +1 -0
- package/dist/src/components/ResourceSync/ResourceSyncStatus.js +65 -0
- package/dist/src/components/ResourceSync/ResourceSyncStatus.js.map +1 -0
- package/dist/src/components/ResourceSync/ResourceSyncToRepository.js +49 -0
- package/dist/src/components/ResourceSync/ResourceSyncToRepository.js.map +1 -0
- package/dist/src/components/Status/ApplicationStatus.js +23 -0
- package/dist/src/components/Status/ApplicationStatus.js.map +1 -0
- package/dist/src/components/Status/ApplicationSummaryStatus.js +23 -0
- package/dist/src/components/Status/ApplicationSummaryStatus.js.map +1 -0
- package/dist/src/components/Status/DeviceResourceStatus.js +84 -0
- package/dist/src/components/Status/DeviceResourceStatus.js.map +1 -0
- package/dist/src/components/Status/DeviceStatus.js +18 -0
- package/dist/src/components/Status/DeviceStatus.js.map +1 -0
- package/dist/src/components/Status/EnrollmentRequestStatus.js +18 -0
- package/dist/src/components/Status/EnrollmentRequestStatus.js.map +1 -0
- package/dist/src/components/Status/IntegrityStatus.js +17 -0
- package/dist/src/components/Status/IntegrityStatus.js.map +1 -0
- package/dist/src/components/Status/RepositoryStatus.js +37 -0
- package/dist/src/components/Status/RepositoryStatus.js.map +1 -0
- package/dist/src/components/Status/StatusDisplay.css +9 -0
- package/dist/src/components/Status/StatusDisplay.js +33 -0
- package/dist/src/components/Status/StatusDisplay.js.map +1 -0
- package/dist/src/components/Status/SystemUpdateStatus.js +24 -0
- package/dist/src/components/Status/SystemUpdateStatus.js.map +1 -0
- package/dist/src/components/Status/SystemdStatus.js +21 -0
- package/dist/src/components/Status/SystemdStatus.js.map +1 -0
- package/dist/src/components/Status/utils.js +10 -0
- package/dist/src/components/Status/utils.js.map +1 -0
- package/dist/src/components/Table/Table.js +28 -0
- package/dist/src/components/Table/Table.js.map +1 -0
- package/dist/src/components/Table/TableActions.js +16 -0
- package/dist/src/components/Table/TableActions.js.map +1 -0
- package/dist/src/components/Table/TableTextSearch.js +13 -0
- package/dist/src/components/Table/TableTextSearch.js.map +1 -0
- package/dist/src/components/Terminal/Terminal.css +1 -0
- package/dist/src/components/Terminal/Terminal.js +79 -0
- package/dist/src/components/Terminal/Terminal.js.map +1 -0
- package/dist/src/components/UserPreferences/UserPreferencesModal.js +34 -0
- package/dist/src/components/UserPreferences/UserPreferencesModal.js.map +1 -0
- package/dist/src/components/UserPreferences/UserPreferencesProvider.js +19 -0
- package/dist/src/components/UserPreferences/UserPreferencesProvider.js.map +1 -0
- package/dist/src/components/charts/DonutChart.css +10 -0
- package/dist/src/components/charts/DonutChart.js +47 -0
- package/dist/src/components/charts/DonutChart.js.map +1 -0
- package/dist/src/components/common/CopyButton.js +18 -0
- package/dist/src/components/common/CopyButton.js.map +1 -0
- package/dist/src/components/common/EditableLabelControl.js +39 -0
- package/dist/src/components/common/EditableLabelControl.js.map +1 -0
- package/dist/src/components/common/ErrorBoundary.js +36 -0
- package/dist/src/components/common/ErrorBoundary.js.map +1 -0
- package/dist/src/components/common/HelperTextItems.js +25 -0
- package/dist/src/components/common/HelperTextItems.js.map +1 -0
- package/dist/src/components/common/LabelsView.css +9 -0
- package/dist/src/components/common/LabelsView.js +18 -0
- package/dist/src/components/common/LabelsView.js.map +1 -0
- package/dist/src/components/common/LeaveFormConfirmation.js +51 -0
- package/dist/src/components/common/LeaveFormConfirmation.js.map +1 -0
- package/dist/src/components/common/ResourceLink.css +29 -0
- package/dist/src/components/common/ResourceLink.js +30 -0
- package/dist/src/components/common/ResourceLink.js.map +1 -0
- package/dist/src/components/common/ResourceListEmptyState.js +10 -0
- package/dist/src/components/common/ResourceListEmptyState.js.map +1 -0
- package/dist/src/components/common/WithHelperText.css +3 -0
- package/dist/src/components/common/WithHelperText.js +16 -0
- package/dist/src/components/common/WithHelperText.js.map +1 -0
- package/dist/src/components/common/WithTooltip.js +8 -0
- package/dist/src/components/common/WithTooltip.js.map +1 -0
- package/dist/src/components/form/CheckboxField.js +29 -0
- package/dist/src/components/form/CheckboxField.js.map +1 -0
- package/dist/src/components/form/FieldHelperText.js +27 -0
- package/dist/src/components/form/FieldHelperText.js.map +1 -0
- package/dist/src/components/form/FilterSelect.css +8 -0
- package/dist/src/components/form/FilterSelect.js +30 -0
- package/dist/src/components/form/FilterSelect.js.map +1 -0
- package/dist/src/components/form/FlightCtlActionGroup.css +9 -0
- package/dist/src/components/form/FlightCtlActionGroup.js +10 -0
- package/dist/src/components/form/FlightCtlActionGroup.js.map +1 -0
- package/dist/src/components/form/FlightCtlForm.js +13 -0
- package/dist/src/components/form/FlightCtlForm.js.map +1 -0
- package/dist/src/components/form/FormSelect.css +8 -0
- package/dist/src/components/form/FormSelect.js +50 -0
- package/dist/src/components/form/FormSelect.js.map +1 -0
- package/dist/src/components/form/LabelsField.js +61 -0
- package/dist/src/components/form/LabelsField.js.map +1 -0
- package/dist/src/components/form/NameField.js +63 -0
- package/dist/src/components/form/NameField.js.map +1 -0
- package/dist/src/components/form/RadioField.js +32 -0
- package/dist/src/components/form/RadioField.js.map +1 -0
- package/dist/src/components/form/RichValidationTextField.js +66 -0
- package/dist/src/components/form/RichValidationTextField.js.map +1 -0
- package/dist/src/components/form/TextAreaField.js +28 -0
- package/dist/src/components/form/TextAreaField.js.map +1 -0
- package/dist/src/components/form/TextField.js +29 -0
- package/dist/src/components/form/TextField.js.map +1 -0
- package/dist/src/components/form/validations.js +286 -0
- package/dist/src/components/form/validations.js.map +1 -0
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceForm.js +36 -0
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceForm.js.map +1 -0
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js +43 -0
- package/dist/src/components/modals/ApproveDeviceModal/ApproveDeviceModal.js.map +1 -0
- package/dist/src/components/modals/ApproveDeviceModal/DeviceLabelMatch.css +24 -0
- package/dist/src/components/modals/ApproveDeviceModal/DeviceLabelMatch.js +62 -0
- package/dist/src/components/modals/ApproveDeviceModal/DeviceLabelMatch.js.map +1 -0
- package/dist/src/components/modals/CreateRepositoryModal/CreateRepositoryModal.js +14 -0
- package/dist/src/components/modals/CreateRepositoryModal/CreateRepositoryModal.js.map +1 -0
- package/dist/src/components/modals/DeleteModal/DeleteModal.js +41 -0
- package/dist/src/components/modals/DeleteModal/DeleteModal.js.map +1 -0
- package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.js +63 -0
- package/dist/src/components/modals/EditLabelsModal/EditLabelsForm.js.map +1 -0
- package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.css +4 -0
- package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.js +126 -0
- package/dist/src/components/modals/massModals/MassApproveDeviceModal/MassApproveDeviceModal.js.map +1 -0
- package/dist/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.js +64 -0
- package/dist/src/components/modals/massModals/MassDeleteDeviceModal/MassDeleteDeviceModal.js.map +1 -0
- package/dist/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.js +84 -0
- package/dist/src/components/modals/massModals/MassDeleteFleetModal/MassDeleteFleetModal.js.map +1 -0
- package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js +94 -0
- package/dist/src/components/modals/massModals/MassDeleteRepositoryModal/MassDeleteRepositoryModal.js.map +1 -0
- package/dist/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.js +62 -0
- package/dist/src/components/modals/massModals/MassDeleteResourceSyncModal/MassDeleteResourceSyncModal.js.map +1 -0
- package/dist/src/constants.js +8 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/hooks/useAppContext.js +61 -0
- package/dist/src/hooks/useAppContext.js.map +1 -0
- package/dist/src/hooks/useDeviceLabelMatch.js +78 -0
- package/dist/src/hooks/useDeviceLabelMatch.js.map +1 -0
- package/dist/src/hooks/useDocumentTitle.js +17 -0
- package/dist/src/hooks/useDocumentTitle.js.map +1 -0
- package/dist/src/hooks/useFetch.js +10 -0
- package/dist/src/hooks/useFetch.js.map +1 -0
- package/dist/src/hooks/useFetchPeriodically.js +75 -0
- package/dist/src/hooks/useFetchPeriodically.js.map +1 -0
- package/dist/src/hooks/useNavigate.js +65 -0
- package/dist/src/hooks/useNavigate.js.map +1 -0
- package/dist/src/hooks/useTableSelect.js +45 -0
- package/dist/src/hooks/useTableSelect.js.map +1 -0
- package/dist/src/hooks/useTableSort.js +38 -0
- package/dist/src/hooks/useTableSort.js.map +1 -0
- package/dist/src/hooks/useTableTextSearch.js +23 -0
- package/dist/src/hooks/useTableTextSearch.js.map +1 -0
- package/dist/src/hooks/useTemplateVersion.js +22 -0
- package/dist/src/hooks/useTemplateVersion.js.map +1 -0
- package/dist/src/hooks/useThemePreferences.js +61 -0
- package/dist/src/hooks/useThemePreferences.js.map +1 -0
- package/dist/src/hooks/useTranslation.js +12 -0
- package/dist/src/hooks/useTranslation.js.map +1 -0
- package/dist/src/hooks/useUserPreferences.js +16 -0
- package/dist/src/hooks/useUserPreferences.js.map +1 -0
- package/dist/src/hooks/useWebSocket.js +69 -0
- package/dist/src/hooks/useWebSocket.js.map +1 -0
- package/dist/src/setupTests.js +24 -0
- package/dist/src/setupTests.js.map +1 -0
- package/dist/src/tests/test-utils.js +21 -0
- package/dist/src/tests/test-utils.js.map +1 -0
- package/dist/src/types/deviceSpec.js +20 -0
- package/dist/src/types/deviceSpec.js.map +1 -0
- package/dist/src/types/extraTypes.js +20 -0
- package/dist/src/types/extraTypes.js.map +1 -0
- package/dist/src/types/typeUtils.js +12 -0
- package/dist/src/types/typeUtils.js.map +1 -0
- package/dist/src/utils/api.js +68 -0
- package/dist/src/utils/api.js.map +1 -0
- package/dist/src/utils/dates.js +53 -0
- package/dist/src/utils/dates.js.map +1 -0
- package/dist/src/utils/devices.js +37 -0
- package/dist/src/utils/devices.js.map +1 -0
- package/dist/src/utils/error.js +25 -0
- package/dist/src/utils/error.js.map +1 -0
- package/dist/src/utils/labels.js +44 -0
- package/dist/src/utils/labels.js.map +1 -0
- package/dist/src/utils/metrics.js +48 -0
- package/dist/src/utils/metrics.js.map +1 -0
- package/dist/src/utils/patch.js +108 -0
- package/dist/src/utils/patch.js.map +1 -0
- package/dist/src/utils/resource.js +6 -0
- package/dist/src/utils/resource.js.map +1 -0
- package/dist/src/utils/search.js +14 -0
- package/dist/src/utils/search.js.map +1 -0
- package/dist/src/utils/sort/device.js +89 -0
- package/dist/src/utils/sort/device.js.map +1 -0
- package/dist/src/utils/sort/fleet.js +20 -0
- package/dist/src/utils/sort/fleet.js.map +1 -0
- package/dist/src/utils/sort/generic.js +34 -0
- package/dist/src/utils/sort/generic.js.map +1 -0
- package/dist/src/utils/sort/repository.js +28 -0
- package/dist/src/utils/sort/repository.js.map +1 -0
- package/dist/src/utils/sort/resourceSync.js +29 -0
- package/dist/src/utils/sort/resourceSync.js.map +1 -0
- package/dist/src/utils/status/applications.js +56 -0
- package/dist/src/utils/status/applications.js.map +1 -0
- package/dist/src/utils/status/common.js +63 -0
- package/dist/src/utils/status/common.js.map +1 -0
- package/dist/src/utils/status/devices.js +65 -0
- package/dist/src/utils/status/devices.js.map +1 -0
- package/dist/src/utils/status/enrollmentRequest.js +49 -0
- package/dist/src/utils/status/enrollmentRequest.js.map +1 -0
- package/dist/src/utils/status/fleet.js +38 -0
- package/dist/src/utils/status/fleet.js.map +1 -0
- package/dist/src/utils/status/integrity.js +28 -0
- package/dist/src/utils/status/integrity.js.map +1 -0
- package/dist/src/utils/status/repository.js +88 -0
- package/dist/src/utils/status/repository.js.map +1 -0
- package/dist/src/utils/status/system.js +29 -0
- package/dist/src/utils/status/system.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deviceApprovalValidationSchema = exports.deviceSystemdUnitsValidationSchema = exports.validConfigTemplatesSchema = exports.validLabelsSchema = exports.maxLengthString = exports.validKubernetesLabelValue = exports.validKubernetesDnsSubdomain = exports.getInvalidKubernetesLabels = exports.hasUniqueLabelKeys = exports.getKubernetesDnsSubdomainErrors = exports.getKubernetesLabelValueErrors = exports.getDnsSubdomainValidations = exports.getLabelValueValidations = exports.MAX_TARGET_REVISION_LENGTH = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const Yup = tslib_1.__importStar(require("yup"));
|
|
6
|
+
const deviceSpec_1 = require("../../types/deviceSpec");
|
|
7
|
+
const yaml = tslib_1.__importStar(require("js-yaml"));
|
|
8
|
+
const SYSTEMD_PATTERNS_REGEXP = /^[a-z][a-z0-9-_.]*$/;
|
|
9
|
+
const SYSTEMD_UNITS_MAX_PATTERNS = 256;
|
|
10
|
+
// Accepts uppercase characters, and "underscore" symbols
|
|
11
|
+
const K8S_LABEL_VALUE_START_END = /^[a-z0-9A-Z](.*[a-z0-9A-Z])?$/;
|
|
12
|
+
const K8S_LABEL_VALUE_ALLOWED_CHARACTERS = /^[a-z0-9A-Z._-]*$/;
|
|
13
|
+
const K8S_LABEL_VALUE_MAX_LENGTH = 63;
|
|
14
|
+
// Does not accept uppercase characters, nor "underscore" symbols
|
|
15
|
+
const K8S_DNS_SUBDOMAIN_START_END = /^[a-z0-9](.*[a-z0-9])?$/;
|
|
16
|
+
const K8S_DNS_SUBDOMAIN_ALLOWED_CHARACTERS = /^[a-z0-9.-]*$/;
|
|
17
|
+
const K8S_DNS_SUBDOMAIN_VALUE_MAX_LENGTH = 253;
|
|
18
|
+
const absolutePathRegex = /^\/.*$/;
|
|
19
|
+
exports.MAX_TARGET_REVISION_LENGTH = 244;
|
|
20
|
+
const getLabelValueValidations = (t) => [
|
|
21
|
+
{ key: 'labelValueStartAndEnd', message: t('Starts and ends with a letter or a number.') },
|
|
22
|
+
{
|
|
23
|
+
key: 'labelValueAllowedChars',
|
|
24
|
+
message: t('Contains only letters, numbers, dashes (-), dots (.), and underscores (_).'),
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: 'labelValueMaxLength',
|
|
28
|
+
message: t('1-{{ maxCharacters }} characters', { maxCharacters: K8S_LABEL_VALUE_MAX_LENGTH }),
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
exports.getLabelValueValidations = getLabelValueValidations;
|
|
32
|
+
const getDnsSubdomainValidations = (t) => [
|
|
33
|
+
{ key: 'dnsSubdomainStartAndEnd', message: t('Starts and ends with a lowercase letter or a number.') },
|
|
34
|
+
{
|
|
35
|
+
key: 'dnsSubdomainAllowedChars',
|
|
36
|
+
message: t('Contains only lowercase letters, numbers, dashes (-), and dots (.).'),
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
key: 'dnsSubdomainMaxLength',
|
|
40
|
+
message: t('1-{{ maxCharacters }} characters', { maxCharacters: K8S_DNS_SUBDOMAIN_VALUE_MAX_LENGTH }),
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
exports.getDnsSubdomainValidations = getDnsSubdomainValidations;
|
|
44
|
+
const getKubernetesLabelValueErrors = (labelValue) => {
|
|
45
|
+
const errorKeys = {};
|
|
46
|
+
if (!K8S_LABEL_VALUE_START_END.test(labelValue)) {
|
|
47
|
+
errorKeys.labelValueStartAndEnd = 'failed';
|
|
48
|
+
}
|
|
49
|
+
if (!K8S_LABEL_VALUE_ALLOWED_CHARACTERS.test(labelValue)) {
|
|
50
|
+
errorKeys.labelValueAllowedChars = 'failed';
|
|
51
|
+
}
|
|
52
|
+
if ((labelValue === null || labelValue === void 0 ? void 0 : labelValue.length) > K8S_LABEL_VALUE_MAX_LENGTH) {
|
|
53
|
+
errorKeys.labelValueMaxLength = 'failed';
|
|
54
|
+
}
|
|
55
|
+
return errorKeys;
|
|
56
|
+
};
|
|
57
|
+
exports.getKubernetesLabelValueErrors = getKubernetesLabelValueErrors;
|
|
58
|
+
const getKubernetesDnsSubdomainErrors = (value) => {
|
|
59
|
+
const errorKeys = {};
|
|
60
|
+
if (!K8S_DNS_SUBDOMAIN_START_END.test(value)) {
|
|
61
|
+
errorKeys.dnsSubdomainStartAndEnd = 'failed';
|
|
62
|
+
}
|
|
63
|
+
if (!K8S_DNS_SUBDOMAIN_ALLOWED_CHARACTERS.test(value)) {
|
|
64
|
+
errorKeys.dnsSubdomainAllowedChars = 'failed';
|
|
65
|
+
}
|
|
66
|
+
if ((value === null || value === void 0 ? void 0 : value.length) > K8S_DNS_SUBDOMAIN_VALUE_MAX_LENGTH) {
|
|
67
|
+
errorKeys.dnsSubdomainMaxLength = 'failed';
|
|
68
|
+
}
|
|
69
|
+
return errorKeys;
|
|
70
|
+
};
|
|
71
|
+
exports.getKubernetesDnsSubdomainErrors = getKubernetesDnsSubdomainErrors;
|
|
72
|
+
const hasUniqueLabelKeys = (labels) => {
|
|
73
|
+
const uniqueKeys = new Set(labels.map((label) => label.key));
|
|
74
|
+
return uniqueKeys.size === labels.length;
|
|
75
|
+
};
|
|
76
|
+
exports.hasUniqueLabelKeys = hasUniqueLabelKeys;
|
|
77
|
+
const getInvalidKubernetesLabels = (labels) => {
|
|
78
|
+
return labels.filter((unvalidatedLabel) => {
|
|
79
|
+
const key = unvalidatedLabel.key || '';
|
|
80
|
+
const value = unvalidatedLabel.value || '';
|
|
81
|
+
const keyParts = key.split('/');
|
|
82
|
+
if (keyParts.length > 2) {
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
// Key prefix validations
|
|
86
|
+
const keyPrefix = keyParts.length === 2 ? keyParts[0] : '';
|
|
87
|
+
if (keyPrefix) {
|
|
88
|
+
if (keyPrefix.length > K8S_DNS_SUBDOMAIN_VALUE_MAX_LENGTH ||
|
|
89
|
+
!K8S_DNS_SUBDOMAIN_START_END.test(keyPrefix) ||
|
|
90
|
+
!K8S_DNS_SUBDOMAIN_ALLOWED_CHARACTERS.test(keyPrefix)) {
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Key name validations
|
|
95
|
+
const keyName = keyPrefix ? keyParts[1] : key;
|
|
96
|
+
if (keyName.length > K8S_LABEL_VALUE_MAX_LENGTH ||
|
|
97
|
+
!K8S_LABEL_VALUE_START_END.test(keyName) ||
|
|
98
|
+
!K8S_LABEL_VALUE_ALLOWED_CHARACTERS.test(keyName)) {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
// Value validations
|
|
102
|
+
return value.length === 0
|
|
103
|
+
? false
|
|
104
|
+
: value.length > K8S_LABEL_VALUE_MAX_LENGTH ||
|
|
105
|
+
!K8S_LABEL_VALUE_START_END.test(value) ||
|
|
106
|
+
!K8S_LABEL_VALUE_ALLOWED_CHARACTERS.test(value);
|
|
107
|
+
});
|
|
108
|
+
};
|
|
109
|
+
exports.getInvalidKubernetesLabels = getInvalidKubernetesLabels;
|
|
110
|
+
const validKubernetesDnsSubdomain = (t, { isRequired, fieldName }) => isRequired
|
|
111
|
+
? Yup.string()
|
|
112
|
+
.defined(t('{{ fieldName }} is required', { fieldName: fieldName || t('Name') }))
|
|
113
|
+
.test('k8sDnsSubdomainFormat', (value, testContext) => {
|
|
114
|
+
const errorKeys = (0, exports.getKubernetesDnsSubdomainErrors)(value);
|
|
115
|
+
return Object.keys(errorKeys).length > 0
|
|
116
|
+
? testContext.createError({
|
|
117
|
+
message: errorKeys,
|
|
118
|
+
})
|
|
119
|
+
: true;
|
|
120
|
+
})
|
|
121
|
+
: Yup.string();
|
|
122
|
+
exports.validKubernetesDnsSubdomain = validKubernetesDnsSubdomain;
|
|
123
|
+
const labelValueValidations = (labelValue, testContext) => {
|
|
124
|
+
if (!labelValue) {
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
const errorKeys = {};
|
|
128
|
+
if (!K8S_LABEL_VALUE_START_END.test(labelValue)) {
|
|
129
|
+
errorKeys.labelValueStartAndEnd = 'failed';
|
|
130
|
+
}
|
|
131
|
+
if (!K8S_LABEL_VALUE_ALLOWED_CHARACTERS.test(labelValue)) {
|
|
132
|
+
errorKeys.labelValueAllowedChars = 'failed';
|
|
133
|
+
}
|
|
134
|
+
if (labelValue.length > K8S_LABEL_VALUE_MAX_LENGTH) {
|
|
135
|
+
errorKeys.labelValueMaxLength = 'failed';
|
|
136
|
+
}
|
|
137
|
+
if (Object.keys(errorKeys).length === 0) {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
return testContext.createError({
|
|
141
|
+
message: errorKeys,
|
|
142
|
+
});
|
|
143
|
+
};
|
|
144
|
+
const validKubernetesLabelValue = (t, { isRequired, fieldName }) => isRequired
|
|
145
|
+
? Yup.string()
|
|
146
|
+
.required(t('{{ fieldName }} is required', { fieldName: fieldName || t('Name') }))
|
|
147
|
+
.test('k8sLabelValueFormat', labelValueValidations)
|
|
148
|
+
: Yup.string().test('k8sLabelValueFormat', labelValueValidations);
|
|
149
|
+
exports.validKubernetesLabelValue = validKubernetesLabelValue;
|
|
150
|
+
const maxLengthString = (t, props) => Yup.string().max(props.maxLength, t('{{ fieldName }} must not exceed {{ maxLength }} characters', props));
|
|
151
|
+
exports.maxLengthString = maxLengthString;
|
|
152
|
+
const validLabelsSchema = (t) => Yup.array()
|
|
153
|
+
.of(Yup.object().shape({
|
|
154
|
+
// We'll define the mandatory key restriction for all labels, not individually
|
|
155
|
+
key: Yup.string(),
|
|
156
|
+
value: Yup.string(),
|
|
157
|
+
}))
|
|
158
|
+
.required()
|
|
159
|
+
.test('missing keys', (labels, testContext) => {
|
|
160
|
+
const missingKeyLabels = labels.filter((label) => !label.key).map((label) => label.value);
|
|
161
|
+
return missingKeyLabels.length > 0
|
|
162
|
+
? testContext.createError({
|
|
163
|
+
message: t('Label keys are required. Invalid labels: {{invalidLabels}}', {
|
|
164
|
+
invalidLabels: `=${missingKeyLabels.join(', =')}`,
|
|
165
|
+
}),
|
|
166
|
+
})
|
|
167
|
+
: true;
|
|
168
|
+
})
|
|
169
|
+
.test('unique keys', t('Label keys must be unique'), exports.hasUniqueLabelKeys)
|
|
170
|
+
.test('invalid-labels', (labels, testContext) => {
|
|
171
|
+
const invalidLabels = (0, exports.getInvalidKubernetesLabels)(labels);
|
|
172
|
+
return invalidLabels.length > 0
|
|
173
|
+
? testContext.createError({
|
|
174
|
+
message: t('The following labels are not valid Kubernetes labels: {{invalidLabels}}', {
|
|
175
|
+
invalidLabels: `${invalidLabels
|
|
176
|
+
.map((label) => {
|
|
177
|
+
const suffix = label.value ? `=${label.value}` : '';
|
|
178
|
+
return `${label.key}${suffix}`;
|
|
179
|
+
})
|
|
180
|
+
.join(', ')}`,
|
|
181
|
+
}),
|
|
182
|
+
})
|
|
183
|
+
: true;
|
|
184
|
+
});
|
|
185
|
+
exports.validLabelsSchema = validLabelsSchema;
|
|
186
|
+
const validConfigTemplatesSchema = (t) => Yup.array()
|
|
187
|
+
.test('unique-names', t('Source names must be unique'), (templates) => {
|
|
188
|
+
if (!templates) {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
const uniqueNames = new Set(templates.map((template) => template.name));
|
|
192
|
+
return uniqueNames.size === templates.length;
|
|
193
|
+
})
|
|
194
|
+
.of(Yup.lazy((value) => {
|
|
195
|
+
if ((0, deviceSpec_1.isGitConfigTemplate)(value)) {
|
|
196
|
+
return Yup.object().shape({
|
|
197
|
+
type: Yup.string().required(t('Source type is required.')),
|
|
198
|
+
name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
|
|
199
|
+
path: Yup.string().required(t('Path is required.')).matches(absolutePathRegex, t('Path must be absolute.')),
|
|
200
|
+
mountPath: Yup.string()
|
|
201
|
+
.required(t('Mount path is required.'))
|
|
202
|
+
.matches(absolutePathRegex, t('Mount path must be absolute.')),
|
|
203
|
+
repository: Yup.string().required(t('Repository is required.')),
|
|
204
|
+
targetRevision: (0, exports.maxLengthString)(t, {
|
|
205
|
+
maxLength: exports.MAX_TARGET_REVISION_LENGTH,
|
|
206
|
+
fieldName: t('Target revision'),
|
|
207
|
+
}).required(t('Branch/tag/commit is required.')),
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
else if ((0, deviceSpec_1.isHttpConfigTemplate)(value)) {
|
|
211
|
+
return Yup.object().shape({
|
|
212
|
+
type: Yup.string().required(t('Source type is required.')),
|
|
213
|
+
name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
|
|
214
|
+
filePath: Yup.string()
|
|
215
|
+
.required(t('File path is required.'))
|
|
216
|
+
.matches(absolutePathRegex, t('Path must be absolute.')),
|
|
217
|
+
suffix: Yup.string(),
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
else if ((0, deviceSpec_1.isKubeSecretTemplate)(value)) {
|
|
221
|
+
return Yup.object().shape({
|
|
222
|
+
type: Yup.string().required(t('Source type is required.')),
|
|
223
|
+
name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
|
|
224
|
+
secretName: Yup.string().required(t('Secret name is required.')),
|
|
225
|
+
secretNs: Yup.string().required(t('Secret namespace is required.')),
|
|
226
|
+
mountPath: Yup.string()
|
|
227
|
+
.required(t('Mount path is required.'))
|
|
228
|
+
.matches(absolutePathRegex, t('Mount path must be absolute.')),
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
else if ((0, deviceSpec_1.isInlineConfigTemplate)(value)) {
|
|
232
|
+
return Yup.object().shape({
|
|
233
|
+
type: Yup.string().required(t('Source type is required.')),
|
|
234
|
+
name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
|
|
235
|
+
inline: (0, exports.maxLengthString)(t, { fieldName: t('Inline config'), maxLength: 65535 })
|
|
236
|
+
.required(t('Inline config is required.'))
|
|
237
|
+
.test('yaml object', t('Inline config must be a valid yaml object.'), (value) => {
|
|
238
|
+
try {
|
|
239
|
+
const yamlResult = yaml.load(value);
|
|
240
|
+
return typeof yamlResult === 'object';
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
}),
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
return Yup.object().shape({
|
|
249
|
+
name: (0, exports.validKubernetesDnsSubdomain)(t, { isRequired: true }),
|
|
250
|
+
type: Yup.string().required(t('Source type is required.')),
|
|
251
|
+
});
|
|
252
|
+
}));
|
|
253
|
+
exports.validConfigTemplatesSchema = validConfigTemplatesSchema;
|
|
254
|
+
const deviceSystemdUnitsValidationSchema = (t) => Yup.object({
|
|
255
|
+
matchPatterns: Yup.array()
|
|
256
|
+
.max(SYSTEMD_UNITS_MAX_PATTERNS, t('The maximum number of systemd units is {{maxSystemUnits}}.', { maxSystemUnits: SYSTEMD_UNITS_MAX_PATTERNS }))
|
|
257
|
+
.of(Yup.string().required('Unit name is required.'))
|
|
258
|
+
.test('invalid patterns', (patterns, testContext) => {
|
|
259
|
+
// TODO analyze https://github.com/systemd/systemd/blob/9cebda59e818cdb89dc1e53ab5bb51b91b3dc3ff/src/basic/unit-name.c#L42
|
|
260
|
+
// and adjust the regular expression and / or the validation to accommodate for it
|
|
261
|
+
const invalidPatterns = (patterns || []).filter((pattern) => {
|
|
262
|
+
return pattern.length > SYSTEMD_UNITS_MAX_PATTERNS || !SYSTEMD_PATTERNS_REGEXP.test(pattern);
|
|
263
|
+
});
|
|
264
|
+
if (invalidPatterns.length === 0) {
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
return testContext.createError({
|
|
268
|
+
message: t('Invalid systemd unit names: {{invalidPatterns}}', {
|
|
269
|
+
invalidPatterns: invalidPatterns.join(', '),
|
|
270
|
+
}),
|
|
271
|
+
});
|
|
272
|
+
})
|
|
273
|
+
.test('unique patterns', t('Systemd unit names must be unique'), (patterns) => {
|
|
274
|
+
const uniqueKeys = new Set(patterns || []);
|
|
275
|
+
return uniqueKeys.size === ((patterns === null || patterns === void 0 ? void 0 : patterns.length) || 0);
|
|
276
|
+
}),
|
|
277
|
+
});
|
|
278
|
+
exports.deviceSystemdUnitsValidationSchema = deviceSystemdUnitsValidationSchema;
|
|
279
|
+
const deviceApprovalValidationSchema = (t, conf) => Yup.object({
|
|
280
|
+
deviceAlias: conf.isSingleDevice
|
|
281
|
+
? (0, exports.validKubernetesLabelValue)(t, { isRequired: false, fieldName: t('Alias') })
|
|
282
|
+
: Yup.string().matches(/{{n}}/, t('Device aliases must be unique. Add a number to the template to generate unique aliases.')),
|
|
283
|
+
labels: (0, exports.validLabelsSchema)(t),
|
|
284
|
+
});
|
|
285
|
+
exports.deviceApprovalValidationSchema = deviceApprovalValidationSchema;
|
|
286
|
+
//# sourceMappingURL=validations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validations.js","sourceRoot":"","sources":["../../../../src/components/form/validations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const React = tslib_1.__importStar(require("react"));
|
|
5
|
+
const formik_1 = require("formik");
|
|
6
|
+
const react_core_1 = require("@patternfly/react-core");
|
|
7
|
+
const RichValidationTextField_1 = tslib_1.__importDefault(require("../../form/RichValidationTextField"));
|
|
8
|
+
const LabelsField_1 = tslib_1.__importDefault(require("../../form/LabelsField"));
|
|
9
|
+
const validations_1 = require("../../form/validations");
|
|
10
|
+
const FlightCtlActionGroup_1 = tslib_1.__importDefault(require("../../form/FlightCtlActionGroup"));
|
|
11
|
+
const FlightCtlForm_1 = tslib_1.__importDefault(require("../../form/FlightCtlForm"));
|
|
12
|
+
const useTranslation_1 = require("../../../hooks/useTranslation");
|
|
13
|
+
const useDeviceLabelMatch_1 = tslib_1.__importDefault(require("../../../hooks/useDeviceLabelMatch"));
|
|
14
|
+
const ResourceLink_1 = tslib_1.__importDefault(require("../../common/ResourceLink"));
|
|
15
|
+
const DeviceLabelMatch_1 = tslib_1.__importDefault(require("./DeviceLabelMatch"));
|
|
16
|
+
const ApproveDeviceForm = ({ enrollmentRequest, onClose, error, children }) => {
|
|
17
|
+
const { t } = (0, useTranslation_1.useTranslation)();
|
|
18
|
+
const { submitForm, isSubmitting, errors: formErrors } = (0, formik_1.useFormikContext)();
|
|
19
|
+
const disableSubmit = Object.keys(formErrors).length > 0;
|
|
20
|
+
const [matchLabelsOnChange, matchStatus] = (0, useDeviceLabelMatch_1.default)();
|
|
21
|
+
return (React.createElement(FlightCtlForm_1.default, null,
|
|
22
|
+
React.createElement(RichValidationTextField_1.default, { fieldName: "deviceAlias", "aria-label": t('Alias'), validations: (0, validations_1.getLabelValueValidations)(t) }),
|
|
23
|
+
enrollmentRequest && (React.createElement(react_core_1.FormGroup, { label: t('Name'), "aria-label": t('Name') },
|
|
24
|
+
React.createElement(ResourceLink_1.default, { id: enrollmentRequest.metadata.name, variant: "full" }))),
|
|
25
|
+
React.createElement(react_core_1.FormGroup, { label: t('Labels') },
|
|
26
|
+
React.createElement(LabelsField_1.default, { name: "labels", onChangeCallback: matchLabelsOnChange })),
|
|
27
|
+
React.createElement(react_core_1.FormGroup, { label: t('Fleet name') },
|
|
28
|
+
React.createElement(DeviceLabelMatch_1.default, { matchStatus: matchStatus })),
|
|
29
|
+
children,
|
|
30
|
+
error && React.createElement(react_core_1.Alert, { isInline: true, title: error, variant: "danger" }),
|
|
31
|
+
React.createElement(FlightCtlActionGroup_1.default, null,
|
|
32
|
+
React.createElement(react_core_1.Button, { key: "confirm", variant: "primary", onClick: submitForm, isDisabled: disableSubmit || isSubmitting, isLoading: isSubmitting }, t('Approve')),
|
|
33
|
+
React.createElement(react_core_1.Button, { key: "cancel", variant: "link", onClick: () => onClose(), isDisabled: isSubmitting }, t('Cancel')))));
|
|
34
|
+
};
|
|
35
|
+
exports.default = ApproveDeviceForm;
|
|
36
|
+
//# sourceMappingURL=ApproveDeviceForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApproveDeviceForm.js","sourceRoot":"","sources":["../../../../../src/components/modals/ApproveDeviceModal/ApproveDeviceForm.tsx"],"names":[],"mappings":";;;AAAA,qDAA+B;AAC/B,mCAA0C;AAC1C,uDAAkE;AAGlE,yGAAyE;AACzE,iFAAiD;AACjD,wDAAkE;AAClE,mGAAmE;AACnE,qFAAqD;AAErD,kEAA+D;AAC/D,qGAAqE;AACrE,qFAAqD;AACrD,kFAAkD;AAclD,MAAM,iBAAiB,GAAqC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9G,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,yBAAgB,GAA2B,CAAC;IAErG,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACzD,MAAM,CAAC,mBAAmB,EAAE,WAAW,CAAC,GAAG,IAAA,6BAAmB,GAAE,CAAC;IAEjE,OAAO,CACL,oBAAC,uBAAa;QACZ,oBAAC,iCAAuB,IACtB,SAAS,EAAC,aAAa,gBACX,CAAC,CAAC,OAAO,CAAC,EACtB,WAAW,EAAE,IAAA,sCAAwB,EAAC,CAAC,CAAC,GACxC;QACD,iBAAiB,IAAI,CACpB,oBAAC,sBAAS,IAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,gBAAc,CAAC,CAAC,MAAM,CAAC;YAChD,oBAAC,sBAAY,IAAC,EAAE,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAc,EAAE,OAAO,EAAC,MAAM,GAAG,CACpE,CACb;QACD,oBAAC,sBAAS,IAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC;YAC3B,oBAAC,qBAAW,IAAC,IAAI,EAAC,QAAQ,EAAC,gBAAgB,EAAE,mBAAmB,GAAI,CAC1D;QACZ,oBAAC,sBAAS,IAAC,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC;YAC/B,oBAAC,0BAAgB,IAAC,WAAW,EAAE,WAAW,GAAI,CACpC;QACX,QAAQ;QACR,KAAK,IAAI,oBAAC,kBAAK,IAAC,QAAQ,QAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAC,QAAQ,GAAG;QAC3D,oBAAC,8BAAoB;YACnB,oBAAC,mBAAM,IACL,GAAG,EAAC,SAAS,EACb,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,UAAU,EACnB,UAAU,EAAE,aAAa,IAAI,YAAY,EACzC,SAAS,EAAE,YAAY,IAEtB,CAAC,CAAC,SAAS,CAAC,CACN;YACT,oBAAC,mBAAM,IAAC,GAAG,EAAC,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,YAAY,IACnF,CAAC,CAAC,QAAQ,CAAC,CACL,CACY,CACT,CACjB,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const React = tslib_1.__importStar(require("react"));
|
|
5
|
+
const react_core_1 = require("@patternfly/react-core");
|
|
6
|
+
const formik_1 = require("formik");
|
|
7
|
+
const useFetch_1 = require("../../../hooks/useFetch");
|
|
8
|
+
const error_1 = require("../../../utils/error");
|
|
9
|
+
const ApproveDeviceForm_1 = tslib_1.__importDefault(require("./ApproveDeviceForm"));
|
|
10
|
+
const enrollmentRequest_1 = require("../../../utils/status/enrollmentRequest");
|
|
11
|
+
const useTranslation_1 = require("../../../hooks/useTranslation");
|
|
12
|
+
const validations_1 = require("../../form/validations");
|
|
13
|
+
const labels_1 = require("../../../utils/labels");
|
|
14
|
+
const useAppContext_1 = require("../../../hooks/useAppContext");
|
|
15
|
+
const DeviceEnrollmentModal = ({ enrollmentRequest, onClose }) => {
|
|
16
|
+
const { t } = (0, useTranslation_1.useTranslation)();
|
|
17
|
+
const { post } = (0, useFetch_1.useFetch)();
|
|
18
|
+
const [error, setError] = React.useState();
|
|
19
|
+
const { user } = (0, useAppContext_1.useAppContext)();
|
|
20
|
+
return (React.createElement(formik_1.Formik, { initialValues: {
|
|
21
|
+
labels: (0, labels_1.fromAPILabel)(enrollmentRequest.spec.labels || {}, { isDefault: true }),
|
|
22
|
+
deviceAlias: '',
|
|
23
|
+
}, validationSchema: (0, validations_1.deviceApprovalValidationSchema)(t, { isSingleDevice: true }), onSubmit: ({ labels, deviceAlias }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
setError(undefined);
|
|
25
|
+
const deviceLabels = (0, labels_1.toAPILabel)(labels);
|
|
26
|
+
if (deviceAlias) {
|
|
27
|
+
deviceLabels.alias = deviceAlias;
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
yield post(`enrollmentrequests/${enrollmentRequest.metadata.name}/approval`, {
|
|
31
|
+
approved: true,
|
|
32
|
+
labels: deviceLabels,
|
|
33
|
+
approvedBy: user,
|
|
34
|
+
});
|
|
35
|
+
onClose(true);
|
|
36
|
+
}
|
|
37
|
+
catch (e) {
|
|
38
|
+
setError((0, error_1.getErrorMessage)(e));
|
|
39
|
+
}
|
|
40
|
+
}) }, ({ isSubmitting }) => (React.createElement(react_core_1.Modal, { title: t('Device enrollment request'), isOpen: true, onClose: () => !isSubmitting && onClose(), variant: "small" }, (0, enrollmentRequest_1.getApprovalStatus)(enrollmentRequest) !== enrollmentRequest_1.EnrollmentRequestStatus.Approved ? (React.createElement(ApproveDeviceForm_1.default, { enrollmentRequest: enrollmentRequest, onClose: onClose, error: error })) : (React.createElement(react_core_1.Alert, { isInline: true, variant: "info", title: t('Enrollment request is already approved.') }))))));
|
|
41
|
+
};
|
|
42
|
+
exports.default = DeviceEnrollmentModal;
|
|
43
|
+
//# sourceMappingURL=ApproveDeviceModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApproveDeviceModal.js","sourceRoot":"","sources":["../../../../../src/components/modals/ApproveDeviceModal/ApproveDeviceModal.tsx"],"names":[],"mappings":";;;AAAA,qDAA+B;AAE/B,uDAAsD;AACtD,mCAAgC;AAEhC,sDAAmD;AACnD,gDAAuD;AACvD,oFAAyG;AACzG,+EAGiD;AACjD,kEAA+D;AAC/D,wDAAwE;AAExE,kDAAiE;AACjE,gEAA6D;AAI7D,MAAM,qBAAqB,GAAyC,CAAC,EAAE,iBAAiB,EAAE,OAAO,EAAE,EAAE,EAAE;IACrG,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,mBAAQ,GAAE,CAAC;IAC5B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACnD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,6BAAa,GAAE,CAAC;IACjC,OAAO,CACL,oBAAC,eAAM,IACL,aAAa,EAAE;YACb,MAAM,EAAE,IAAA,qBAAY,EAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC9E,WAAW,EAAE,EAAE;SAChB,EACD,gBAAgB,EAAE,IAAA,4CAA8B,EAAC,CAAC,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,EAC7E,QAAQ,EAAE,CAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE;YAC1C,QAAQ,CAAC,SAAS,CAAC,CAAC;YACpB,MAAM,YAAY,GAAwC,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;YAC7E,IAAI,WAAW,EAAE,CAAC;gBAChB,YAAY,CAAC,KAAK,GAAG,WAAW,CAAC;YACnC,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,CAA4B,sBAAsB,iBAAiB,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE;oBACtG,QAAQ,EAAE,IAAI;oBACd,MAAM,EAAE,YAAY;oBACpB,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,IAAA,uBAAe,EAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAA,IAEA,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CACrB,oBAAC,kBAAK,IAAC,KAAK,EAAE,CAAC,CAAC,2BAA2B,CAAC,EAAE,MAAM,QAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,YAAY,IAAI,OAAO,EAAE,EAAE,OAAO,EAAC,OAAO,IAC5G,IAAA,qCAAiB,EAAC,iBAAiB,CAAC,KAAK,2CAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAC/E,oBAAC,2BAAiB,IAAC,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAI,CAC5F,CAAC,CAAC,CAAC,CACF,oBAAC,kBAAK,IAAC,QAAQ,QAAC,OAAO,EAAC,MAAM,EAAC,KAAK,EAAE,CAAC,CAAC,yCAAyC,CAAC,GAAI,CACvF,CACK,CACT,CACM,CACV,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/* Style to get the appearance of a disabled Input with messages spanning multiple lines */
|
|
2
|
+
.fctl-device-label-match {
|
|
3
|
+
display: flex;
|
|
4
|
+
align-items: center;
|
|
5
|
+
background-color: var(--pf-v5-global--disabled-color--300);
|
|
6
|
+
padding: 0.5rem;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.fctl-device-label-match__icon {
|
|
10
|
+
margin-right: 0.5rem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.fctl-device-label-match__placeholder {
|
|
14
|
+
color: var(--pf-v5-global--disabled-color--100);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/* Dark theme variations */
|
|
18
|
+
.pf-v5-theme-dark .fctl-device-label-match {
|
|
19
|
+
background-color: var(--pf-v5-global--disabled-color--200);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.pf-v5-theme-dark .fctl-device-label-match__placeholder {
|
|
23
|
+
color: var(--pf-v5-global--Color--light-100);
|
|
24
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeviceLabelMatch = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const React = tslib_1.__importStar(require("react"));
|
|
6
|
+
const react_core_1 = require("@patternfly/react-core");
|
|
7
|
+
const check_circle_icon_1 = require("@patternfly/react-icons/dist/js/icons/check-circle-icon");
|
|
8
|
+
const exclamation_triangle_icon_1 = require("@patternfly/react-icons/dist/js/icons/exclamation-triangle-icon");
|
|
9
|
+
const exclamation_circle_icon_1 = require("@patternfly/react-icons/dist/js/icons/exclamation-circle-icon");
|
|
10
|
+
const useTranslation_1 = require("../../../hooks/useTranslation");
|
|
11
|
+
require("./DeviceLabelMatch.css");
|
|
12
|
+
const DeviceLabelMatchContent = ({ iconStatus, text, isPlaceholder, }) => {
|
|
13
|
+
let icon;
|
|
14
|
+
switch (iconStatus) {
|
|
15
|
+
case 'warning':
|
|
16
|
+
icon = (React.createElement(react_core_1.Icon, { status: "warning" },
|
|
17
|
+
React.createElement(exclamation_triangle_icon_1.ExclamationTriangleIcon, null)));
|
|
18
|
+
break;
|
|
19
|
+
case 'danger':
|
|
20
|
+
icon = (React.createElement(react_core_1.Icon, { status: "danger" },
|
|
21
|
+
React.createElement(exclamation_circle_icon_1.ExclamationCircleIcon, null)));
|
|
22
|
+
break;
|
|
23
|
+
case 'success':
|
|
24
|
+
icon = (React.createElement(react_core_1.Icon, { status: "success" },
|
|
25
|
+
React.createElement(check_circle_icon_1.CheckCircleIcon, null)));
|
|
26
|
+
break;
|
|
27
|
+
case 'loader':
|
|
28
|
+
icon = React.createElement(react_core_1.Spinner, { size: "sm" });
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
return (React.createElement("div", { className: "fctl-device-label-match" },
|
|
32
|
+
icon && React.createElement("span", { className: "fctl-device-label-match__icon" }, icon),
|
|
33
|
+
React.createElement("span", { className: isPlaceholder ? 'fctl-device-label-match__placeholder' : '' }, text)));
|
|
34
|
+
};
|
|
35
|
+
const DeviceLabelMatch = ({ matchStatus }) => {
|
|
36
|
+
const { t } = (0, useTranslation_1.useTranslation)();
|
|
37
|
+
switch (matchStatus.status) {
|
|
38
|
+
case 'unchecked':
|
|
39
|
+
return React.createElement(DeviceLabelMatchContent, { text: t('Add labels to select a fleet.'), isPlaceholder: true });
|
|
40
|
+
case 'unchecked--invalid':
|
|
41
|
+
return (React.createElement(DeviceLabelMatchContent, { iconStatus: "warning", text: t('Fleet label match cannot cannot be evaluated when there are invalid labels.'), isPlaceholder: true }));
|
|
42
|
+
case 'checking':
|
|
43
|
+
return React.createElement(DeviceLabelMatchContent, { iconStatus: "loader" });
|
|
44
|
+
case 'checked--unique':
|
|
45
|
+
return (React.createElement(DeviceLabelMatchContent, { iconStatus: "success",
|
|
46
|
+
/* The matching fleet's name */
|
|
47
|
+
text: matchStatus.detail }));
|
|
48
|
+
case 'checked--empty':
|
|
49
|
+
return React.createElement(DeviceLabelMatchContent, { iconStatus: "warning", text: t('No fleet is matching the selected labels.') });
|
|
50
|
+
case 'checked--multiple':
|
|
51
|
+
return (React.createElement(DeviceLabelMatchContent, { iconStatus: "danger", text: t("More than one fleet is matching the selected labels. The device will ignore the fleets' configurations.") }));
|
|
52
|
+
case 'checked--error': {
|
|
53
|
+
const text = t('Check for matching fleet(s) failed. {{errorMessage}}', {
|
|
54
|
+
errorMessage: matchStatus.detail || t('Unknown error'),
|
|
55
|
+
});
|
|
56
|
+
return React.createElement(DeviceLabelMatchContent, { iconStatus: "danger", text: text });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
exports.DeviceLabelMatch = DeviceLabelMatch;
|
|
61
|
+
exports.default = exports.DeviceLabelMatch;
|
|
62
|
+
//# sourceMappingURL=DeviceLabelMatch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeviceLabelMatch.js","sourceRoot":"","sources":["../../../../../src/components/modals/ApproveDeviceModal/DeviceLabelMatch.tsx"],"names":[],"mappings":";;;;AAAA,qDAA+B;AAC/B,uDAAuD;AACvD,+FAA0F;AAC1F,+GAA0G;AAC1G,2GAAsG;AAEtG,kEAA+D;AAG/D,kCAAgC;AAEhC,MAAM,uBAAuB,GAAG,CAAC,EAC/B,UAAU,EACV,IAAI,EACJ,aAAa,GAKd,EAAE,EAAE;IACH,IAAI,IAAqB,CAAC;IAC1B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,SAAS;YACZ,IAAI,GAAG,CACL,oBAAC,iBAAI,IAAC,MAAM,EAAC,SAAS;gBACpB,oBAAC,mDAAuB,OAAG,CACtB,CACR,CAAC;YACF,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,GAAG,CACL,oBAAC,iBAAI,IAAC,MAAM,EAAC,QAAQ;gBACnB,oBAAC,+CAAqB,OAAG,CACpB,CACR,CAAC;YACF,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,GAAG,CACL,oBAAC,iBAAI,IAAC,MAAM,EAAC,SAAS;gBACpB,oBAAC,mCAAe,OAAG,CACd,CACR,CAAC;YACF,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,GAAG,oBAAC,oBAAO,IAAC,IAAI,EAAC,IAAI,GAAG,CAAC;YAC7B,MAAM;IACV,CAAC;IAED,OAAO,CACL,6BAAK,SAAS,EAAC,yBAAyB;QACrC,IAAI,IAAI,8BAAM,SAAS,EAAC,+BAA+B,IAAE,IAAI,CAAQ;QACtE,8BAAM,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,EAAE,IAAG,IAAI,CAAQ,CACvF,CACP,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,CAAC,EAAE,WAAW,EAAsC,EAAE,EAAE;IACtF,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAE/B,QAAQ,WAAW,CAAC,MAAM,EAAE,CAAC;QAC3B,KAAK,WAAW;YACd,OAAO,oBAAC,uBAAuB,IAAC,IAAI,EAAE,CAAC,CAAC,+BAA+B,CAAC,EAAE,aAAa,SAAG,CAAC;QAC7F,KAAK,oBAAoB;YACvB,OAAO,CACL,oBAAC,uBAAuB,IACtB,UAAU,EAAC,SAAS,EACpB,IAAI,EAAE,CAAC,CAAC,6EAA6E,CAAC,EACtF,aAAa,SACb,CACH,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,oBAAC,uBAAuB,IAAC,UAAU,EAAC,QAAQ,GAAG,CAAC;QACzD,KAAK,iBAAiB;YACpB,OAAO,CACL,oBAAC,uBAAuB,IACtB,UAAU,EAAC,SAAS;gBACpB,+BAA+B;gBAC/B,IAAI,EAAE,WAAW,CAAC,MAAM,GACxB,CACH,CAAC;QACJ,KAAK,gBAAgB;YACnB,OAAO,oBAAC,uBAAuB,IAAC,UAAU,EAAC,SAAS,EAAC,IAAI,EAAE,CAAC,CAAC,2CAA2C,CAAC,GAAI,CAAC;QAChH,KAAK,mBAAmB;YACtB,OAAO,CACL,oBAAC,uBAAuB,IACtB,UAAU,EAAC,QAAQ,EACnB,IAAI,EAAE,CAAC,CACL,yGAAyG,CAC1G,GACD,CACH,CAAC;QACJ,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,CAAC,CAAC,sDAAsD,EAAE;gBACrE,YAAY,EAAE,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC,eAAe,CAAC;aACvD,CAAC,CAAC;YACH,OAAO,oBAAC,uBAAuB,IAAC,UAAU,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,GAAI,CAAC;QACrE,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AA1CW,QAAA,gBAAgB,oBA0C3B;AAEF,kBAAe,wBAAgB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const React = tslib_1.__importStar(require("react"));
|
|
5
|
+
const react_core_1 = require("@patternfly/react-core");
|
|
6
|
+
const useTranslation_1 = require("../../../hooks/useTranslation");
|
|
7
|
+
const CreateRepositoryForm_1 = tslib_1.__importDefault(require("../../Repository/CreateRepository/CreateRepositoryForm"));
|
|
8
|
+
const CreateRepositoryModal = ({ options, onClose, onSuccess }) => {
|
|
9
|
+
const { t } = (0, useTranslation_1.useTranslation)();
|
|
10
|
+
return (React.createElement(react_core_1.Modal, { variant: "medium", isOpen: true, title: t('Create repository'), showClose: false },
|
|
11
|
+
React.createElement(CreateRepositoryForm_1.default, { onClose: onClose, onSuccess: onSuccess, options: options })));
|
|
12
|
+
};
|
|
13
|
+
exports.default = CreateRepositoryModal;
|
|
14
|
+
//# sourceMappingURL=CreateRepositoryModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateRepositoryModal.js","sourceRoot":"","sources":["../../../../../src/components/modals/CreateRepositoryModal/CreateRepositoryModal.tsx"],"names":[],"mappings":";;;AAAA,qDAA+B;AAC/B,uDAA+C;AAG/C,kEAA+D;AAC/D,0HAEgE;AAQhE,MAAM,qBAAqB,GAAG,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAA8B,EAAE,EAAE;IAC5F,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAC/B,OAAO,CACL,oBAAC,kBAAK,IAAC,OAAO,EAAC,QAAQ,EAAC,MAAM,QAAC,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,KAAK;QAC5E,oBAAC,8BAAoB,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAI,CAC5E,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const error_1 = require("../../../utils/error");
|
|
5
|
+
const react_core_1 = require("@patternfly/react-core");
|
|
6
|
+
const React = tslib_1.__importStar(require("react"));
|
|
7
|
+
const react_i18next_1 = require("react-i18next");
|
|
8
|
+
const useTranslation_1 = require("../../../hooks/useTranslation");
|
|
9
|
+
const DeleteModal = ({ onDelete, onClose, resourceType, resourceName }) => {
|
|
10
|
+
const { t } = (0, useTranslation_1.useTranslation)();
|
|
11
|
+
const [isDeleting, setIsDeleting] = React.useState(false);
|
|
12
|
+
const [error, setError] = React.useState();
|
|
13
|
+
return (React.createElement(react_core_1.Modal, { title: t('Delete {{resourceType}} ?', { resourceType }), isOpen: true, onClose: onClose, variant: "small", titleIconVariant: "warning", actions: [
|
|
14
|
+
React.createElement(react_core_1.Button, { key: "confirm", variant: "danger", isDisabled: isDeleting, isLoading: isDeleting, onClick: () => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
15
|
+
setError(undefined);
|
|
16
|
+
try {
|
|
17
|
+
setIsDeleting(true);
|
|
18
|
+
yield onDelete();
|
|
19
|
+
}
|
|
20
|
+
catch (err) {
|
|
21
|
+
setError((0, error_1.getErrorMessage)(err));
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
setIsDeleting(false);
|
|
25
|
+
}
|
|
26
|
+
}) }, t('Delete {{ resourceType }}', { resourceType })),
|
|
27
|
+
React.createElement(react_core_1.Button, { key: "cancel", variant: "link", onClick: onClose, isDisabled: isDeleting }, t('Cancel')),
|
|
28
|
+
] },
|
|
29
|
+
React.createElement(react_core_1.Stack, { hasGutter: true },
|
|
30
|
+
React.createElement(react_core_1.StackItem, null,
|
|
31
|
+
React.createElement(react_i18next_1.Trans, { t: t },
|
|
32
|
+
"Are you sure you want to delete ",
|
|
33
|
+
resourceType,
|
|
34
|
+
" ",
|
|
35
|
+
React.createElement("b", null, resourceName),
|
|
36
|
+
"?")),
|
|
37
|
+
error && (React.createElement(react_core_1.StackItem, null,
|
|
38
|
+
React.createElement(react_core_1.Alert, { isInline: true, variant: "danger", title: t('An error occurred') }, error))))));
|
|
39
|
+
};
|
|
40
|
+
exports.default = DeleteModal;
|
|
41
|
+
//# sourceMappingURL=DeleteModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeleteModal.js","sourceRoot":"","sources":["../../../../../src/components/modals/DeleteModal/DeleteModal.tsx"],"names":[],"mappings":";;;AAAA,gDAAuD;AACvD,uDAAgF;AAChF,qDAA+B;AAC/B,iDAAsC;AACtC,kEAA+D;AAS/D,MAAM,WAAW,GAA+B,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,EAAE,EAAE;IACpG,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,+BAAc,GAAE,CAAC;IAC/B,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAU,CAAC;IACnD,OAAO,CACL,oBAAC,kBAAK,IACJ,KAAK,EAAE,CAAC,CAAC,2BAA2B,EAAE,EAAE,YAAY,EAAE,CAAC,EACvD,MAAM,QACN,OAAO,EAAE,OAAO,EAChB,OAAO,EAAC,OAAO,EACf,gBAAgB,EAAC,SAAS,EAC1B,OAAO,EAAE;YACP,oBAAC,mBAAM,IACL,GAAG,EAAC,SAAS,EACb,OAAO,EAAC,QAAQ,EAChB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,GAAS,EAAE;oBAClB,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACpB,IAAI,CAAC;wBACH,aAAa,CAAC,IAAI,CAAC,CAAC;wBACpB,MAAM,QAAQ,EAAE,CAAC;oBACnB,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,QAAQ,CAAC,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC,CAAC;oBACjC,CAAC;4BAAS,CAAC;wBACT,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC,CAAA,IAEA,CAAC,CAAC,2BAA2B,EAAE,EAAE,YAAY,EAAE,CAAC,CAC1C;YACT,oBAAC,mBAAM,IAAC,GAAG,EAAC,QAAQ,EAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,IACzE,CAAC,CAAC,QAAQ,CAAC,CACL;SACV;QAED,oBAAC,kBAAK,IAAC,SAAS;YACd,oBAAC,sBAAS;gBACR,oBAAC,qBAAK,IAAC,CAAC,EAAE,CAAC;;oBACwB,YAAY;;oBAAE,+BAAI,YAAY,CAAK;wBAC9D,CACE;YACX,KAAK,IAAI,CACR,oBAAC,sBAAS;gBACR,oBAAC,kBAAK,IAAC,QAAQ,QAAC,OAAO,EAAC,QAAQ,EAAC,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAC3D,KAAK,CACA,CACE,CACb,CACK,CACF,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const React = tslib_1.__importStar(require("react"));
|
|
5
|
+
const formik_1 = require("formik");
|
|
6
|
+
const react_core_1 = require("@patternfly/react-core");
|
|
7
|
+
const Yup = tslib_1.__importStar(require("yup"));
|
|
8
|
+
const debounce_1 = tslib_1.__importDefault(require("lodash/debounce"));
|
|
9
|
+
const LabelsField_1 = tslib_1.__importDefault(require("../../form/LabelsField"));
|
|
10
|
+
const FlightCtlForm_1 = tslib_1.__importDefault(require("../../form/FlightCtlForm"));
|
|
11
|
+
const useFetch_1 = require("../../../hooks/useFetch");
|
|
12
|
+
const useTranslation_1 = require("../../../hooks/useTranslation");
|
|
13
|
+
const labels_1 = require("../../../utils/labels");
|
|
14
|
+
const validations_1 = require("../../form/validations");
|
|
15
|
+
const error_1 = require("../../../utils/error");
|
|
16
|
+
const patch_1 = require("../../../utils/patch");
|
|
17
|
+
const getValidationSchema = (t) => {
|
|
18
|
+
return Yup.object({
|
|
19
|
+
labels: (0, validations_1.validLabelsSchema)(t),
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
const delayResponse = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
23
|
+
const EditLabelsFormContent = ({ isSubmitting, submitForm }) => {
|
|
24
|
+
const { t } = (0, useTranslation_1.useTranslation)();
|
|
25
|
+
const [submitError, setSubmitError] = React.useState();
|
|
26
|
+
const onChangedLabels = (newLabels, hasErrors) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
27
|
+
setSubmitError(undefined);
|
|
28
|
+
if (!hasErrors) {
|
|
29
|
+
const error = yield submitForm({ labels: newLabels });
|
|
30
|
+
setSubmitError(error);
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
34
|
+
const debouncedSubmit = React.useCallback((0, debounce_1.default)(onChangedLabels, 2000), []);
|
|
35
|
+
return (React.createElement(FlightCtlForm_1.default, null,
|
|
36
|
+
React.createElement(react_core_1.FormGroup, { label: t('Device labels') },
|
|
37
|
+
React.createElement(LabelsField_1.default, { name: "labels", addButtonText: isSubmitting ? t('Saving...') : undefined, isFormEditable: !isSubmitting, onChangeCallback: debouncedSubmit })),
|
|
38
|
+
submitError && React.createElement(react_core_1.Alert, { isInline: true, title: submitError, variant: "danger" })));
|
|
39
|
+
};
|
|
40
|
+
const EditLabelsForm = ({ device, onDeviceUpdate }) => {
|
|
41
|
+
const { t } = (0, useTranslation_1.useTranslation)();
|
|
42
|
+
const { patch } = (0, useFetch_1.useFetch)();
|
|
43
|
+
const currentLabels = device.metadata.labels || {};
|
|
44
|
+
return (React.createElement(formik_1.Formik, { initialValues: {
|
|
45
|
+
labels: (0, labels_1.fromAPILabel)(currentLabels),
|
|
46
|
+
}, onSubmit: (values) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
47
|
+
try {
|
|
48
|
+
const labelsPatch = (0, patch_1.getLabelPatches)('/metadata/labels', currentLabels, values.labels);
|
|
49
|
+
if (labelsPatch.length > 0) {
|
|
50
|
+
yield patch(`devices/${device.metadata.name}`, labelsPatch);
|
|
51
|
+
// The API call is "too" quick, allow the "Saving" button to be briefly seen
|
|
52
|
+
yield delayResponse(150);
|
|
53
|
+
onDeviceUpdate();
|
|
54
|
+
}
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
return (0, error_1.getErrorMessage)(e);
|
|
59
|
+
}
|
|
60
|
+
}), validationSchema: getValidationSchema(t) }, ({ isSubmitting, submitForm }) => React.createElement(EditLabelsFormContent, { isSubmitting: isSubmitting, submitForm: submitForm })));
|
|
61
|
+
};
|
|
62
|
+
exports.default = EditLabelsForm;
|
|
63
|
+
//# sourceMappingURL=EditLabelsForm.js.map
|