@redneckz/wildless-cms-uni-blocks 0.14.964 → 0.14.966

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 (230) hide show
  1. package/bundle/blocks.schema.json +1 -1
  2. package/bundle/bundle.umd.js +168 -34
  3. package/bundle/bundle.umd.min.js +1 -1
  4. package/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +3 -0
  5. package/bundle/components/ApplicationForm/handlers.d.ts +2 -1
  6. package/bundle/retail/api/getTaskStatus.d.ts +3 -1
  7. package/bundle/retail/components/Fields/SelectField.d.ts +2 -0
  8. package/bundle/retail/model/LeadFormState.d.ts +1 -0
  9. package/bundle/retail/model/NameFieldDef.d.ts +1 -1
  10. package/bundle/ui-kit/DatePicker/Calendar.d.ts +1 -0
  11. package/bundle/ui-kit/DatePicker/DatePicker.d.ts +1 -0
  12. package/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  13. package/bundle/ui-kit/DatePicker/renderCalendarCells.d.ts +2 -1
  14. package/dist/components/ApplicationForm/ApplicationForm.js +2 -1
  15. package/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
  16. package/dist/components/ApplicationForm/ApplicationFormContent.d.ts +3 -0
  17. package/dist/components/ApplicationForm/handlers.d.ts +2 -1
  18. package/dist/components/ApplicationForm/handlers.js +20 -3
  19. package/dist/components/ApplicationForm/handlers.js.map +1 -1
  20. package/dist/components/DebitForm/DebitFormStatusTracker.js +6 -5
  21. package/dist/components/DebitForm/DebitFormStatusTracker.js.map +1 -1
  22. package/dist/components/DebitForm/DebitFormStepsData.js +67 -1
  23. package/dist/components/DebitForm/DebitFormStepsData.js.map +1 -1
  24. package/dist/components/DebitForm/formStateMap.js +1 -0
  25. package/dist/components/DebitForm/formStateMap.js.map +1 -1
  26. package/dist/components/DebitForm/useDebitFormAPI.js +1 -1
  27. package/dist/components/DebitForm/useDebitFormAPI.js.map +1 -1
  28. package/dist/retail/api/getTaskStatus.d.ts +3 -1
  29. package/dist/retail/api/getTaskStatus.js +2 -0
  30. package/dist/retail/api/getTaskStatus.js.map +1 -1
  31. package/dist/retail/components/Fields/CardCategoryField.js +18 -4
  32. package/dist/retail/components/Fields/CardCategoryField.js.map +1 -1
  33. package/dist/retail/components/Fields/DeliveryDateFiels.js +18 -1
  34. package/dist/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
  35. package/dist/retail/components/Fields/DeliveryTimeField.js +14 -4
  36. package/dist/retail/components/Fields/DeliveryTimeField.js.map +1 -1
  37. package/dist/retail/components/Fields/RegionRetailField.js +4 -4
  38. package/dist/retail/components/Fields/RegionRetailField.js.map +1 -1
  39. package/dist/retail/components/Fields/SelectField.d.ts +2 -0
  40. package/dist/retail/components/Fields/SelectField.js +2 -2
  41. package/dist/retail/components/Fields/SelectField.js.map +1 -1
  42. package/dist/retail/model/LeadFormState.d.ts +1 -0
  43. package/dist/retail/model/NameFieldDef.d.ts +1 -1
  44. package/dist/ui-kit/DatePicker/Calendar.d.ts +1 -0
  45. package/dist/ui-kit/DatePicker/Calendar.js +2 -1
  46. package/dist/ui-kit/DatePicker/Calendar.js.map +1 -1
  47. package/dist/ui-kit/DatePicker/DatePicker.d.ts +1 -0
  48. package/dist/ui-kit/DatePicker/DatePicker.js +2 -2
  49. package/dist/ui-kit/DatePicker/DatePicker.js.map +1 -1
  50. package/dist/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  51. package/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  52. package/dist/ui-kit/DatePicker/renderCalendarCells.d.ts +2 -1
  53. package/dist/ui-kit/DatePicker/renderCalendarCells.js +13 -4
  54. package/dist/ui-kit/DatePicker/renderCalendarCells.js.map +1 -1
  55. package/lib/components/ApplicationForm/ApplicationForm.fixture.d.ts +1 -0
  56. package/lib/components/ApplicationForm/ApplicationForm.js +2 -1
  57. package/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
  58. package/lib/components/ApplicationForm/ApplicationFormContent.d.ts +3 -0
  59. package/lib/components/ApplicationForm/handlers.d.ts +2 -1
  60. package/lib/components/ApplicationForm/handlers.js +20 -3
  61. package/lib/components/ApplicationForm/handlers.js.map +1 -1
  62. package/lib/components/DebitForm/DebitFormStatusTracker.js +6 -5
  63. package/lib/components/DebitForm/DebitFormStatusTracker.js.map +1 -1
  64. package/lib/components/DebitForm/DebitFormStepsData.js +67 -1
  65. package/lib/components/DebitForm/DebitFormStepsData.js.map +1 -1
  66. package/lib/components/DebitForm/formStateMap.js +1 -0
  67. package/lib/components/DebitForm/formStateMap.js.map +1 -1
  68. package/lib/components/DebitForm/useDebitFormAPI.js +1 -1
  69. package/lib/components/DebitForm/useDebitFormAPI.js.map +1 -1
  70. package/lib/retail/api/getTaskStatus.d.ts +3 -1
  71. package/lib/retail/api/getTaskStatus.js +2 -0
  72. package/lib/retail/api/getTaskStatus.js.map +1 -1
  73. package/lib/retail/components/Fields/CardCategoryField.js +18 -4
  74. package/lib/retail/components/Fields/CardCategoryField.js.map +1 -1
  75. package/lib/retail/components/Fields/DeliveryDateFiels.js +18 -1
  76. package/lib/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
  77. package/lib/retail/components/Fields/DeliveryTimeField.js +14 -4
  78. package/lib/retail/components/Fields/DeliveryTimeField.js.map +1 -1
  79. package/lib/retail/components/Fields/RegionRetailField.js +4 -4
  80. package/lib/retail/components/Fields/RegionRetailField.js.map +1 -1
  81. package/lib/retail/components/Fields/SelectField.d.ts +2 -0
  82. package/lib/retail/components/Fields/SelectField.js +2 -2
  83. package/lib/retail/components/Fields/SelectField.js.map +1 -1
  84. package/lib/retail/model/LeadFormState.d.ts +1 -0
  85. package/lib/retail/model/NameFieldDef.d.ts +1 -1
  86. package/lib/ui-kit/DatePicker/Calendar.d.ts +1 -0
  87. package/lib/ui-kit/DatePicker/Calendar.js +2 -1
  88. package/lib/ui-kit/DatePicker/Calendar.js.map +1 -1
  89. package/lib/ui-kit/DatePicker/DatePicker.d.ts +1 -0
  90. package/lib/ui-kit/DatePicker/DatePicker.js +2 -2
  91. package/lib/ui-kit/DatePicker/DatePicker.js.map +1 -1
  92. package/lib/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  93. package/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  94. package/lib/ui-kit/DatePicker/renderCalendarCells.d.ts +2 -1
  95. package/lib/ui-kit/DatePicker/renderCalendarCells.js +13 -4
  96. package/lib/ui-kit/DatePicker/renderCalendarCells.js.map +1 -1
  97. package/mobile/bundle/bundle.umd.js +168 -34
  98. package/mobile/bundle/bundle.umd.min.js +1 -1
  99. package/mobile/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +3 -0
  100. package/mobile/bundle/components/ApplicationForm/handlers.d.ts +2 -1
  101. package/mobile/bundle/retail/api/getTaskStatus.d.ts +3 -1
  102. package/mobile/bundle/retail/components/Fields/SelectField.d.ts +2 -0
  103. package/mobile/bundle/retail/model/LeadFormState.d.ts +1 -0
  104. package/mobile/bundle/retail/model/NameFieldDef.d.ts +1 -1
  105. package/mobile/bundle/ui-kit/DatePicker/Calendar.d.ts +1 -0
  106. package/mobile/bundle/ui-kit/DatePicker/DatePicker.d.ts +1 -0
  107. package/mobile/bundle/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  108. package/mobile/bundle/ui-kit/DatePicker/renderCalendarCells.d.ts +2 -1
  109. package/mobile/dist/components/ApplicationForm/ApplicationForm.js +2 -1
  110. package/mobile/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
  111. package/mobile/dist/components/ApplicationForm/ApplicationFormContent.d.ts +3 -0
  112. package/mobile/dist/components/ApplicationForm/handlers.d.ts +2 -1
  113. package/mobile/dist/components/ApplicationForm/handlers.js +20 -3
  114. package/mobile/dist/components/ApplicationForm/handlers.js.map +1 -1
  115. package/mobile/dist/components/DebitForm/DebitFormStatusTracker.js +6 -5
  116. package/mobile/dist/components/DebitForm/DebitFormStatusTracker.js.map +1 -1
  117. package/mobile/dist/components/DebitForm/DebitFormStepsData.js +67 -1
  118. package/mobile/dist/components/DebitForm/DebitFormStepsData.js.map +1 -1
  119. package/mobile/dist/components/DebitForm/formStateMap.js +1 -0
  120. package/mobile/dist/components/DebitForm/formStateMap.js.map +1 -1
  121. package/mobile/dist/components/DebitForm/useDebitFormAPI.js +1 -1
  122. package/mobile/dist/components/DebitForm/useDebitFormAPI.js.map +1 -1
  123. package/mobile/dist/retail/api/getTaskStatus.d.ts +3 -1
  124. package/mobile/dist/retail/api/getTaskStatus.js +2 -0
  125. package/mobile/dist/retail/api/getTaskStatus.js.map +1 -1
  126. package/mobile/dist/retail/components/Fields/CardCategoryField.js +18 -4
  127. package/mobile/dist/retail/components/Fields/CardCategoryField.js.map +1 -1
  128. package/mobile/dist/retail/components/Fields/DeliveryDateFiels.js +18 -1
  129. package/mobile/dist/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
  130. package/mobile/dist/retail/components/Fields/DeliveryTimeField.js +14 -4
  131. package/mobile/dist/retail/components/Fields/DeliveryTimeField.js.map +1 -1
  132. package/mobile/dist/retail/components/Fields/RegionRetailField.js +4 -4
  133. package/mobile/dist/retail/components/Fields/RegionRetailField.js.map +1 -1
  134. package/mobile/dist/retail/components/Fields/SelectField.d.ts +2 -0
  135. package/mobile/dist/retail/components/Fields/SelectField.js +2 -2
  136. package/mobile/dist/retail/components/Fields/SelectField.js.map +1 -1
  137. package/mobile/dist/retail/model/LeadFormState.d.ts +1 -0
  138. package/mobile/dist/retail/model/NameFieldDef.d.ts +1 -1
  139. package/mobile/dist/ui-kit/DatePicker/Calendar.d.ts +1 -0
  140. package/mobile/dist/ui-kit/DatePicker/Calendar.js +2 -1
  141. package/mobile/dist/ui-kit/DatePicker/Calendar.js.map +1 -1
  142. package/mobile/dist/ui-kit/DatePicker/DatePicker.d.ts +1 -0
  143. package/mobile/dist/ui-kit/DatePicker/DatePicker.js +2 -2
  144. package/mobile/dist/ui-kit/DatePicker/DatePicker.js.map +1 -1
  145. package/mobile/dist/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  146. package/mobile/dist/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  147. package/mobile/dist/ui-kit/DatePicker/renderCalendarCells.d.ts +2 -1
  148. package/mobile/dist/ui-kit/DatePicker/renderCalendarCells.js +13 -4
  149. package/mobile/dist/ui-kit/DatePicker/renderCalendarCells.js.map +1 -1
  150. package/mobile/lib/components/ApplicationForm/ApplicationForm.js +2 -1
  151. package/mobile/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
  152. package/mobile/lib/components/ApplicationForm/ApplicationFormContent.d.ts +3 -0
  153. package/mobile/lib/components/ApplicationForm/handlers.d.ts +2 -1
  154. package/mobile/lib/components/ApplicationForm/handlers.js +20 -3
  155. package/mobile/lib/components/ApplicationForm/handlers.js.map +1 -1
  156. package/mobile/lib/components/DebitForm/DebitFormStatusTracker.js +6 -5
  157. package/mobile/lib/components/DebitForm/DebitFormStatusTracker.js.map +1 -1
  158. package/mobile/lib/components/DebitForm/DebitFormStepsData.js +67 -1
  159. package/mobile/lib/components/DebitForm/DebitFormStepsData.js.map +1 -1
  160. package/mobile/lib/components/DebitForm/formStateMap.js +1 -0
  161. package/mobile/lib/components/DebitForm/formStateMap.js.map +1 -1
  162. package/mobile/lib/components/DebitForm/useDebitFormAPI.js +1 -1
  163. package/mobile/lib/components/DebitForm/useDebitFormAPI.js.map +1 -1
  164. package/mobile/lib/retail/api/getTaskStatus.d.ts +3 -1
  165. package/mobile/lib/retail/api/getTaskStatus.js +2 -0
  166. package/mobile/lib/retail/api/getTaskStatus.js.map +1 -1
  167. package/mobile/lib/retail/components/Fields/CardCategoryField.js +18 -4
  168. package/mobile/lib/retail/components/Fields/CardCategoryField.js.map +1 -1
  169. package/mobile/lib/retail/components/Fields/DeliveryDateFiels.js +18 -1
  170. package/mobile/lib/retail/components/Fields/DeliveryDateFiels.js.map +1 -1
  171. package/mobile/lib/retail/components/Fields/DeliveryTimeField.js +14 -4
  172. package/mobile/lib/retail/components/Fields/DeliveryTimeField.js.map +1 -1
  173. package/mobile/lib/retail/components/Fields/RegionRetailField.js +4 -4
  174. package/mobile/lib/retail/components/Fields/RegionRetailField.js.map +1 -1
  175. package/mobile/lib/retail/components/Fields/SelectField.d.ts +2 -0
  176. package/mobile/lib/retail/components/Fields/SelectField.js +2 -2
  177. package/mobile/lib/retail/components/Fields/SelectField.js.map +1 -1
  178. package/mobile/lib/retail/model/LeadFormState.d.ts +1 -0
  179. package/mobile/lib/retail/model/NameFieldDef.d.ts +1 -1
  180. package/mobile/lib/ui-kit/DatePicker/Calendar.d.ts +1 -0
  181. package/mobile/lib/ui-kit/DatePicker/Calendar.js +2 -1
  182. package/mobile/lib/ui-kit/DatePicker/Calendar.js.map +1 -1
  183. package/mobile/lib/ui-kit/DatePicker/DatePicker.d.ts +1 -0
  184. package/mobile/lib/ui-kit/DatePicker/DatePicker.js +2 -2
  185. package/mobile/lib/ui-kit/DatePicker/DatePicker.js.map +1 -1
  186. package/mobile/lib/ui-kit/DatePicker/DatePickerControl.d.ts +1 -0
  187. package/mobile/lib/ui-kit/DatePicker/DatePickerControl.js.map +1 -1
  188. package/mobile/lib/ui-kit/DatePicker/renderCalendarCells.d.ts +2 -1
  189. package/mobile/lib/ui-kit/DatePicker/renderCalendarCells.js +13 -4
  190. package/mobile/lib/ui-kit/DatePicker/renderCalendarCells.js.map +1 -1
  191. package/mobile/src/components/ApplicationForm/ApplicationForm.tsx +2 -0
  192. package/mobile/src/components/ApplicationForm/ApplicationFormContent.ts +3 -0
  193. package/mobile/src/components/ApplicationForm/handlers.ts +26 -3
  194. package/mobile/src/components/DebitForm/DebitFormStatusTracker.tsx +6 -6
  195. package/mobile/src/components/DebitForm/DebitFormStepsData.tsx +67 -1
  196. package/mobile/src/components/DebitForm/formStateMap.tsx +1 -0
  197. package/mobile/src/components/DebitForm/useDebitFormAPI.tsx +1 -1
  198. package/mobile/src/retail/api/getTaskStatus.ts +2 -0
  199. package/mobile/src/retail/components/Fields/CardCategoryField.tsx +24 -3
  200. package/mobile/src/retail/components/Fields/DeliveryDateFiels.tsx +29 -3
  201. package/mobile/src/retail/components/Fields/DeliveryTimeField.tsx +16 -8
  202. package/mobile/src/retail/components/Fields/RegionRetailField.tsx +5 -5
  203. package/mobile/src/retail/components/Fields/SelectField.tsx +3 -0
  204. package/mobile/src/retail/model/LeadFormState.ts +1 -0
  205. package/mobile/src/retail/model/NameFieldDef.ts +1 -0
  206. package/mobile/src/ui-kit/DatePicker/Calendar.tsx +3 -1
  207. package/mobile/src/ui-kit/DatePicker/DatePicker.tsx +13 -1
  208. package/mobile/src/ui-kit/DatePicker/DatePickerControl.tsx +1 -0
  209. package/mobile/src/ui-kit/DatePicker/renderCalendarCells.tsx +18 -5
  210. package/package.json +1 -1
  211. package/src/components/ApplicationForm/ApplicationForm.fixture.tsx +25 -0
  212. package/src/components/ApplicationForm/ApplicationForm.tsx +2 -0
  213. package/src/components/ApplicationForm/ApplicationFormContent.ts +3 -0
  214. package/src/components/ApplicationForm/handlers.ts +26 -3
  215. package/src/components/DebitForm/DebitFormStatusTracker.tsx +6 -6
  216. package/src/components/DebitForm/DebitFormStepsData.tsx +67 -1
  217. package/src/components/DebitForm/formStateMap.tsx +1 -0
  218. package/src/components/DebitForm/useDebitFormAPI.tsx +1 -1
  219. package/src/retail/api/getTaskStatus.ts +2 -0
  220. package/src/retail/components/Fields/CardCategoryField.tsx +24 -3
  221. package/src/retail/components/Fields/DeliveryDateFiels.tsx +29 -3
  222. package/src/retail/components/Fields/DeliveryTimeField.tsx +16 -8
  223. package/src/retail/components/Fields/RegionRetailField.tsx +5 -5
  224. package/src/retail/components/Fields/SelectField.tsx +3 -0
  225. package/src/retail/model/LeadFormState.ts +1 -0
  226. package/src/retail/model/NameFieldDef.ts +1 -0
  227. package/src/ui-kit/DatePicker/Calendar.tsx +3 -1
  228. package/src/ui-kit/DatePicker/DatePicker.tsx +13 -1
  229. package/src/ui-kit/DatePicker/DatePickerControl.tsx +1 -0
  230. package/src/ui-kit/DatePicker/renderCalendarCells.tsx +18 -5
@@ -5,13 +5,19 @@ import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProp
5
5
  import { InfoCard } from '../../../ui-kit/InfoCard/InfoCard';
6
6
  import { type Option } from '../../../ui-kit/Select/Option';
7
7
  import { getCardTypes, type CardTypeData } from '../../api/getCardTypes';
8
+ import { useRetailFormStore } from '../../hooks/useRetailFormStore';
8
9
  import { SelectField } from './SelectField';
9
10
 
10
11
  export const CardCategoryField = JSX<CustomFieldProps>(({ field, input }) => {
11
12
  const [cardTypes, setCardTypes] = useState<CardTypeData[]>([]);
12
13
  const [programId] = useLocalStorage<string>('programId');
14
+ const { productType } = useRetailFormStore();
15
+ const isSalaryCard = programId === '38';
16
+ const isDebit = productType === 'debitCard';
17
+ const isEsiaAuth = Boolean(field('esiaAccountTypeCd')?.value?.key);
13
18
  const { value: selectedCardCategory, onChange: cardCategoryChange } = field('cardCategory');
14
19
  const selectedPaymentSystem = field('paymentSystem')?.value?.key;
20
+ const handleChangeIsMomentDebitCard = field('isMomentDebitCard')?.onChange;
15
21
 
16
22
  const getCardCategoryValue = useCallback(
17
23
  (fetchedCardTypes: CardTypeData[]) =>
@@ -24,14 +30,23 @@ export const CardCategoryField = JSX<CustomFieldProps>(({ field, input }) => {
24
30
  [],
25
31
  );
26
32
 
33
+ const onChange = useCallback((value: Option) => {
34
+ cardCategoryChange?.(value);
35
+ handleChangeIsMomentDebitCard?.(value?.text?.toLowerCase()?.includes('неимен'));
36
+ }, []);
37
+
27
38
  useEffect(() => {
28
39
  if (selectedPaymentSystem && programId) {
29
40
  (async () => {
30
41
  const fetchedCardTypes = await getCardTypes(selectedPaymentSystem as string, programId);
31
- setCardTypes(fetchedCardTypes);
42
+ const actualCardTypes =
43
+ isDebit && !isEsiaAuth && !isSalaryCard
44
+ ? excludeSomeСategoriesCards(fetchedCardTypes)
45
+ : fetchedCardTypes;
46
+ setCardTypes(actualCardTypes);
32
47
 
33
- if (!isValidCardCategory(fetchedCardTypes, selectedCardCategory as Option)) {
34
- cardCategoryChange?.(getCardCategoryValue(fetchedCardTypes));
48
+ if (!isValidCardCategory(actualCardTypes, selectedCardCategory as Option)) {
49
+ cardCategoryChange?.(getCardCategoryValue(actualCardTypes));
35
50
  }
36
51
  })();
37
52
  }
@@ -50,6 +65,7 @@ export const CardCategoryField = JSX<CustomFieldProps>(({ field, input }) => {
50
65
  label="Категория карты"
51
66
  fieldName="cardCategory"
52
67
  input={input}
68
+ onChange={onChange}
53
69
  />
54
70
  {description ? <InfoCard __html={description} /> : null}
55
71
  </div>
@@ -58,3 +74,8 @@ export const CardCategoryField = JSX<CustomFieldProps>(({ field, input }) => {
58
74
 
59
75
  const isValidCardCategory = (cardTypes: CardTypeData[], selectedCardCategory: Option | null) =>
60
76
  cardTypes.some((cardType) => cardType.key === selectedCardCategory?.key);
77
+
78
+ const excludeSomeСategoriesCards = (cardTypes: CardTypeData[]) =>
79
+ cardTypes.filter(
80
+ (cardType) => cardType.value && cardType.value.toLowerCase().includes(' именная'),
81
+ );
@@ -1,7 +1,33 @@
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';
5
+ import { useLeadFormData } from '../../hooks/useLeadFormData';
6
+ import { useRetailFormStore } from '../../hooks/useRetailFormStore';
4
7
 
5
- export const DeliveryDateFiels = JSX<CustomFieldProps>(({ field, input }) => (
6
- <DatePickerControl label="Дата доставки" {...field(input?.name ?? '')} minDate={new Date()} />
7
- ));
8
+ const MIN_DATE = new Date(Date.now() + 1 * 24 * 60 * 60 * 1000);
9
+
10
+ export const DeliveryDateFiels = JSX<CustomFieldProps>(({ field, input }) => {
11
+ const { productType } = useRetailFormStore();
12
+ const isDebit = productType === 'debitCard';
13
+ const minDate = isDebit ? MIN_DATE : new Date();
14
+ const { data } = useLeadFormData('DAYS_DELIVERY_SETTINGS');
15
+
16
+ const weekends: number[] = useMemo(() => {
17
+ const weekendItem = data?.find((item) => item.key === 'WEEKEND');
18
+ if (weekendItem && weekendItem.value) {
19
+ return weekendItem.value.split(',').map(Number);
20
+ }
21
+
22
+ return [];
23
+ }, [data]);
24
+
25
+ return (
26
+ <DatePickerControl
27
+ label="Дата доставки"
28
+ {...field(input?.name ?? '')}
29
+ minDate={minDate}
30
+ weekends={isDebit ? weekends : []}
31
+ />
32
+ );
33
+ });
@@ -4,17 +4,25 @@ import { type CustomFieldProps } from '../../../ui-kit/FormField/CustomFieldProp
4
4
  import { type RadioButtonItem } from '../../../ui-kit/RadioButtonGroup/RadioButtonGroup';
5
5
  import { RadioButtonGroupControl } from '../../../ui-kit/RadioButtonGroup/RadioButtonGroupControl';
6
6
  import { useLeadFormData } from '../../hooks/useLeadFormData';
7
+ import { useRetailFormStore } from '../../hooks/useRetailFormStore';
7
8
 
8
9
  export const DeliveryTimeField = JSX<CustomFieldProps>(({ field, input }) => {
10
+ const { productType } = useRetailFormStore();
11
+ const isDebit = productType === 'debitCard';
9
12
  const { data } = useLeadFormData('COURIER_DELIVERY_TIME');
10
- const deliveryTime: RadioButtonItem[] = useMemo(
11
- () =>
12
- data?.map((_) => ({
13
- id: _.key as string,
14
- text: _.value,
15
- })) ?? [],
16
- [data],
17
- );
13
+ const creditDeliveryTime = ['TIME_1', 'TIME_2', 'TIME_3'];
14
+ const debitDeliveryTime = ['TIME_4', 'TIME_5'];
15
+
16
+ const deliveryTime: RadioButtonItem[] = useMemo(() => {
17
+ const allowedTimes = isDebit ? debitDeliveryTime : creditDeliveryTime;
18
+
19
+ return (data || [])
20
+ .filter((item) => item.key && allowedTimes.includes(item.key))
21
+ .map((item) => ({
22
+ id: item.key as string,
23
+ text: item.value,
24
+ }));
25
+ }, [data, isDebit]);
18
26
 
19
27
  return (
20
28
  <RadioButtonGroupControl
@@ -10,12 +10,11 @@ import { useLeadFormData } from '../../hooks/useLeadFormData';
10
10
  import { useRetailFormStore } from '../../hooks/useRetailFormStore';
11
11
 
12
12
  export const RegionRetailField = JSX<CustomFieldProps>(({ field, input }) => {
13
- const { programId, productType } = useRetailFormStore();
13
+ const { productType } = useRetailFormStore();
14
14
  const { data: regions } = useLeadFormData('REGION_RF');
15
15
  const { data: regionsDelivery } = useAsyncData('regionsDelivery', getRegionsCardDelivery);
16
16
  const { data: productSettings } = useLeadFormData(getCurrentProductSettings(productType));
17
-
18
- const isSalaryCard = programId === '38';
17
+ const isEsiaAuth = field('esiaAccountTypeCd')?.value?.key;
19
18
  const formatRegions = regions?.map(({ key, value }) => ({ key, text: value }));
20
19
  const isDeliveryActive =
21
20
  productSettings?.find((_) => _?.key === 'DELIVERY_ACTIVE')?.value === 'true';
@@ -28,12 +27,13 @@ export const RegionRetailField = JSX<CustomFieldProps>(({ field, input }) => {
28
27
  const regionHasDelivery =
29
28
  isDeliveryActive &&
30
29
  regionsDelivery?.find((_) => _.regionCode === value.key)?.deliveryFlg &&
31
- !isSalaryCard;
30
+ Boolean(isEsiaAuth);
31
+
32
32
  handleChangeRegionHasDelivery?.(regionHasDelivery);
33
33
  handleChangeMethodObtain?.(regionHasDelivery ? 'courier' : 'office');
34
34
  handleChangeRegion?.(value);
35
35
  },
36
- [regionsDelivery, isDeliveryActive],
36
+ [regionsDelivery, isDeliveryActive, isEsiaAuth],
37
37
  );
38
38
 
39
39
  return (
@@ -18,6 +18,7 @@ export interface SelectFieldProps
18
18
  fieldName: string;
19
19
  isSearch?: boolean;
20
20
  isManualInput?: boolean;
21
+ onChange?: (value: Option) => void;
21
22
  }
22
23
 
23
24
  export const SelectField = UniBlock<SelectFieldProps>(
@@ -28,6 +29,7 @@ export const SelectField = UniBlock<SelectFieldProps>(
28
29
  placeholder = 'Выберите из списка',
29
30
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
30
31
  options,
32
+ onChange,
31
33
  ...rest
32
34
  }) => {
33
35
  const leadOptions: Option[] =
@@ -42,6 +44,7 @@ export const SelectField = UniBlock<SelectFieldProps>(
42
44
  options={leadOptions}
43
45
  {...field(fieldName)}
44
46
  {...rest}
47
+ onChange={onChange ?? field(fieldName)?.onChange}
45
48
  />
46
49
  );
47
50
  },
@@ -186,6 +186,7 @@ export interface LeadFormState extends FormRetailConsents, FormStateDeliveryType
186
186
  latinName?: string;
187
187
  latinSurname?: string;
188
188
  regionHasDelivery?: boolean;
189
+ isMomentDebitCard?: boolean;
189
190
  files?: File[];
190
191
  deliveryTime?: string;
191
192
  }
@@ -28,6 +28,7 @@ type NameFieldCreditCardDef =
28
28
  | 'deliveryDate'
29
29
  | 'regionHasDelivery'
30
30
  | 'latinName'
31
+ | 'isMomentDebitCard'
31
32
  | 'latinSurname';
32
33
 
33
34
  type NameFieldRetailDef =
@@ -11,11 +11,12 @@ interface CalendarProps {
11
11
  currentYear: number;
12
12
  min?: Date;
13
13
  max?: Date;
14
+ weekends?: number[];
14
15
  onDateSelect?: (date: Date) => void;
15
16
  }
16
17
 
17
18
  export const Calendar = JSX<CalendarProps>(
18
- ({ today, currentMonth, currentYear, min, max, onDateSelect = noop }) => {
19
+ ({ today, currentMonth, currentYear, min, max, weekends, onDateSelect = noop }) => {
19
20
  const { firstDayOfWeek, totalDays } = useMemo(
20
21
  () => ({
21
22
  firstDayOfWeek: new Date(currentYear, currentMonth, 1).getDay() - 1,
@@ -44,6 +45,7 @@ export const Calendar = JSX<CalendarProps>(
44
45
  currentMonth,
45
46
  min,
46
47
  max,
48
+ weekends,
47
49
  onDateClick: onDateSelect,
48
50
  })}
49
51
  </tbody>
@@ -34,11 +34,22 @@ interface DatePickerProps extends ControlProps<Date>, ComponentType, LabelProps,
34
34
  minDate?: Date;
35
35
  maxDate?: Date;
36
36
  valid?: boolean;
37
+ weekends?: number[];
37
38
  }
38
39
 
39
40
  export const DatePicker = JSX<DatePickerProps>(
40
41
  // eslint-disable-next-line max-lines-per-function
41
- ({ className = '', label = '', value, valid = true, minDate, maxDate, disabled, onChange }) => {
42
+ ({
43
+ className = '',
44
+ label = '',
45
+ value,
46
+ valid = true,
47
+ minDate,
48
+ maxDate,
49
+ disabled,
50
+ weekends,
51
+ onChange,
52
+ }) => {
42
53
  const [isCalendarVisible, { setValue, setFalse: hideCalendar }] = useBool(false);
43
54
  const [selectedMonth, setSelectedMonth] = useState(value?.getMonth() || new Date().getMonth());
44
55
  const [selectedYear, setSelectedYear] = useState(
@@ -120,6 +131,7 @@ export const DatePicker = JSX<DatePickerProps>(
120
131
  currentYear={selectedYear}
121
132
  min={minDate}
122
133
  max={maxDate}
134
+ weekends={weekends}
123
135
  onDateSelect={handleDateSelect}
124
136
  />
125
137
  </div>
@@ -9,6 +9,7 @@ import { DatePicker } from './DatePicker';
9
9
  export interface DatePickerControlProps extends DefaultControlType, ControlProps<Date> {
10
10
  minDate?: Date;
11
11
  maxDate?: Date;
12
+ weekends?: number[];
12
13
  }
13
14
 
14
15
  export const DatePickerControl = JSX<DatePickerControlProps>(
@@ -12,6 +12,7 @@ interface RenderCalendarCellsParams {
12
12
  currentMonth: number;
13
13
  min?: Date;
14
14
  max?: Date;
15
+ weekends?: number[];
15
16
  onDateClick: (date: Date) => void;
16
17
  }
17
18
 
@@ -23,11 +24,11 @@ export const renderCalendarCells = ({
23
24
  currentYear,
24
25
  min,
25
26
  max,
27
+ weekends,
26
28
  onDateClick,
27
29
  }: RenderCalendarCellsParams) => {
28
30
  const calendarCells: VNode = [];
29
31
  let dayCounter = 1;
30
-
31
32
  for (let i = 0; i < DAY_COUNT; i++) {
32
33
  const rowCells: VNode = [];
33
34
 
@@ -40,12 +41,15 @@ export const renderCalendarCells = ({
40
41
  const currentDate = new Date(currentYear, currentMonth, dayCounter);
41
42
  const isToday = checkIsToday(currentDate, today);
42
43
  const isDisabled = checkIsDisabled(currentDate, min, max);
44
+ const isWeekend = checkIsWeekend(currentDate, weekends);
45
+
46
+ const isBlocked = isDisabled || isWeekend;
43
47
 
44
48
  rowCells.push(
45
49
  <td key={`day-${dayCounter}`}>
46
50
  <div
47
- className={getDayStyles(isToday, isDisabled)}
48
- onClick={() => !isDisabled && onDateClick(currentDate)}
51
+ className={getDayStyles(isToday, isBlocked)}
52
+ onClick={() => !isBlocked && onDateClick(currentDate)}
49
53
  >
50
54
  {dayCounter}
51
55
  </div>
@@ -68,11 +72,20 @@ const checkIsToday = (currentDate: Date, today: Date | undefined) =>
68
72
  const checkIsDisabled = (currentDate: Date, min: Date | undefined, max: Date | undefined) =>
69
73
  (min && currentDate.getTime() < min.getTime()) || (max && currentDate.getTime() > max.getTime());
70
74
 
71
- const getDayStyles = (isToday = false, isDisabled = false) =>
75
+ const checkIsWeekend = (currentDate: Date, weekends?: number[]) => {
76
+ if (!weekends || weekends.length === 0) {
77
+ return false;
78
+ }
79
+ const dayOfWeek = currentDate.getDay() === 0 ? 7 : currentDate.getDay();
80
+
81
+ return weekends.includes(dayOfWeek);
82
+ };
83
+
84
+ const getDayStyles = (isToday = false, isBlocked = false) =>
72
85
  style(
73
86
  'p-s text-center rounded-md border',
74
87
  {
75
88
  'border-transparent hover:bg-gray': !isToday,
76
89
  },
77
- isDisabled ? 'text-gray hover:bg-transparent' : 'cursor-pointer',
90
+ isBlocked ? 'text-gray hover:bg-transparent' : 'cursor-pointer',
78
91
  );