@redneckz/wildless-cms-uni-blocks 0.14.821 → 0.14.823
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/bundle.umd.js +101 -25
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
- package/bundle/retail/validator/validators.d.ts +8 -1
- package/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
- package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +9 -2
- package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
- package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +12 -5
- package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
- package/dist/components/CreditCardForm/CreditCardFormStep.js +7 -1
- package/dist/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
- package/dist/components/CreditForm/CreditFormStep.js +7 -1
- package/dist/components/CreditForm/CreditFormStep.js.map +1 -1
- package/dist/components/DebitForm/DebitFormStep.js +7 -1
- package/dist/components/DebitForm/DebitFormStep.js.map +1 -1
- package/dist/retail/components/Fields/DeliveryDateFiels.js +1 -1
- package/dist/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
- package/dist/retail/components/Fields/DulIssueDateField.js +6 -1
- package/dist/retail/components/Fields/DulIssueDateField.js.map +1 -1
- package/dist/retail/components/Fields/MiddleNameField.js +10 -1
- package/dist/retail/components/Fields/MiddleNameField.js.map +1 -1
- package/dist/retail/components/Fields/NameField.js +10 -1
- package/dist/retail/components/Fields/NameField.js.map +1 -1
- package/dist/retail/components/Fields/SurnameField.js +10 -1
- package/dist/retail/components/Fields/SurnameField.js.map +1 -1
- package/dist/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
- package/dist/retail/validator/getLimitedBirthdayValidation.js +21 -0
- package/dist/retail/validator/getLimitedBirthdayValidation.js.map +1 -0
- package/dist/retail/validator/validatorObj.js +3 -1
- package/dist/retail/validator/validatorObj.js.map +1 -1
- package/dist/retail/validator/validators.d.ts +8 -1
- package/dist/retail/validator/validators.js +14 -9
- package/dist/retail/validator/validators.js.map +1 -1
- package/dist/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
- package/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
- package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +9 -2
- package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
- package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +12 -5
- package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
- package/lib/components/CreditCardForm/CreditCardFormStep.js +7 -1
- package/lib/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
- package/lib/components/CreditForm/CreditFormStep.js +7 -1
- package/lib/components/CreditForm/CreditFormStep.js.map +1 -1
- package/lib/components/DebitForm/DebitFormStep.js +7 -1
- package/lib/components/DebitForm/DebitFormStep.js.map +1 -1
- package/lib/retail/components/Fields/DeliveryDateFiels.js +1 -1
- package/lib/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
- package/lib/retail/components/Fields/DulIssueDateField.js +6 -1
- package/lib/retail/components/Fields/DulIssueDateField.js.map +1 -1
- package/lib/retail/components/Fields/MiddleNameField.js +10 -1
- package/lib/retail/components/Fields/MiddleNameField.js.map +1 -1
- package/lib/retail/components/Fields/NameField.js +10 -1
- package/lib/retail/components/Fields/NameField.js.map +1 -1
- package/lib/retail/components/Fields/SurnameField.js +10 -1
- package/lib/retail/components/Fields/SurnameField.js.map +1 -1
- package/lib/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
- package/lib/retail/validator/getLimitedBirthdayValidation.js +18 -0
- package/lib/retail/validator/getLimitedBirthdayValidation.js.map +1 -0
- package/lib/retail/validator/validatorObj.js +4 -2
- package/lib/retail/validator/validatorObj.js.map +1 -1
- package/lib/retail/validator/validators.d.ts +8 -1
- package/lib/retail/validator/validators.js +12 -8
- package/lib/retail/validator/validators.js.map +1 -1
- package/lib/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
- package/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
- package/mobile/bundle/bundle.umd.js +95 -24
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
- package/mobile/bundle/retail/validator/validators.d.ts +8 -1
- package/mobile/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
- package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +9 -2
- package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
- package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +12 -5
- package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
- package/mobile/dist/components/CreditCardForm/CreditCardFormStep.js +7 -1
- package/mobile/dist/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
- package/mobile/dist/components/CreditForm/CreditFormStep.js +7 -1
- package/mobile/dist/components/CreditForm/CreditFormStep.js.map +1 -1
- package/mobile/dist/components/DebitForm/DebitFormStep.js +7 -1
- package/mobile/dist/components/DebitForm/DebitFormStep.js.map +1 -1
- package/mobile/dist/retail/components/Fields/DeliveryDateFiels.js +1 -1
- package/mobile/dist/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
- package/mobile/dist/retail/components/Fields/DulIssueDateField.js +6 -1
- package/mobile/dist/retail/components/Fields/DulIssueDateField.js.map +1 -1
- package/mobile/dist/retail/components/Fields/MiddleNameField.js +10 -1
- package/mobile/dist/retail/components/Fields/MiddleNameField.js.map +1 -1
- package/mobile/dist/retail/components/Fields/NameField.js +10 -1
- package/mobile/dist/retail/components/Fields/NameField.js.map +1 -1
- package/mobile/dist/retail/components/Fields/SurnameField.js +10 -1
- package/mobile/dist/retail/components/Fields/SurnameField.js.map +1 -1
- package/mobile/dist/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
- package/mobile/dist/retail/validator/getLimitedBirthdayValidation.js +21 -0
- package/mobile/dist/retail/validator/getLimitedBirthdayValidation.js.map +1 -0
- package/mobile/dist/retail/validator/validatorObj.js +3 -1
- package/mobile/dist/retail/validator/validatorObj.js.map +1 -1
- package/mobile/dist/retail/validator/validators.d.ts +8 -1
- package/mobile/dist/retail/validator/validators.js +14 -9
- package/mobile/dist/retail/validator/validators.js.map +1 -1
- package/mobile/dist/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
- package/mobile/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
- package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +9 -2
- package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
- package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +12 -5
- package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
- package/mobile/lib/components/CreditCardForm/CreditCardFormStep.js +7 -1
- package/mobile/lib/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
- package/mobile/lib/components/CreditForm/CreditFormStep.js +7 -1
- package/mobile/lib/components/CreditForm/CreditFormStep.js.map +1 -1
- package/mobile/lib/components/DebitForm/DebitFormStep.js +7 -1
- package/mobile/lib/components/DebitForm/DebitFormStep.js.map +1 -1
- package/mobile/lib/retail/components/Fields/DeliveryDateFiels.js +1 -1
- package/mobile/lib/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
- package/mobile/lib/retail/components/Fields/DulIssueDateField.js +6 -1
- package/mobile/lib/retail/components/Fields/DulIssueDateField.js.map +1 -1
- package/mobile/lib/retail/components/Fields/MiddleNameField.js +10 -1
- package/mobile/lib/retail/components/Fields/MiddleNameField.js.map +1 -1
- package/mobile/lib/retail/components/Fields/NameField.js +10 -1
- package/mobile/lib/retail/components/Fields/NameField.js.map +1 -1
- package/mobile/lib/retail/components/Fields/SurnameField.js +10 -1
- package/mobile/lib/retail/components/Fields/SurnameField.js.map +1 -1
- package/mobile/lib/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
- package/mobile/lib/retail/validator/getLimitedBirthdayValidation.js +18 -0
- package/mobile/lib/retail/validator/getLimitedBirthdayValidation.js.map +1 -0
- package/mobile/lib/retail/validator/validatorObj.js +4 -2
- package/mobile/lib/retail/validator/validatorObj.js.map +1 -1
- package/mobile/lib/retail/validator/validators.d.ts +8 -1
- package/mobile/lib/retail/validator/validators.js +12 -8
- package/mobile/lib/retail/validator/validators.js.map +1 -1
- package/mobile/lib/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
- package/mobile/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
- package/mobile/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +17 -6
- package/mobile/src/components/ApplicationLeadForm/useApplicationLeadApi.tsx +13 -5
- package/mobile/src/components/CreditCardForm/CreditCardFormStep.tsx +9 -1
- package/mobile/src/components/CreditForm/CreditFormStep.tsx +10 -1
- package/mobile/src/components/DebitForm/DebitFormStep.tsx +9 -1
- package/mobile/src/retail/components/Fields/DeliveryDateFiels.tsx +1 -1
- package/mobile/src/retail/components/Fields/DulIssueDateField.tsx +17 -7
- package/mobile/src/retail/components/Fields/MiddleNameField.tsx +23 -9
- package/mobile/src/retail/components/Fields/NameField.tsx +23 -9
- package/mobile/src/retail/components/Fields/SurnameField.tsx +23 -9
- package/mobile/src/retail/validator/getLimitedBirthdayValidation.ts +21 -0
- package/mobile/src/retail/validator/validatorObj.ts +4 -2
- package/mobile/src/retail/validator/validators.ts +31 -13
- package/mobile/src/ui-kit/DatePicker/DatePickerControl.tsx +3 -1
- package/package.json +1 -1
- package/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +17 -6
- package/src/components/ApplicationLeadForm/useApplicationLeadApi.tsx +13 -5
- package/src/components/CreditCardForm/CreditCardFormStep.tsx +9 -1
- package/src/components/CreditForm/CreditFormStep.tsx +10 -1
- package/src/components/DebitForm/DebitFormStep.tsx +9 -1
- package/src/retail/components/Fields/DeliveryDateFiels.tsx +1 -1
- package/src/retail/components/Fields/DulIssueDateField.tsx +17 -7
- package/src/retail/components/Fields/MiddleNameField.tsx +23 -9
- package/src/retail/components/Fields/NameField.tsx +23 -9
- package/src/retail/components/Fields/SurnameField.tsx +23 -9
- package/src/retail/validator/getLimitedBirthdayValidation.ts +21 -0
- package/src/retail/validator/validatorObj.ts +4 -2
- package/src/retail/validator/validators.ts +31 -13
- package/src/ui-kit/DatePicker/DatePickerControl.tsx +3 -1
|
@@ -5,6 +5,7 @@ import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
|
|
|
5
5
|
import { type LeadFormState } from '../../retail/model/LeadFormState';
|
|
6
6
|
import { calculateInputs } from '../../retail/utils/calculateInputs';
|
|
7
7
|
import { renderStep } from '../../retail/utils/renderStep';
|
|
8
|
+
import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
|
|
8
9
|
import { validatorObj } from '../../retail/validator/validatorObj';
|
|
9
10
|
import { getFormValidator } from '../../ui-kit/FormField/getObjectValidator';
|
|
10
11
|
import { StepsNavigationButtons } from './StepsNavigationButtons';
|
|
@@ -18,6 +19,13 @@ export interface CreditCardFormStepProps {
|
|
|
18
19
|
onFinish?: () => void;
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
const PRODUCT_TYPE = 'creditCard';
|
|
23
|
+
|
|
24
|
+
const extendedValidatorObj = {
|
|
25
|
+
...validatorObj,
|
|
26
|
+
limitedBirthday: getLimitedBirthdayValidation(PRODUCT_TYPE),
|
|
27
|
+
};
|
|
28
|
+
|
|
21
29
|
export const CreditCardFormStep = JSX<CreditCardFormStepProps>(
|
|
22
30
|
({ step, sections, onPrevStep, onNextStep, onFinish }) => {
|
|
23
31
|
const inputs = useMemo(
|
|
@@ -30,7 +38,7 @@ export const CreditCardFormStep = JSX<CreditCardFormStepProps>(
|
|
|
30
38
|
// TODO Слишком сложно
|
|
31
39
|
getFormValidator(
|
|
32
40
|
calculateInputs((_) => formState[_])(inputs, step),
|
|
33
|
-
|
|
41
|
+
extendedValidatorObj,
|
|
34
42
|
)(formState),
|
|
35
43
|
[inputs],
|
|
36
44
|
);
|
|
@@ -6,6 +6,7 @@ import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
|
|
|
6
6
|
import { type LeadFormState } from '../../retail/model/LeadFormState';
|
|
7
7
|
import { calculateInputs } from '../../retail/utils/calculateInputs';
|
|
8
8
|
import { renderStep } from '../../retail/utils/renderStep';
|
|
9
|
+
import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
|
|
9
10
|
import { validatorObj } from '../../retail/validator/validatorObj';
|
|
10
11
|
import { getFormValidator } from '../../ui-kit/FormField/getObjectValidator';
|
|
11
12
|
import { type ProgramsSourceProps } from './ProgramsSourceProps';
|
|
@@ -21,6 +22,13 @@ export interface CreditFormStepProps {
|
|
|
21
22
|
onFinish?: () => void;
|
|
22
23
|
}
|
|
23
24
|
|
|
25
|
+
const PRODUCT_TYPE = 'credit';
|
|
26
|
+
|
|
27
|
+
const extendedValidatorObj = {
|
|
28
|
+
...validatorObj,
|
|
29
|
+
limitedBirthday: getLimitedBirthdayValidation(PRODUCT_TYPE),
|
|
30
|
+
};
|
|
31
|
+
|
|
24
32
|
export const CreditFormStep = JSX<CreditFormStepProps>(
|
|
25
33
|
({ step, sections, programsSource, onPrevStep, onNextStep, onFinish }) => {
|
|
26
34
|
const { programId } = useRetailFormStore();
|
|
@@ -30,12 +38,13 @@ export const CreditFormStep = JSX<CreditFormStepProps>(
|
|
|
30
38
|
() => sections?.flatMap((_: SectionsRetailProps) => _?.inputs ?? []),
|
|
31
39
|
[sections],
|
|
32
40
|
);
|
|
41
|
+
|
|
33
42
|
const formValidator = useCallback(
|
|
34
43
|
(formState: LeadFormState) =>
|
|
35
44
|
// TODO Слишком сложно
|
|
36
45
|
getFormValidator(
|
|
37
46
|
calculateInputs((_) => formState[_])(inputs, step),
|
|
38
|
-
|
|
47
|
+
extendedValidatorObj,
|
|
39
48
|
)(formState),
|
|
40
49
|
[inputs],
|
|
41
50
|
);
|
|
@@ -5,6 +5,7 @@ import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
|
|
|
5
5
|
import type { LeadFormState } from '../../retail/model/LeadFormState';
|
|
6
6
|
import { calculateInputs } from '../../retail/utils/calculateInputs';
|
|
7
7
|
import { renderStep } from '../../retail/utils/renderStep';
|
|
8
|
+
import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
|
|
8
9
|
import { validatorObj } from '../../retail/validator/validatorObj';
|
|
9
10
|
import { getFormValidator } from '../../ui-kit/FormField/getObjectValidator';
|
|
10
11
|
import { StepsNavigationButtons } from './StepsNavigationButtons';
|
|
@@ -18,6 +19,13 @@ export interface DebitFormStepProps {
|
|
|
18
19
|
onFinish?: () => void;
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
const PRODUCT_TYPE = 'debitCard';
|
|
23
|
+
|
|
24
|
+
const extendedValidatorObj = {
|
|
25
|
+
...validatorObj,
|
|
26
|
+
limitedBirthday: getLimitedBirthdayValidation(PRODUCT_TYPE),
|
|
27
|
+
};
|
|
28
|
+
|
|
21
29
|
export const DebitFormStep = JSX<DebitFormStepProps>(
|
|
22
30
|
({ step, sections, onPrevStep, onNextStep, onFinish }) => {
|
|
23
31
|
const inputs = useMemo(
|
|
@@ -30,7 +38,7 @@ export const DebitFormStep = JSX<DebitFormStepProps>(
|
|
|
30
38
|
// TODO Слишком сложно
|
|
31
39
|
getFormValidator(
|
|
32
40
|
calculateInputs((_) => formState[_])(inputs, step),
|
|
33
|
-
|
|
41
|
+
extendedValidatorObj,
|
|
34
42
|
)(formState),
|
|
35
43
|
[inputs],
|
|
36
44
|
);
|
|
@@ -3,5 +3,5 @@ import { DatePickerControl } from '../../../ui-kit/DatePicker/DatePickerControl'
|
|
|
3
3
|
import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProps';
|
|
4
4
|
|
|
5
5
|
export const DeliveryDateFiels = JSX<CustomFieldProps>(({ field, input }) => (
|
|
6
|
-
<DatePickerControl label="Дата доставки" {...field(input?.name ?? '')} />
|
|
6
|
+
<DatePickerControl label="Дата доставки" {...field(input?.name ?? '')} minDate={new Date()} />
|
|
7
7
|
));
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useMemo } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
3
|
import { DatePickerControl } from '../../../ui-kit/DatePicker/DatePickerControl';
|
|
3
4
|
import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProps';
|
|
4
5
|
import { isEsiaAuthorize } from '../../utils/isEsiaAuthorize';
|
|
5
6
|
|
|
6
|
-
export const DulIssueDateField = JSX<CustomFieldProps>(({ field, input }) =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export const DulIssueDateField = JSX<CustomFieldProps>(({ field, input }) => {
|
|
8
|
+
const birthDate = field('limitedBirthday')?.value as Date;
|
|
9
|
+
const startDulIssueDate = useMemo(
|
|
10
|
+
() => new Date(birthDate.getFullYear() + 14, birthDate.getMonth(), birthDate.getDate()),
|
|
11
|
+
[birthDate],
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<DatePickerControl
|
|
16
|
+
label="Дата выдачи"
|
|
17
|
+
{...field(input?.name ?? '')}
|
|
18
|
+
disabled={input?.filledByEsia && isEsiaAuthorize(field, input?.name ?? '')}
|
|
19
|
+
minDate={startDulIssueDate}
|
|
20
|
+
/>
|
|
21
|
+
);
|
|
22
|
+
});
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
3
|
import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProps';
|
|
3
4
|
import { isEsiaAuthorize } from '../../utils/isEsiaAuthorize';
|
|
5
|
+
import { retailCyrillicPattern } from '../../validator/validators';
|
|
4
6
|
import { DaDataInputControl } from '../DaDataInputControl/DaDataInputControl';
|
|
5
7
|
|
|
6
|
-
export const MiddleNameField = JSX<CustomFieldProps>(({ field, input }) =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
)
|
|
8
|
+
export const MiddleNameField = JSX<CustomFieldProps>(({ field, input }) => {
|
|
9
|
+
const onChange = useCallback(
|
|
10
|
+
(value: string) => {
|
|
11
|
+
if (retailCyrillicPattern.test(value) || value.length === 0) {
|
|
12
|
+
field('middleName')?.onChange?.(value);
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
[field],
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<DaDataInputControl
|
|
20
|
+
label="Отчество (Обязательно, при наличии)"
|
|
21
|
+
maxLength={60}
|
|
22
|
+
disabled={input?.filledByEsia && isEsiaAuthorize(field, input?.name ?? '')}
|
|
23
|
+
{...field(input?.name ?? '')}
|
|
24
|
+
{...input}
|
|
25
|
+
onChange={onChange}
|
|
26
|
+
/>
|
|
27
|
+
);
|
|
28
|
+
});
|
|
@@ -1,14 +1,28 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
3
|
import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProps';
|
|
3
4
|
import { isEsiaAuthorize } from '../../utils/isEsiaAuthorize';
|
|
5
|
+
import { retailCyrillicPattern } from '../../validator/validators';
|
|
4
6
|
import { DaDataInputControl } from '../DaDataInputControl/DaDataInputControl';
|
|
5
7
|
|
|
6
|
-
export const NameField = JSX<CustomFieldProps>(({ field, input }) =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
)
|
|
8
|
+
export const NameField = JSX<CustomFieldProps>(({ field, input }) => {
|
|
9
|
+
const onChange = useCallback(
|
|
10
|
+
(value: string) => {
|
|
11
|
+
if (retailCyrillicPattern.test(value) || value.length === 0) {
|
|
12
|
+
field('name')?.onChange?.(value);
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
[field],
|
|
16
|
+
);
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<DaDataInputControl
|
|
20
|
+
label="Имя"
|
|
21
|
+
maxLength={60}
|
|
22
|
+
disabled={input?.filledByEsia && isEsiaAuthorize(field, input.name ?? '')}
|
|
23
|
+
{...field(input?.name ?? '')}
|
|
24
|
+
{...input}
|
|
25
|
+
onChange={onChange}
|
|
26
|
+
/>
|
|
27
|
+
);
|
|
28
|
+
});
|
|
@@ -1,16 +1,30 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
3
|
import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProps';
|
|
3
4
|
import { isEsiaAuthorize } from '../../utils/isEsiaAuthorize';
|
|
5
|
+
import { retailCyrillicPattern } from '../../validator/validators';
|
|
4
6
|
import { DaDataInputControl } from '../DaDataInputControl/DaDataInputControl';
|
|
5
7
|
|
|
6
8
|
const FIELD_NAME = 'surname';
|
|
7
9
|
|
|
8
|
-
export const SurnameField = JSX<CustomFieldProps>(({ field, input }) =>
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
)
|
|
10
|
+
export const SurnameField = JSX<CustomFieldProps>(({ field, input }) => {
|
|
11
|
+
const onChange = useCallback(
|
|
12
|
+
(value: string) => {
|
|
13
|
+
if (retailCyrillicPattern.test(value) || value.length === 0) {
|
|
14
|
+
field('surname')?.onChange?.(value);
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
[field],
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<DaDataInputControl
|
|
22
|
+
label="Фамилия"
|
|
23
|
+
maxLength={60}
|
|
24
|
+
disabled={input?.filledByEsia && isEsiaAuthorize(field, FIELD_NAME)}
|
|
25
|
+
{...field(input?.name ?? '')}
|
|
26
|
+
{...input}
|
|
27
|
+
onChange={onChange}
|
|
28
|
+
/>
|
|
29
|
+
);
|
|
30
|
+
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ProductType } from '../../components/ApplicationLeadForm/ApplicationLeadFormContent';
|
|
2
|
+
import { limitedBirthdayValidator, type LimitedBirthdayValidationParams } from './validators';
|
|
3
|
+
|
|
4
|
+
const limitedBirthdayValidationData: Record<ProductType, LimitedBirthdayValidationParams> = {
|
|
5
|
+
credit: {
|
|
6
|
+
minAge: 23,
|
|
7
|
+
maxAge: 75,
|
|
8
|
+
errorMessage: 'Допустимый возраст заёмщика - от 23 до 75 лет',
|
|
9
|
+
},
|
|
10
|
+
creditCard: {
|
|
11
|
+
minAge: 21,
|
|
12
|
+
errorMessage: 'Допустимый возраст заёмщика - от 21 года',
|
|
13
|
+
},
|
|
14
|
+
debitCard: {
|
|
15
|
+
minAge: 18,
|
|
16
|
+
errorMessage: 'Допустимый возраст - от 18 лет',
|
|
17
|
+
},
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export const getLimitedBirthdayValidation = (productType: ProductType) =>
|
|
21
|
+
limitedBirthdayValidator(limitedBirthdayValidationData[productType]);
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
codeWordValidator,
|
|
12
12
|
jobNumberValidator,
|
|
13
13
|
lengthStringValidator,
|
|
14
|
-
|
|
14
|
+
nameRetailValidator,
|
|
15
15
|
numberValidator,
|
|
16
16
|
serieValidator,
|
|
17
17
|
snilsValidator,
|
|
@@ -53,7 +53,6 @@ const validatorRetailObj: Record<string, Validator> = {
|
|
|
53
53
|
addressRetail: defaultSelectValidator('Выберите адрес банка'),
|
|
54
54
|
addressMatch: defaultValidator(),
|
|
55
55
|
sex: defaultValidator('Укажите свой пол'),
|
|
56
|
-
limitedBirthday: limitedBirthdayValidator(),
|
|
57
56
|
birthPlace: defaultValidator('Укажите место рождения'),
|
|
58
57
|
education: defaultSelectValidator('Выберите ваше образование'),
|
|
59
58
|
housing: defaultSelectValidator('Выберите тип жилья'),
|
|
@@ -88,6 +87,9 @@ const validatorRetailObj: Record<string, Validator> = {
|
|
|
88
87
|
partInBusiness: defaultValidator(),
|
|
89
88
|
regionRetail: defaultSelectValidator('Выберите регион'),
|
|
90
89
|
latinSurname: defaultValidator('Укажите фамилию'),
|
|
90
|
+
surname: nameRetailValidator('Укажите свою фамилию на кириллице'),
|
|
91
|
+
name: nameRetailValidator('Укажите своё имя на кириллице'),
|
|
92
|
+
middleName: nameRetailValidator('Укажите своё отчество на кириллице'),
|
|
91
93
|
};
|
|
92
94
|
|
|
93
95
|
export const validatorObj = {
|
|
@@ -6,9 +6,13 @@ const ERROR_MESSAGE = 'Некорректно заполненное поле';
|
|
|
6
6
|
|
|
7
7
|
const ADDRESS_ERROR_MESSAGE = 'Укажите регион, город/населенный пункт, улицу, дом';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export interface LimitedBirthdayValidationParams {
|
|
10
|
+
minAge: number;
|
|
11
|
+
maxAge?: number;
|
|
12
|
+
errorMessage: string;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const retailCyrillicPattern = /^[\u0400-\u04FF-\s]+$/u;
|
|
12
16
|
|
|
13
17
|
const addressDaDataValidate = (address: Address) =>
|
|
14
18
|
Boolean(address.region && (address.city || address.locality) && address.house);
|
|
@@ -25,6 +29,11 @@ export const codeWordValidator = (errorMsg?: string) =>
|
|
|
25
29
|
errorMsg ?? ERROR_MESSAGE,
|
|
26
30
|
);
|
|
27
31
|
|
|
32
|
+
export const nameRetailValidator = (errorMsg?: string) =>
|
|
33
|
+
validator((_) => typeof _ === 'string' && _.length > 1 && retailCyrillicPattern.test(_))(
|
|
34
|
+
errorMsg ?? ERROR_MESSAGE,
|
|
35
|
+
);
|
|
36
|
+
|
|
28
37
|
export const jobNumberValidator = (errorMsg?: string) =>
|
|
29
38
|
validator((_) => typeof _ === 'string' && /^[0-9]{1,2}$/g.test(_))(errorMsg ?? ERROR_MESSAGE);
|
|
30
39
|
|
|
@@ -33,20 +42,29 @@ export const lengthStringValidator = (inputLength: number, errorMsg?: string) =>
|
|
|
33
42
|
errorMsg ?? ERROR_MESSAGE,
|
|
34
43
|
);
|
|
35
44
|
|
|
36
|
-
const limitedBirthdayValidate =
|
|
37
|
-
|
|
45
|
+
const limitedBirthdayValidate =
|
|
46
|
+
({ minAge, maxAge }: LimitedBirthdayValidationParams) =>
|
|
47
|
+
(date?: Date) => {
|
|
48
|
+
const today = new Date();
|
|
38
49
|
|
|
39
|
-
|
|
40
|
-
|
|
50
|
+
const minDate = new Date(today.getFullYear() - minAge, today.getMonth(), today.getDate());
|
|
51
|
+
const maxDate = maxAge
|
|
52
|
+
? new Date(today.getFullYear() - maxAge, today.getMonth(), today.getDate())
|
|
53
|
+
: null;
|
|
41
54
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
55
|
+
if (!date || date > minDate) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
45
58
|
|
|
46
|
-
|
|
47
|
-
|
|
59
|
+
if (maxDate && date < maxDate) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return true;
|
|
64
|
+
};
|
|
48
65
|
|
|
49
|
-
export const limitedBirthdayValidator = () =>
|
|
66
|
+
export const limitedBirthdayValidator = (params: LimitedBirthdayValidationParams) =>
|
|
67
|
+
validator(limitedBirthdayValidate(params))(params.errorMessage);
|
|
50
68
|
|
|
51
69
|
export const numberValidator = (errorMsg: string) =>
|
|
52
70
|
validator((_) => typeof _ === 'string' && _.length === 6)(errorMsg);
|
|
@@ -6,7 +6,9 @@ import { type ControlProps } from '../ControlProps';
|
|
|
6
6
|
import { renderErrorText } from '../Input/renderErrorText';
|
|
7
7
|
import { DatePicker } from './DatePicker';
|
|
8
8
|
|
|
9
|
-
export interface DatePickerControlProps extends DefaultControlType, ControlProps<Date> {
|
|
9
|
+
export interface DatePickerControlProps extends DefaultControlType, ControlProps<Date> {
|
|
10
|
+
minDate?: Date;
|
|
11
|
+
}
|
|
10
12
|
|
|
11
13
|
export const DatePickerControl = JSX<DatePickerControlProps>(
|
|
12
14
|
({ className, label, error, errors, ...rest }) => (
|
package/package.json
CHANGED
|
@@ -2,7 +2,9 @@ import { JSX } from '@redneckz/uni-jsx';
|
|
|
2
2
|
import { useEffect, useMemo } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
3
|
import { useBool } from '@redneckz/uni-jsx/lib/hooks/useBool';
|
|
4
4
|
import { useForm } from '../../hooks/useForm/useForm';
|
|
5
|
+
import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
|
|
5
6
|
import { type FieldRetailDef } from '../../retail/model/RetailFormContent';
|
|
7
|
+
import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
|
|
6
8
|
import { validatorObj } from '../../retail/validator/validatorObj';
|
|
7
9
|
import { ApplicationFormLayout } from '../../ui-kit/ApplicationFormLayout/ApplicationFormLayout';
|
|
8
10
|
import { useDialog } from '../../ui-kit/DialogManager/useDialog';
|
|
@@ -15,7 +17,7 @@ import { Text } from '../../ui-kit/Text/Text';
|
|
|
15
17
|
import { type UniBlockProps } from '../../UniBlock/UniBlockProps';
|
|
16
18
|
import { style } from '../../utils/style';
|
|
17
19
|
import { getApplicationFormData } from './applicationFormData';
|
|
18
|
-
import { type ApplicationLeadFormContent } from './ApplicationLeadFormContent';
|
|
20
|
+
import { type ApplicationLeadFormContent, type ProductType } from './ApplicationLeadFormContent';
|
|
19
21
|
import { renderInputs } from './renderInputs';
|
|
20
22
|
import { renderSubmitButton } from './renderSubmitButton';
|
|
21
23
|
import { useApplicationLeadApi } from './useApplicationLeadApi';
|
|
@@ -36,12 +38,13 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
|
|
|
36
38
|
}) => {
|
|
37
39
|
const [esiaError, { setTrue: setEsiaError }] = useBool(false);
|
|
38
40
|
const applicationFormData = useMemo(() => getApplicationFormData(productType), [productType]);
|
|
39
|
-
const inputs = useMemo(
|
|
40
|
-
() => (applicationFormData?.flatMap((_) => _?.inputs) || []) as FieldRetailDef[],
|
|
41
|
-
[applicationFormData],
|
|
42
|
-
);
|
|
41
|
+
const inputs = useMemo(() => getInputs(applicationFormData), [applicationFormData]);
|
|
43
42
|
|
|
44
|
-
const
|
|
43
|
+
const extendedValidatorObj = useMemo(() => getExtendedValidatorObj(productType), [productType]);
|
|
44
|
+
const formValidator = useMemo(
|
|
45
|
+
() => getFormValidator(inputs, extendedValidatorObj),
|
|
46
|
+
[inputs, extendedValidatorObj],
|
|
47
|
+
);
|
|
45
48
|
|
|
46
49
|
const [initialFormState, { isLoading }] = useInitApplicationLead({
|
|
47
50
|
inputs,
|
|
@@ -98,3 +101,11 @@ export const ApplicationLeadForm = JSX<ApplicationLeadFormProps>(
|
|
|
98
101
|
);
|
|
99
102
|
},
|
|
100
103
|
);
|
|
104
|
+
|
|
105
|
+
const getInputs = (applicationFormData?: SectionsRetailProps[]) =>
|
|
106
|
+
(applicationFormData?.flatMap((_) => _?.inputs) || []) as FieldRetailDef[];
|
|
107
|
+
|
|
108
|
+
const getExtendedValidatorObj = (productType: ProductType) => ({
|
|
109
|
+
...validatorObj,
|
|
110
|
+
limitedBirthday: getLimitedBirthdayValidation(productType),
|
|
111
|
+
});
|
|
@@ -59,16 +59,17 @@ export const useApplicationLeadApi = ({
|
|
|
59
59
|
}
|
|
60
60
|
try {
|
|
61
61
|
startSending();
|
|
62
|
+
const transformedFormData = transformFormData(formData);
|
|
62
63
|
const profileId = await createUserProfile({
|
|
63
|
-
profile: { phone: formatPhone(
|
|
64
|
+
profile: { phone: formatPhone(transformedFormData.phone as string) },
|
|
64
65
|
});
|
|
65
66
|
|
|
66
|
-
if (profileId &&
|
|
67
|
+
if (profileId && transformedFormData?.phone) {
|
|
67
68
|
const sendCurrentTask = async () => {
|
|
68
69
|
await updateUserData({
|
|
69
70
|
programId,
|
|
70
71
|
profileId,
|
|
71
|
-
formData,
|
|
72
|
+
formData: transformedFormData,
|
|
72
73
|
productType,
|
|
73
74
|
saveUserData,
|
|
74
75
|
sendAspects,
|
|
@@ -77,7 +78,7 @@ export const useApplicationLeadApi = ({
|
|
|
77
78
|
if (productType === 'debitCard') {
|
|
78
79
|
openEsiaLoginDialog();
|
|
79
80
|
} else {
|
|
80
|
-
consentBkiDialog.open(
|
|
81
|
+
consentBkiDialog.open(transformedFormData.phone, profileId);
|
|
81
82
|
}
|
|
82
83
|
};
|
|
83
84
|
const handleSuccessVerify = async () => {
|
|
@@ -104,7 +105,7 @@ export const useApplicationLeadApi = ({
|
|
|
104
105
|
const acceptedConsents = getAcceptedConsents(formData, productType);
|
|
105
106
|
|
|
106
107
|
verifyPhoneDialog.open({
|
|
107
|
-
phone:
|
|
108
|
+
phone: transformedFormData?.phone,
|
|
108
109
|
consents: acceptedConsents,
|
|
109
110
|
onSuccess: handleSuccessVerify,
|
|
110
111
|
});
|
|
@@ -224,3 +225,10 @@ const transformConsentsFields = (
|
|
|
224
225
|
consentAssignmentClaimsFlg: consentOthersFlg,
|
|
225
226
|
};
|
|
226
227
|
};
|
|
228
|
+
|
|
229
|
+
const transformFormData = (formData: LeadFormState): LeadFormState => ({
|
|
230
|
+
...formData,
|
|
231
|
+
surname: formData.surname?.trim(),
|
|
232
|
+
name: formData.name?.trim(),
|
|
233
|
+
middleName: formData.middleName?.trim(),
|
|
234
|
+
});
|
|
@@ -5,6 +5,7 @@ import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
|
|
|
5
5
|
import { type LeadFormState } from '../../retail/model/LeadFormState';
|
|
6
6
|
import { calculateInputs } from '../../retail/utils/calculateInputs';
|
|
7
7
|
import { renderStep } from '../../retail/utils/renderStep';
|
|
8
|
+
import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
|
|
8
9
|
import { validatorObj } from '../../retail/validator/validatorObj';
|
|
9
10
|
import { getFormValidator } from '../../ui-kit/FormField/getObjectValidator';
|
|
10
11
|
import { StepsNavigationButtons } from './StepsNavigationButtons';
|
|
@@ -18,6 +19,13 @@ export interface CreditCardFormStepProps {
|
|
|
18
19
|
onFinish?: () => void;
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
const PRODUCT_TYPE = 'creditCard';
|
|
23
|
+
|
|
24
|
+
const extendedValidatorObj = {
|
|
25
|
+
...validatorObj,
|
|
26
|
+
limitedBirthday: getLimitedBirthdayValidation(PRODUCT_TYPE),
|
|
27
|
+
};
|
|
28
|
+
|
|
21
29
|
export const CreditCardFormStep = JSX<CreditCardFormStepProps>(
|
|
22
30
|
({ step, sections, onPrevStep, onNextStep, onFinish }) => {
|
|
23
31
|
const inputs = useMemo(
|
|
@@ -30,7 +38,7 @@ export const CreditCardFormStep = JSX<CreditCardFormStepProps>(
|
|
|
30
38
|
// TODO Слишком сложно
|
|
31
39
|
getFormValidator(
|
|
32
40
|
calculateInputs((_) => formState[_])(inputs, step),
|
|
33
|
-
|
|
41
|
+
extendedValidatorObj,
|
|
34
42
|
)(formState),
|
|
35
43
|
[inputs],
|
|
36
44
|
);
|
|
@@ -6,6 +6,7 @@ import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
|
|
|
6
6
|
import { type LeadFormState } from '../../retail/model/LeadFormState';
|
|
7
7
|
import { calculateInputs } from '../../retail/utils/calculateInputs';
|
|
8
8
|
import { renderStep } from '../../retail/utils/renderStep';
|
|
9
|
+
import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
|
|
9
10
|
import { validatorObj } from '../../retail/validator/validatorObj';
|
|
10
11
|
import { getFormValidator } from '../../ui-kit/FormField/getObjectValidator';
|
|
11
12
|
import { type ProgramsSourceProps } from './ProgramsSourceProps';
|
|
@@ -21,6 +22,13 @@ export interface CreditFormStepProps {
|
|
|
21
22
|
onFinish?: () => void;
|
|
22
23
|
}
|
|
23
24
|
|
|
25
|
+
const PRODUCT_TYPE = 'credit';
|
|
26
|
+
|
|
27
|
+
const extendedValidatorObj = {
|
|
28
|
+
...validatorObj,
|
|
29
|
+
limitedBirthday: getLimitedBirthdayValidation(PRODUCT_TYPE),
|
|
30
|
+
};
|
|
31
|
+
|
|
24
32
|
export const CreditFormStep = JSX<CreditFormStepProps>(
|
|
25
33
|
({ step, sections, programsSource, onPrevStep, onNextStep, onFinish }) => {
|
|
26
34
|
const { programId } = useRetailFormStore();
|
|
@@ -30,12 +38,13 @@ export const CreditFormStep = JSX<CreditFormStepProps>(
|
|
|
30
38
|
() => sections?.flatMap((_: SectionsRetailProps) => _?.inputs ?? []),
|
|
31
39
|
[sections],
|
|
32
40
|
);
|
|
41
|
+
|
|
33
42
|
const formValidator = useCallback(
|
|
34
43
|
(formState: LeadFormState) =>
|
|
35
44
|
// TODO Слишком сложно
|
|
36
45
|
getFormValidator(
|
|
37
46
|
calculateInputs((_) => formState[_])(inputs, step),
|
|
38
|
-
|
|
47
|
+
extendedValidatorObj,
|
|
39
48
|
)(formState),
|
|
40
49
|
[inputs],
|
|
41
50
|
);
|
|
@@ -5,6 +5,7 @@ import { type SectionsRetailProps } from '../../retail/model/InputSectionsType';
|
|
|
5
5
|
import type { LeadFormState } from '../../retail/model/LeadFormState';
|
|
6
6
|
import { calculateInputs } from '../../retail/utils/calculateInputs';
|
|
7
7
|
import { renderStep } from '../../retail/utils/renderStep';
|
|
8
|
+
import { getLimitedBirthdayValidation } from '../../retail/validator/getLimitedBirthdayValidation';
|
|
8
9
|
import { validatorObj } from '../../retail/validator/validatorObj';
|
|
9
10
|
import { getFormValidator } from '../../ui-kit/FormField/getObjectValidator';
|
|
10
11
|
import { StepsNavigationButtons } from './StepsNavigationButtons';
|
|
@@ -18,6 +19,13 @@ export interface DebitFormStepProps {
|
|
|
18
19
|
onFinish?: () => void;
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
const PRODUCT_TYPE = 'debitCard';
|
|
23
|
+
|
|
24
|
+
const extendedValidatorObj = {
|
|
25
|
+
...validatorObj,
|
|
26
|
+
limitedBirthday: getLimitedBirthdayValidation(PRODUCT_TYPE),
|
|
27
|
+
};
|
|
28
|
+
|
|
21
29
|
export const DebitFormStep = JSX<DebitFormStepProps>(
|
|
22
30
|
({ step, sections, onPrevStep, onNextStep, onFinish }) => {
|
|
23
31
|
const inputs = useMemo(
|
|
@@ -30,7 +38,7 @@ export const DebitFormStep = JSX<DebitFormStepProps>(
|
|
|
30
38
|
// TODO Слишком сложно
|
|
31
39
|
getFormValidator(
|
|
32
40
|
calculateInputs((_) => formState[_])(inputs, step),
|
|
33
|
-
|
|
41
|
+
extendedValidatorObj,
|
|
34
42
|
)(formState),
|
|
35
43
|
[inputs],
|
|
36
44
|
);
|
|
@@ -3,5 +3,5 @@ import { DatePickerControl } from '../../../ui-kit/DatePicker/DatePickerControl'
|
|
|
3
3
|
import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProps';
|
|
4
4
|
|
|
5
5
|
export const DeliveryDateFiels = JSX<CustomFieldProps>(({ field, input }) => (
|
|
6
|
-
<DatePickerControl label="Дата доставки" {...field(input?.name ?? '')} />
|
|
6
|
+
<DatePickerControl label="Дата доставки" {...field(input?.name ?? '')} minDate={new Date()} />
|
|
7
7
|
));
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useMemo } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
3
|
import { DatePickerControl } from '../../../ui-kit/DatePicker/DatePickerControl';
|
|
3
4
|
import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProps';
|
|
4
5
|
import { isEsiaAuthorize } from '../../utils/isEsiaAuthorize';
|
|
5
6
|
|
|
6
|
-
export const DulIssueDateField = JSX<CustomFieldProps>(({ field, input }) =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
export const DulIssueDateField = JSX<CustomFieldProps>(({ field, input }) => {
|
|
8
|
+
const birthDate = field('limitedBirthday')?.value as Date;
|
|
9
|
+
const startDulIssueDate = useMemo(
|
|
10
|
+
() => new Date(birthDate.getFullYear() + 14, birthDate.getMonth(), birthDate.getDate()),
|
|
11
|
+
[birthDate],
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<DatePickerControl
|
|
16
|
+
label="Дата выдачи"
|
|
17
|
+
{...field(input?.name ?? '')}
|
|
18
|
+
disabled={input?.filledByEsia && isEsiaAuthorize(field, input?.name ?? '')}
|
|
19
|
+
minDate={startDulIssueDate}
|
|
20
|
+
/>
|
|
21
|
+
);
|
|
22
|
+
});
|