@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.
Files changed (159) hide show
  1. package/bundle/bundle.umd.js +101 -25
  2. package/bundle/bundle.umd.min.js +1 -1
  3. package/bundle/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
  4. package/bundle/retail/validator/validators.d.ts +8 -1
  5. package/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  6. package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +9 -2
  7. package/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  8. package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +12 -5
  9. package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  10. package/dist/components/CreditCardForm/CreditCardFormStep.js +7 -1
  11. package/dist/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
  12. package/dist/components/CreditForm/CreditFormStep.js +7 -1
  13. package/dist/components/CreditForm/CreditFormStep.js.map +1 -1
  14. package/dist/components/DebitForm/DebitFormStep.js +7 -1
  15. package/dist/components/DebitForm/DebitFormStep.js.map +1 -1
  16. package/dist/retail/components/Fields/DeliveryDateFiels.js +1 -1
  17. package/dist/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
  18. package/dist/retail/components/Fields/DulIssueDateField.js +6 -1
  19. package/dist/retail/components/Fields/DulIssueDateField.js.map +1 -1
  20. package/dist/retail/components/Fields/MiddleNameField.js +10 -1
  21. package/dist/retail/components/Fields/MiddleNameField.js.map +1 -1
  22. package/dist/retail/components/Fields/NameField.js +10 -1
  23. package/dist/retail/components/Fields/NameField.js.map +1 -1
  24. package/dist/retail/components/Fields/SurnameField.js +10 -1
  25. package/dist/retail/components/Fields/SurnameField.js.map +1 -1
  26. package/dist/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
  27. package/dist/retail/validator/getLimitedBirthdayValidation.js +21 -0
  28. package/dist/retail/validator/getLimitedBirthdayValidation.js.map +1 -0
  29. package/dist/retail/validator/validatorObj.js +3 -1
  30. package/dist/retail/validator/validatorObj.js.map +1 -1
  31. package/dist/retail/validator/validators.d.ts +8 -1
  32. package/dist/retail/validator/validators.js +14 -9
  33. package/dist/retail/validator/validators.js.map +1 -1
  34. package/dist/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  35. package/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  36. package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +9 -2
  37. package/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  38. package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +12 -5
  39. package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  40. package/lib/components/CreditCardForm/CreditCardFormStep.js +7 -1
  41. package/lib/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
  42. package/lib/components/CreditForm/CreditFormStep.js +7 -1
  43. package/lib/components/CreditForm/CreditFormStep.js.map +1 -1
  44. package/lib/components/DebitForm/DebitFormStep.js +7 -1
  45. package/lib/components/DebitForm/DebitFormStep.js.map +1 -1
  46. package/lib/retail/components/Fields/DeliveryDateFiels.js +1 -1
  47. package/lib/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
  48. package/lib/retail/components/Fields/DulIssueDateField.js +6 -1
  49. package/lib/retail/components/Fields/DulIssueDateField.js.map +1 -1
  50. package/lib/retail/components/Fields/MiddleNameField.js +10 -1
  51. package/lib/retail/components/Fields/MiddleNameField.js.map +1 -1
  52. package/lib/retail/components/Fields/NameField.js +10 -1
  53. package/lib/retail/components/Fields/NameField.js.map +1 -1
  54. package/lib/retail/components/Fields/SurnameField.js +10 -1
  55. package/lib/retail/components/Fields/SurnameField.js.map +1 -1
  56. package/lib/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
  57. package/lib/retail/validator/getLimitedBirthdayValidation.js +18 -0
  58. package/lib/retail/validator/getLimitedBirthdayValidation.js.map +1 -0
  59. package/lib/retail/validator/validatorObj.js +4 -2
  60. package/lib/retail/validator/validatorObj.js.map +1 -1
  61. package/lib/retail/validator/validators.d.ts +8 -1
  62. package/lib/retail/validator/validators.js +12 -8
  63. package/lib/retail/validator/validators.js.map +1 -1
  64. package/lib/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  65. package/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  66. package/mobile/bundle/bundle.umd.js +95 -24
  67. package/mobile/bundle/bundle.umd.min.js +1 -1
  68. package/mobile/bundle/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
  69. package/mobile/bundle/retail/validator/validators.d.ts +8 -1
  70. package/mobile/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  71. package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js +9 -2
  72. package/mobile/dist/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  73. package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +12 -5
  74. package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  75. package/mobile/dist/components/CreditCardForm/CreditCardFormStep.js +7 -1
  76. package/mobile/dist/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
  77. package/mobile/dist/components/CreditForm/CreditFormStep.js +7 -1
  78. package/mobile/dist/components/CreditForm/CreditFormStep.js.map +1 -1
  79. package/mobile/dist/components/DebitForm/DebitFormStep.js +7 -1
  80. package/mobile/dist/components/DebitForm/DebitFormStep.js.map +1 -1
  81. package/mobile/dist/retail/components/Fields/DeliveryDateFiels.js +1 -1
  82. package/mobile/dist/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
  83. package/mobile/dist/retail/components/Fields/DulIssueDateField.js +6 -1
  84. package/mobile/dist/retail/components/Fields/DulIssueDateField.js.map +1 -1
  85. package/mobile/dist/retail/components/Fields/MiddleNameField.js +10 -1
  86. package/mobile/dist/retail/components/Fields/MiddleNameField.js.map +1 -1
  87. package/mobile/dist/retail/components/Fields/NameField.js +10 -1
  88. package/mobile/dist/retail/components/Fields/NameField.js.map +1 -1
  89. package/mobile/dist/retail/components/Fields/SurnameField.js +10 -1
  90. package/mobile/dist/retail/components/Fields/SurnameField.js.map +1 -1
  91. package/mobile/dist/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
  92. package/mobile/dist/retail/validator/getLimitedBirthdayValidation.js +21 -0
  93. package/mobile/dist/retail/validator/getLimitedBirthdayValidation.js.map +1 -0
  94. package/mobile/dist/retail/validator/validatorObj.js +3 -1
  95. package/mobile/dist/retail/validator/validatorObj.js.map +1 -1
  96. package/mobile/dist/retail/validator/validators.d.ts +8 -1
  97. package/mobile/dist/retail/validator/validators.js +14 -9
  98. package/mobile/dist/retail/validator/validators.js.map +1 -1
  99. package/mobile/dist/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  100. package/mobile/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  101. package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js +9 -2
  102. package/mobile/lib/components/ApplicationLeadForm/ApplicationLeadForm.js.map +1 -1
  103. package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +12 -5
  104. package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
  105. package/mobile/lib/components/CreditCardForm/CreditCardFormStep.js +7 -1
  106. package/mobile/lib/components/CreditCardForm/CreditCardFormStep.js.map +1 -1
  107. package/mobile/lib/components/CreditForm/CreditFormStep.js +7 -1
  108. package/mobile/lib/components/CreditForm/CreditFormStep.js.map +1 -1
  109. package/mobile/lib/components/DebitForm/DebitFormStep.js +7 -1
  110. package/mobile/lib/components/DebitForm/DebitFormStep.js.map +1 -1
  111. package/mobile/lib/retail/components/Fields/DeliveryDateFiels.js +1 -1
  112. package/mobile/lib/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
  113. package/mobile/lib/retail/components/Fields/DulIssueDateField.js +6 -1
  114. package/mobile/lib/retail/components/Fields/DulIssueDateField.js.map +1 -1
  115. package/mobile/lib/retail/components/Fields/MiddleNameField.js +10 -1
  116. package/mobile/lib/retail/components/Fields/MiddleNameField.js.map +1 -1
  117. package/mobile/lib/retail/components/Fields/NameField.js +10 -1
  118. package/mobile/lib/retail/components/Fields/NameField.js.map +1 -1
  119. package/mobile/lib/retail/components/Fields/SurnameField.js +10 -1
  120. package/mobile/lib/retail/components/Fields/SurnameField.js.map +1 -1
  121. package/mobile/lib/retail/validator/getLimitedBirthdayValidation.d.ts +2 -0
  122. package/mobile/lib/retail/validator/getLimitedBirthdayValidation.js +18 -0
  123. package/mobile/lib/retail/validator/getLimitedBirthdayValidation.js.map +1 -0
  124. package/mobile/lib/retail/validator/validatorObj.js +4 -2
  125. package/mobile/lib/retail/validator/validatorObj.js.map +1 -1
  126. package/mobile/lib/retail/validator/validators.d.ts +8 -1
  127. package/mobile/lib/retail/validator/validators.js +12 -8
  128. package/mobile/lib/retail/validator/validators.js.map +1 -1
  129. package/mobile/lib/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  130. package/mobile/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  131. package/mobile/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +17 -6
  132. package/mobile/src/components/ApplicationLeadForm/useApplicationLeadApi.tsx +13 -5
  133. package/mobile/src/components/CreditCardForm/CreditCardFormStep.tsx +9 -1
  134. package/mobile/src/components/CreditForm/CreditFormStep.tsx +10 -1
  135. package/mobile/src/components/DebitForm/DebitFormStep.tsx +9 -1
  136. package/mobile/src/retail/components/Fields/DeliveryDateFiels.tsx +1 -1
  137. package/mobile/src/retail/components/Fields/DulIssueDateField.tsx +17 -7
  138. package/mobile/src/retail/components/Fields/MiddleNameField.tsx +23 -9
  139. package/mobile/src/retail/components/Fields/NameField.tsx +23 -9
  140. package/mobile/src/retail/components/Fields/SurnameField.tsx +23 -9
  141. package/mobile/src/retail/validator/getLimitedBirthdayValidation.ts +21 -0
  142. package/mobile/src/retail/validator/validatorObj.ts +4 -2
  143. package/mobile/src/retail/validator/validators.ts +31 -13
  144. package/mobile/src/ui-kit/DatePicker/DatePickerControl.tsx +3 -1
  145. package/package.json +1 -1
  146. package/src/components/ApplicationLeadForm/ApplicationLeadForm.tsx +17 -6
  147. package/src/components/ApplicationLeadForm/useApplicationLeadApi.tsx +13 -5
  148. package/src/components/CreditCardForm/CreditCardFormStep.tsx +9 -1
  149. package/src/components/CreditForm/CreditFormStep.tsx +10 -1
  150. package/src/components/DebitForm/DebitFormStep.tsx +9 -1
  151. package/src/retail/components/Fields/DeliveryDateFiels.tsx +1 -1
  152. package/src/retail/components/Fields/DulIssueDateField.tsx +17 -7
  153. package/src/retail/components/Fields/MiddleNameField.tsx +23 -9
  154. package/src/retail/components/Fields/NameField.tsx +23 -9
  155. package/src/retail/components/Fields/SurnameField.tsx +23 -9
  156. package/src/retail/validator/getLimitedBirthdayValidation.ts +21 -0
  157. package/src/retail/validator/validatorObj.ts +4 -2
  158. package/src/retail/validator/validators.ts +31 -13
  159. package/src/ui-kit/DatePicker/DatePickerControl.tsx +3 -1
@@ -2429,25 +2429,29 @@
2429
2429
 
2430
2430
  const ERROR_MESSAGE = 'Некорректно заполненное поле';
2431
2431
  const ADDRESS_ERROR_MESSAGE = 'Укажите регион, город/населенный пункт, улицу, дом';
2432
- const MIN_AGE = 23;
2433
- const MAX_AGE = 75;
2434
- const AGE_ERROR_MESSAGE = 'Допустимый возраст заёмщика - от 23 до 75 лет';
2432
+ const retailCyrillicPattern = /^[\u0400-\u04FF-\s]+$/u;
2435
2433
  const addressDaDataValidate = (address) => Boolean(address.region && (address.city || address.locality) && address.house);
2436
2434
  const addressDaDataValidator = () => validator(addressDaDataValidate)(ADDRESS_ERROR_MESSAGE);
2437
2435
  const addressOrganizationValidator = () => validator((address) => Boolean(address.fiasCode && (address.city || address.locality) && address.house))(ADDRESS_ERROR_MESSAGE);
2438
2436
  const codeWordValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length >= 3 && _.length <= 21 && isCyrillic(_))(errorMsg ?? ERROR_MESSAGE);
2437
+ const nameRetailValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length > 1 && retailCyrillicPattern.test(_))(errorMsg ?? ERROR_MESSAGE);
2439
2438
  const jobNumberValidator = (errorMsg) => validator((_) => typeof _ === 'string' && /^[0-9]{1,2}$/g.test(_))(errorMsg ?? ERROR_MESSAGE);
2440
2439
  const lengthStringValidator = (inputLength, errorMsg) => validator((_) => typeof _ === 'string' && _.length >= 1 && _.length <= inputLength)(errorMsg ?? ERROR_MESSAGE);
2441
- const limitedBirthdayValidate = (date) => {
2440
+ const limitedBirthdayValidate = ({ minAge, maxAge }) => (date) => {
2442
2441
  const today = new Date();
2443
- const minDate = new Date(today.getFullYear() - MIN_AGE, today.getMonth(), today.getDate());
2444
- const maxDate = new Date(today.getFullYear() - MAX_AGE, today.getMonth(), today.getDate());
2445
- if (!date || date > minDate || date < maxDate) {
2442
+ const minDate = new Date(today.getFullYear() - minAge, today.getMonth(), today.getDate());
2443
+ const maxDate = maxAge
2444
+ ? new Date(today.getFullYear() - maxAge, today.getMonth(), today.getDate())
2445
+ : null;
2446
+ if (!date || date > minDate) {
2447
+ return false;
2448
+ }
2449
+ if (maxDate && date < maxDate) {
2446
2450
  return false;
2447
2451
  }
2448
2452
  return true;
2449
2453
  };
2450
- const limitedBirthdayValidator = () => validator(limitedBirthdayValidate)(AGE_ERROR_MESSAGE);
2454
+ const limitedBirthdayValidator = (params) => validator(limitedBirthdayValidate(params))(params.errorMessage);
2451
2455
  const numberValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length === 6)(errorMsg);
2452
2456
  const serieValidator = (errorMsg) => validator((_) => typeof _ === 'string' && _.length === 4)(errorMsg);
2453
2457
  const snilsValidate = (snils) => {
@@ -2469,6 +2473,23 @@
2469
2473
  };
2470
2474
  const snilsValidator = (errorMsg) => validator(snilsValidate)(errorMsg);
2471
2475
 
2476
+ const limitedBirthdayValidationData = {
2477
+ credit: {
2478
+ minAge: 23,
2479
+ maxAge: 75,
2480
+ errorMessage: 'Допустимый возраст заёмщика - от 23 до 75 лет',
2481
+ },
2482
+ creditCard: {
2483
+ minAge: 21,
2484
+ errorMessage: 'Допустимый возраст заёмщика - от 21 года',
2485
+ },
2486
+ debitCard: {
2487
+ minAge: 18,
2488
+ errorMessage: 'Допустимый возраст - от 18 лет',
2489
+ },
2490
+ };
2491
+ const getLimitedBirthdayValidation = (productType) => limitedBirthdayValidator(limitedBirthdayValidationData[productType]);
2492
+
2472
2493
  const validatorConsentsObj = {
2473
2494
  processPersonalDataFlg: agreementValidator,
2474
2495
  consentProviderFlg: agreementValidator,
@@ -2503,7 +2524,6 @@
2503
2524
  addressRetail: defaultSelectValidator('Выберите адрес банка'),
2504
2525
  addressMatch: defaultValidator(),
2505
2526
  sex: defaultValidator('Укажите свой пол'),
2506
- limitedBirthday: limitedBirthdayValidator(),
2507
2527
  birthPlace: defaultValidator('Укажите место рождения'),
2508
2528
  education: defaultSelectValidator('Выберите ваше образование'),
2509
2529
  housing: defaultSelectValidator('Выберите тип жилья'),
@@ -2538,6 +2558,9 @@
2538
2558
  partInBusiness: defaultValidator(),
2539
2559
  regionRetail: defaultSelectValidator('Выберите регион'),
2540
2560
  latinSurname: defaultValidator('Укажите фамилию'),
2561
+ surname: nameRetailValidator('Укажите свою фамилию на кириллице'),
2562
+ name: nameRetailValidator('Укажите своё имя на кириллице'),
2563
+ middleName: nameRetailValidator('Укажите своё отчество на кириллице'),
2541
2564
  };
2542
2565
  const validatorObj = {
2543
2566
  ...validatorRetailObj,
@@ -4413,7 +4436,7 @@
4413
4436
  return (jsx(DaDataInputControl, { label: "\u0418\u041D\u041D", isInteger: true, maxLength: 12, ...input, ...field(input?.name ?? ''), onDaDataChange: onDaDataChange }));
4414
4437
  });
4415
4438
 
4416
- const DeliveryDateFiels = JSX(({ field, input }) => (jsx(DatePickerControl, { label: "\u0414\u0430\u0442\u0430 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438", ...field(input?.name ?? '') })));
4439
+ const DeliveryDateFiels = JSX(({ field, input }) => (jsx(DatePickerControl, { label: "\u0414\u0430\u0442\u0430 \u0434\u043E\u0441\u0442\u0430\u0432\u043A\u0438", ...field(input?.name ?? ''), minDate: new Date() })));
4417
4440
 
4418
4441
  const DeliveryTimeField = JSX(({ field, input }) => {
4419
4442
  const { data } = useLeadFormData('COURIER_DELIVERY_TIME');
@@ -4426,7 +4449,11 @@
4426
4449
 
4427
4450
  const DependentsField = JSX(({ field, input }) => (jsx(DaDataInputControl, { label: "\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0438\u043D\u044B\u0445 \u0438\u0436\u0434\u0438\u0432\u0435\u043D\u0446\u0435\u0432", placeholder: "\u0417\u0430 \u0438\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435\u043C \u0434\u0435\u0442\u0435\u0439 \u0434\u043E 18 \u043B\u0435\u0442", isInteger: true, maxLength: 2, ...field(input?.name ?? ''), ...input })));
4428
4451
 
4429
- const DulIssueDateField = JSX(({ field, input }) => (jsx(DatePickerControl, { label: "\u0414\u0430\u0442\u0430 \u0432\u044B\u0434\u0430\u0447\u0438", ...field(input?.name ?? ''), disabled: input?.filledByEsia && isEsiaAuthorize(field, input?.name ?? '') })));
4452
+ const DulIssueDateField = JSX(({ field, input }) => {
4453
+ const birthDate = field('limitedBirthday')?.value;
4454
+ const startDulIssueDate = useMemo(() => new Date(birthDate.getFullYear() + 14, birthDate.getMonth(), birthDate.getDate()), [birthDate]);
4455
+ return (jsx(DatePickerControl, { label: "\u0414\u0430\u0442\u0430 \u0432\u044B\u0434\u0430\u0447\u0438", ...field(input?.name ?? ''), disabled: input?.filledByEsia && isEsiaAuthorize(field, input?.name ?? ''), minDate: startDulIssueDate }));
4456
+ });
4430
4457
 
4431
4458
  const DulIssuedByField = JSX(({ field, input }) => {
4432
4459
  const { value: dulSubdivisionCode, onChange: changeDulSubdivisionCode } = field('dulSubdivisionCode');
@@ -4652,9 +4679,23 @@
4652
4679
  ];
4653
4680
  const MethodObtainField = JSX(({ field, input }) => (jsx(RadioButtonGroupControl, { orientation: "horizontal", items: METHODS_OF_OBTAIN, ...field(input?.name ?? '') })));
4654
4681
 
4655
- const MiddleNameField = JSX(({ field, input }) => (jsx(DaDataInputControl, { label: "\u041E\u0442\u0447\u0435\u0441\u0442\u0432\u043E (\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E, \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438)", maxLength: 60, disabled: input?.filledByEsia && isEsiaAuthorize(field, input?.name ?? ''), ...field(input?.name ?? ''), ...input })));
4682
+ const MiddleNameField = JSX(({ field, input }) => {
4683
+ const onChange = useCallback((value) => {
4684
+ if (retailCyrillicPattern.test(value) || value.length === 0) {
4685
+ field('middleName')?.onChange?.(value);
4686
+ }
4687
+ }, [field]);
4688
+ return (jsx(DaDataInputControl, { label: "\u041E\u0442\u0447\u0435\u0441\u0442\u0432\u043E (\u041E\u0431\u044F\u0437\u0430\u0442\u0435\u043B\u044C\u043D\u043E, \u043F\u0440\u0438 \u043D\u0430\u043B\u0438\u0447\u0438\u0438)", maxLength: 60, disabled: input?.filledByEsia && isEsiaAuthorize(field, input?.name ?? ''), ...field(input?.name ?? ''), ...input, onChange: onChange }));
4689
+ });
4656
4690
 
4657
- const NameField = JSX(({ field, input }) => (jsx(DaDataInputControl, { label: "\u0418\u043C\u044F", maxLength: 60, disabled: input?.filledByEsia && isEsiaAuthorize(field, input.name ?? ''), ...field(input?.name ?? ''), ...input })));
4691
+ const NameField = JSX(({ field, input }) => {
4692
+ const onChange = useCallback((value) => {
4693
+ if (retailCyrillicPattern.test(value) || value.length === 0) {
4694
+ field('name')?.onChange?.(value);
4695
+ }
4696
+ }, [field]);
4697
+ return (jsx(DaDataInputControl, { label: "\u0418\u043C\u044F", maxLength: 60, disabled: input?.filledByEsia && isEsiaAuthorize(field, input.name ?? ''), ...field(input?.name ?? ''), ...input, onChange: onChange }));
4698
+ });
4658
4699
 
4659
4700
  const OrganizationField = JSX(({ field, input }) => {
4660
4701
  const { data } = useLeadFormData('ORGANIZATION_TYPE');
@@ -4809,7 +4850,14 @@
4809
4850
  const SnilsField = JSX(({ field, input }) => (jsx(InputSnilsControl, { label: "\u0421\u041D\u0418\u041B\u0421", maxLength: 14, ...field(input?.name ?? ''), ...input })));
4810
4851
 
4811
4852
  const FIELD_NAME = 'surname';
4812
- const SurnameField = JSX(({ field, input }) => (jsx(DaDataInputControl, { label: "\u0424\u0430\u043C\u0438\u043B\u0438\u044F", maxLength: 60, disabled: input?.filledByEsia && isEsiaAuthorize(field, FIELD_NAME), ...field(input?.name ?? ''), ...input })));
4853
+ const SurnameField = JSX(({ field, input }) => {
4854
+ const onChange = useCallback((value) => {
4855
+ if (retailCyrillicPattern.test(value) || value.length === 0) {
4856
+ field('surname')?.onChange?.(value);
4857
+ }
4858
+ }, [field]);
4859
+ return (jsx(DaDataInputControl, { label: "\u0424\u0430\u043C\u0438\u043B\u0438\u044F", maxLength: 60, disabled: input?.filledByEsia && isEsiaAuthorize(field, FIELD_NAME), ...field(input?.name ?? ''), ...input, onChange: onChange }));
4860
+ });
4813
4861
 
4814
4862
  const TotalIncomeField = JSX(({ field, input }) => (jsx(DaDataInputControl, { label: "\u0421\u043E\u0432\u043E\u043A\u0443\u043F\u043D\u044B\u0439 \u043E\u0444\u0438\u0446\u0438\u0430\u043B\u044C\u043D\u044B\u0439 \u0434\u043E\u0445\u043E\u0434 \u0432 \u043C\u0435\u0441\u044F\u0446 \u043F\u043E\u0441\u043B\u0435 \u0432\u044B\u0447\u0435\u0442\u0430 \u043D\u0430\u043B\u043E\u0433\u043E\u0432 (\u0437\u0430\u0440\u043F\u043B\u0430\u0442\u0430, \u043F\u0440\u0435\u043C\u0438\u0438)", placeholder: "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435", isInteger: true, ...field(input?.name ?? ''), ...input })));
4815
4863
 
@@ -5720,15 +5768,16 @@
5720
5768
  }
5721
5769
  try {
5722
5770
  startSending();
5771
+ const transformedFormData = transformFormData(formData);
5723
5772
  const profileId = await createUserProfile({
5724
- profile: { phone: formatPhone(formData.phone) },
5773
+ profile: { phone: formatPhone(transformedFormData.phone) },
5725
5774
  });
5726
- if (profileId && formData?.phone) {
5775
+ if (profileId && transformedFormData?.phone) {
5727
5776
  const sendCurrentTask = async () => {
5728
5777
  await updateUserData({
5729
5778
  programId,
5730
5779
  profileId,
5731
- formData,
5780
+ formData: transformedFormData,
5732
5781
  productType,
5733
5782
  saveUserData,
5734
5783
  sendAspects,
@@ -5738,7 +5787,7 @@
5738
5787
  openEsiaLoginDialog();
5739
5788
  }
5740
5789
  else {
5741
- consentBkiDialog.open(formData.phone, profileId);
5790
+ consentBkiDialog.open(transformedFormData.phone, profileId);
5742
5791
  }
5743
5792
  };
5744
5793
  const handleSuccessVerify = async () => {
@@ -5764,7 +5813,7 @@
5764
5813
  };
5765
5814
  const acceptedConsents = getAcceptedConsents(formData, productType);
5766
5815
  verifyPhoneDialog.open({
5767
- phone: formData?.phone,
5816
+ phone: transformedFormData?.phone,
5768
5817
  consents: acceptedConsents,
5769
5818
  onSuccess: handleSuccessVerify,
5770
5819
  });
@@ -5846,6 +5895,12 @@
5846
5895
  consentAssignmentClaimsFlg: consentOthersFlg,
5847
5896
  };
5848
5897
  };
5898
+ const transformFormData = (formData) => ({
5899
+ ...formData,
5900
+ surname: formData.surname?.trim(),
5901
+ name: formData.name?.trim(),
5902
+ middleName: formData.middleName?.trim(),
5903
+ });
5849
5904
 
5850
5905
  const useSetter = (target, key) => useCallback((value) => {
5851
5906
  const newValue = value instanceof Function ? value(target[key]) : value;
@@ -6088,8 +6143,9 @@
6088
6143
  const ApplicationLeadForm = JSX(({ className, title, programId = '', nextStepLink = '/credit-lead', button, productType = 'credit', data, ...rest }) => {
6089
6144
  const [esiaError, { setTrue: setEsiaError }] = useBool(false);
6090
6145
  const applicationFormData = useMemo(() => getApplicationFormData(productType), [productType]);
6091
- const inputs = useMemo(() => (applicationFormData?.flatMap((_) => _?.inputs) || []), [applicationFormData]);
6092
- const formValidator = useMemo(() => getFormValidator(inputs, validatorObj), [inputs]);
6146
+ const inputs = useMemo(() => getInputs(applicationFormData), [applicationFormData]);
6147
+ const extendedValidatorObj = useMemo(() => getExtendedValidatorObj(productType), [productType]);
6148
+ const formValidator = useMemo(() => getFormValidator(inputs, extendedValidatorObj), [inputs, extendedValidatorObj]);
6093
6149
  const [initialFormState, { isLoading }] = useInitApplicationLead({
6094
6150
  inputs,
6095
6151
  nextStepLink,
@@ -6115,6 +6171,11 @@
6115
6171
  }, [ok]);
6116
6172
  return (jsx(ApplicationFormLayout, { className: style('container space-y-m', className), title: title, ...rest, children: jsxs("form", { onSubmit: onSubmit, className: "space-y-m relative", children: [isLoading ? jsx(Loader, { blur: false }) : null, applicationFormData.map((_, i) => (jsxs("div", { className: style(inputColumnStyles(_.columns), 'grid gap-x-m'), children: [renderTitle(_.title), renderInputs$1({ field, inputs: _?.inputs }, productType)] }, `section-${i}`))), renderSubmitButton(button, isSending), esiaError ? (jsx(Text, { size: "text-m", font: "font-medium", color: "text-error", children: "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0413\u043E\u0441\u0443\u0441\u043B\u0443\u0433\u0438 \u0434\u043B\u044F \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F \u0437\u0430\u044F\u0432\u043A\u0438 \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E, \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u043E \u0437\u0430\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u043F\u043E\u043B\u044F \u0432\u0440\u0443\u0447\u043D\u0443\u044E." })) : null] }) }));
6117
6173
  });
6174
+ const getInputs = (applicationFormData) => (applicationFormData?.flatMap((_) => _?.inputs) || []);
6175
+ const getExtendedValidatorObj = (productType) => ({
6176
+ ...validatorObj,
6177
+ limitedBirthday: getLimitedBirthdayValidation(productType),
6178
+ });
6118
6179
 
6119
6180
  const NotFound = JSX(({ title, description }) => {
6120
6181
  const isMobileMode = useMobileMode();
@@ -8059,11 +8120,16 @@
8059
8120
  return [initialState, handleSubmit, isSending];
8060
8121
  };
8061
8122
 
8123
+ const PRODUCT_TYPE$2 = 'creditCard';
8124
+ const extendedValidatorObj$2 = {
8125
+ ...validatorObj,
8126
+ limitedBirthday: getLimitedBirthdayValidation(PRODUCT_TYPE$2),
8127
+ };
8062
8128
  const CreditCardFormStep = JSX(({ step, sections, onPrevStep, onNextStep, onFinish }) => {
8063
8129
  const inputs = useMemo(() => sections?.flatMap((_) => _?.inputs || []), [sections]);
8064
8130
  const formValidator = useCallback((formState) =>
8065
8131
  // TODO Слишком сложно
8066
- getFormValidator(calculateInputs((_) => formState[_])(inputs, step), validatorObj)(formState), [inputs]);
8132
+ getFormValidator(calculateInputs((_) => formState[_])(inputs, step), extendedValidatorObj$2)(formState), [inputs]);
8067
8133
  const [initialState, onSubmit, isSending] = useCreditCardFormAPI({
8068
8134
  step,
8069
8135
  onNextStep,
@@ -8877,13 +8943,18 @@
8877
8943
  return [initialState, handleSubmit, isSending];
8878
8944
  };
8879
8945
 
8946
+ const PRODUCT_TYPE$1 = 'credit';
8947
+ const extendedValidatorObj$1 = {
8948
+ ...validatorObj,
8949
+ limitedBirthday: getLimitedBirthdayValidation(PRODUCT_TYPE$1),
8950
+ };
8880
8951
  const CreditFormStep = JSX(({ step, sections, programsSource, onPrevStep, onNextStep, onFinish }) => {
8881
8952
  const { programId } = useRetailFormStore();
8882
8953
  const calcData = programsSource?.[programId ?? '']; // Need normalizator useForm, to be save defaultParams
8883
8954
  const inputs = useMemo(() => sections?.flatMap((_) => _?.inputs ?? []), [sections]);
8884
8955
  const formValidator = useCallback((formState) =>
8885
8956
  // TODO Слишком сложно
8886
- getFormValidator(calculateInputs((_) => formState[_])(inputs, step), validatorObj)(formState), [inputs]);
8957
+ getFormValidator(calculateInputs((_) => formState[_])(inputs, step), extendedValidatorObj$1)(formState), [inputs]);
8887
8958
  const [initialState, onSubmit, isSending] = useCreditFormAPI({
8888
8959
  step,
8889
8960
  onNextStep,
@@ -9193,11 +9264,16 @@
9193
9264
  return [initialState, handleSubmit, isSending];
9194
9265
  };
9195
9266
 
9267
+ const PRODUCT_TYPE = 'debitCard';
9268
+ const extendedValidatorObj = {
9269
+ ...validatorObj,
9270
+ limitedBirthday: getLimitedBirthdayValidation(PRODUCT_TYPE),
9271
+ };
9196
9272
  const DebitFormStep = JSX(({ step, sections, onPrevStep, onNextStep, onFinish }) => {
9197
9273
  const inputs = useMemo(() => sections?.flatMap((_) => _?.inputs ?? []), [sections]);
9198
9274
  const formValidator = useCallback((formState) =>
9199
9275
  // TODO Слишком сложно
9200
- getFormValidator(calculateInputs((_) => formState[_])(inputs, step), validatorObj)(formState), [inputs]);
9276
+ getFormValidator(calculateInputs((_) => formState[_])(inputs, step), extendedValidatorObj)(formState), [inputs]);
9201
9277
  const [initialState, onSubmit, isSending] = useDebitFormAPI({
9202
9278
  step,
9203
9279
  onNextStep,
@@ -11554,7 +11630,7 @@
11554
11630
  slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
11555
11631
  });
11556
11632
 
11557
- const packageVersion = "0.14.820";
11633
+ const packageVersion = "0.14.822";
11558
11634
 
11559
11635
  exports.Blocks = Blocks;
11560
11636
  exports.ContentPage = ContentPage;