ProfessionsPage: split FormDialog into two components
This commit is contained in:
parent
17672a44a7
commit
57500d8c6e
|
@ -20,12 +20,7 @@ export interface FormDialogProps extends Pick<DialogProps, 'open'> {
|
|||
onSubmit: (input: ProfessionInput) => Promise<boolean> | boolean;
|
||||
}
|
||||
|
||||
const FormDialog = ({
|
||||
open,
|
||||
onClose,
|
||||
profession,
|
||||
onSubmit,
|
||||
}: FormDialogProps) => {
|
||||
const Form = ({ onClose, profession, onSubmit }: FormDialogProps) => {
|
||||
const editMode = Boolean(profession);
|
||||
const {
|
||||
register,
|
||||
|
@ -49,62 +44,55 @@ const FormDialog = ({
|
|||
};
|
||||
|
||||
return (
|
||||
<Dialog
|
||||
open={open}
|
||||
onClose={isSubmitting ? undefined : onClose}
|
||||
fullWidth
|
||||
maxWidth="xs"
|
||||
>
|
||||
<form onSubmit={handleSubmit(_onSubmit)}>
|
||||
<DialogTitle>
|
||||
{editMode ? 'Edycja zawodu' : 'Tworzenie zawodu'}
|
||||
</DialogTitle>
|
||||
<DialogContent className={classes.dialogContent}>
|
||||
<TextField
|
||||
fullWidth
|
||||
label="Nazwa zawodu"
|
||||
name="name"
|
||||
defaultValue={profession?.name}
|
||||
inputRef={register({
|
||||
required: 'Te pole jest wymagane.',
|
||||
maxLength: {
|
||||
value: MAX_NAME_LENGTH,
|
||||
message: `Maksymalna długość nazwy zawodu to ${MAX_NAME_LENGTH} znaki.`,
|
||||
},
|
||||
})}
|
||||
error={!!errors.name}
|
||||
helperText={errors.name ? errors.name.message : ''}
|
||||
/>
|
||||
<TextField
|
||||
fullWidth
|
||||
label="Opis"
|
||||
name="description"
|
||||
defaultValue={profession?.description}
|
||||
inputRef={register}
|
||||
multiline
|
||||
/>
|
||||
</DialogContent>
|
||||
<DialogActions>
|
||||
<Button
|
||||
color="secondary"
|
||||
type="button"
|
||||
variant="contained"
|
||||
onClick={onClose}
|
||||
disabled={isSubmitting}
|
||||
>
|
||||
Anuluj
|
||||
</Button>
|
||||
<Button
|
||||
type="submit"
|
||||
color="primary"
|
||||
variant="contained"
|
||||
disabled={isSubmitting}
|
||||
>
|
||||
{editMode ? 'Zapisz' : 'Utwórz'}
|
||||
</Button>
|
||||
</DialogActions>
|
||||
</form>
|
||||
</Dialog>
|
||||
<form onSubmit={handleSubmit(_onSubmit)}>
|
||||
<DialogTitle>
|
||||
{editMode ? 'Edycja zawodu' : 'Tworzenie zawodu'}
|
||||
</DialogTitle>
|
||||
<DialogContent className={classes.dialogContent}>
|
||||
<TextField
|
||||
fullWidth
|
||||
label="Nazwa zawodu"
|
||||
name="name"
|
||||
defaultValue={profession?.name}
|
||||
inputRef={register({
|
||||
required: 'Te pole jest wymagane.',
|
||||
maxLength: {
|
||||
value: MAX_NAME_LENGTH,
|
||||
message: `Maksymalna długość nazwy zawodu to ${MAX_NAME_LENGTH} znaki.`,
|
||||
},
|
||||
})}
|
||||
error={!!errors.name}
|
||||
helperText={errors.name ? errors.name.message : ''}
|
||||
/>
|
||||
<TextField
|
||||
fullWidth
|
||||
label="Opis"
|
||||
name="description"
|
||||
defaultValue={profession?.description}
|
||||
inputRef={register}
|
||||
multiline
|
||||
/>
|
||||
</DialogContent>
|
||||
<DialogActions>
|
||||
<Button
|
||||
color="secondary"
|
||||
type="button"
|
||||
variant="contained"
|
||||
onClick={onClose}
|
||||
disabled={isSubmitting}
|
||||
>
|
||||
Anuluj
|
||||
</Button>
|
||||
<Button
|
||||
type="submit"
|
||||
color="primary"
|
||||
variant="contained"
|
||||
disabled={isSubmitting}
|
||||
>
|
||||
{editMode ? 'Zapisz' : 'Utwórz'}
|
||||
</Button>
|
||||
</DialogActions>
|
||||
</form>
|
||||
);
|
||||
};
|
||||
|
||||
|
@ -116,4 +104,19 @@ const useStyles = makeStyles(theme => ({
|
|||
},
|
||||
}));
|
||||
|
||||
const FormDialog = (props: FormDialogProps) => {
|
||||
const { onClose, open } = props;
|
||||
return (
|
||||
<Dialog
|
||||
open={open}
|
||||
onClose={onClose}
|
||||
fullWidth
|
||||
maxWidth="xs"
|
||||
keepMounted={false}
|
||||
>
|
||||
<Form {...props} />
|
||||
</Dialog>
|
||||
);
|
||||
};
|
||||
|
||||
export default FormDialog;
|
||||
|
|
|
@ -9,23 +9,48 @@ export type Scalars = {
|
|||
Boolean: boolean;
|
||||
Int: number;
|
||||
Float: number;
|
||||
Time: Date | string;
|
||||
Upload: any;
|
||||
Time: Date | string;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
export type UserFilterOr = {
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
export type ProfessionFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
slug?: Maybe<Array<Scalars['String']>>;
|
||||
slugNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
name?: Maybe<Array<Scalars['String']>>;
|
||||
nameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
nameMATCH?: Maybe<Scalars['String']>;
|
||||
descriptionIEQ?: Maybe<Scalars['String']>;
|
||||
descriptionMATCH?: Maybe<Scalars['String']>;
|
||||
qualificationID?: Maybe<Array<Scalars['ID']>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export type ProfessionInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
export type QualificationFilterOr = {
|
||||
nameMatch?: Maybe<Scalars['String']>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
codeMatch?: Maybe<Scalars['String']>;
|
||||
codeIEQ?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export enum Role {
|
||||
Admin = 'admin',
|
||||
User = 'user'
|
||||
}
|
||||
|
||||
export type ProfessionList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Profession>>;
|
||||
};
|
||||
|
||||
export type Qualification = {
|
||||
|
@ -38,11 +63,131 @@ export type Qualification = {
|
|||
createdAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
|
||||
export type UpdateManyUsersInput = {
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type QualificationInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
code?: Maybe<Scalars['String']>;
|
||||
formula?: Maybe<Scalars['String']>;
|
||||
associateProfession?: Maybe<Array<Scalars['Int']>>;
|
||||
dissociateProfession?: Maybe<Array<Scalars['Int']>>;
|
||||
};
|
||||
|
||||
export enum Answer {
|
||||
A = 'a',
|
||||
B = 'b',
|
||||
C = 'c',
|
||||
D = 'd'
|
||||
}
|
||||
|
||||
export type User = {
|
||||
id: Scalars['ID'];
|
||||
displayName: Scalars['String'];
|
||||
role: Role;
|
||||
email: Scalars['String'];
|
||||
activated: Scalars['Boolean'];
|
||||
createdAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type UserList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<User>>;
|
||||
};
|
||||
|
||||
export type Query = {
|
||||
professions: ProfessionList;
|
||||
profession?: Maybe<Profession>;
|
||||
qualifications: QualificationList;
|
||||
similarQualifications: QualificationList;
|
||||
qualification?: Maybe<Qualification>;
|
||||
questions: QuestionList;
|
||||
generateTest?: Maybe<Array<Question>>;
|
||||
users: UserList;
|
||||
user?: Maybe<User>;
|
||||
me?: Maybe<User>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionsArgs = {
|
||||
filter?: Maybe<ProfessionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionArgs = {
|
||||
id?: Maybe<Scalars['ID']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationsArgs = {
|
||||
filter?: Maybe<QualificationFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QuerySimilarQualificationsArgs = {
|
||||
qualificationID: Scalars['ID'];
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationArgs = {
|
||||
id?: Maybe<Scalars['ID']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQuestionsArgs = {
|
||||
filter?: Maybe<QuestionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryGenerateTestArgs = {
|
||||
qualificationIDs: Array<Scalars['ID']>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUsersArgs = {
|
||||
filter?: Maybe<UserFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUserArgs = {
|
||||
id: Scalars['ID'];
|
||||
};
|
||||
|
||||
export type QuestionList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Question>>;
|
||||
};
|
||||
|
||||
export type UserInput = {
|
||||
displayName?: Maybe<Scalars['String']>;
|
||||
password?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type Mutation = {
|
||||
createProfession?: Maybe<Profession>;
|
||||
updateProfession?: Maybe<Profession>;
|
||||
|
@ -137,38 +282,6 @@ export type MutationSignInArgs = {
|
|||
staySignedIn?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type UserFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
displayName?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Array<Scalars['String']>>;
|
||||
emailNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Array<Role>>;
|
||||
roleNEQ?: Maybe<Array<Role>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
or?: Maybe<UserFilterOr>;
|
||||
};
|
||||
|
||||
export type ProfessionList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<Profession>>;
|
||||
};
|
||||
|
||||
export enum Role {
|
||||
Admin = 'admin',
|
||||
User = 'user'
|
||||
}
|
||||
|
||||
export type QualificationFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
|
@ -217,12 +330,26 @@ export type QuestionInput = {
|
|||
deleteAnswerDImage?: Maybe<Scalars['Boolean']>;
|
||||
};
|
||||
|
||||
export type UserInput = {
|
||||
displayName?: Maybe<Scalars['String']>;
|
||||
password?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Role>;
|
||||
export type UserFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
displayName?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
email?: Maybe<Array<Scalars['String']>>;
|
||||
emailNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
role?: Maybe<Array<Role>>;
|
||||
roleNEQ?: Maybe<Array<Role>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
or?: Maybe<UserFilterOr>;
|
||||
};
|
||||
|
||||
export type UserWithToken = {
|
||||
|
@ -230,19 +357,18 @@ export type UserWithToken = {
|
|||
user: User;
|
||||
};
|
||||
|
||||
export type QualificationInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
export type Profession = {
|
||||
id: Scalars['ID'];
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
description?: Maybe<Scalars['String']>;
|
||||
code?: Maybe<Scalars['String']>;
|
||||
formula?: Maybe<Scalars['String']>;
|
||||
associateProfession?: Maybe<Array<Scalars['Int']>>;
|
||||
dissociateProfession?: Maybe<Array<Scalars['Int']>>;
|
||||
createdAt: Scalars['Time'];
|
||||
qualifications: Array<Qualification>;
|
||||
};
|
||||
|
||||
|
||||
export type UpdateManyUsersInput = {
|
||||
role?: Maybe<Role>;
|
||||
activated?: Maybe<Scalars['Boolean']>;
|
||||
export type ProfessionInput = {
|
||||
name?: Maybe<Scalars['String']>;
|
||||
description?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export type QualificationList = {
|
||||
|
@ -270,139 +396,6 @@ export type Question = {
|
|||
updatedAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type Profession = {
|
||||
id: Scalars['ID'];
|
||||
slug: Scalars['String'];
|
||||
name: Scalars['String'];
|
||||
description?: Maybe<Scalars['String']>;
|
||||
createdAt: Scalars['Time'];
|
||||
qualifications: Array<Qualification>;
|
||||
};
|
||||
|
||||
export type UserList = {
|
||||
total: Scalars['Int'];
|
||||
items?: Maybe<Array<User>>;
|
||||
};
|
||||
|
||||
export type User = {
|
||||
id: Scalars['ID'];
|
||||
displayName: Scalars['String'];
|
||||
role: Role;
|
||||
email: Scalars['String'];
|
||||
activated: Scalars['Boolean'];
|
||||
createdAt: Scalars['Time'];
|
||||
};
|
||||
|
||||
export type ProfessionFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
slug?: Maybe<Array<Scalars['String']>>;
|
||||
slugNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
name?: Maybe<Array<Scalars['String']>>;
|
||||
nameNEQ?: Maybe<Array<Scalars['String']>>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
nameMATCH?: Maybe<Scalars['String']>;
|
||||
descriptionIEQ?: Maybe<Scalars['String']>;
|
||||
descriptionMATCH?: Maybe<Scalars['String']>;
|
||||
qualificationID?: Maybe<Array<Scalars['ID']>>;
|
||||
createdAt?: Maybe<Scalars['Time']>;
|
||||
createdAtGT?: Maybe<Scalars['Time']>;
|
||||
createdAtGTE?: Maybe<Scalars['Time']>;
|
||||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export type QualificationFilterOr = {
|
||||
nameMatch?: Maybe<Scalars['String']>;
|
||||
nameIEQ?: Maybe<Scalars['String']>;
|
||||
codeMatch?: Maybe<Scalars['String']>;
|
||||
codeIEQ?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
export enum Answer {
|
||||
A = 'a',
|
||||
B = 'b',
|
||||
C = 'c',
|
||||
D = 'd'
|
||||
}
|
||||
|
||||
|
||||
export type Query = {
|
||||
professions: ProfessionList;
|
||||
profession?: Maybe<Profession>;
|
||||
qualifications: QualificationList;
|
||||
similarQualifications: QualificationList;
|
||||
qualification?: Maybe<Qualification>;
|
||||
questions: QuestionList;
|
||||
generateTest?: Maybe<Array<Question>>;
|
||||
users: UserList;
|
||||
user?: Maybe<User>;
|
||||
me?: Maybe<User>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionsArgs = {
|
||||
filter?: Maybe<ProfessionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryProfessionArgs = {
|
||||
id?: Maybe<Scalars['ID']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationsArgs = {
|
||||
filter?: Maybe<QualificationFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QuerySimilarQualificationsArgs = {
|
||||
qualificationID: Scalars['ID'];
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQualificationArgs = {
|
||||
id?: Maybe<Scalars['ID']>;
|
||||
slug?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryQuestionsArgs = {
|
||||
filter?: Maybe<QuestionFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryGenerateTestArgs = {
|
||||
qualificationIDs: Array<Scalars['ID']>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUsersArgs = {
|
||||
filter?: Maybe<UserFilter>;
|
||||
limit?: Maybe<Scalars['Int']>;
|
||||
offset?: Maybe<Scalars['Int']>;
|
||||
sort?: Maybe<Array<Scalars['String']>>;
|
||||
};
|
||||
|
||||
|
||||
export type QueryUserArgs = {
|
||||
id: Scalars['ID'];
|
||||
};
|
||||
|
||||
export type QuestionFilter = {
|
||||
id?: Maybe<Array<Scalars['ID']>>;
|
||||
idNEQ?: Maybe<Array<Scalars['ID']>>;
|
||||
|
@ -418,3 +411,10 @@ export type QuestionFilter = {
|
|||
createdAtLT?: Maybe<Scalars['Time']>;
|
||||
createdAtLTE?: Maybe<Scalars['Time']>;
|
||||
};
|
||||
|
||||
export type UserFilterOr = {
|
||||
displayNameIEQ?: Maybe<Scalars['String']>;
|
||||
displayNameMATCH?: Maybe<Scalars['String']>;
|
||||
emailIEQ?: Maybe<Scalars['String']>;
|
||||
emailMATCH?: Maybe<Scalars['String']>;
|
||||
};
|
||||
|
|
Reference in New Issue