1- import { FC , useCallback , useEffect , useRef , useState } from 'react' ;
1+ import { FC , useCallback , useEffect , useMemo , useRef , useState } from 'react' ;
22import { useApiResourceMutation } from '../../lib/api/useApiResource' ;
3-
3+ import IllustrationMessageType from '@ui5/webcomponents-fiori/dist/types/IllustrationMessageType.js' ;
44import { useAuth } from '../../spaces/onboarding/auth/AuthContext.tsx' ;
55import { Member , MemberRoles } from '../../lib/api/types/shared/members.ts' ;
66import type { WizardStepChangeEventDetail } from '@ui5/webcomponents-fiori/dist/Wizard.js' ;
@@ -12,6 +12,7 @@ import {
1212 Bar ,
1313 Button ,
1414 Dialog ,
15+ Form ,
1516 FormGroup ,
1617 Grid ,
1718 List ,
@@ -30,10 +31,11 @@ import {
3031 CreateManagedControlPlaneType ,
3132} from '../../lib/api/types/crate/createManagedControlPlane.ts' ;
3233import { ErrorDialog , ErrorDialogHandle } from '../Shared/ErrorMessageBox.tsx' ;
33- import { useToast } from '../../context/ToastContext.tsx' ;
34+
3435import { EditMembers } from '../Members/EditMembers.tsx' ;
3536import { useTranslation } from 'react-i18next' ;
3637import { MetadataForm } from '../Dialogs/MetadataForm.tsx' ;
38+ import { IllustratedBanner } from '../Ui/IllustratedBanner/IllustratedBanner.tsx' ;
3739
3840export type CreateDialogProps = {
3941 name : string ;
@@ -49,6 +51,8 @@ type CreateManagedControlPlaneWizardContainerProps = {
4951 workspaceName ?: string ;
5052} ;
5153
54+ type WizardStep = 'metadata' | 'members' | 'summarize' | 'success' ;
55+
5256export const CreateManagedControlPlaneWizardContainer : FC <
5357 CreateManagedControlPlaneWizardContainerProps
5458> = ( { isOpen, setIsOpen, projectName = '' , workspaceName = '' } ) => {
@@ -71,18 +75,28 @@ export const CreateManagedControlPlaneWizardContainer: FC<
7175 members : [ ] ,
7276 } ,
7377 } ) ;
78+ const { t } = useTranslation ( ) ;
79+ const nextBtText = useMemo (
80+ ( ) => ( {
81+ metadata : t ( 'buttons.next' ) ,
82+ members : t ( 'buttons.next' ) ,
83+ summarize : t ( 'buttons.create' ) ,
84+ success : t ( 'buttons.close' ) ,
85+ } ) ,
86+ [ ] ,
87+ ) ;
7488 const errorDialogRef = useRef < ErrorDialogHandle > ( null ) ;
7589 const resetFormAndClose = ( ) => {
7690 reset ( ) ;
77- setSelectedStep ( '1 ' ) ;
91+ setSelectedStep ( 'metadata ' ) ;
7892 setIsOpen ( false ) ;
7993 } ;
8094 console . log ( errors ) ;
8195 // const { t } = useTranslation();
8296 const { user } = useAuth ( ) ;
83- const [ selectedStep , setSelectedStep ] = useState < string > ( '1 ' ) ;
97+ const [ selectedStep , setSelectedStep ] = useState < WizardStep > ( 'metadata ' ) ;
8498 const username = user ?. email ;
85- const toast = useToast ( ) ;
99+
86100 const clearForm = useCallback ( ( ) => {
87101 resetField ( 'name' ) ;
88102 resetField ( 'chargingTarget' ) ;
@@ -117,9 +131,8 @@ export const CreateManagedControlPlaneWizardContainer: FC<
117131 members : members ,
118132 } ) ,
119133 ) ;
120- // await revalidate();
121- setIsOpen ( false ) ;
122- toast . show ( 'mcp created' ) ;
134+
135+ setSelectedStep ( 'success' ) ;
123136 return true ;
124137 } catch ( e ) {
125138 console . error ( e ) ;
@@ -136,33 +149,33 @@ export const CreateManagedControlPlaneWizardContainer: FC<
136149 const handleStepChange = (
137150 e : Ui5CustomEvent < WizardDomRef , WizardStepChangeEventDetail > ,
138151 ) => {
139- setSelectedStep ( e . detail . step . dataset . step ?? '' ) ;
152+ setSelectedStep ( ( e . detail . step . dataset . step ?? '' ) as WizardStep ) ;
140153 } ;
141154 const onNextClick = ( ) => {
142- console . log ( 'test' ) ;
143- console . log ( getValues ( ) ) ;
144- if ( selectedStep === '1' ) {
155+ if ( selectedStep === 'metadata' ) {
145156 handleSubmit (
146157 ( ) => {
147- console . log ( 'valid' ) ;
148- setSelectedStep ( '2' ) ;
158+ setSelectedStep ( 'members' ) ;
149159 } ,
150160 ( ) => {
151- console . log ( 'not valid' ) ;
152161 console . log ( errors ) ;
153162 } ,
154163 ) ( ) ;
155164 }
156- if ( selectedStep === '2' ) {
165+ if ( selectedStep === 'members' ) {
166+ setSelectedStep ( 'summarize' ) ;
167+ }
168+ if ( selectedStep === 'summarize' ) {
157169 handleCreateManagedControlPlane ( getValues ( ) ) ;
158170 }
171+ if ( selectedStep === 'success' ) {
172+ setIsOpen ( false ) ;
173+ }
159174 } ;
160175 const setMembers = ( members : Member [ ] ) => {
161176 setValue ( 'members' , members ) ;
162177 } ;
163- const { t } = useTranslation ( ) ;
164- console . log ( 'selected' ) ;
165- console . log ( selectedStep ) ;
178+
166179 return (
167180 < Dialog
168181 stretch = { true }
@@ -178,7 +191,7 @@ export const CreateManagedControlPlaneWizardContainer: FC<
178191 Close
179192 </ Button >
180193 < Button design = "Emphasized" onClick = { onNextClick } >
181- { selectedStep === '2' ? 'Create' : 'Next' }
194+ { nextBtText [ selectedStep ] }
182195 </ Button >
183196 </ div >
184197 }
@@ -189,61 +202,70 @@ export const CreateManagedControlPlaneWizardContainer: FC<
189202 < Wizard contentLayout = { 'SingleStep' } onStepChange = { handleStepChange } >
190203 < WizardStep
191204 icon = { 'create-form' }
192- titleText = "Metadata"
205+ titleText = { t ( 'common.metadata' ) }
193206 disabled = { false }
194- selected = { selectedStep === '1 ' }
195- data-step = { '1 ' }
207+ selected = { selectedStep === 'metadata ' }
208+ data-step = { 'metadata ' }
196209 >
197- < MetadataForm
198- register = { register }
199- errors = { errors }
200- sideFormContent = {
201- < FormGroup
202- headerText = { t ( 'CreateProjectWorkspaceDialog.membersHeader' ) }
203- >
204- < EditMembers
205- members = { watch ( 'members' ) }
206- isValidationError = { ! ! errors . members }
207- onMemberChanged = { setMembers }
208- />
209- </ FormGroup >
210- }
211- />
210+ < MetadataForm register = { register } errors = { errors } />
212211 </ WizardStep >
213212 < WizardStep
214- titleText = "Members"
215- selected = { selectedStep === '2' }
216- data-step = { '2' }
217- />
213+ titleText = { t ( 'common.members' ) }
214+ selected = { selectedStep === 'members' }
215+ data-step = { 'members' }
216+ disabled = { selectedStep === 'metadata' || ! isValid }
217+ >
218+ < Form >
219+ < FormGroup
220+ headerText = { t ( 'CreateProjectWorkspaceDialog.membersHeader' ) }
221+ >
222+ < EditMembers
223+ members = { watch ( 'members' ) }
224+ isValidationError = { ! ! errors . members }
225+ onMemberChanged = { setMembers }
226+ />
227+ </ FormGroup >
228+ </ Form >
229+ </ WizardStep >
218230 < WizardStep
219231 icon = { 'activities' }
220- titleText = "Summarize"
221- disabled = { selectedStep === '1' || selectedStep === '2' || ! isValid }
222- selected = { selectedStep === '3' }
223- data-step = { '3' }
232+ titleText = { t ( 'common.summarize' ) }
233+ disabled = {
234+ selectedStep === 'metadata' ||
235+ selectedStep === 'members' ||
236+ ! isValid
237+ }
238+ selected = { selectedStep === 'summarize' }
239+ data-step = { 'summarize' }
224240 >
225- < h1 > Summarize </ h1 >
241+ < h1 > { t ( 'common.summarize' ) } </ h1 >
226242 < Grid defaultSpan = "XL6 L6 M6 S6" >
227243 < div >
228- < List headerText = { 'Metadata' } >
244+ < List headerText = { t ( 'common.members' ) } >
229245 < ListItemStandard
230246 text = { 'Name:' }
231247 additionalText = { getValues ( 'name' ) }
232248 />
233249 < ListItemStandard
234- title = { 'Metadata' }
250+ title = { t ( 'common.metadata' ) }
235251 text = { 'Display name:' }
236252 additionalText = { getValues ( 'displayName' ) }
237253 />
238254 < ListItemStandard
239- text = { 'Charging target:' }
255+ text = { t ( 'CreateProjectWorkspaceDialog.chargingTargetLabel' ) }
240256 additionalText = { getValues ( 'chargingTarget' ) }
241- /> { ' ' }
242- < ListItemStandard text = { 'Namespace:' } additionalText = { '' } /> { ' ' }
243- < ListItemStandard text = { 'Region:' } additionalText = { '' } />
257+ />
258+ < ListItemStandard
259+ text = { t ( 'common.namespace' ) }
260+ additionalText = { '' }
261+ />
262+ < ListItemStandard
263+ text = { t ( 'common.region' ) }
264+ additionalText = { '' }
265+ />
244266 </ List >
245267 < br />
246- < List headerText = { 'Members' } >
268+ < List headerText = { t ( 'common.members' ) } >
247269 { getValues ( 'members' ) . map ( ( member ) => (
248270 < ListItemStandard
249271 key = { member . name }
@@ -254,7 +276,6 @@ export const CreateManagedControlPlaneWizardContainer: FC<
254276 </ List >
255277 </ div >
256278 < div >
257- { selectedStep }
258279 < YamlViewer
259280 yamlString = { stringify (
260281 CreateManagedControlPlane (
@@ -267,11 +288,24 @@ export const CreateManagedControlPlaneWizardContainer: FC<
267288 } ,
268289 ) ,
269290 ) }
270- filename = { 'test' }
291+ filename = { `mcp_ ${ projectName } --ws- ${ workspaceName } ` }
271292 />
272293 </ div >
273294 </ Grid >
274295 </ WizardStep >
296+ < WizardStep
297+ icon = { 'activities' }
298+ titleText = { t ( 'common.success' ) }
299+ disabled = { selectedStep !== 'success' || ! isValid }
300+ selected = { selectedStep === 'success' }
301+ data-step = { 'success' }
302+ >
303+ < IllustratedBanner
304+ illustrationName = { IllustrationMessageType . SuccessScreen }
305+ title = { t ( 'createMCP.titleText' ) }
306+ subtitle = { t ( 'createMCP.subtitleText' ) }
307+ />
308+ </ WizardStep >
275309 </ Wizard >
276310 < ErrorDialog ref = { errorDialogRef } />
277311 </ Dialog >
0 commit comments