Skip to content

Commit

Permalink
[EN-4026] chore(inputs): finished typing 🚀
Browse files Browse the repository at this point in the history
  • Loading branch information
emile-bex committed Aug 22, 2023
1 parent e0c79ba commit 94cf5d6
Show file tree
Hide file tree
Showing 8 changed files with 35 additions and 25 deletions.
43 changes: 22 additions & 21 deletions src/components/forms/FormSchema/FormSchema.types.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ArrayPath, Path, UseFormGetValues } from 'react-hook-form';
import { RadioTypes } from 'src/components/utils/Inputs/Radio/Radio.types';
import { FilterConstant } from 'src/constants/utils';
import { AnyCantFix } from 'src/utils/Types';
import { AnyCantFix, StrictUnion } from 'src/utils/Types';

export const FormComponents = {
DATEPICKER: 'datepicker',
Expand Down Expand Up @@ -34,14 +34,9 @@ export type FieldValue =
export type IsArrayFilterConstant<T extends FilterConstant | FilterConstant[]> =
T extends FilterConstant[] ? T : T[];

export type MultiFilterConstant<
M extends boolean,
T extends string | number | boolean = string | number | boolean
> = M extends true
? FilterConstant<T>[]
: M extends false
? FilterConstant<T>
: FilterConstant<T> | FilterConstant<T>[];
export type MultiFilterConstant<M extends boolean> = M extends true
? FilterConstant[]
: FilterConstant;

export interface FormComponentValues<M extends boolean> {
[FormComponents.DATEPICKER]: string;
Expand Down Expand Up @@ -216,7 +211,6 @@ export interface FormFieldSelectRequestCommon<
openMenuOnClick?: boolean;
}

// TODO fix type depending on is Multi
interface FormFieldSelectRequestMulti<V extends FormSchemaValidation>
extends FormFieldSelectRequestCommon<V, true> {
isMulti: true;
Expand All @@ -232,23 +226,30 @@ interface FormFieldSelectRequestMethod<V extends FormSchemaValidation>
isMulti: (getValue: GetValueType<V>) => boolean;
}

type FormFieldSelectRequestOmit<V extends FormSchemaValidation> = Omit<
FormFieldSelectRequestCommon<V, false>,
'isMulti'
>;
// TODO fix type depending on isMulti, should be false when no isMulti property

export type FormFieldSelectRequest<V extends FormSchemaValidation> =
| FormFieldSelectRequestMulti<V>
| FormFieldSelectRequestSingle<V>
| FormFieldSelectRequestOmit<V>
| FormFieldSelectRequestMethod<V>;
/*
type FormFieldSelectRequestOmit<V extends FormSchemaValidation> = Omit<
FormFieldSelectRequestCommon<V, false>,
'isMulti'
>;
*/

export type FormFieldInput<V extends FormSchemaValidation> =
export type FormFieldSelectRequest<V extends FormSchemaValidation> =
StrictUnion<
| FormFieldSelectRequestMulti<V>
| FormFieldSelectRequestSingle<V>
/* | FormFieldSelectRequestOmit<V> */
| FormFieldSelectRequestMethod<V>
>;

export type FormFieldInput<V extends FormSchemaValidation> = StrictUnion<
| FormFieldTextInput<V>
| FormFieldCheckBox<V>
| FormFieldRadio<V>
| FormFieldSelect<V>
| FormFieldSelectRequest<V>;
| FormFieldSelectRequest<V>
>;

export interface FormFieldText<V extends FormSchemaValidation>
extends FormFieldCommonProperties<V, string> {
Expand Down
3 changes: 3 additions & 0 deletions src/components/forms/schemas/formAddExternalOpportunity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ export const formAddExternalOpportunityCandidate: FormSchema<{
name: 'department',
title: 'Localisation *',
component: 'select',
isMulti: false,
options: DEPARTMENTS_FILTERS,
isRequired: true,
},
Expand Down Expand Up @@ -166,6 +167,7 @@ export const formAddExternalOpportunityAsAdmin: FormSchema<{
name: 'candidateId',
title: 'Renseignez le candidat concerné*',
component: 'select-async',
isMulti: false,
loadOptions: (callback, inputValue) => {
Api.getUsersSearch({
params: {
Expand Down Expand Up @@ -225,6 +227,7 @@ export const formAddExternalOpportunityAsAdmin: FormSchema<{
name: 'department',
title: 'Localisation *',
component: 'select',
isMulti: false,
options: DEPARTMENTS_FILTERS,
isRequired: true,
},
Expand Down
2 changes: 2 additions & 0 deletions src/components/forms/schemas/formAddOpportunity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ export const formAddOpportunity: FormSchema<{
name: 'department',
title: 'Département du lieu de travail*',
component: 'select',
isMulti: false,
options: DEPARTMENTS_FILTERS,
isRequired: true,
showLabel: true,
Expand Down Expand Up @@ -428,6 +429,7 @@ export const formAddOpportunityAsAdmin: FormSchema<{
name: 'department',
title: 'Département du lieu de travail*',
component: 'select',
isMulti: false,
options: DEPARTMENTS_FILTERS,
isRequired: true,
},
Expand Down
1 change: 1 addition & 0 deletions src/components/forms/schemas/formAddUser.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -172,6 +172,7 @@ export const formAddUser: FormSchema<FormAddUserSchema> = {
id: 'organizationId',
name: 'organizationId',
component: 'select-async',
isMulti: false,
hide: (getValue) => {
return !isRoleIncluded(EXTERNAL_USER_ROLES, getValue('role'));
},
Expand Down
5 changes: 2 additions & 3 deletions src/components/forms/schemas/formCandidateInscription.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import _ from 'lodash';
import moment from 'moment';
import { isValidPhoneNumber } from 'react-phone-number-input/mobile';
import { isEmail } from 'validator';
import { FormSchema, FormSchemaValidation, GetValueType } from '../FormSchema';
import { Api } from 'src/api';
import 'moment/locale/fr';
import { isEmail } from 'validator';
import { RadioTypes } from 'src/components/utils/Inputs/Radio/Radio.types';
import {
ANTENNE_INFO,
Expand All @@ -13,7 +14,6 @@ import {
HEARD_ABOUT_FILTERS,
HeardAboutValue,
} from 'src/constants';
import { FormSchema, FormSchemaValidation, GetValueType } from '../FormSchema';
import { Cities, CITIES_FILTERS, City } from 'src/constants/departements';

interface FormCandidateInscriptionSchema extends FormSchemaValidation {
Expand Down Expand Up @@ -42,7 +42,6 @@ function hideIfNoInfoCo(
return !city?.length || !filteredOptions;
}

// TODO FIX
export const formCandidateInscription: FormSchema<FormCandidateInscriptionSchema> =
{
id: 'form-candidate-inscription',
Expand Down
4 changes: 3 additions & 1 deletion src/components/forms/schemas/formEditCareerPath.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export const formEditCareerPath: FormSchema<{
title: 'Famille de métier 1*',
component: 'select',
options: BUSINESS_LINES,
isMulti: false,
isRequired: true,
},
{
Expand Down Expand Up @@ -79,11 +80,12 @@ export const formEditCareerPath: FormSchema<{
name: 'businessLine1',
title: 'Famille de métier 2',
component: 'select',
isMulti: false,
options: BUSINESS_LINES,
rules: [
{
method: (fieldValue, fieldValues) => {
return fieldValue || !fieldValues.ambition1;
return !!fieldValue || !fieldValues.ambition1;
},
message: 'Obligatoire',
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ export const formEditExternalOpportunityAsAdmin: FormSchema<{
name: 'department',
title: 'Localisation *',
component: 'select',
isMulti: false,
options: DEPARTMENTS_FILTERS,
isRequired: true,
},
Expand Down
1 change: 1 addition & 0 deletions src/components/forms/schemas/formEditOpportunity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@ export const formEditOpportunity: FormSchema<{
component: 'select',
options: DEPARTMENTS_FILTERS,
isRequired: true,
isMulti: false,
},
{
id: 'address',
Expand Down

0 comments on commit 94cf5d6

Please sign in to comment.