Skip to content

Commit aea7c9a

Browse files
authored
feat: update CreateFirstMemberPage props (#690)
1 parent 307d416 commit aea7c9a

File tree

6 files changed

+29
-21
lines changed

6 files changed

+29
-21
lines changed

packages/onboarding-ui/src/forms/CreateFirstMemberForm/CreateFirstMemberForm.spec.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ import CreateFirstMemberForm from './CreateFirstMemberForm';
44

55
const onSubmit = jest.fn();
66
const onBackButtonClick = jest.fn();
7+
const validateUsername = jest.fn();
78
const validatePassword = jest.fn();
89

910
const props = {
1011
currentStep: 1,
1112
stepCount: 1,
12-
workspaceName: 'Kapai',
13+
organizationName: 'Kapai',
1314
onSubmit,
1415
onBackButtonClick,
16+
validateUsername,
1517
validatePassword,
1618
};
1719

packages/onboarding-ui/src/forms/CreateFirstMemberForm/CreateFirstMemberForm.stories.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ export default {
1919
workspaceName: 'Kapai',
2020
onSubmit: action('onSubmit'),
2121
onBackButtonClick: action('onBackButtonClick'),
22+
validateUsername: async (username) =>
23+
username === 'rocket' ? 'Invalid username' : true,
2224
validatePassword: async (password) =>
2325
password === '12345' ? 'Invalid password' : true,
2426
},

packages/onboarding-ui/src/forms/CreateFirstMemberForm/CreateFirstMemberForm.tsx

+15-6
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,24 @@ type CreateFirstMemberFormPayload = {
2020
};
2121

2222
type CreateFirstMemberFormProps = {
23+
defaultValues?: CreateFirstMemberFormPayload;
2324
currentStep: number;
2425
stepCount: number;
25-
workspaceName: string;
26+
organizationName: string;
2627
onSubmit: SubmitHandler<CreateFirstMemberFormPayload>;
2728
onBackButtonClick: () => void;
29+
validateUsername: Validate<string>;
2830
validatePassword: Validate<string>;
2931
};
3032

3133
const CreateFirstMemberForm = ({
34+
defaultValues,
3235
currentStep,
3336
stepCount,
34-
workspaceName,
37+
organizationName,
3538
onSubmit,
3639
onBackButtonClick,
40+
validateUsername,
3741
validatePassword,
3842
}: CreateFirstMemberFormProps): ReactElement => {
3943
const { t } = useTranslation();
@@ -49,7 +53,7 @@ const CreateFirstMemberForm = ({
4953
<Form.Steps currentStep={currentStep} stepCount={stepCount} />
5054
<Form.Title>{t('form.createFirstMemberForm.title')}</Form.Title>
5155
<Form.Subtitle>
52-
{t('form.createFirstMemberForm.subtitle', { workspaceName })}
56+
{t('form.createFirstMemberForm.subtitle', { organizationName })}
5357
</Form.Subtitle>
5458

5559
<FieldGroup mbs='x16'>
@@ -61,12 +65,16 @@ const CreateFirstMemberForm = ({
6165
</Field.Label>
6266
<Field.Row>
6367
<TextInput
68+
{...register('username', {
69+
validate: validateUsername,
70+
required: true,
71+
})}
72+
defaultValue={defaultValues?.username}
6473
error={errors?.username?.type || undefined}
65-
{...register('username', { required: true })}
6674
/>
6775
</Field.Row>
68-
{errors.username && (
69-
<Field.Error>{t('component.form.requiredField')}</Field.Error>
76+
{errors?.username && (
77+
<Field.Error>{errors.username.message}</Field.Error>
7078
)}
7179
</Field>
7280

@@ -80,6 +88,7 @@ const CreateFirstMemberForm = ({
8088
validate: validatePassword,
8189
required: true,
8290
})}
91+
defaultValue={defaultValues?.password}
8392
/>
8493
</Field.Row>
8594
{errors.password && (

packages/onboarding-ui/src/pages/CreateFirstMemberPage/CreateFirstMemberPage.spec.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ import CreateFirstMemberPage from './CreateFirstMemberPage';
44

55
const onSubmit = jest.fn();
66
const onBackButtonClick = jest.fn();
7+
const validateUsername = jest.fn();
78
const validatePassword = jest.fn();
89

910
const props = {
1011
currentStep: 1,
1112
stepCount: 1,
12-
workspaceName: 'Kapai',
13+
organizationName: 'Kapai',
1314
onSubmit,
1415
onBackButtonClick,
16+
validateUsername,
1517
validatePassword,
1618
};
1719

packages/onboarding-ui/src/pages/CreateFirstMemberPage/CreateFirstMemberPage.stories.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ export default {
1919
workspaceName: 'Kapai',
2020
onSubmit: action('onSubmit'),
2121
onBackButtonClick: action('onBackButtonClick'),
22+
validateUsername: async (username) =>
23+
username === 'rocket' ? 'Invalid username' : true,
2224
validatePassword: async (password) =>
2325
password === '12345' ? 'Invalid password' : true,
2426
},

packages/onboarding-ui/src/pages/CreateFirstMemberPage/CreateFirstMemberPage.tsx

+4-13
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,14 @@
1-
import type { ReactElement } from 'react';
2-
import type { SubmitHandler } from 'react-hook-form';
1+
import type { ComponentProps, ReactElement } from 'react';
32

43
import BackgroundLayer from '../../common/BackgroundLayer';
54
import FormPageLayout from '../../common/FormPageLayout';
65
import type { FormPageLayoutStyleProps } from '../../common/Types';
76
import CreateFirstMemberForm from '../../forms/CreateFirstMemberForm';
87
import TitleCreateFirstMemberPage from './TitleCreateFirstMemberPage';
98

10-
type CreateCloudWorkspacePageProps = {
11-
currentStep: number;
12-
stepCount: number;
13-
workspaceName: string;
14-
onSubmit: SubmitHandler<{
15-
username: string;
16-
password: string;
17-
}>;
18-
onBackButtonClick: () => void;
19-
validatePassword: (url: string) => Promise<boolean>;
20-
};
9+
type CreateCloudWorkspacePageProps = ComponentProps<
10+
typeof CreateFirstMemberForm
11+
>;
2112

2213
const CreateFirstMemberPage = (
2314
props: CreateCloudWorkspacePageProps

0 commit comments

Comments
 (0)