@cloud-ru/uikit-product-mobile-fields 0.11.24 → 0.11.26

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 (232) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/cjs/components/AdaptiveField/AdaptiveField.d.ts +13 -0
  3. package/dist/cjs/components/AdaptiveField/AdaptiveField.js +24 -0
  4. package/dist/cjs/components/AdaptiveField/index.d.ts +1 -0
  5. package/dist/cjs/components/AdaptiveField/index.js +17 -0
  6. package/dist/cjs/components/MobileFieldDate/MobileFieldDate.d.ts +33 -0
  7. package/dist/cjs/components/MobileFieldDate/MobileFieldDate.js +170 -0
  8. package/dist/cjs/components/MobileFieldDate/constants.d.ts +10 -0
  9. package/dist/cjs/components/MobileFieldDate/constants.js +31 -0
  10. package/dist/cjs/components/MobileFieldDate/index.d.ts +2 -0
  11. package/dist/cjs/components/MobileFieldDate/index.js +20 -0
  12. package/dist/cjs/components/MobileFieldDate/styles.module.css +57 -0
  13. package/dist/cjs/components/MobileFieldDate/types.d.ts +6 -0
  14. package/dist/cjs/components/MobileFieldDate/types.js +2 -0
  15. package/dist/cjs/components/MobileFieldDate/utils.d.ts +9 -0
  16. package/dist/cjs/components/MobileFieldDate/utils.js +49 -0
  17. package/dist/cjs/components/MobileFieldSelect/MobileFieldSelect.d.ts +2 -0
  18. package/dist/cjs/components/MobileFieldSelect/MobileFieldSelect.js +17 -0
  19. package/dist/cjs/components/MobileFieldSelect/MobileFieldSelectMultiple.d.ts +3 -0
  20. package/dist/cjs/components/MobileFieldSelect/MobileFieldSelectMultiple.js +154 -0
  21. package/dist/cjs/components/MobileFieldSelect/MobileFieldSelectSingle.d.ts +3 -0
  22. package/dist/cjs/components/MobileFieldSelect/MobileFieldSelectSingle.js +150 -0
  23. package/dist/cjs/components/MobileFieldSelect/hooks.d.ts +47 -0
  24. package/dist/cjs/components/MobileFieldSelect/hooks.js +102 -0
  25. package/dist/cjs/components/MobileFieldSelect/index.d.ts +2 -0
  26. package/dist/cjs/components/MobileFieldSelect/index.js +5 -0
  27. package/dist/cjs/components/MobileFieldSelect/legacy/components/Items/hooks.d.ts +12 -0
  28. package/dist/cjs/components/MobileFieldSelect/legacy/components/Items/hooks.js +36 -0
  29. package/dist/cjs/components/MobileFieldSelect/legacy/components/index.d.ts +1 -0
  30. package/dist/cjs/components/MobileFieldSelect/legacy/components/index.js +5 -0
  31. package/dist/cjs/components/MobileFieldSelect/legacy/hooks.d.ts +5 -0
  32. package/dist/cjs/components/MobileFieldSelect/legacy/hooks.js +31 -0
  33. package/dist/cjs/components/MobileFieldSelect/legacy/index.d.ts +3 -0
  34. package/dist/cjs/components/MobileFieldSelect/legacy/index.js +23 -0
  35. package/dist/cjs/components/MobileFieldSelect/legacy/utils.d.ts +30 -0
  36. package/dist/cjs/components/MobileFieldSelect/legacy/utils.js +114 -0
  37. package/dist/cjs/components/MobileFieldSelect/styles.module.css +213 -0
  38. package/dist/cjs/components/MobileFieldSelect/types.d.ts +88 -0
  39. package/dist/cjs/components/MobileFieldSelect/types.js +2 -0
  40. package/dist/cjs/components/MobileFieldSelect/utils/extractFieldDecoratorProps.d.ts +2 -0
  41. package/dist/cjs/components/MobileFieldSelect/utils/extractFieldDecoratorProps.js +21 -0
  42. package/dist/cjs/components/MobileFieldSelect/utils/extractListProps.d.ts +3 -0
  43. package/dist/cjs/components/MobileFieldSelect/utils/extractListProps.js +20 -0
  44. package/dist/cjs/components/MobileFieldSelect/utils/getArrowIcon.d.ts +13 -0
  45. package/dist/cjs/components/MobileFieldSelect/utils/getArrowIcon.js +11 -0
  46. package/dist/cjs/components/MobileFieldSelect/utils/index.d.ts +6 -0
  47. package/dist/cjs/components/MobileFieldSelect/utils/index.js +22 -0
  48. package/dist/cjs/components/MobileFieldSelect/utils/options.d.ts +8 -0
  49. package/dist/cjs/components/MobileFieldSelect/utils/options.js +61 -0
  50. package/dist/cjs/components/MobileFieldSelect/utils/typeGuards.d.ts +7 -0
  51. package/dist/cjs/components/MobileFieldSelect/utils/typeGuards.js +32 -0
  52. package/dist/cjs/components/MobileFieldSelect/utils/updateItems.d.ts +27 -0
  53. package/dist/cjs/components/MobileFieldSelect/utils/updateItems.js +81 -0
  54. package/dist/cjs/components/index.d.ts +3 -0
  55. package/dist/cjs/components/index.js +19 -0
  56. package/dist/cjs/constants/allFields.d.ts +10 -0
  57. package/dist/cjs/constants/allFields.js +13 -0
  58. package/dist/cjs/constants/dateFields.d.ts +24 -0
  59. package/dist/cjs/constants/dateFields.js +106 -0
  60. package/dist/cjs/constants/index.d.ts +2 -0
  61. package/dist/cjs/constants/index.js +18 -0
  62. package/dist/cjs/helperComponents/ButtonCopyValue/ButtonCopyValue.d.ts +14 -0
  63. package/dist/cjs/helperComponents/ButtonCopyValue/ButtonCopyValue.js +42 -0
  64. package/dist/cjs/helperComponents/ButtonCopyValue/helpers.d.ts +7 -0
  65. package/dist/cjs/helperComponents/ButtonCopyValue/helpers.js +17 -0
  66. package/dist/cjs/helperComponents/ButtonCopyValue/index.d.ts +1 -0
  67. package/dist/cjs/helperComponents/ButtonCopyValue/index.js +17 -0
  68. package/dist/cjs/helperComponents/ButtonCopyValue/styles.module.css +47 -0
  69. package/dist/cjs/helperComponents/FieldContainerPrivate/FieldContainerPrivate.d.ts +21 -0
  70. package/dist/cjs/helperComponents/FieldContainerPrivate/FieldContainerPrivate.js +32 -0
  71. package/dist/cjs/helperComponents/FieldContainerPrivate/index.d.ts +1 -0
  72. package/dist/cjs/helperComponents/FieldContainerPrivate/index.js +17 -0
  73. package/dist/cjs/helperComponents/FieldContainerPrivate/styles.module.css +219 -0
  74. package/dist/cjs/helperComponents/ItemContent/ItemContent.d.ts +9 -0
  75. package/dist/cjs/helperComponents/ItemContent/ItemContent.js +25 -0
  76. package/dist/cjs/helperComponents/ItemContent/index.d.ts +1 -0
  77. package/dist/cjs/helperComponents/ItemContent/index.js +17 -0
  78. package/dist/cjs/helperComponents/ItemContent/styles.module.css +122 -0
  79. package/dist/cjs/helperComponents/index.d.ts +3 -0
  80. package/dist/cjs/helperComponents/index.js +19 -0
  81. package/dist/cjs/hooks/dateHandlers/index.d.ts +3 -0
  82. package/dist/cjs/hooks/dateHandlers/index.js +19 -0
  83. package/dist/cjs/hooks/dateHandlers/useDateField.d.ts +28 -0
  84. package/dist/cjs/hooks/dateHandlers/useDateField.js +197 -0
  85. package/dist/cjs/hooks/dateHandlers/useDateFieldHelpersForMode.d.ts +18 -0
  86. package/dist/cjs/hooks/dateHandlers/useDateFieldHelpersForMode.js +98 -0
  87. package/dist/cjs/hooks/dateHandlers/useFocusHandlers.d.ts +15 -0
  88. package/dist/cjs/hooks/dateHandlers/useFocusHandlers.js +36 -0
  89. package/dist/cjs/hooks/dateHandlers/useHandlers.d.ts +6 -0
  90. package/dist/cjs/hooks/dateHandlers/useHandlers.js +12 -0
  91. package/dist/cjs/hooks/index.d.ts +5 -0
  92. package/dist/cjs/hooks/index.js +21 -0
  93. package/dist/cjs/hooks/styles.module.css +13 -0
  94. package/dist/cjs/hooks/useCopyButton.d.ts +15 -0
  95. package/dist/cjs/hooks/useCopyButton.js +16 -0
  96. package/dist/cjs/hooks/usePostfix.d.ts +6 -0
  97. package/dist/cjs/hooks/usePostfix.js +17 -0
  98. package/dist/cjs/hooks/usePrefix.d.ts +6 -0
  99. package/dist/cjs/hooks/usePrefix.js +17 -0
  100. package/dist/cjs/hooks/useValueControl.d.ts +7 -0
  101. package/dist/cjs/hooks/useValueControl.js +10 -0
  102. package/dist/cjs/index.d.ts +3 -0
  103. package/dist/cjs/index.js +21 -0
  104. package/dist/cjs/styles.module.css +0 -0
  105. package/dist/cjs/types/allFields.d.ts +8 -0
  106. package/dist/cjs/types/allFields.js +2 -0
  107. package/dist/cjs/types/dateFields.d.ts +11 -0
  108. package/dist/cjs/types/dateFields.js +2 -0
  109. package/dist/cjs/types/index.d.ts +2 -0
  110. package/dist/cjs/types/index.js +18 -0
  111. package/dist/cjs/utils/adaptiveField.d.ts +10 -0
  112. package/dist/cjs/utils/adaptiveField.js +17 -0
  113. package/dist/cjs/utils/dateFields.d.ts +10 -0
  114. package/dist/cjs/utils/dateFields.js +65 -0
  115. package/dist/cjs/utils/getValidationState.d.ts +5 -0
  116. package/dist/cjs/utils/getValidationState.js +7 -0
  117. package/dist/esm/components/AdaptiveField/AdaptiveField.d.ts +13 -0
  118. package/dist/esm/components/AdaptiveField/AdaptiveField.js +21 -0
  119. package/dist/esm/components/AdaptiveField/index.d.ts +1 -0
  120. package/dist/esm/components/AdaptiveField/index.js +1 -0
  121. package/dist/esm/components/MobileFieldDate/MobileFieldDate.d.ts +33 -0
  122. package/dist/esm/components/MobileFieldDate/MobileFieldDate.js +164 -0
  123. package/dist/esm/components/MobileFieldDate/constants.d.ts +10 -0
  124. package/dist/esm/components/MobileFieldDate/constants.js +28 -0
  125. package/dist/esm/components/MobileFieldDate/index.d.ts +2 -0
  126. package/dist/esm/components/MobileFieldDate/index.js +2 -0
  127. package/dist/esm/components/MobileFieldDate/styles.module.css +57 -0
  128. package/dist/esm/components/MobileFieldDate/types.d.ts +6 -0
  129. package/dist/esm/components/MobileFieldDate/types.js +1 -0
  130. package/dist/esm/components/MobileFieldDate/utils.d.ts +9 -0
  131. package/dist/esm/components/MobileFieldDate/utils.js +43 -0
  132. package/dist/esm/components/MobileFieldSelect/MobileFieldSelect.d.ts +2 -0
  133. package/dist/esm/components/MobileFieldSelect/MobileFieldSelect.js +14 -0
  134. package/dist/esm/components/MobileFieldSelect/MobileFieldSelectMultiple.d.ts +3 -0
  135. package/dist/esm/components/MobileFieldSelect/MobileFieldSelectMultiple.js +148 -0
  136. package/dist/esm/components/MobileFieldSelect/MobileFieldSelectSingle.d.ts +3 -0
  137. package/dist/esm/components/MobileFieldSelect/MobileFieldSelectSingle.js +144 -0
  138. package/dist/esm/components/MobileFieldSelect/hooks.d.ts +47 -0
  139. package/dist/esm/components/MobileFieldSelect/hooks.js +95 -0
  140. package/dist/esm/components/MobileFieldSelect/index.d.ts +2 -0
  141. package/dist/esm/components/MobileFieldSelect/index.js +1 -0
  142. package/dist/esm/components/MobileFieldSelect/legacy/components/Items/hooks.d.ts +12 -0
  143. package/dist/esm/components/MobileFieldSelect/legacy/components/Items/hooks.js +33 -0
  144. package/dist/esm/components/MobileFieldSelect/legacy/components/index.d.ts +1 -0
  145. package/dist/esm/components/MobileFieldSelect/legacy/components/index.js +1 -0
  146. package/dist/esm/components/MobileFieldSelect/legacy/hooks.d.ts +5 -0
  147. package/dist/esm/components/MobileFieldSelect/legacy/hooks.js +25 -0
  148. package/dist/esm/components/MobileFieldSelect/legacy/index.d.ts +3 -0
  149. package/dist/esm/components/MobileFieldSelect/legacy/index.js +3 -0
  150. package/dist/esm/components/MobileFieldSelect/legacy/utils.d.ts +30 -0
  151. package/dist/esm/components/MobileFieldSelect/legacy/utils.js +107 -0
  152. package/dist/esm/components/MobileFieldSelect/styles.module.css +213 -0
  153. package/dist/esm/components/MobileFieldSelect/types.d.ts +88 -0
  154. package/dist/esm/components/MobileFieldSelect/types.js +1 -0
  155. package/dist/esm/components/MobileFieldSelect/utils/extractFieldDecoratorProps.d.ts +2 -0
  156. package/dist/esm/components/MobileFieldSelect/utils/extractFieldDecoratorProps.js +18 -0
  157. package/dist/esm/components/MobileFieldSelect/utils/extractListProps.d.ts +3 -0
  158. package/dist/esm/components/MobileFieldSelect/utils/extractListProps.js +17 -0
  159. package/dist/esm/components/MobileFieldSelect/utils/getArrowIcon.d.ts +13 -0
  160. package/dist/esm/components/MobileFieldSelect/utils/getArrowIcon.js +8 -0
  161. package/dist/esm/components/MobileFieldSelect/utils/index.d.ts +6 -0
  162. package/dist/esm/components/MobileFieldSelect/utils/index.js +6 -0
  163. package/dist/esm/components/MobileFieldSelect/utils/options.d.ts +8 -0
  164. package/dist/esm/components/MobileFieldSelect/utils/options.js +56 -0
  165. package/dist/esm/components/MobileFieldSelect/utils/typeGuards.d.ts +7 -0
  166. package/dist/esm/components/MobileFieldSelect/utils/typeGuards.js +24 -0
  167. package/dist/esm/components/MobileFieldSelect/utils/updateItems.d.ts +27 -0
  168. package/dist/esm/components/MobileFieldSelect/utils/updateItems.js +76 -0
  169. package/dist/esm/components/index.d.ts +3 -0
  170. package/dist/esm/components/index.js +3 -0
  171. package/dist/esm/constants/allFields.d.ts +10 -0
  172. package/dist/esm/constants/allFields.js +10 -0
  173. package/dist/esm/constants/dateFields.d.ts +24 -0
  174. package/dist/esm/constants/dateFields.js +103 -0
  175. package/dist/esm/constants/index.d.ts +2 -0
  176. package/dist/esm/constants/index.js +2 -0
  177. package/dist/esm/helperComponents/ButtonCopyValue/ButtonCopyValue.d.ts +14 -0
  178. package/dist/esm/helperComponents/ButtonCopyValue/ButtonCopyValue.js +36 -0
  179. package/dist/esm/helperComponents/ButtonCopyValue/helpers.d.ts +7 -0
  180. package/dist/esm/helperComponents/ButtonCopyValue/helpers.js +14 -0
  181. package/dist/esm/helperComponents/ButtonCopyValue/index.d.ts +1 -0
  182. package/dist/esm/helperComponents/ButtonCopyValue/index.js +1 -0
  183. package/dist/esm/helperComponents/ButtonCopyValue/styles.module.css +47 -0
  184. package/dist/esm/helperComponents/FieldContainerPrivate/FieldContainerPrivate.d.ts +21 -0
  185. package/dist/esm/helperComponents/FieldContainerPrivate/FieldContainerPrivate.js +26 -0
  186. package/dist/esm/helperComponents/FieldContainerPrivate/index.d.ts +1 -0
  187. package/dist/esm/helperComponents/FieldContainerPrivate/index.js +1 -0
  188. package/dist/esm/helperComponents/FieldContainerPrivate/styles.module.css +219 -0
  189. package/dist/esm/helperComponents/ItemContent/ItemContent.d.ts +9 -0
  190. package/dist/esm/helperComponents/ItemContent/ItemContent.js +19 -0
  191. package/dist/esm/helperComponents/ItemContent/index.d.ts +1 -0
  192. package/dist/esm/helperComponents/ItemContent/index.js +1 -0
  193. package/dist/esm/helperComponents/ItemContent/styles.module.css +122 -0
  194. package/dist/esm/helperComponents/index.d.ts +3 -0
  195. package/dist/esm/helperComponents/index.js +3 -0
  196. package/dist/esm/hooks/dateHandlers/index.d.ts +3 -0
  197. package/dist/esm/hooks/dateHandlers/index.js +3 -0
  198. package/dist/esm/hooks/dateHandlers/useDateField.d.ts +28 -0
  199. package/dist/esm/hooks/dateHandlers/useDateField.js +194 -0
  200. package/dist/esm/hooks/dateHandlers/useDateFieldHelpersForMode.d.ts +18 -0
  201. package/dist/esm/hooks/dateHandlers/useDateFieldHelpersForMode.js +95 -0
  202. package/dist/esm/hooks/dateHandlers/useFocusHandlers.d.ts +15 -0
  203. package/dist/esm/hooks/dateHandlers/useFocusHandlers.js +33 -0
  204. package/dist/esm/hooks/dateHandlers/useHandlers.d.ts +6 -0
  205. package/dist/esm/hooks/dateHandlers/useHandlers.js +9 -0
  206. package/dist/esm/hooks/index.d.ts +5 -0
  207. package/dist/esm/hooks/index.js +5 -0
  208. package/dist/esm/hooks/styles.module.css +13 -0
  209. package/dist/esm/hooks/useCopyButton.d.ts +15 -0
  210. package/dist/esm/hooks/useCopyButton.js +13 -0
  211. package/dist/esm/hooks/usePostfix.d.ts +6 -0
  212. package/dist/esm/hooks/usePostfix.js +11 -0
  213. package/dist/esm/hooks/usePrefix.d.ts +6 -0
  214. package/dist/esm/hooks/usePrefix.js +11 -0
  215. package/dist/esm/hooks/useValueControl.d.ts +7 -0
  216. package/dist/esm/hooks/useValueControl.js +7 -0
  217. package/dist/esm/index.d.ts +3 -0
  218. package/dist/esm/index.js +3 -0
  219. package/dist/esm/styles.module.css +0 -0
  220. package/dist/esm/types/allFields.d.ts +8 -0
  221. package/dist/esm/types/allFields.js +1 -0
  222. package/dist/esm/types/dateFields.d.ts +11 -0
  223. package/dist/esm/types/dateFields.js +1 -0
  224. package/dist/esm/types/index.d.ts +2 -0
  225. package/dist/esm/types/index.js +2 -0
  226. package/dist/esm/utils/adaptiveField.d.ts +10 -0
  227. package/dist/esm/utils/adaptiveField.js +13 -0
  228. package/dist/esm/utils/dateFields.d.ts +10 -0
  229. package/dist/esm/utils/dateFields.js +59 -0
  230. package/dist/esm/utils/getValidationState.d.ts +5 -0
  231. package/dist/esm/utils/getValidationState.js +4 -0
  232. package/package.json +7 -6
@@ -0,0 +1,164 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import cn from 'classnames';
14
+ import mergeRefs from 'merge-refs';
15
+ import { forwardRef, useCallback, useEffect, useMemo, useRef } from 'react';
16
+ import { useUncontrolledProp } from 'uncontrollable';
17
+ import { CalendarSVG } from '@sbercloud/uikit-product-icons';
18
+ import { MobileDropdown } from '@sbercloud/uikit-product-mobile-dropdown';
19
+ import { Calendar } from '@snack-uikit/calendar';
20
+ import { FieldDecorator } from '@snack-uikit/fields';
21
+ import { ICON_SIZE, InputPrivate, runAfterRerender, SIZE, useButtonNavigation, useClearButton, } from '@snack-uikit/input-private';
22
+ import { Scroll } from '@snack-uikit/scroll';
23
+ import { extractSupportProps } from '@snack-uikit/utils';
24
+ import { CONTAINER_VARIANT, DEFAULT_LOCALE, SlotKey, VALIDATION_STATE } from '../../constants';
25
+ import { FieldContainerPrivate } from '../../helperComponents';
26
+ import { useCopyButton, useDateField, useFocusHandlers, useHandlers } from '../../hooks';
27
+ import { getValidationState } from '../../utils/getValidationState';
28
+ import styles from './styles.module.css';
29
+ export const MobileFieldDate = forwardRef((_a, ref) => {
30
+ var _b;
31
+ var { id, name, value: valueProp, disabled = false, readonly = false, showCopyButton: showCopyButtonProp = true, showClearButton: showClearButtonProp = true, open, onOpenChange, onChange, onFocus, onBlur: onBlurProp, className, label, labelTooltip, labelTooltipPlacement, required = false, caption, hint, showHintIcon, size = SIZE.S, validationState = VALIDATION_STATE.Default, buildCellProps, error, mode, autoFocus } = _a, rest = __rest(_a, ["id", "name", "value", "disabled", "readonly", "showCopyButton", "showClearButton", "open", "onOpenChange", "onChange", "onFocus", "onBlur", "className", "label", "labelTooltip", "labelTooltipPlacement", "required", "caption", "hint", "showHintIcon", "size", "validationState", "buildCellProps", "error", "mode", "autoFocus"]);
32
+ const [isOpen, setIsOpen] = useUncontrolledProp(open, false, onOpenChange);
33
+ const localRef = useRef(null);
34
+ const clearButtonRef = useRef(null);
35
+ const copyButtonRef = useRef(null);
36
+ const calendarIconSize = size === SIZE.S ? ICON_SIZE.Xs : ICON_SIZE.S;
37
+ const showDropList = isOpen && !readonly && !disabled;
38
+ const showAdditionalButton = Boolean(valueProp && !disabled);
39
+ const showClearButton = showClearButtonProp && showAdditionalButton && !readonly;
40
+ const showCopyButton = showCopyButtonProp && showAdditionalButton && readonly;
41
+ const showSeconds = mode === 'date-time' ? ((_b = rest.showSeconds) !== null && _b !== void 0 ? _b : true) : undefined;
42
+ const fieldValidationState = getValidationState({ validationState, error });
43
+ const navigationStartRef = useRef(null);
44
+ const checkForLeavingFocus = useCallback((event) => {
45
+ if (event.key === 'ArrowDown') {
46
+ setIsOpen(true);
47
+ setTimeout(() => { var _a; return (_a = navigationStartRef.current) === null || _a === void 0 ? void 0 : _a.focus(); }, 0);
48
+ }
49
+ }, [setIsOpen]);
50
+ const handleClear = useCallback(() => {
51
+ var _a, _b, _c;
52
+ onChange && onChange(undefined);
53
+ if ((_a = localRef.current) === null || _a === void 0 ? void 0 : _a.value) {
54
+ localRef.current.value = '';
55
+ }
56
+ if (required) {
57
+ (_b = localRef.current) === null || _b === void 0 ? void 0 : _b.focus();
58
+ setIsOpen(true);
59
+ }
60
+ else {
61
+ (_c = localRef.current) === null || _c === void 0 ? void 0 : _c.blur();
62
+ setIsOpen(false);
63
+ }
64
+ }, [onChange, required, setIsOpen]);
65
+ const getStringDateValue = useCallback((date) => {
66
+ if (!date)
67
+ return '';
68
+ if (mode === 'date') {
69
+ return date.toLocaleDateString(DEFAULT_LOCALE);
70
+ }
71
+ return date.toLocaleString(DEFAULT_LOCALE, {
72
+ year: 'numeric',
73
+ month: 'numeric',
74
+ day: 'numeric',
75
+ hour: '2-digit',
76
+ minute: '2-digit',
77
+ second: showSeconds ? '2-digit' : undefined,
78
+ });
79
+ }, [mode, showSeconds]);
80
+ const valueToCopy = getStringDateValue(valueProp);
81
+ const clearButtonSettings = useClearButton({ clearButtonRef, showClearButton, size, onClear: handleClear });
82
+ const copyButtonSettings = useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy });
83
+ const calendarIcon = useMemo(() => ({
84
+ active: false,
85
+ show: true,
86
+ id: 'calendarIcon',
87
+ render: props => (_jsx(CalendarSVG, Object.assign({}, props, { size: calendarIconSize, className: styles.calendarIcon, "data-size": size }))),
88
+ }), [calendarIconSize, size]);
89
+ const memorizedButtons = useMemo(() => [clearButtonSettings, copyButtonSettings, calendarIcon], [clearButtonSettings, copyButtonSettings, calendarIcon]);
90
+ const { value, handleChange, handleClick: dateInputClickHandler, handleKeyDown: dateInputKeyDownHandler, handleBlur: dateInputBlurHandler, mask, setInputFocus, } = useDateField({
91
+ inputRef: localRef,
92
+ onChange,
93
+ readonly,
94
+ locale: DEFAULT_LOCALE,
95
+ setIsOpen,
96
+ mode,
97
+ showSeconds,
98
+ });
99
+ const setInputFocusFromButtons = useCallback(() => setInputFocus(mode === 'date' ? SlotKey.Year : SlotKey.Seconds), [mode, setInputFocus]);
100
+ const { postfixButtons, inputTabIndex, onInputKeyDown: navigationInputKeyDownHandler, setInitialTabIndices, } = useButtonNavigation({
101
+ setInputFocus: setInputFocusFromButtons,
102
+ inputRef: localRef,
103
+ postfixButtons: memorizedButtons,
104
+ onButtonKeyDown: checkForLeavingFocus,
105
+ readonly,
106
+ submitKeys: ['Enter', 'Space', 'Tab'],
107
+ });
108
+ const handleSelectDate = (date) => {
109
+ var _a;
110
+ onChange && onChange(date);
111
+ (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus();
112
+ setIsOpen(false);
113
+ if (localRef.current) {
114
+ localRef.current.value = getStringDateValue(date);
115
+ }
116
+ };
117
+ const handleCalendarFocusLeave = () => {
118
+ setInitialTabIndices();
119
+ // TODO: find out why it works not as expected (focus is moved to the next element instead of the focused one)
120
+ // maybe floating-ui causes the problem
121
+ runAfterRerender(() => {
122
+ setInputFocus(SlotKey.Day);
123
+ setIsOpen(false);
124
+ });
125
+ };
126
+ const handleInputKeyDown = useHandlers([
127
+ checkForLeavingFocus,
128
+ dateInputKeyDownHandler,
129
+ navigationInputKeyDownHandler,
130
+ ]);
131
+ useEffect(() => {
132
+ var _a;
133
+ if (open) {
134
+ (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus();
135
+ }
136
+ }, [open]);
137
+ useEffect(() => {
138
+ if (localRef.current && document.activeElement !== localRef.current) {
139
+ localRef.current.value = getStringDateValue(valueProp);
140
+ }
141
+ }, [getStringDateValue, valueProp]);
142
+ const onFocusByKeyboard = useCallback((e) => {
143
+ setInputFocus();
144
+ onFocus === null || onFocus === void 0 ? void 0 : onFocus(e);
145
+ }, [onFocus, setInputFocus]);
146
+ const inputHandlers = useFocusHandlers({
147
+ onFocusByClick: onFocus,
148
+ onFocusByKeyboard,
149
+ });
150
+ const onBlur = useHandlers([dateInputBlurHandler, inputHandlers.onBlur, onBlurProp]);
151
+ const onClick = useCallback((e) => {
152
+ dateInputClickHandler();
153
+ if (isOpen) {
154
+ // stop the event because want picker to stay opened
155
+ e.stopPropagation();
156
+ }
157
+ }, [dateInputClickHandler, isOpen]);
158
+ return (_jsx(FieldDecorator, Object.assign({ className: className, label: label, labelTooltip: labelTooltip, labelTooltipPlacement: labelTooltipPlacement, labelFor: id, required: required, caption: caption, hint: hint, disabled: disabled, readonly: readonly, showHintIcon: showHintIcon, size: size, error: error, validationState: fieldValidationState }, extractSupportProps(rest), { children: _jsx(MobileDropdown, Object.assign({}, (readonly || disabled
159
+ ? { open: false }
160
+ : {
161
+ open: showDropList,
162
+ onOpenChange: setIsOpen,
163
+ }), { content: _jsx(Scroll, { className: cn(styles.calendarWrapper, mode === 'date-time' ? styles.dateTimeWrapper : styles.dateWrapper), "data-size": size, barHideStrategy: 'never', children: _jsx(Calendar, { mode: mode, size: 'l', value: valueProp, showSeconds: showSeconds, onChangeValue: handleSelectDate, buildCellProps: buildCellProps, navigationStartRef: navigationStartRef, onFocusLeave: handleCalendarFocusLeave, locale: DEFAULT_LOCALE, "data-test-id": 'field-date__calendar' }) }), children: _jsx(FieldContainerPrivate, { className: styles.container, size: size, validationState: fieldValidationState, disabled: disabled, readonly: readonly, variant: CONTAINER_VARIANT.SingleLine, focused: showDropList, inputRef: localRef, postfix: postfixButtons, children: _jsx(InputPrivate, { ref: mergeRefs(ref, localRef), "data-size": size, value: value || '', placeholder: mask, onChange: handleChange, onFocus: inputHandlers.onFocus, onMouseDown: inputHandlers.onMouseDown, onBlur: onBlur, onKeyDown: handleInputKeyDown, onClick: onClick, disabled: disabled, readonly: readonly, tabIndex: inputTabIndex, type: 'text', inputMode: 'numeric', className: styles.readonlyCursor, id: id, name: name, autoFocus: autoFocus, "data-test-id": 'field-date__input' }) }) })) })));
164
+ });
@@ -0,0 +1,10 @@
1
+ import { Slot } from './types';
2
+ export declare enum SlotKey {
3
+ Day = "D",
4
+ Month = "M",
5
+ Year = "Y"
6
+ }
7
+ export declare const MASK: Record<string, string>;
8
+ export declare const DEFAULT_LOCALE: Intl.Locale;
9
+ export declare const SLOTS: Record<SlotKey | string, Slot>;
10
+ export declare const SLOTS_PLACEHOLDER: Record<string, Record<string, string>>;
@@ -0,0 +1,28 @@
1
+ export var SlotKey;
2
+ (function (SlotKey) {
3
+ SlotKey["Day"] = "D";
4
+ SlotKey["Month"] = "M";
5
+ SlotKey["Year"] = "Y";
6
+ })(SlotKey || (SlotKey = {}));
7
+ export const MASK = {
8
+ 'ru-RU': 'ДД.ММ.ГГГГ',
9
+ 'en-US': 'DD.MM.YYYY',
10
+ };
11
+ export const DEFAULT_LOCALE = new Intl.Locale('ru-RU');
12
+ export const SLOTS = {
13
+ [SlotKey.Day]: { start: 0, end: 2, max: 31, min: 1 },
14
+ [SlotKey.Month]: { start: 3, end: 5, max: 12, min: 1 },
15
+ [SlotKey.Year]: { start: 6, end: 10, max: 2100, min: 1900 },
16
+ };
17
+ export const SLOTS_PLACEHOLDER = {
18
+ 'ru-RU': {
19
+ [SlotKey.Day]: 'ДД',
20
+ [SlotKey.Month]: 'ММ',
21
+ [SlotKey.Year]: 'ГГГГ',
22
+ },
23
+ 'en-US': {
24
+ [SlotKey.Day]: 'DD',
25
+ [SlotKey.Month]: 'MM',
26
+ [SlotKey.Year]: 'YYYY',
27
+ },
28
+ };
@@ -0,0 +1,2 @@
1
+ export * from './MobileFieldDate';
2
+ export { parseDate } from './utils';
@@ -0,0 +1,2 @@
1
+ export * from './MobileFieldDate';
2
+ export { parseDate } from './utils';
@@ -0,0 +1,57 @@
1
+ .triggerClassName{
2
+ --offset:var(--space-drop-list-drop-offset, 4px);
3
+ display:block;
4
+ width:100%;
5
+ }
6
+
7
+ .dateWrapper{
8
+ height:384px;
9
+ }
10
+
11
+ .dateTimeWrapper{
12
+ height:458px;
13
+ padding-bottom:8px;
14
+ }
15
+
16
+ input.readonlyCursor{
17
+ cursor:pointer;
18
+ caret-color:transparent;
19
+ }
20
+
21
+ .calendarWrapper{
22
+ width:100%;
23
+ }
24
+ .calendarWrapper[data-size=s]{
25
+ min-width:240px;
26
+ min-height:256px;
27
+ }
28
+ .calendarWrapper[data-size=m]{
29
+ min-width:280px;
30
+ min-height:308px;
31
+ }
32
+ .calendarWrapper[data-size=l]{
33
+ min-width:304px;
34
+ min-height:328px;
35
+ }
36
+
37
+ .container .calendarIcon{
38
+ color:var(--sys-neutral-text-light, #8b8e9b);
39
+ }
40
+ .container .calendarIcon[data-size=s]{
41
+ width:var(--size-icon-container-xs, 16px) !important;
42
+ height:var(--size-icon-container-xs, 16px) !important;
43
+ }
44
+ .container .calendarIcon[data-size=m]{
45
+ width:var(--size-icon-container-s, 24px) !important;
46
+ height:var(--size-icon-container-s, 24px) !important;
47
+ }
48
+ .container .calendarIcon[data-size=l]{
49
+ width:var(--size-icon-container-s, 24px) !important;
50
+ height:var(--size-icon-container-s, 24px) !important;
51
+ }
52
+ .container:hover .calendarIcon, .container:focus-within .calendarIcon, .container[data-focused] .calendarIcon{
53
+ color:var(--sys-neutral-text-support, #6d707f);
54
+ }
55
+ .container[data-disabled] .calendarIcon, .container[data-readonly] .calendarIcon{
56
+ color:var(--sys-neutral-text-disabled, #aaaebd);
57
+ }
@@ -0,0 +1,6 @@
1
+ export type Slot = {
2
+ start: number;
3
+ end: number;
4
+ max: number;
5
+ min: number;
6
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { SlotKey } from './constants';
2
+ export declare function getSlotKey(index: number | null): string | null;
3
+ export declare function getNextSlotKey(slotKey: string | null): SlotKey.Month | SlotKey.Year;
4
+ export declare function getPrevSlotKey(slotKey: string | null): SlotKey.Day | SlotKey.Month;
5
+ /**
6
+ * Преобразует строковое значение поля FieldDate в тип Date
7
+ * @function helper
8
+ */
9
+ export declare function parseDate(date: string): Date;
@@ -0,0 +1,43 @@
1
+ import { SlotKey, SLOTS } from './constants';
2
+ export function getSlotKey(index) {
3
+ if (index !== null) {
4
+ for (const key in SLOTS) {
5
+ if (index >= SLOTS[key].start && index <= SLOTS[key].end) {
6
+ return key;
7
+ }
8
+ }
9
+ }
10
+ return null;
11
+ }
12
+ export function getNextSlotKey(slotKey) {
13
+ switch (slotKey) {
14
+ case SlotKey.Day: {
15
+ return SlotKey.Month;
16
+ }
17
+ case SlotKey.Month:
18
+ case SlotKey.Year:
19
+ default: {
20
+ return SlotKey.Year;
21
+ }
22
+ }
23
+ }
24
+ export function getPrevSlotKey(slotKey) {
25
+ switch (slotKey) {
26
+ case SlotKey.Year: {
27
+ return SlotKey.Month;
28
+ }
29
+ case SlotKey.Month:
30
+ case SlotKey.Day:
31
+ default: {
32
+ return SlotKey.Day;
33
+ }
34
+ }
35
+ }
36
+ /**
37
+ * Преобразует строковое значение поля FieldDate в тип Date
38
+ * @function helper
39
+ */
40
+ export function parseDate(date) {
41
+ const values = date.split('.');
42
+ return new Date(Number(values[2]), Number(values[1]) - 1, Number(values[0]));
43
+ }
@@ -0,0 +1,2 @@
1
+ import { MobileFieldSelectProps } from './types';
2
+ export declare const MobileFieldSelect: import("react").ForwardRefExoticComponent<MobileFieldSelectProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from 'react';
3
+ import { MobileFieldSelectMultiple } from './MobileFieldSelectMultiple';
4
+ import { MobileFieldSelectSingle } from './MobileFieldSelectSingle';
5
+ import { isFieldSelectMultipleProps, isFieldSelectSingleProps } from './utils';
6
+ export const MobileFieldSelect = forwardRef((props, ref) => {
7
+ if (isFieldSelectMultipleProps(props)) {
8
+ return _jsx(MobileFieldSelectMultiple, Object.assign({}, props, { ref: ref }));
9
+ }
10
+ if (isFieldSelectSingleProps(props)) {
11
+ return _jsx(MobileFieldSelectSingle, Object.assign({}, props, { ref: ref }));
12
+ }
13
+ return null;
14
+ });
@@ -0,0 +1,3 @@
1
+ import { ForwardRefExoticComponent, PropsWithoutRef, RefAttributes } from 'react';
2
+ import { MobileFieldSelectMultipleProps } from './types';
3
+ export declare const MobileFieldSelectMultiple: ForwardRefExoticComponent<PropsWithoutRef<MobileFieldSelectMultipleProps> & RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,148 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
+ import cn from 'classnames';
14
+ import mergeRefs from 'merge-refs';
15
+ import { forwardRef, useMemo, useRef, useState, } from 'react';
16
+ import { useLocale } from '@sbercloud/uikit-product-locale';
17
+ import { MobileModalCustom } from '@sbercloud/uikit-product-mobile-modal';
18
+ import { ButtonFilled, ButtonFunction } from '@snack-uikit/button';
19
+ import { FieldDecorator } from '@snack-uikit/fields';
20
+ import { InputPrivate } from '@snack-uikit/input-private';
21
+ import { kindFlattenItems, List } from '@snack-uikit/list';
22
+ import { Tag } from '@snack-uikit/tag';
23
+ import { extractSupportProps, isBrowser, useLayoutEffect, useValueControl } from '@snack-uikit/utils';
24
+ import { FieldContainerPrivate, ItemContent } from '../../helperComponents';
25
+ import { usePostfix, usePrefix } from '../../hooks';
26
+ import { getValidationState } from '../../utils/getValidationState';
27
+ import { useButtons, useHandleDeleteItem, useHandleOnKeyDown, useSearchInput } from './hooks';
28
+ import { useSearch } from './legacy';
29
+ import styles from './styles.module.css';
30
+ import { extractFieldDecoratorProps, extractListProps, getArrowIcon, updateMultipleItems } from './utils';
31
+ const defaultSelectedOptionFormatter = item =>
32
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
33
+ // @ts-ignore
34
+ (item === null || item === void 0 ? void 0 : item.content.option) || '';
35
+ export const MobileFieldSelectMultiple = forwardRef((_a, ref) => {
36
+ var { id, name, placeholder, size = 's', options, virtualized, value: valueProp, defaultValue, onChange: onChangeProp, disabled = false, readonly = false, searchable: searchableProp = true, showClearButton = true, onKeyDown: onInputKeyDownProp, validationState = 'default', search, enableFuzzySearch = true, autocomplete = false, autoFocus, prefixIcon, prefix, postfix, removeByBackspace = false, addOptionByEnter = false, open: openProp, onOpenChange, selectedOptionFormatter = defaultSelectedOptionFormatter } = _a, rest = __rest(_a, ["id", "name", "placeholder", "size", "options", "virtualized", "value", "defaultValue", "onChange", "disabled", "readonly", "searchable", "showClearButton", "onKeyDown", "validationState", "search", "enableFuzzySearch", "autocomplete", "autoFocus", "prefixIcon", "prefix", "postfix", "removeByBackspace", "addOptionByEnter", "open", "onOpenChange", "selectedOptionFormatter"]);
37
+ const { t } = useLocale('MobileFields');
38
+ const localRef = useRef(null);
39
+ const contentRef = useRef(null);
40
+ const [open = false, setOpen] = useValueControl({ value: openProp, onChange: onOpenChange });
41
+ const [value, setValue] = useValueControl({
42
+ value: valueProp,
43
+ defaultValue,
44
+ onChange: onChangeProp,
45
+ });
46
+ const [{ selectedItems, items = [] }, setItems] = useState(() => updateMultipleItems({ options, value, currentItems: [], selectedItems: undefined }));
47
+ const { flattenItems } = useMemo(() => kindFlattenItems({ items }), [items]);
48
+ const searchable = (searchableProp && Object.values(flattenItems).length > 5) || autocomplete || Boolean(addOptionByEnter);
49
+ const { inputValue, setInputValue, prevInputValue, updateInputValue } = useSearchInput(Object.assign(Object.assign({}, search), { defaultValue: '', selectedOptionFormatter }));
50
+ const prefixSettings = usePrefix({ prefix, disabled });
51
+ const postfixSettings = usePostfix({ postfix, disabled });
52
+ useLayoutEffect(() => {
53
+ setItems(({ selectedItems }) => updateMultipleItems({ options, value, selectedItems }));
54
+ }, [options, value]);
55
+ const onClear = () => {
56
+ var _a;
57
+ setValue(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.filter(item => item.disabled).map(item => item.id));
58
+ (_a = localRef.current) === null || _a === void 0 ? void 0 : _a.focus();
59
+ if (rest.required) {
60
+ setOpen(true);
61
+ }
62
+ };
63
+ const { ArrowIcon, arrowIconSize } = getArrowIcon({ size, open });
64
+ const { postfixButtons, inputKeyDownNavigationHandler, buttonsRefs } = useButtons({
65
+ readonly,
66
+ size,
67
+ showClearButton: showClearButton && !disabled && !readonly && Boolean(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.find(item => !item.disabled)),
68
+ showCopyButton: false,
69
+ inputRef: localRef,
70
+ onClear,
71
+ });
72
+ const commonHandleOnKeyDown = useHandleOnKeyDown({
73
+ inputKeyDownNavigationHandler,
74
+ onInputKeyDownProp,
75
+ setOpen,
76
+ });
77
+ const handleItemDelete = useHandleDeleteItem(setValue);
78
+ const handleOnKeyDown = (onKeyDown) => (e) => {
79
+ if (removeByBackspace && e.code === 'Backspace' && inputValue === '') {
80
+ if ((selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) && !selectedItems.slice(-1)[0].disabled) {
81
+ handleItemDelete(selectedItems.pop())();
82
+ }
83
+ }
84
+ if (e.code === 'Enter') {
85
+ e.stopPropagation();
86
+ e.preventDefault();
87
+ }
88
+ if (addOptionByEnter && e.code === 'Enter' && inputValue !== '') {
89
+ if (!(value !== null && value !== void 0 ? value : []).includes(inputValue)) {
90
+ setValue((value) => (value !== null && value !== void 0 ? value : []).concat(inputValue));
91
+ updateInputValue();
92
+ }
93
+ }
94
+ if (!open && prevInputValue.current !== inputValue) {
95
+ setOpen(true);
96
+ }
97
+ commonHandleOnKeyDown(onKeyDown)(e);
98
+ };
99
+ const handleOpenChange = (open) => {
100
+ if (!readonly && !disabled && isBrowser() && !buttonsRefs.includes(document.activeElement)) {
101
+ setOpen(open);
102
+ if (!open) {
103
+ updateInputValue();
104
+ }
105
+ }
106
+ };
107
+ const handleApplyChange = () => {
108
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.map(item => item.id));
109
+ handleOpenChange(false);
110
+ setInputValue('');
111
+ };
112
+ const handleBlur = (e) => {
113
+ var _a;
114
+ if (!open && !buttonsRefs.filter(Boolean).includes(e.relatedTarget)) {
115
+ updateInputValue();
116
+ (_a = rest === null || rest === void 0 ? void 0 : rest.onBlur) === null || _a === void 0 ? void 0 : _a.call(rest, e);
117
+ }
118
+ };
119
+ const searcher = useSearch(items, enableFuzzySearch);
120
+ const result = autocomplete || !searchable || prevInputValue.current === inputValue ? items : searcher(inputValue);
121
+ const fieldValidationState = getValidationState({ validationState, error: rest.error });
122
+ const listJsx = (_jsx("div", { className: styles.listWrapper, children: _jsx(List, Object.assign({}, extractListProps(rest), { items: result, size: 'l', scroll: true, virtualized: virtualized, search: searchable
123
+ ? {
124
+ value: inputValue,
125
+ onChange: setInputValue,
126
+ onKeyDown: handleOnKeyDown(),
127
+ }
128
+ : undefined, contentRender: (_a) => {
129
+ var { content } = _a, rest = __rest(_a, ["content"]);
130
+ if (typeof content !== 'function') {
131
+ return _jsx(ItemContent, Object.assign({}, content, rest));
132
+ }
133
+ return content;
134
+ }, selection: {
135
+ mode: 'multiple',
136
+ value: value,
137
+ onChange: value => {
138
+ setValue(value);
139
+ },
140
+ } })) }));
141
+ return (_jsxs(_Fragment, { children: [_jsx(FieldDecorator, Object.assign({}, extractSupportProps(rest), extractFieldDecoratorProps(rest), { labelFor: id, size: size, validationState: fieldValidationState, children: _jsx(FieldContainerPrivate, { className: cn(styles.container, styles.tagContainer), validationState: fieldValidationState, disabled: disabled, readonly: readonly, focused: open, variant: 'single-line-container', inputRef: localRef, size: size, prefix: (prefixIcon || prefixSettings.show) && (_jsxs(_Fragment, { children: [prefixIcon, prefixSettings.show && prefixSettings.render({ key: prefixSettings.id })] })), onClick: () => {
142
+ handleOpenChange(true);
143
+ }, children: _jsxs(_Fragment, { children: [_jsxs("div", { className: styles.contentWrapper, ref: contentRef, children: [selectedItems &&
144
+ selectedItems.map(option => {
145
+ var _a;
146
+ return (_jsx(Tag, { size: size === 'l' ? 's' : 'xs', tabIndex: -1, label: selectedOptionFormatter(option), appearance: (_a = option.appearance) !== null && _a !== void 0 ? _a : 'neutral' }, option.id));
147
+ }), _jsx("div", { className: styles.inputWrapper, children: _jsx(InputPrivate, { id: id, name: name, type: 'text', disabled: disabled, placeholder: !selectedItems || !selectedItems.length ? placeholder : undefined, ref: mergeRefs(ref, localRef), onChange: undefined, value: '', inputMode: 'none', "data-test-id": 'field-select__input', onBlur: handleBlur, className: styles.readonlyCursor, autoFocus: autoFocus }) })] }), _jsxs("div", { className: styles.postfix, children: [postfixButtons, postfixSettings.show && postfixSettings.render({ key: postfixSettings.id }), _jsx(ArrowIcon, { size: arrowIconSize, className: styles.arrowIcon })] })] }) }) })), _jsxs(MobileModalCustom, { open: open, onClose: () => handleOpenChange(false), size: searchable ? 'full' : 'auto', children: [rest.label && _jsx(MobileModalCustom.Header, { title: rest.label }), searchable ? listJsx : _jsx(MobileModalCustom.Body, { className: styles.bodyNoPadding, content: listJsx }), _jsx(MobileModalCustom.Footer, { actions: _jsxs("div", { className: styles.footer, children: [_jsxs("div", { className: styles.footerTopLine, children: [_jsx("span", { className: styles.counter, children: `${t('selectedN')}${(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) || 0}` }), _jsx(ButtonFunction, { size: 'm', label: t('resetAll'), onClick: onClear, "data-test-id": 'field-select__reset-all-button' })] }), _jsx(ButtonFilled, { fullWidth: true, label: t('select'), "data-test-id": 'field-select__approve-button', onClick: handleApplyChange, size: 'l' })] }) })] })] }));
148
+ });
@@ -0,0 +1,3 @@
1
+ import { ForwardRefExoticComponent, PropsWithoutRef, RefAttributes } from 'react';
2
+ import { MobileFieldSelectSingleProps } from './types';
3
+ export declare const MobileFieldSelectSingle: ForwardRefExoticComponent<PropsWithoutRef<MobileFieldSelectSingleProps> & RefAttributes<HTMLInputElement>>;