Skip to content

Commit d2e5698

Browse files
committed
refactor
1 parent a5a04bf commit d2e5698

File tree

4 files changed

+137
-77
lines changed

4 files changed

+137
-77
lines changed

public/locales/en.json

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -264,15 +264,28 @@
264264
},
265265
"common": {
266266
"close": "Close",
267-
"cannotLoadData": "Cannot load data"
267+
"cannotLoadData": "Cannot load data",
268+
"metadata": "Metadata",
269+
"members": "Members",
270+
"summarize": "Summarize",
271+
"namespace": "Namespace",
272+
"region": "Region",
273+
"success": "Success"
268274
},
269275
"buttons": {
270276
"viewResource": "View resource",
271277
"download": "Download",
272-
"copy": "Copy"
278+
"copy": "Copy",
279+
"next": "Next",
280+
"create": "Create",
281+
"close": "Close"
273282
},
274283
"yaml": {
275284
"copiedToClipboard": "YAML copied to clipboard!",
276285
"YAML": "YAML"
286+
},
287+
"createMCP": {
288+
"titleText": "Success",
289+
"subtitleText": "Your Managed Control plane is being created and will be ready in few minutes"
277290
}
278291
}

src/components/Members/EditMembers.tsx

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import { FC, useRef, useState } from 'react';
2-
import { Button, Input, InputDomRef } from '@ui5/webcomponents-react';
2+
import {
3+
Button,
4+
FlexBox,
5+
Input,
6+
InputDomRef,
7+
Label,
8+
} from '@ui5/webcomponents-react';
39
import { MemberTable } from './MemberTable.tsx';
410
import { MemberRoleSelect } from './MemberRoleSelect.tsx';
511
import { ValueState } from '../Shared/Ui5ValieState.tsx';
@@ -55,21 +61,25 @@ export const EditMembers: FC<EditMembersProps> = ({
5561
return (
5662
<>
5763
<div>
58-
<Input
59-
ref={emailInput}
60-
id="member-email-input"
61-
type="Email"
62-
placeholder="Email"
63-
valueState={highlightEmail}
64-
valueStateMessage={<span>{valueStateMessage}</span>}
65-
onChange={() => {
66-
setHighlightEmail('None');
67-
}}
68-
/>
69-
<MemberRoleSelect value={role} onChange={changeSelectedRole} />
70-
<Button data-testid="add-member-button" onClick={() => addMember()}>
71-
{t('EditMembers.addButton')}
72-
</Button>
64+
<FlexBox alignItems={'End'} gap={8}>
65+
<FlexBox direction={'Column'}>
66+
<Label for={'member-email-input'}>Email</Label>
67+
<Input
68+
ref={emailInput}
69+
id="member-email-input"
70+
type="Email"
71+
valueState={highlightEmail}
72+
valueStateMessage={<span>{valueStateMessage}</span>}
73+
onChange={() => {
74+
setHighlightEmail('None');
75+
}}
76+
/>
77+
</FlexBox>
78+
<MemberRoleSelect value={role} onChange={changeSelectedRole} />
79+
<Button data-testid="add-member-button" onClick={() => addMember()}>
80+
{t('EditMembers.addButton')}
81+
</Button>
82+
</FlexBox>
7383
<MemberTable
7484
members={members}
7585
isValidationError={isValidationError}

src/components/Members/MemberRoleSelect.tsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import {
33
MemberRolesDetailed,
44
} from '../../lib/api/types/shared/members';
55
import {
6+
FlexBox,
7+
Label,
68
Option,
79
Select,
810
SelectDomRef,
@@ -36,7 +38,8 @@ export function MemberRoleSelect({
3638
}, [value]);
3739

3840
return (
39-
<>
41+
<FlexBox direction={'Column'}>
42+
<Label for={'member-role-select'}>Role</Label>
4043
<Select
4144
ref={ref}
4245
id="member-role-select"
@@ -51,6 +54,6 @@ export function MemberRoleSelect({
5154
</Option>
5255
))}
5356
</Select>
54-
</>
57+
</FlexBox>
5558
);
5659
}

src/components/Wizards/CreateManagedControlPlaneWizardContainer.tsx

Lines changed: 91 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { FC, useCallback, useEffect, useRef, useState } from 'react';
1+
import { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';
22
import { useApiResourceMutation } from '../../lib/api/useApiResource';
3-
3+
import IllustrationMessageType from '@ui5/webcomponents-fiori/dist/types/IllustrationMessageType.js';
44
import { useAuth } from '../../spaces/onboarding/auth/AuthContext.tsx';
55
import { Member, MemberRoles } from '../../lib/api/types/shared/members.ts';
66
import 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';
3233
import { ErrorDialog, ErrorDialogHandle } from '../Shared/ErrorMessageBox.tsx';
33-
import { useToast } from '../../context/ToastContext.tsx';
34+
3435
import { EditMembers } from '../Members/EditMembers.tsx';
3536
import { useTranslation } from 'react-i18next';
3637
import { MetadataForm } from '../Dialogs/MetadataForm.tsx';
38+
import { IllustratedBanner } from '../Ui/IllustratedBanner/IllustratedBanner.tsx';
3739

3840
export type CreateDialogProps = {
3941
name: string;
@@ -49,6 +51,8 @@ type CreateManagedControlPlaneWizardContainerProps = {
4951
workspaceName?: string;
5052
};
5153

54+
type WizardStep = 'metadata' | 'members' | 'summarize' | 'success';
55+
5256
export 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

Comments
 (0)