From 37793d844080a89b791f13a7c041eaf3eb3481a8 Mon Sep 17 00:00:00 2001 From: Hubert Date: Wed, 10 Sep 2025 10:57:33 +0200 Subject: [PATCH 1/9] Templates loaded from file onboardingAPI TBD --- public/locales/en.json | 3 + .../ComponentsSelection.tsx | 31 ++- .../ComponentsSelectionContainer.tsx | 70 +++++- .../ControlPlanes/ControlPlanesListMenu.tsx | 27 ++- .../ControlPlaneListWorkspaceGridTile.tsx | 23 +- src/components/Dialogs/MetadataForm.tsx | 158 +++++++++++-- ...eateManagedControlPlaneWizardContainer.tsx | 213 ++++++++++++++++-- .../api/types/templates/exampleTemplate.ts | 106 +++++++++ src/lib/api/types/templates/mcpTemplate.ts | 95 ++++++++ .../buildNameWithPrefixesAndSufixes.spec.ts | 50 ++++ src/utils/buildNameWithPrefixesAndSufixes.ts | 25 ++ src/utils/stripIdpPrefix.spec.ts | 36 +++ src/utils/stripIdpPrefix.ts | 11 + 13 files changed, 808 insertions(+), 40 deletions(-) create mode 100644 src/lib/api/types/templates/exampleTemplate.ts create mode 100644 src/lib/api/types/templates/mcpTemplate.ts create mode 100644 src/utils/buildNameWithPrefixesAndSufixes.spec.ts create mode 100644 src/utils/buildNameWithPrefixesAndSufixes.ts create mode 100644 src/utils/stripIdpPrefix.spec.ts create mode 100644 src/utils/stripIdpPrefix.ts diff --git a/public/locales/en.json b/public/locales/en.json index ccea36bc..0559465d 100644 --- a/public/locales/en.json +++ b/public/locales/en.json @@ -87,6 +87,9 @@ "menuDownload": "Download", "menuCopy": "Copy to clipboard" }, + "ComponentsSelection": { + "chooseVersion": "Please select version" + }, "IllustratedBanner": { "titleMessage": "No Managed Control Planes found", "subtitleMessage": "Get started by creating your first Managed Control Plane.", diff --git a/src/components/ComponentsSelection/ComponentsSelection.tsx b/src/components/ComponentsSelection/ComponentsSelection.tsx index 602602e3..6694aec2 100644 --- a/src/components/ComponentsSelection/ComponentsSelection.tsx +++ b/src/components/ComponentsSelection/ComponentsSelection.tsx @@ -22,13 +22,19 @@ import { Infobox } from '../Ui/Infobox/Infobox.tsx'; import { useTranslation } from 'react-i18next'; import { ComponentsListItem } from '../../lib/api/types/crate/createManagedControlPlane.ts'; import { getSelectedComponents } from './ComponentsSelectionContainer.tsx'; +import IllustratedError from '../Shared/IllustratedError.tsx'; export interface ComponentsSelectionProps { componentsList: ComponentsListItem[]; setComponentsList: (components: ComponentsListItem[]) => void; + templateDefaultsError?: string; } -export const ComponentsSelection: React.FC = ({ componentsList, setComponentsList }) => { +export const ComponentsSelection: React.FC = ({ + componentsList, + setComponentsList, + templateDefaultsError, +}) => { const [searchTerm, setSearchTerm] = useState(''); const { t } = useTranslation(); @@ -133,7 +139,23 @@ export const ComponentsSelection: React.FC = ({ compon disabled={!component.isSelected || providerDisabled} aria-label={`${component.name} version`} onChange={handleVersionChange} + valueState={component.isSelected && !component.selectedVersion ? 'Negative' : 'None'} + valueStateMessage={ + component.isSelected && !component.selectedVersion ? ( + {t('ComponentsSelection.chooseVersion')} + ) : undefined + } > + {!component.selectedVersion && ( + + )} {component.versions.map((version) => (