@redneckz/wildless-cms-uni-blocks 0.14.596 → 0.14.597

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 (184) hide show
  1. package/bundle/api/dadataHints/dadataHintsType.d.ts +20 -4
  2. package/bundle/api/dadataHints/hintsListsOptions.d.ts +2 -24
  3. package/bundle/bundle.umd.js +78 -21
  4. package/bundle/bundle.umd.min.js +1 -1
  5. package/bundle/ui-kit/FormField/Fields/DulIssuedByField.d.ts +2 -0
  6. package/bundle/ui-kit/FormField/Fields/DulSubdivisionCodeField.d.ts +2 -0
  7. package/bundle/ui-kit/Input/InputPopup.d.ts +1 -1
  8. package/bundle/ui-kit/Input/InputProps.d.ts +3 -0
  9. package/bundle/ui-kit/Input/useInputPopup.d.ts +4 -1
  10. package/dist/api/dadataHints/dadataHints.js +15 -8
  11. package/dist/api/dadataHints/dadataHints.js.map +1 -1
  12. package/dist/api/dadataHints/dadataHintsType.d.ts +20 -4
  13. package/dist/api/dadataHints/hintsListsOptions.d.ts +2 -24
  14. package/dist/api/dadataHints/hintsListsOptions.js +31 -9
  15. package/dist/api/dadataHints/hintsListsOptions.js.map +1 -1
  16. package/dist/ui-kit/FormField/Fields/DulIssuedByField.d.ts +2 -0
  17. package/dist/ui-kit/FormField/Fields/DulIssuedByField.js +16 -0
  18. package/dist/ui-kit/FormField/Fields/DulIssuedByField.js.map +1 -0
  19. package/dist/ui-kit/FormField/Fields/DulSubdivisionCodeField.d.ts +2 -0
  20. package/dist/ui-kit/FormField/Fields/DulSubdivisionCodeField.js +15 -0
  21. package/dist/ui-kit/FormField/Fields/DulSubdivisionCodeField.js.map +1 -0
  22. package/dist/ui-kit/FormField/Fields/InnField.js +8 -1
  23. package/dist/ui-kit/FormField/Fields/InnField.js.map +1 -1
  24. package/dist/ui-kit/FormField/Fields/OrganizationNameField.js +8 -1
  25. package/dist/ui-kit/FormField/Fields/OrganizationNameField.js.map +1 -1
  26. package/dist/ui-kit/FormField/getField.js +4 -4
  27. package/dist/ui-kit/FormField/getField.js.map +1 -1
  28. package/dist/ui-kit/Input/InputControl.js +3 -1
  29. package/dist/ui-kit/Input/InputControl.js.map +1 -1
  30. package/dist/ui-kit/Input/InputPopup.d.ts +1 -1
  31. package/dist/ui-kit/Input/InputPopup.js +1 -1
  32. package/dist/ui-kit/Input/InputPopup.js.map +1 -1
  33. package/dist/ui-kit/Input/InputProps.d.ts +3 -0
  34. package/dist/ui-kit/Input/useInputPopup.d.ts +4 -1
  35. package/dist/ui-kit/Input/useInputPopup.js +7 -4
  36. package/dist/ui-kit/Input/useInputPopup.js.map +1 -1
  37. package/lib/api/dadataHints/dadataHints.js +15 -8
  38. package/lib/api/dadataHints/dadataHints.js.map +1 -1
  39. package/lib/api/dadataHints/dadataHintsType.d.ts +20 -4
  40. package/lib/api/dadataHints/hintsListsOptions.d.ts +2 -24
  41. package/lib/api/dadataHints/hintsListsOptions.js +26 -4
  42. package/lib/api/dadataHints/hintsListsOptions.js.map +1 -1
  43. package/lib/ui-kit/FormField/Fields/DulIssuedByField.d.ts +2 -0
  44. package/lib/ui-kit/FormField/Fields/DulIssuedByField.js +14 -0
  45. package/lib/ui-kit/FormField/Fields/DulIssuedByField.js.map +1 -0
  46. package/lib/ui-kit/FormField/Fields/DulSubdivisionCodeField.d.ts +2 -0
  47. package/lib/ui-kit/FormField/Fields/DulSubdivisionCodeField.js +13 -0
  48. package/lib/ui-kit/FormField/Fields/DulSubdivisionCodeField.js.map +1 -0
  49. package/lib/ui-kit/FormField/Fields/InnField.js +8 -1
  50. package/lib/ui-kit/FormField/Fields/InnField.js.map +1 -1
  51. package/lib/ui-kit/FormField/Fields/OrganizationNameField.js +8 -1
  52. package/lib/ui-kit/FormField/Fields/OrganizationNameField.js.map +1 -1
  53. package/lib/ui-kit/FormField/getField.js +4 -4
  54. package/lib/ui-kit/FormField/getField.js.map +1 -1
  55. package/lib/ui-kit/Input/InputControl.js +3 -1
  56. package/lib/ui-kit/Input/InputControl.js.map +1 -1
  57. package/lib/ui-kit/Input/InputPopup.d.ts +1 -1
  58. package/lib/ui-kit/Input/InputPopup.js +1 -1
  59. package/lib/ui-kit/Input/InputPopup.js.map +1 -1
  60. package/lib/ui-kit/Input/InputProps.d.ts +3 -0
  61. package/lib/ui-kit/Input/useInputPopup.d.ts +4 -1
  62. package/lib/ui-kit/Input/useInputPopup.js +7 -4
  63. package/lib/ui-kit/Input/useInputPopup.js.map +1 -1
  64. package/mobile/bundle/api/dadataHints/dadataHintsType.d.ts +20 -4
  65. package/mobile/bundle/api/dadataHints/hintsListsOptions.d.ts +2 -24
  66. package/mobile/bundle/bundle.umd.js +78 -21
  67. package/mobile/bundle/bundle.umd.min.js +1 -1
  68. package/mobile/bundle/ui-kit/FormField/Fields/DulIssuedByField.d.ts +2 -0
  69. package/mobile/bundle/ui-kit/FormField/Fields/DulSubdivisionCodeField.d.ts +2 -0
  70. package/mobile/bundle/ui-kit/Input/InputPopup.d.ts +1 -1
  71. package/mobile/bundle/ui-kit/Input/InputProps.d.ts +3 -0
  72. package/mobile/bundle/ui-kit/Input/useInputPopup.d.ts +4 -1
  73. package/mobile/dist/api/dadataHints/dadataHints.js +15 -8
  74. package/mobile/dist/api/dadataHints/dadataHints.js.map +1 -1
  75. package/mobile/dist/api/dadataHints/dadataHintsType.d.ts +20 -4
  76. package/mobile/dist/api/dadataHints/hintsListsOptions.d.ts +2 -24
  77. package/mobile/dist/api/dadataHints/hintsListsOptions.js +31 -9
  78. package/mobile/dist/api/dadataHints/hintsListsOptions.js.map +1 -1
  79. package/mobile/dist/ui-kit/FormField/Fields/DulIssuedByField.d.ts +2 -0
  80. package/mobile/dist/ui-kit/FormField/Fields/DulIssuedByField.js +16 -0
  81. package/mobile/dist/ui-kit/FormField/Fields/DulIssuedByField.js.map +1 -0
  82. package/mobile/dist/ui-kit/FormField/Fields/DulSubdivisionCodeField.d.ts +2 -0
  83. package/mobile/dist/ui-kit/FormField/Fields/DulSubdivisionCodeField.js +15 -0
  84. package/mobile/dist/ui-kit/FormField/Fields/DulSubdivisionCodeField.js.map +1 -0
  85. package/mobile/dist/ui-kit/FormField/Fields/InnField.js +8 -1
  86. package/mobile/dist/ui-kit/FormField/Fields/InnField.js.map +1 -1
  87. package/mobile/dist/ui-kit/FormField/Fields/OrganizationNameField.js +8 -1
  88. package/mobile/dist/ui-kit/FormField/Fields/OrganizationNameField.js.map +1 -1
  89. package/mobile/dist/ui-kit/FormField/getField.js +4 -4
  90. package/mobile/dist/ui-kit/FormField/getField.js.map +1 -1
  91. package/mobile/dist/ui-kit/Input/InputControl.js +3 -1
  92. package/mobile/dist/ui-kit/Input/InputControl.js.map +1 -1
  93. package/mobile/dist/ui-kit/Input/InputPopup.d.ts +1 -1
  94. package/mobile/dist/ui-kit/Input/InputPopup.js +1 -1
  95. package/mobile/dist/ui-kit/Input/InputPopup.js.map +1 -1
  96. package/mobile/dist/ui-kit/Input/InputProps.d.ts +3 -0
  97. package/mobile/dist/ui-kit/Input/useInputPopup.d.ts +4 -1
  98. package/mobile/dist/ui-kit/Input/useInputPopup.js +7 -4
  99. package/mobile/dist/ui-kit/Input/useInputPopup.js.map +1 -1
  100. package/mobile/lib/api/dadataHints/dadataHints.js +15 -8
  101. package/mobile/lib/api/dadataHints/dadataHints.js.map +1 -1
  102. package/mobile/lib/api/dadataHints/dadataHintsType.d.ts +20 -4
  103. package/mobile/lib/api/dadataHints/hintsListsOptions.d.ts +2 -24
  104. package/mobile/lib/api/dadataHints/hintsListsOptions.js +26 -4
  105. package/mobile/lib/api/dadataHints/hintsListsOptions.js.map +1 -1
  106. package/mobile/lib/ui-kit/FormField/Fields/DulIssuedByField.d.ts +2 -0
  107. package/mobile/lib/ui-kit/FormField/Fields/DulIssuedByField.js +14 -0
  108. package/mobile/lib/ui-kit/FormField/Fields/DulIssuedByField.js.map +1 -0
  109. package/mobile/lib/ui-kit/FormField/Fields/DulSubdivisionCodeField.d.ts +2 -0
  110. package/mobile/lib/ui-kit/FormField/Fields/DulSubdivisionCodeField.js +13 -0
  111. package/mobile/lib/ui-kit/FormField/Fields/DulSubdivisionCodeField.js.map +1 -0
  112. package/mobile/lib/ui-kit/FormField/Fields/InnField.js +8 -1
  113. package/mobile/lib/ui-kit/FormField/Fields/InnField.js.map +1 -1
  114. package/mobile/lib/ui-kit/FormField/Fields/OrganizationNameField.js +8 -1
  115. package/mobile/lib/ui-kit/FormField/Fields/OrganizationNameField.js.map +1 -1
  116. package/mobile/lib/ui-kit/FormField/getField.js +4 -4
  117. package/mobile/lib/ui-kit/FormField/getField.js.map +1 -1
  118. package/mobile/lib/ui-kit/Input/InputControl.js +3 -1
  119. package/mobile/lib/ui-kit/Input/InputControl.js.map +1 -1
  120. package/mobile/lib/ui-kit/Input/InputPopup.d.ts +1 -1
  121. package/mobile/lib/ui-kit/Input/InputPopup.js +1 -1
  122. package/mobile/lib/ui-kit/Input/InputPopup.js.map +1 -1
  123. package/mobile/lib/ui-kit/Input/InputProps.d.ts +3 -0
  124. package/mobile/lib/ui-kit/Input/useInputPopup.d.ts +4 -1
  125. package/mobile/lib/ui-kit/Input/useInputPopup.js +7 -4
  126. package/mobile/lib/ui-kit/Input/useInputPopup.js.map +1 -1
  127. package/mobile/src/api/dadataHints/dadataHints.ts +27 -10
  128. package/mobile/src/api/dadataHints/dadataHintsType.ts +21 -4
  129. package/mobile/src/api/dadataHints/hintsListsOptions.ts +34 -4
  130. package/mobile/src/ui-kit/FormField/Fields/DulIssuedByField.tsx +26 -0
  131. package/mobile/src/ui-kit/FormField/Fields/DulSubdivisionCodeField.tsx +27 -0
  132. package/mobile/src/ui-kit/FormField/Fields/InnField.tsx +18 -7
  133. package/mobile/src/ui-kit/FormField/Fields/OrganizationNameField.tsx +17 -7
  134. package/mobile/src/ui-kit/FormField/getField.tsx +4 -4
  135. package/mobile/src/ui-kit/Input/InputControl.tsx +4 -0
  136. package/mobile/src/ui-kit/Input/InputPopup.tsx +2 -2
  137. package/mobile/src/ui-kit/Input/InputProps.ts +3 -0
  138. package/mobile/src/ui-kit/Input/useInputPopup.tsx +17 -5
  139. package/package.json +1 -1
  140. package/src/api/dadataHints/dadataHints.ts +27 -10
  141. package/src/api/dadataHints/dadataHintsType.ts +21 -4
  142. package/src/api/dadataHints/hintsListsOptions.ts +34 -4
  143. package/src/components/ApplicationLeadForm/ApplicationLeadForm.fixture.tsx +10 -15
  144. package/src/ui-kit/FormField/Fields/DulIssuedByField.tsx +26 -0
  145. package/src/ui-kit/FormField/Fields/DulSubdivisionCodeField.tsx +27 -0
  146. package/src/ui-kit/FormField/Fields/InnField.tsx +18 -7
  147. package/src/ui-kit/FormField/Fields/OrganizationNameField.tsx +17 -7
  148. package/src/ui-kit/FormField/getField.tsx +4 -4
  149. package/src/ui-kit/Input/InputControl.tsx +4 -0
  150. package/src/ui-kit/Input/InputPopup.tsx +2 -2
  151. package/src/ui-kit/Input/InputProps.ts +3 -0
  152. package/src/ui-kit/Input/useInputPopup.tsx +17 -5
  153. package/bundle/ui-kit/FormField/Fields/DulIssuedBy.d.ts +0 -2
  154. package/bundle/ui-kit/FormField/Fields/DulSubdivisionCode.d.ts +0 -2
  155. package/dist/ui-kit/FormField/Fields/DulIssuedBy.d.ts +0 -2
  156. package/dist/ui-kit/FormField/Fields/DulIssuedBy.js +0 -9
  157. package/dist/ui-kit/FormField/Fields/DulIssuedBy.js.map +0 -1
  158. package/dist/ui-kit/FormField/Fields/DulSubdivisionCode.d.ts +0 -2
  159. package/dist/ui-kit/FormField/Fields/DulSubdivisionCode.js +0 -9
  160. package/dist/ui-kit/FormField/Fields/DulSubdivisionCode.js.map +0 -1
  161. package/lib/ui-kit/FormField/Fields/DulIssuedBy.d.ts +0 -2
  162. package/lib/ui-kit/FormField/Fields/DulIssuedBy.js +0 -7
  163. package/lib/ui-kit/FormField/Fields/DulIssuedBy.js.map +0 -1
  164. package/lib/ui-kit/FormField/Fields/DulSubdivisionCode.d.ts +0 -2
  165. package/lib/ui-kit/FormField/Fields/DulSubdivisionCode.js +0 -7
  166. package/lib/ui-kit/FormField/Fields/DulSubdivisionCode.js.map +0 -1
  167. package/mobile/bundle/ui-kit/FormField/Fields/DulIssuedBy.d.ts +0 -2
  168. package/mobile/bundle/ui-kit/FormField/Fields/DulSubdivisionCode.d.ts +0 -2
  169. package/mobile/dist/ui-kit/FormField/Fields/DulIssuedBy.d.ts +0 -2
  170. package/mobile/dist/ui-kit/FormField/Fields/DulIssuedBy.js +0 -9
  171. package/mobile/dist/ui-kit/FormField/Fields/DulIssuedBy.js.map +0 -1
  172. package/mobile/dist/ui-kit/FormField/Fields/DulSubdivisionCode.d.ts +0 -2
  173. package/mobile/dist/ui-kit/FormField/Fields/DulSubdivisionCode.js +0 -9
  174. package/mobile/dist/ui-kit/FormField/Fields/DulSubdivisionCode.js.map +0 -1
  175. package/mobile/lib/ui-kit/FormField/Fields/DulIssuedBy.d.ts +0 -2
  176. package/mobile/lib/ui-kit/FormField/Fields/DulIssuedBy.js +0 -7
  177. package/mobile/lib/ui-kit/FormField/Fields/DulIssuedBy.js.map +0 -1
  178. package/mobile/lib/ui-kit/FormField/Fields/DulSubdivisionCode.d.ts +0 -2
  179. package/mobile/lib/ui-kit/FormField/Fields/DulSubdivisionCode.js +0 -7
  180. package/mobile/lib/ui-kit/FormField/Fields/DulSubdivisionCode.js.map +0 -1
  181. package/mobile/src/ui-kit/FormField/Fields/DulIssuedBy.tsx +0 -12
  182. package/mobile/src/ui-kit/FormField/Fields/DulSubdivisionCode.tsx +0 -17
  183. package/src/ui-kit/FormField/Fields/DulIssuedBy.tsx +0 -12
  184. package/src/ui-kit/FormField/Fields/DulSubdivisionCode.tsx +0 -17
@@ -1,4 +1,6 @@
1
- export const NAME_HINTS_LIST_OPTIONS = {
1
+ import { type DaDataSuggestion } from './dadataHintsType';
2
+
3
+ const NAME_HINTS_LIST_OPTIONS = {
2
4
  url: 'suggest/fio',
3
5
  requestData: {
4
6
  parts: ['NAME'],
@@ -6,7 +8,7 @@ export const NAME_HINTS_LIST_OPTIONS = {
6
8
  },
7
9
  };
8
10
 
9
- export const SURNAME_HINTS_LIST_OPTIONS = {
11
+ const SURNAME_HINTS_LIST_OPTIONS = {
10
12
  url: 'suggest/fio',
11
13
  requestData: {
12
14
  parts: ['SURNAME'],
@@ -14,7 +16,7 @@ export const SURNAME_HINTS_LIST_OPTIONS = {
14
16
  },
15
17
  };
16
18
 
17
- export const PATRONYMIC_HINTS_LIST_OPTIONS = {
19
+ const PATRONYMIC_HINTS_LIST_OPTIONS = {
18
20
  url: 'suggest/fio',
19
21
  requestData: {
20
22
  parts: ['PATRONYMIC'],
@@ -22,10 +24,32 @@ export const PATRONYMIC_HINTS_LIST_OPTIONS = {
22
24
  },
23
25
  };
24
26
 
25
- export const EMAIL_HINTS_LIST_OPTIONS = {
27
+ const EMAIL_HINTS_LIST_OPTIONS = {
26
28
  url: 'suggest/email',
27
29
  };
28
30
 
31
+ const PASSPORT_FMS_HINTS_LIST_OPTIONS = {
32
+ url: 'suggest/fms_unit',
33
+ };
34
+
35
+ const PASSPORT_CODE_HINTS_LIST_OPTIONS = {
36
+ url: 'suggest/fms_unit',
37
+ responseItemHandler: (item?: DaDataSuggestion) => item?.data?.code?.replace('-', '') || '',
38
+ };
39
+
40
+ const ORGANIZATION_NAME_HINTS_LIST_OPTIONS = {
41
+ url: 'suggest/party',
42
+ };
43
+
44
+ const ORGANIZATION_INN_HINTS_LIST_OPTIONS = {
45
+ url: 'suggest/party',
46
+ responseItemHandler: (item?: DaDataSuggestion) => item?.data?.inn || '',
47
+ };
48
+
49
+ const ADDRESS_HINTS_LIST_OPTIONS = {
50
+ url: 'suggest/address',
51
+ };
52
+
29
53
  export type HintsListOptions = Record<string, HintOption>;
30
54
 
31
55
  export const hintsListsOptions: HintsListOptions = {
@@ -33,6 +57,11 @@ export const hintsListsOptions: HintsListOptions = {
33
57
  surname: SURNAME_HINTS_LIST_OPTIONS,
34
58
  middleName: PATRONYMIC_HINTS_LIST_OPTIONS,
35
59
  email: EMAIL_HINTS_LIST_OPTIONS,
60
+ dulSubdivisionCode: PASSPORT_CODE_HINTS_LIST_OPTIONS,
61
+ dulIssuedBy: PASSPORT_FMS_HINTS_LIST_OPTIONS,
62
+ organizationName: ORGANIZATION_NAME_HINTS_LIST_OPTIONS,
63
+ inn: ORGANIZATION_INN_HINTS_LIST_OPTIONS,
64
+ participantAddress: ADDRESS_HINTS_LIST_OPTIONS,
36
65
  };
37
66
 
38
67
  export type HintOption = {
@@ -41,4 +70,5 @@ export type HintOption = {
41
70
  parts?: string[];
42
71
  gender?: string;
43
72
  };
73
+ responseItemHandler?: (item?: DaDataSuggestion) => string;
44
74
  };
@@ -0,0 +1,26 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type DaDataSuggestion } from '../../../api/dadataHints/dadataHintsType';
4
+ import { InputControl } from '../../Input/InputControl';
5
+ import { type CustomFieldProps } from '../CustomFieldProps';
6
+ import { validatorObj } from '../getObjectValidator';
7
+ import { getValidation } from '../getValidation';
8
+
9
+ export const DulIssuedByField = JSX<CustomFieldProps>(({ field, input }) => {
10
+ const { value: dulSubdivisionCode, onChange: changeDulSubdivisionCode } =
11
+ field('dulSubdivisionCode');
12
+
13
+ const onDaDataChange = useCallback((item: DaDataSuggestion) => {
14
+ changeDulSubdivisionCode?.(item?.data?.code?.replace('-', ''));
15
+ }, []);
16
+
17
+ return (
18
+ <InputControl
19
+ label="Кем выдан"
20
+ {...input}
21
+ {...getValidation(field('dulIssuedBy'), validatorObj.dulIssuedBy, input?.required)}
22
+ onDaDataChange={onDaDataChange}
23
+ daDataQueryPrefix={dulSubdivisionCode}
24
+ />
25
+ );
26
+ });
@@ -0,0 +1,27 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type DaDataSuggestion } from '../../../api/dadataHints/dadataHintsType';
4
+ import { InputControl } from '../../Input/InputControl';
5
+ import { type CustomFieldProps } from '../CustomFieldProps';
6
+ import { validatorObj } from '../getObjectValidator';
7
+ import { getValidation } from '../getValidation';
8
+
9
+ export const DulSubdivisionCodeField = JSX<CustomFieldProps>(({ field, input }) => {
10
+ const onDaDataChange = useCallback((item: DaDataSuggestion) => {
11
+ field?.('dulIssuedBy')?.onChange?.(item?.data?.name);
12
+ }, []);
13
+
14
+ return (
15
+ <InputControl
16
+ label="Код подразделения"
17
+ type="number"
18
+ {...input}
19
+ {...getValidation(
20
+ field('dulSubdivisionCode'),
21
+ validatorObj.dulSubdivisionCode,
22
+ input?.required,
23
+ )}
24
+ onDaDataChange={onDaDataChange}
25
+ />
26
+ );
27
+ });
@@ -1,13 +1,24 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type DaDataSuggestion } from '../../../api/dadataHints/dadataHintsType';
2
4
  import { InputControl } from '../../Input/InputControl';
3
5
  import { type CustomFieldProps } from '../CustomFieldProps';
4
6
  import { validatorObj } from '../getObjectValidator';
5
7
  import { getValidation } from '../getValidation';
6
8
 
7
- export const InnField = JSX<CustomFieldProps>(({ field, input }) => (
8
- <InputControl
9
- label="ИНН"
10
- type="number"
11
- {...getValidation(field('inn'), validatorObj.inn, input?.required)}
12
- />
13
- ));
9
+ export const InnField = JSX<CustomFieldProps>(({ field, input }) => {
10
+ const onDaDataChange = useCallback((item: DaDataSuggestion) => {
11
+ field?.('organizationName')?.onChange?.(item.data?.name?.short_with_opf);
12
+ field?.('legalForm')?.onChange?.(item.data?.opf?.short);
13
+ }, []);
14
+
15
+ return (
16
+ <InputControl
17
+ label="ИНН"
18
+ type="number"
19
+ {...input}
20
+ {...getValidation(field('inn'), validatorObj.inn, input?.required)}
21
+ onDaDataChange={onDaDataChange}
22
+ />
23
+ );
24
+ });
@@ -1,13 +1,23 @@
1
1
  import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type DaDataSuggestion } from '../../../api/dadataHints/dadataHintsType';
2
4
  import { InputControl } from '../../Input/InputControl';
3
5
  import { type CustomFieldProps } from '../CustomFieldProps';
4
6
  import { validatorObj } from '../getObjectValidator';
5
7
  import { getValidation } from '../getValidation';
6
8
 
7
- export const OrganizationNameField = JSX<CustomFieldProps>(({ field, input }) => (
8
- <InputControl
9
- label="Наименование организации"
10
- {...getValidation(field('organizationName'), validatorObj.organizationName, input?.required)}
11
- {...input}
12
- />
13
- ));
9
+ export const OrganizationNameField = JSX<CustomFieldProps>(({ field, input }) => {
10
+ const onDaDataChange = useCallback((item: DaDataSuggestion) => {
11
+ field?.('inn')?.onChange?.(item.data?.inn);
12
+ field?.('legalForm')?.onChange?.(item.data?.opf?.short);
13
+ }, []);
14
+
15
+ return (
16
+ <InputControl
17
+ label="Наименование организации"
18
+ {...input}
19
+ {...getValidation(field('organizationName'), validatorObj.organizationName, input?.required)}
20
+ onDaDataChange={onDaDataChange}
21
+ />
22
+ );
23
+ });
@@ -26,10 +26,10 @@ import { ConsentToReceiveMaterialsField } from './Fields/ConsentToReceiveMateria
26
26
  import { DependentsField } from './Fields/DependentsField';
27
27
  import { DesiredMeetingDateField } from './Fields/DesiredMeetingDateField';
28
28
  import { DulIssueDateField } from './Fields/DulIssueDateField';
29
- import { DulIssuedBy } from './Fields/DulIssuedBy';
29
+ import { DulIssuedByField } from './Fields/DulIssuedByField';
30
30
  import { DulNumberField } from './Fields/DulNumberField';
31
31
  import { DulSerieField } from './Fields/DulSerieField';
32
- import { DulSubdivisionCode } from './Fields/DulSubdivisionCode';
32
+ import { DulSubdivisionCodeField } from './Fields/DulSubdivisionCodeField';
33
33
  import { EducationField } from './Fields/EducationField';
34
34
  import { EmailField } from './Fields/EmailField';
35
35
  import { EmployerActivitiesField } from './Fields/EmployerActivitiesField';
@@ -163,8 +163,8 @@ export const getField =
163
163
  dulSerie: <DulSerieField field={field} input={input} />,
164
164
  dulNumber: <DulNumberField field={field} input={input} />,
165
165
  dulIssueDateField: <DulIssueDateField field={field} input={input} />,
166
- dulSubdivisionCode: <DulSubdivisionCode field={field} input={input} />,
167
- dulIssuedBy: <DulIssuedBy field={field} input={input} />,
166
+ dulSubdivisionCode: <DulSubdivisionCodeField field={field} input={input} />,
167
+ dulIssuedBy: <DulIssuedByField field={field} input={input} />,
168
168
  participantAddress: <ParticipantAddressField field={field} input={input} />,
169
169
  participantDateRegistration: <ParticipantDateRegistrationField field={field} input={input} />,
170
170
  };
@@ -18,10 +18,12 @@ export const InputControl = JSX<InputProps>(
18
18
  error,
19
19
  errors,
20
20
  onChange = noop,
21
+ onDaDataChange,
21
22
  onBlur,
22
23
  isTextarea,
23
24
  type,
24
25
  name = '',
26
+ daDataQueryPrefix,
25
27
  dadata = false,
26
28
  }) => {
27
29
  const [isOpen, { setFalse: close, setTrue: open }] = useBool();
@@ -31,7 +33,9 @@ export const InputControl = JSX<InputProps>(
31
33
  isOpen: isOpen && dadata,
32
34
  name,
33
35
  value,
36
+ daDataQueryPrefix,
34
37
  onChange,
38
+ onDaDataChange,
35
39
  });
36
40
 
37
41
  return (
@@ -3,7 +3,7 @@ import { type DaDataSuggestion } from '../../api/dadataHints/dadataHintsType';
3
3
 
4
4
  export interface InputPopupProps {
5
5
  options?: Array<DaDataSuggestion>;
6
- onChange: (e: string) => void;
6
+ onChange: (e: DaDataSuggestion) => void;
7
7
  value?: string;
8
8
  }
9
9
 
@@ -17,7 +17,7 @@ export const InputPopup = JSX<InputPopupProps>(({ options, onChange }) => (
17
17
  key={key.toString()}
18
18
  className="flex px-m py-s cursor-pointer hover:bg-main-divider pr-5xl relative"
19
19
  role="listitem"
20
- onMouseDown={() => onChange(item.processedValue)}
20
+ onMouseDown={() => onChange(item)}
21
21
  >
22
22
  <span className="min-h-6">{item.processedValue}</span>
23
23
  </div>
@@ -1,4 +1,5 @@
1
1
  import { type DefaultControlType } from '../../model/DefaultControlType';
2
+ import { type DaDataSuggestion } from '../../api/dadataHints/dadataHintsType';
2
3
  import { type InputTypes } from '../../model/InputTypes';
3
4
  import { type ControlProps } from '../ControlProps';
4
5
  import { type PreventableEventWithTarget } from '../PreventableEvent';
@@ -10,6 +11,8 @@ export interface InputProps<V = string> extends DefaultControlType, ControlProps
10
11
  pattern?: string;
11
12
  onFocus?: (ev: PreventableEventWithTarget) => void;
12
13
  onBlur?: (ev?: PreventableEventWithTarget) => void;
14
+ onDaDataChange?: (ev: DaDataSuggestion) => void;
15
+ daDataQueryPrefix?: string;
13
16
  valid?: boolean;
14
17
  disabled?: boolean;
15
18
  autoFocus?: boolean;
@@ -10,10 +10,19 @@ interface InputPopupOptions {
10
10
  isOpen?: boolean;
11
11
  name: string;
12
12
  value?: string;
13
+ daDataQueryPrefix?: string;
13
14
  onChange: (e: string) => void;
15
+ onDaDataChange?: (e: DaDataSuggestion) => void;
14
16
  }
15
17
 
16
- export function useInputPopup({ isOpen, value, name, onChange }: InputPopupOptions) {
18
+ export function useInputPopup({
19
+ isOpen,
20
+ value,
21
+ name,
22
+ onChange,
23
+ onDaDataChange,
24
+ daDataQueryPrefix,
25
+ }: InputPopupOptions) {
17
26
  const prevInputValue = useRef(value);
18
27
  const currentInputValue = useRef(value);
19
28
  const [hintsList, setHintsList] = useState<Array<DaDataSuggestion>>([]);
@@ -27,10 +36,11 @@ export function useInputPopup({ isOpen, value, name, onChange }: InputPopupOptio
27
36
  }, [value]);
28
37
 
29
38
  const handleChange = useCallback(
30
- (option: string) => {
39
+ (option: DaDataSuggestion) => {
31
40
  close();
32
- currentInputValue.current = option;
33
- onChange && onChange(option);
41
+ currentInputValue.current = option.processedValue;
42
+ onChange && onChange(option.processedValue);
43
+ onDaDataChange && onDaDataChange(option);
34
44
  },
35
45
  [close, onChange],
36
46
  );
@@ -44,16 +54,18 @@ export function useInputPopup({ isOpen, value, name, onChange }: InputPopupOptio
44
54
  }
45
55
  const result = await getDaDataHints({
46
56
  url: defaultHintsListOptions.url,
57
+ responseItemHandler: defaultHintsListOptions.responseItemHandler,
47
58
  requestData: {
48
59
  ...defaultHintsListOptions?.requestData,
49
60
  },
50
61
  query: searchValue,
62
+ queryPrefix: daDataQueryPrefix,
51
63
  });
52
64
  if (result?.length) {
53
65
  setHintsList(result);
54
66
  }
55
67
  },
56
- [],
68
+ [daDataQueryPrefix],
57
69
  );
58
70
 
59
71
  const debouncedGetHintsList = useMemo(() => debounce(getHintsList, 300), [getHintsList]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@redneckz/wildless-cms-uni-blocks",
3
- "version": "0.14.596",
3
+ "version": "0.14.597",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "author": "ЦК",
@@ -2,17 +2,34 @@ import { type DaDataSuggestion, type ListRequestOption } from './dadataHintsType
2
2
 
3
3
  const DEFAULT_HINTS_COUNT = 10;
4
4
 
5
- const getResponseHandler = (response: { suggestions: Array<DaDataSuggestion> }) => {
6
- const responseData: Array<DaDataSuggestion> = response?.suggestions || [];
5
+ const defaultResponseItemHandler = (item?: DaDataSuggestion): string => item?.value || '';
7
6
 
8
- return responseData.map((item) => ({
9
- ...item,
10
- processedValue: item?.value,
11
- }));
12
- };
7
+ const getResponseHandler =
8
+ (itemHandler: (item?: DaDataSuggestion) => string) =>
9
+ (response: { suggestions: Array<DaDataSuggestion> }) => {
10
+ const responseData: Array<DaDataSuggestion> = response?.suggestions || [];
11
+
12
+ return responseData.map((item) => {
13
+ const value = itemHandler(item);
14
+
15
+ return {
16
+ ...item,
17
+ processedValue: value,
18
+ };
19
+ });
20
+ };
13
21
 
14
22
  export const getDaDataHints = (options: ListRequestOption): Promise<Array<DaDataSuggestion>> => {
15
- const { url, query, requestData = {} } = options;
23
+ const {
24
+ url,
25
+ query,
26
+ queryPrefix,
27
+ requestData = {},
28
+ responseItemHandler = defaultResponseItemHandler,
29
+ } = options;
30
+ const responseHandler = getResponseHandler(responseItemHandler);
31
+ const queryPrefixValue = queryPrefix ? `${queryPrefix}, ` : '';
32
+ const combinedQuery = `${queryPrefixValue}${query}`;
16
33
 
17
34
  const result = fetch(`/api/v1/suggestions/${url}`, {
18
35
  method: 'POST',
@@ -23,11 +40,11 @@ export const getDaDataHints = (options: ListRequestOption): Promise<Array<DaData
23
40
  body: JSON.stringify({
24
41
  count: DEFAULT_HINTS_COUNT,
25
42
  ...requestData,
26
- query,
43
+ query: combinedQuery,
27
44
  }),
28
45
  })
29
46
  .then((response) => response.json())
30
- .then(getResponseHandler);
47
+ .then(responseHandler);
31
48
 
32
49
  return result;
33
50
  };
@@ -8,9 +8,9 @@ export interface DaDataSuggestion {
8
8
  processedValue: string;
9
9
  }
10
10
 
11
- export type DaDataGender = 'MALE' | 'FEMALE' | 'UNKNOWN';
11
+ type DaDataGender = 'MALE' | 'FEMALE' | 'UNKNOWN';
12
12
 
13
- export interface DaDataFio {
13
+ interface DaDataFio {
14
14
  surname: Nullable<string>;
15
15
  name: Nullable<string>;
16
16
  patronymic: Nullable<string>;
@@ -19,15 +19,32 @@ export interface DaDataFio {
19
19
  source: null;
20
20
  }
21
21
 
22
- export interface DaDataEmail {
22
+ interface DaDataEmail {
23
23
  domain: Nullable<string>;
24
24
  local: string;
25
25
  }
26
26
 
27
- export type DaDataResponseItem = DaDataFio | DaDataEmail;
27
+ interface DaDataPassportFms {
28
+ code: string;
29
+ name: string;
30
+ }
31
+
32
+ interface DaDataOrganization {
33
+ inn: string;
34
+ name: {
35
+ short_with_opf: string;
36
+ };
37
+ opf: {
38
+ short: string;
39
+ };
40
+ }
41
+
42
+ type DaDataResponseItem = Partial<DaDataFio & DaDataEmail & DaDataPassportFms & DaDataOrganization>;
28
43
 
29
44
  export interface ListRequestOption {
30
45
  url: string;
31
46
  query?: string;
47
+ queryPrefix?: string;
32
48
  requestData?: HintOption['requestData'];
49
+ responseItemHandler?: (item?: DaDataSuggestion) => string;
33
50
  }
@@ -1,4 +1,6 @@
1
- export const NAME_HINTS_LIST_OPTIONS = {
1
+ import { type DaDataSuggestion } from './dadataHintsType';
2
+
3
+ const NAME_HINTS_LIST_OPTIONS = {
2
4
  url: 'suggest/fio',
3
5
  requestData: {
4
6
  parts: ['NAME'],
@@ -6,7 +8,7 @@ export const NAME_HINTS_LIST_OPTIONS = {
6
8
  },
7
9
  };
8
10
 
9
- export const SURNAME_HINTS_LIST_OPTIONS = {
11
+ const SURNAME_HINTS_LIST_OPTIONS = {
10
12
  url: 'suggest/fio',
11
13
  requestData: {
12
14
  parts: ['SURNAME'],
@@ -14,7 +16,7 @@ export const SURNAME_HINTS_LIST_OPTIONS = {
14
16
  },
15
17
  };
16
18
 
17
- export const PATRONYMIC_HINTS_LIST_OPTIONS = {
19
+ const PATRONYMIC_HINTS_LIST_OPTIONS = {
18
20
  url: 'suggest/fio',
19
21
  requestData: {
20
22
  parts: ['PATRONYMIC'],
@@ -22,10 +24,32 @@ export const PATRONYMIC_HINTS_LIST_OPTIONS = {
22
24
  },
23
25
  };
24
26
 
25
- export const EMAIL_HINTS_LIST_OPTIONS = {
27
+ const EMAIL_HINTS_LIST_OPTIONS = {
26
28
  url: 'suggest/email',
27
29
  };
28
30
 
31
+ const PASSPORT_FMS_HINTS_LIST_OPTIONS = {
32
+ url: 'suggest/fms_unit',
33
+ };
34
+
35
+ const PASSPORT_CODE_HINTS_LIST_OPTIONS = {
36
+ url: 'suggest/fms_unit',
37
+ responseItemHandler: (item?: DaDataSuggestion) => item?.data?.code?.replace('-', '') || '',
38
+ };
39
+
40
+ const ORGANIZATION_NAME_HINTS_LIST_OPTIONS = {
41
+ url: 'suggest/party',
42
+ };
43
+
44
+ const ORGANIZATION_INN_HINTS_LIST_OPTIONS = {
45
+ url: 'suggest/party',
46
+ responseItemHandler: (item?: DaDataSuggestion) => item?.data?.inn || '',
47
+ };
48
+
49
+ const ADDRESS_HINTS_LIST_OPTIONS = {
50
+ url: 'suggest/address',
51
+ };
52
+
29
53
  export type HintsListOptions = Record<string, HintOption>;
30
54
 
31
55
  export const hintsListsOptions: HintsListOptions = {
@@ -33,6 +57,11 @@ export const hintsListsOptions: HintsListOptions = {
33
57
  surname: SURNAME_HINTS_LIST_OPTIONS,
34
58
  middleName: PATRONYMIC_HINTS_LIST_OPTIONS,
35
59
  email: EMAIL_HINTS_LIST_OPTIONS,
60
+ dulSubdivisionCode: PASSPORT_CODE_HINTS_LIST_OPTIONS,
61
+ dulIssuedBy: PASSPORT_FMS_HINTS_LIST_OPTIONS,
62
+ organizationName: ORGANIZATION_NAME_HINTS_LIST_OPTIONS,
63
+ inn: ORGANIZATION_INN_HINTS_LIST_OPTIONS,
64
+ participantAddress: ADDRESS_HINTS_LIST_OPTIONS,
36
65
  };
37
66
 
38
67
  export type HintOption = {
@@ -41,4 +70,5 @@ export type HintOption = {
41
70
  parts?: string[];
42
71
  gender?: string;
43
72
  };
73
+ responseItemHandler?: (item?: DaDataSuggestion) => string;
44
74
  };
@@ -23,12 +23,7 @@ export default {
23
23
  {
24
24
  columns: 2,
25
25
  inputs: [
26
- {
27
- fieldType: 'common',
28
- name: 'participantAddress',
29
- required: true,
30
- dadata: true,
31
- },
26
+ { fieldType: 'common', name: 'surname', required: true, dadata: true },
32
27
  { fieldType: 'common', name: 'name', required: true, dadata: true },
33
28
  { fieldType: 'common', name: 'middleName', dadata: true },
34
29
  { fieldType: 'common', name: 'birthday', required: true },
@@ -66,14 +61,14 @@ export default {
66
61
  {
67
62
  columns: 2,
68
63
  inputs: [
69
- { fieldType: 'common', name: 'middleName', required: true },
70
- { fieldType: 'common', name: 'name', required: true },
71
- { fieldType: 'common', name: 'middleName' },
64
+ { fieldType: 'common', name: 'surname', required: true, dadata: true },
65
+ { fieldType: 'common', name: 'name', required: true, dadata: true },
66
+ { fieldType: 'common', name: 'middleName', dadata: true },
72
67
  { fieldType: 'common', name: 'sex', required: true },
73
68
  { fieldType: 'common', name: 'birthday', required: true },
74
69
  { fieldType: 'common', name: 'birthPlace', required: true },
75
70
  { fieldType: 'common', name: 'phone', required: true },
76
- { fieldType: 'common', name: 'email', required: true },
71
+ { fieldType: 'common', name: 'email', required: true, dadata: true },
77
72
  ],
78
73
  },
79
74
  {
@@ -82,12 +77,12 @@ export default {
82
77
  { fieldType: 'common', name: 'dulSerie', required: true },
83
78
  { fieldType: 'common', name: 'dulNumber', required: true },
84
79
  { fieldType: 'common', name: 'dulIssueDateField', required: true },
85
- { fieldType: 'common', name: 'dulSubdivisionCode', required: true },
80
+ { fieldType: 'common', name: 'dulSubdivisionCode', required: true, dadata: true },
86
81
  ],
87
82
  },
88
83
  {
89
84
  inputs: [
90
- { fieldType: 'common', name: 'dulIssuedBy', required: true },
85
+ { fieldType: 'common', name: 'dulIssuedBy', required: true, dadata: true },
91
86
  {
92
87
  fieldType: 'common',
93
88
  name: 'education',
@@ -102,7 +97,7 @@ export default {
102
97
  {
103
98
  inputs: [
104
99
  { fieldType: 'common', name: 'participantDateRegistration', required: true },
105
- { fieldType: 'common', name: 'participantAddress', required: true },
100
+ { fieldType: 'common', name: 'participantAddress', required: true, dadata: true },
106
101
  ],
107
102
  },
108
103
  ]}
@@ -127,13 +122,13 @@ export default {
127
122
  {
128
123
  inputs: [
129
124
  { fieldType: 'common', name: 'employment', required: true },
130
- { fieldType: 'common', name: 'organizationName', required: true },
125
+ { fieldType: 'common', name: 'organizationName', required: true, dadata: true },
131
126
  ],
132
127
  },
133
128
  {
134
129
  columns: 2,
135
130
  inputs: [
136
- { fieldType: 'common', name: 'inn', required: true },
131
+ { fieldType: 'common', name: 'inn', required: true, dadata: true },
137
132
  { fieldType: 'common', name: 'legalForm', required: true },
138
133
  ],
139
134
  },
@@ -0,0 +1,26 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type DaDataSuggestion } from '../../../api/dadataHints/dadataHintsType';
4
+ import { InputControl } from '../../Input/InputControl';
5
+ import { type CustomFieldProps } from '../CustomFieldProps';
6
+ import { validatorObj } from '../getObjectValidator';
7
+ import { getValidation } from '../getValidation';
8
+
9
+ export const DulIssuedByField = JSX<CustomFieldProps>(({ field, input }) => {
10
+ const { value: dulSubdivisionCode, onChange: changeDulSubdivisionCode } =
11
+ field('dulSubdivisionCode');
12
+
13
+ const onDaDataChange = useCallback((item: DaDataSuggestion) => {
14
+ changeDulSubdivisionCode?.(item?.data?.code?.replace('-', ''));
15
+ }, []);
16
+
17
+ return (
18
+ <InputControl
19
+ label="Кем выдан"
20
+ {...input}
21
+ {...getValidation(field('dulIssuedBy'), validatorObj.dulIssuedBy, input?.required)}
22
+ onDaDataChange={onDaDataChange}
23
+ daDataQueryPrefix={dulSubdivisionCode}
24
+ />
25
+ );
26
+ });
@@ -0,0 +1,27 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useCallback } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { type DaDataSuggestion } from '../../../api/dadataHints/dadataHintsType';
4
+ import { InputControl } from '../../Input/InputControl';
5
+ import { type CustomFieldProps } from '../CustomFieldProps';
6
+ import { validatorObj } from '../getObjectValidator';
7
+ import { getValidation } from '../getValidation';
8
+
9
+ export const DulSubdivisionCodeField = JSX<CustomFieldProps>(({ field, input }) => {
10
+ const onDaDataChange = useCallback((item: DaDataSuggestion) => {
11
+ field?.('dulIssuedBy')?.onChange?.(item?.data?.name);
12
+ }, []);
13
+
14
+ return (
15
+ <InputControl
16
+ label="Код подразделения"
17
+ type="number"
18
+ {...input}
19
+ {...getValidation(
20
+ field('dulSubdivisionCode'),
21
+ validatorObj.dulSubdivisionCode,
22
+ input?.required,
23
+ )}
24
+ onDaDataChange={onDaDataChange}
25
+ />
26
+ );
27
+ });