@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,122 @@
1
+ .headline{
2
+ display:flex;
3
+ }
4
+
5
+ .label{
6
+ overflow:hidden;
7
+ flex:1;
8
+ color:var(--sys-neutral-text-main, #41424e);
9
+ }
10
+
11
+ .caption{
12
+ overflow:hidden;
13
+ color:var(--sys-neutral-text-light, #8b8e9b);
14
+ text-overflow:ellipsis;
15
+ white-space:nowrap;
16
+ }
17
+
18
+ .description{
19
+ color:var(--sys-neutral-text-support, #6d707f);
20
+ }
21
+
22
+ .content{
23
+ overflow:hidden;
24
+ flex-grow:1;
25
+ flex-shrink:1;
26
+ box-sizing:border-box;
27
+ }
28
+ .content[data-size=s] .headline{
29
+ gap:var(--space-drop-list-item-s-container-headline-gap, 8px);
30
+ min-height:var(--size-drop-list-item-headline, 24px);
31
+ }
32
+ .content[data-size=s] .label{
33
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
34
+ font-weight:var(--sans-body-s-font-weight, Regular);
35
+ line-height:var(--sans-body-s-line-height, 16px);
36
+ font-size:var(--sans-body-s-font-size, 12px);
37
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
38
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
39
+ display:flex;
40
+ align-items:center;
41
+ }
42
+ .content[data-size=s] .caption{
43
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
44
+ font-weight:var(--sans-body-s-font-weight, Regular);
45
+ line-height:var(--sans-body-s-line-height, 16px);
46
+ font-size:var(--sans-body-s-font-size, 12px);
47
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
48
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
49
+ }
50
+ .content[data-size=s] .description{
51
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
52
+ font-weight:var(--sans-body-s-font-weight, Regular);
53
+ line-height:var(--sans-body-s-line-height, 16px);
54
+ font-size:var(--sans-body-s-font-size, 12px);
55
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
56
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
57
+ }
58
+ .content[data-size=m] .headline{
59
+ gap:var(--space-drop-list-item-m-container-headline-gap, 8px);
60
+ min-height:var(--size-drop-list-item-headline, 24px);
61
+ }
62
+ .content[data-size=m] .label{
63
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
64
+ font-weight:var(--sans-body-m-font-weight, Regular);
65
+ line-height:var(--sans-body-m-line-height, 20px);
66
+ font-size:var(--sans-body-m-font-size, 14px);
67
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
68
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
69
+ display:flex;
70
+ align-items:center;
71
+ }
72
+ .content[data-size=m] .caption{
73
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
74
+ font-weight:var(--sans-body-s-font-weight, Regular);
75
+ line-height:var(--sans-body-s-line-height, 16px);
76
+ font-size:var(--sans-body-s-font-size, 12px);
77
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
78
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
79
+ }
80
+ .content[data-size=m] .description{
81
+ font-family:var(--sans-body-s-font-family, SB Sans Interface);
82
+ font-weight:var(--sans-body-s-font-weight, Regular);
83
+ line-height:var(--sans-body-s-line-height, 16px);
84
+ font-size:var(--sans-body-s-font-size, 12px);
85
+ letter-spacing:var(--sans-body-s-letter-spacing, 0.1px);
86
+ paragraph-spacing:var(--sans-body-s-paragraph-spacing, 6.6px);
87
+ }
88
+ .content[data-size=l] .headline{
89
+ gap:var(--space-drop-list-item-l-container-headline-gap, 8px);
90
+ min-height:var(--size-drop-list-item-headline, 24px);
91
+ }
92
+ .content[data-size=l] .label{
93
+ font-family:var(--sans-body-l-font-family, SB Sans Interface);
94
+ font-weight:var(--sans-body-l-font-weight, Regular);
95
+ line-height:var(--sans-body-l-line-height, 24px);
96
+ font-size:var(--sans-body-l-font-size, 16px);
97
+ letter-spacing:var(--sans-body-l-letter-spacing, 0.1px);
98
+ paragraph-spacing:var(--sans-body-l-paragraph-spacing, 8.8px);
99
+ display:flex;
100
+ align-items:center;
101
+ }
102
+ .content[data-size=l] .caption{
103
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
104
+ font-weight:var(--sans-body-m-font-weight, Regular);
105
+ line-height:var(--sans-body-m-line-height, 20px);
106
+ font-size:var(--sans-body-m-font-size, 14px);
107
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
108
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
109
+ }
110
+ .content[data-size=l] .description{
111
+ font-family:var(--sans-body-m-font-family, SB Sans Interface);
112
+ font-weight:var(--sans-body-m-font-weight, Regular);
113
+ line-height:var(--sans-body-m-line-height, 20px);
114
+ font-size:var(--sans-body-m-font-size, 14px);
115
+ letter-spacing:var(--sans-body-m-letter-spacing, 0.1px);
116
+ paragraph-spacing:var(--sans-body-m-paragraph-spacing, 7.7px);
117
+ }
118
+ .content[data-disabled] .label,
119
+ .content[data-disabled] .description,
120
+ .content[data-disabled] .caption{
121
+ color:var(--sys-neutral-text-disabled, #aaaebd);
122
+ }
@@ -0,0 +1,3 @@
1
+ export * from './FieldContainerPrivate';
2
+ export * from './ButtonCopyValue';
3
+ export * from './ItemContent';
@@ -0,0 +1,3 @@
1
+ export * from './FieldContainerPrivate';
2
+ export * from './ButtonCopyValue';
3
+ export * from './ItemContent';
@@ -0,0 +1,3 @@
1
+ export * from './useDateField';
2
+ export * from './useFocusHandlers';
3
+ export * from './useHandlers';
@@ -0,0 +1,3 @@
1
+ export * from './useDateField';
2
+ export * from './useFocusHandlers';
3
+ export * from './useHandlers';
@@ -0,0 +1,28 @@
1
+ import { ChangeEvent, FocusEventHandler, KeyboardEvent, RefObject } from 'react';
2
+ import { TimePickerProps } from '@snack-uikit/calendar';
3
+ import { FocusSlot } from '../../constants';
4
+ import { Mode, TimeMode } from '../../types';
5
+ type BaseProps = {
6
+ inputRef: RefObject<HTMLInputElement>;
7
+ readonly?: boolean;
8
+ locale?: Intl.Locale;
9
+ setIsOpen(v: boolean): void;
10
+ showSeconds?: boolean;
11
+ };
12
+ type UseDateFieldProps = ({
13
+ mode: Mode;
14
+ onChange?(value: Date | undefined): void;
15
+ } & BaseProps) | ({
16
+ mode: TimeMode;
17
+ onChange?: TimePickerProps['onChangeValue'];
18
+ } & BaseProps);
19
+ export declare function useDateField({ inputRef, onChange, readonly, locale, setIsOpen, mode, showSeconds, }: UseDateFieldProps): {
20
+ handleKeyDown: (e: KeyboardEvent<HTMLInputElement>) => void;
21
+ handleChange: (value: string, e?: ChangeEvent<HTMLInputElement> | undefined) => void;
22
+ handleClick: () => void;
23
+ setInputFocus: (focusSlot?: FocusSlot) => void;
24
+ value: string | undefined;
25
+ mask: string;
26
+ handleBlur: FocusEventHandler<HTMLInputElement>;
27
+ };
28
+ export {};
@@ -0,0 +1,194 @@
1
+ import { useCallback, useMemo, useRef } from 'react';
2
+ import { isBrowser } from '@snack-uikit/utils';
3
+ import { DEFAULT_LOCALE, MASK, MODES, NO_SECONDS_MODE, SLOT_ORDER, SlotKey, SLOTS, SLOTS_PLACEHOLDER, } from '../../constants';
4
+ import { parseDate } from '../../utils/dateFields';
5
+ import { useDateFieldHelpersForMode } from './useDateFieldHelpersForMode';
6
+ export function useDateField({ inputRef, onChange, readonly, locale = DEFAULT_LOCALE, setIsOpen, mode, showSeconds, }) {
7
+ var _a;
8
+ const dateTimeMode = mode === MODES.DateTime && !showSeconds ? NO_SECONDS_MODE : mode;
9
+ const slotsInfo = SLOTS[dateTimeMode];
10
+ const mask = MASK[dateTimeMode][locale.baseName] || MASK[dateTimeMode][DEFAULT_LOCALE.baseName];
11
+ const slotsPlaceholder = SLOTS_PLACEHOLDER[dateTimeMode][locale.baseName] || SLOTS_PLACEHOLDER[dateTimeMode][DEFAULT_LOCALE.baseName];
12
+ const slotOrder = SLOT_ORDER[dateTimeMode];
13
+ const { getNextSlotKey, getPrevSlotKey, getSlotKeyFromIndex, setFocus, updateSlot, getSlot, isLikeDate, isAllSelected, tryToCompleteInput, isValidInput, } = useDateFieldHelpersForMode({ inputRef, mode: dateTimeMode });
14
+ const focusSlotKey = useMemo(() => slotOrder[0], [slotOrder]);
15
+ const focusSlotRef = useRef(focusSlotKey);
16
+ const setInputFocus = useCallback((focusSlot) => {
17
+ if (!inputRef.current || readonly) {
18
+ return;
19
+ }
20
+ if (isBrowser() && document.activeElement !== inputRef.current) {
21
+ focusSlotRef.current = focusSlot || focusSlotKey;
22
+ inputRef.current.focus();
23
+ return;
24
+ }
25
+ const focusSlotValue = focusSlot || focusSlotRef.current;
26
+ if (isLikeDate() && focusSlotValue === focusSlotKey) {
27
+ return;
28
+ }
29
+ if (!inputRef.current.value) {
30
+ inputRef.current.value = mask;
31
+ setFocus(focusSlotKey);
32
+ return;
33
+ }
34
+ if (focusSlot !== 'auto') {
35
+ setFocus(focusSlotValue);
36
+ return;
37
+ }
38
+ const slotKey = getSlotKeyFromIndex(inputRef.current.selectionStart);
39
+ if (slotKey) {
40
+ const { start, end } = slotsInfo[slotKey];
41
+ inputRef.current.setSelectionRange(start, end);
42
+ }
43
+ }, [inputRef, readonly, isLikeDate, focusSlotKey, getSlotKeyFromIndex, mask, setFocus, slotsInfo]);
44
+ const handleClick = useCallback(() => {
45
+ setInputFocus('auto');
46
+ }, [setInputFocus]);
47
+ const handleChange = () => {
48
+ var _a;
49
+ onChange && isLikeDate() && onChange(parseDate(((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.value) || ''));
50
+ };
51
+ const checkInputAndGoNext = useCallback((slotKey) => {
52
+ var _a, _b;
53
+ if (slotKey === slotOrder[slotOrder.length - 1] && tryToCompleteInput()) {
54
+ return;
55
+ }
56
+ if (isValidInput()) {
57
+ setFocus(getNextSlotKey(slotKey));
58
+ return;
59
+ }
60
+ switch (slotKey) {
61
+ case SlotKey.Day:
62
+ updateSlot(SlotKey.Month, (_a = slotsPlaceholder === null || slotsPlaceholder === void 0 ? void 0 : slotsPlaceholder[SlotKey.Month]) !== null && _a !== void 0 ? _a : '');
63
+ setFocus(SlotKey.Month);
64
+ return;
65
+ case SlotKey.Year:
66
+ case SlotKey.Month:
67
+ updateSlot(SlotKey.Day, (_b = slotsPlaceholder === null || slotsPlaceholder === void 0 ? void 0 : slotsPlaceholder[SlotKey.Day]) !== null && _b !== void 0 ? _b : '');
68
+ setFocus(SlotKey.Day);
69
+ return;
70
+ default:
71
+ setFocus(getNextSlotKey(slotKey));
72
+ }
73
+ }, [slotOrder, tryToCompleteInput, isValidInput, setFocus, getNextSlotKey, updateSlot, slotsPlaceholder]);
74
+ const handleKeyDown = useCallback((e) => {
75
+ var _a;
76
+ if (inputRef.current && !readonly) {
77
+ if (e.key !== 'Tab') {
78
+ e.preventDefault();
79
+ e.stopPropagation();
80
+ }
81
+ if (e.key !== 'ArrowDown') {
82
+ setIsOpen(false);
83
+ }
84
+ if (e.key === 'Escape') {
85
+ inputRef.current.blur();
86
+ return;
87
+ }
88
+ if (e.key === 'Enter') {
89
+ tryToCompleteInput();
90
+ }
91
+ const clickIndex = inputRef.current.selectionStart;
92
+ const slotKey = getSlotKeyFromIndex(clickIndex);
93
+ if (slotKey) {
94
+ const value = getSlot(slotKey);
95
+ const { max } = slotsInfo[slotKey];
96
+ const numberValue = Number(value) || 0;
97
+ if (e.key === 'ArrowRight') {
98
+ if (isAllSelected() || slotKey === slotOrder[slotOrder.length - 1]) {
99
+ inputRef.current.selectionStart = inputRef.current.value.length;
100
+ return;
101
+ }
102
+ setFocus(getNextSlotKey(slotKey));
103
+ return;
104
+ }
105
+ if (e.key === 'ArrowLeft') {
106
+ setFocus(getPrevSlotKey(slotKey));
107
+ return;
108
+ }
109
+ if (e.key === 'Backspace') {
110
+ if (isAllSelected()) {
111
+ inputRef.current.value = mask;
112
+ setFocus(focusSlotKey);
113
+ }
114
+ else {
115
+ updateSlot(slotKey, (_a = slotsPlaceholder[slotKey]) !== null && _a !== void 0 ? _a : '');
116
+ }
117
+ }
118
+ if (/^\d+$/.test(e.key)) {
119
+ const slotValue = parseInt(numberValue.toString() + e.key, 10) || 0;
120
+ const valueLength = slotValue.toString().length;
121
+ const maxLength = max.toString().length;
122
+ if (valueLength < maxLength) {
123
+ slotValue && updateSlot(slotKey, slotValue);
124
+ if (slotValue * 10 > max) {
125
+ checkInputAndGoNext(slotKey);
126
+ }
127
+ }
128
+ else if (valueLength > maxLength) {
129
+ if (Number(e.key) * 10 > max) {
130
+ updateSlot(slotKey, e.key);
131
+ checkInputAndGoNext(slotKey);
132
+ }
133
+ else {
134
+ Number(e.key) && updateSlot(slotKey, e.key);
135
+ }
136
+ }
137
+ else {
138
+ if (slotValue <= max) {
139
+ updateSlot(slotKey, slotValue);
140
+ checkInputAndGoNext(slotKey);
141
+ }
142
+ else {
143
+ if (Number(e.key) * 10 > max) {
144
+ updateSlot(slotKey, e.key);
145
+ checkInputAndGoNext(slotKey);
146
+ }
147
+ else {
148
+ Number(e.key) && updateSlot(slotKey, e.key);
149
+ }
150
+ }
151
+ }
152
+ }
153
+ const newDate = parseDate(isLikeDate() ? inputRef.current.value : '');
154
+ onChange === null || onChange === void 0 ? void 0 : onChange(newDate);
155
+ }
156
+ }
157
+ }, [
158
+ inputRef,
159
+ readonly,
160
+ getSlotKeyFromIndex,
161
+ setIsOpen,
162
+ tryToCompleteInput,
163
+ getSlot,
164
+ slotsInfo,
165
+ isLikeDate,
166
+ onChange,
167
+ isAllSelected,
168
+ slotOrder,
169
+ setFocus,
170
+ getNextSlotKey,
171
+ getPrevSlotKey,
172
+ mask,
173
+ focusSlotKey,
174
+ updateSlot,
175
+ slotsPlaceholder,
176
+ checkInputAndGoNext,
177
+ ]);
178
+ const handleBlur = useCallback(() => {
179
+ var _a;
180
+ if (!readonly && ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.value) === mask) {
181
+ inputRef.current.value = '';
182
+ }
183
+ focusSlotRef.current = focusSlotKey;
184
+ }, [inputRef, mask, readonly, focusSlotKey]);
185
+ return {
186
+ handleKeyDown,
187
+ handleChange,
188
+ handleClick,
189
+ setInputFocus,
190
+ value: (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.value,
191
+ mask,
192
+ handleBlur,
193
+ };
194
+ }
@@ -0,0 +1,18 @@
1
+ import { RefObject } from 'react';
2
+ import { SlotKey } from '../../constants';
3
+ import { Mode, NoSecondsMode, TimeMode } from '../../types';
4
+ export declare function useDateFieldHelpersForMode({ inputRef, mode, }: {
5
+ inputRef: RefObject<HTMLInputElement>;
6
+ mode: Mode | TimeMode | NoSecondsMode;
7
+ }): {
8
+ isAllSelected: () => boolean;
9
+ isValidInput: () => boolean;
10
+ tryToCompleteInput: () => boolean;
11
+ getSlot: (slotKey: string) => string;
12
+ updateSlot: (slotKey: string, slotValue: number | string) => void;
13
+ setFocus: (slotKey: string) => void;
14
+ isLikeDate: () => boolean;
15
+ getNextSlotKey: (slotKey: SlotKey | undefined) => SlotKey;
16
+ getPrevSlotKey: (slotKey: SlotKey | undefined) => SlotKey;
17
+ getSlotKeyFromIndex: (index: number | null) => SlotKey | undefined;
18
+ };
@@ -0,0 +1,95 @@
1
+ import { useCallback, useMemo } from 'react';
2
+ import { MODES, NO_SECONDS_MODE, SlotKey, SLOTS, TIME_MODES } from '../../constants';
3
+ import { getNextSlotKeyHandler, getPrevSlotKeyHandler, getSlotKeyFromIndexHandler } from '../../utils/dateFields';
4
+ export function useDateFieldHelpersForMode({ inputRef, mode, }) {
5
+ const setFocus = useCallback((slotKey) => {
6
+ if (inputRef.current) {
7
+ const { start, end } = SLOTS[mode][slotKey];
8
+ inputRef.current.setSelectionRange(start, end);
9
+ }
10
+ }, [mode, inputRef]);
11
+ const isAllSelected = useCallback(() => { var _a, _b, _c; return ((_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.value.length) === ((_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.selectionEnd) && ((_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.selectionStart) === 0; }, [inputRef]);
12
+ const getSlot = useCallback((slotKey) => {
13
+ if (inputRef.current) {
14
+ return inputRef.current.value.slice(SLOTS[mode][slotKey].start, SLOTS[mode][slotKey].end);
15
+ }
16
+ return '';
17
+ }, [mode, inputRef]);
18
+ const isLikeDate = useCallback(() => {
19
+ if (inputRef.current) {
20
+ return Object.keys(SLOTS[mode]).every(slotKey => getSlot(slotKey) && Number.isInteger(Number(getSlot(slotKey))));
21
+ }
22
+ return false;
23
+ }, [mode, getSlot, inputRef]);
24
+ const isValidInput = useCallback(() => {
25
+ const isTimeMode = Object.values(TIME_MODES).includes(mode);
26
+ if (isTimeMode) {
27
+ return true;
28
+ }
29
+ const day = parseInt(getSlot(SlotKey.Day), 10);
30
+ const month = parseInt(getSlot(SlotKey.Month), 10);
31
+ const year = parseInt(getSlot(SlotKey.Year), 10);
32
+ if (!month || !day) {
33
+ return true;
34
+ }
35
+ const date = new Date(year || /* високосный год = */ 2020, month - 1, day);
36
+ return date.getDate() === day;
37
+ }, [getSlot, mode]);
38
+ const tryToCompleteInput = useCallback(() => {
39
+ var _a;
40
+ let isCompleted;
41
+ const parsedSlotsData = Object.keys(SLOTS[mode]).reduce((res, key) => {
42
+ const slotKey = key;
43
+ res[slotKey] = parseInt(getSlot(slotKey), 10);
44
+ return res;
45
+ }, {});
46
+ const { [SlotKey.Day]: day, [SlotKey.Month]: month, [SlotKey.Year]: year, [SlotKey.Hours]: hours, [SlotKey.Minutes]: minutes, [SlotKey.Seconds]: seconds, } = parsedSlotsData;
47
+ const yearSlotMeta = SLOTS[mode][SlotKey.Year];
48
+ const isDateCompleted = Boolean(day && month && year >= (yearSlotMeta === null || yearSlotMeta === void 0 ? void 0 : yearSlotMeta.min) && year <= (yearSlotMeta === null || yearSlotMeta === void 0 ? void 0 : yearSlotMeta.max));
49
+ const isTimeCompleted = [
50
+ hours,
51
+ minutes,
52
+ ...(mode === MODES.DateTime || mode === TIME_MODES.FullTime ? [seconds] : []),
53
+ ].every(value => value !== undefined);
54
+ if (mode === MODES.DateTime || mode === NO_SECONDS_MODE) {
55
+ isCompleted = isDateCompleted && isTimeCompleted;
56
+ }
57
+ else if (mode === TIME_MODES.FullTime || mode === TIME_MODES.NoSeconds) {
58
+ isCompleted = isTimeCompleted;
59
+ }
60
+ else {
61
+ isCompleted = isDateCompleted;
62
+ }
63
+ if (isCompleted && inputRef.current) {
64
+ const lastPosition = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.value.length;
65
+ inputRef.current.selectionStart = lastPosition;
66
+ inputRef.current.selectionEnd = lastPosition;
67
+ }
68
+ return isCompleted;
69
+ }, [getSlot, inputRef, mode]);
70
+ const updateSlot = useCallback((slotKey, slotValue) => {
71
+ if (inputRef.current) {
72
+ const { start, end, max } = SLOTS[mode][slotKey];
73
+ inputRef.current.value =
74
+ inputRef.current.value.slice(0, start) +
75
+ slotValue.toString().padStart(max.toString().length, '0') +
76
+ inputRef.current.value.slice(end);
77
+ setFocus(slotKey);
78
+ }
79
+ }, [inputRef, setFocus, mode]);
80
+ const getNextSlotKey = useMemo(() => getNextSlotKeyHandler(mode), [mode]);
81
+ const getPrevSlotKey = useMemo(() => getPrevSlotKeyHandler(mode), [mode]);
82
+ const getSlotKeyFromIndex = useMemo(() => getSlotKeyFromIndexHandler(mode), [mode]);
83
+ return {
84
+ isAllSelected,
85
+ isValidInput,
86
+ tryToCompleteInput,
87
+ getSlot,
88
+ updateSlot,
89
+ setFocus,
90
+ isLikeDate,
91
+ getNextSlotKey,
92
+ getPrevSlotKey,
93
+ getSlotKeyFromIndex,
94
+ };
95
+ }
@@ -0,0 +1,15 @@
1
+ import { FocusEvent } from 'react';
2
+ type Options = {
3
+ onFocusByKeyboard?: (e: FocusEvent<HTMLInputElement>) => void;
4
+ onFocusByClick?: (e: FocusEvent<HTMLInputElement>) => void;
5
+ };
6
+ /**
7
+ * Позволяет разделить обработку получения фокуса в результате клика или с клавиатуры.
8
+ * Основано на том факте что событию фокуса в результате клика предшествует событие onMouseDown.
9
+ */
10
+ export declare function useFocusHandlers({ onFocusByKeyboard, onFocusByClick }: Options): {
11
+ onFocus: (e: FocusEvent<HTMLInputElement>) => void;
12
+ onBlur: () => void;
13
+ onMouseDown: () => void;
14
+ };
15
+ export {};
@@ -0,0 +1,33 @@
1
+ import { useCallback, useRef } from 'react';
2
+ /**
3
+ * Позволяет разделить обработку получения фокуса в результате клика или с клавиатуры.
4
+ * Основано на том факте что событию фокуса в результате клика предшествует событие onMouseDown.
5
+ */
6
+ export function useFocusHandlers({ onFocusByKeyboard, onFocusByClick }) {
7
+ const isFocused = useRef(false);
8
+ const isMouseDown = useRef(false);
9
+ const onFocus = useCallback((e) => {
10
+ isFocused.current = true;
11
+ if (isMouseDown.current) {
12
+ onFocusByClick === null || onFocusByClick === void 0 ? void 0 : onFocusByClick(e);
13
+ isMouseDown.current = false;
14
+ }
15
+ else {
16
+ onFocusByKeyboard === null || onFocusByKeyboard === void 0 ? void 0 : onFocusByKeyboard(e);
17
+ }
18
+ }, [isMouseDown, onFocusByClick, onFocusByKeyboard]);
19
+ const onBlur = useCallback(() => {
20
+ isFocused.current = false;
21
+ isMouseDown.current = false;
22
+ }, []);
23
+ const onMouseDown = useCallback(() => {
24
+ if (!isFocused.current) {
25
+ isMouseDown.current = true;
26
+ }
27
+ }, [isFocused]);
28
+ return {
29
+ onFocus,
30
+ onBlur,
31
+ onMouseDown,
32
+ };
33
+ }
@@ -0,0 +1,6 @@
1
+ type Handler<T> = (e: T) => void;
2
+ /**
3
+ * Вызывает обработчики события по порядку
4
+ */
5
+ export declare function useHandlers<T>(handlers: (Handler<T> | undefined)[]): (e: T) => void;
6
+ export {};
@@ -0,0 +1,9 @@
1
+ import { useCallback } from 'react';
2
+ /**
3
+ * Вызывает обработчики события по порядку
4
+ */
5
+ export function useHandlers(handlers) {
6
+ return useCallback((e) => {
7
+ handlers.forEach(handler => handler === null || handler === void 0 ? void 0 : handler(e));
8
+ }, [handlers]);
9
+ }
@@ -0,0 +1,5 @@
1
+ export * from './dateHandlers';
2
+ export * from './useCopyButton';
3
+ export * from './usePostfix';
4
+ export * from './usePrefix';
5
+ export * from './useValueControl';
@@ -0,0 +1,5 @@
1
+ export * from './dateHandlers';
2
+ export * from './useCopyButton';
3
+ export * from './usePostfix';
4
+ export * from './usePrefix';
5
+ export * from './useValueControl';
@@ -0,0 +1,13 @@
1
+ .prefix{
2
+ color:var(--sys-neutral-text-support, #6d707f);
3
+ }
4
+ .prefix[data-disabled]{
5
+ opacity:var(--opacity-a056, 0.56);
6
+ }
7
+
8
+ .postfix{
9
+ color:var(--sys-neutral-text-support, #6d707f);
10
+ }
11
+ .postfix[data-disabled]{
12
+ opacity:var(--opacity-a056, 0.56);
13
+ }
@@ -0,0 +1,15 @@
1
+ import { RefObject } from 'react';
2
+ import { ButtonProps, Size } from '@snack-uikit/input-private';
3
+ import { AsyncValueRequest } from '../types';
4
+ type UseCopyButtonProps = {
5
+ copyButtonRef: RefObject<HTMLButtonElement>;
6
+ showCopyButton: boolean;
7
+ valueToCopy: string;
8
+ size: Size;
9
+ onValueRequest?(): AsyncValueRequest;
10
+ disabled?: boolean;
11
+ prefix?: string;
12
+ postfix?: string;
13
+ };
14
+ export declare function useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onValueRequest, disabled, prefix, postfix, }: UseCopyButtonProps): ButtonProps;
15
+ export {};
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import { BUTTON_SIZE_MAP } from '@snack-uikit/input-private';
4
+ import { ButtonCopyValue } from '../helperComponents';
5
+ export function useCopyButton({ copyButtonRef, showCopyButton, size, valueToCopy, onValueRequest, disabled, prefix = '', postfix = '', }) {
6
+ return useMemo(() => ({
7
+ id: 'copy',
8
+ active: true,
9
+ ref: copyButtonRef,
10
+ show: showCopyButton,
11
+ render: props => (_jsx(ButtonCopyValue, Object.assign({}, props, { size: BUTTON_SIZE_MAP[size], valueToCopy: (prefix !== null && prefix !== void 0 ? prefix : '') + valueToCopy + (postfix !== null && postfix !== void 0 ? postfix : ''), onValueRequest: onValueRequest, disabled: disabled }))),
12
+ }), [copyButtonRef, disabled, onValueRequest, showCopyButton, size, valueToCopy, prefix, postfix]);
13
+ }
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react';
2
+ import { InactiveItem } from '@snack-uikit/input-private';
3
+ export declare function usePostfix({ postfix, disabled }: {
4
+ postfix?: ReactNode;
5
+ disabled?: boolean;
6
+ }): InactiveItem;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import styles from './styles.module.css';
4
+ export function usePostfix({ postfix, disabled }) {
5
+ return useMemo(() => ({
6
+ id: 'postfix',
7
+ active: false,
8
+ show: Boolean(postfix),
9
+ render: props => (_jsx("div", Object.assign({}, props, { className: styles.postfix, "data-test-id": 'field-postfix', "data-disabled": disabled || undefined, children: postfix }))),
10
+ }), [disabled, postfix]);
11
+ }
@@ -0,0 +1,6 @@
1
+ import { ReactNode } from 'react';
2
+ import { InactiveItem } from '@snack-uikit/input-private';
3
+ export declare function usePrefix({ prefix, disabled }: {
4
+ prefix?: ReactNode;
5
+ disabled?: boolean;
6
+ }): InactiveItem;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useMemo } from 'react';
3
+ import styles from './styles.module.css';
4
+ export function usePrefix({ prefix, disabled }) {
5
+ return useMemo(() => ({
6
+ id: 'prefix',
7
+ active: false,
8
+ show: Boolean(prefix),
9
+ render: props => (_jsx("div", Object.assign({}, props, { "data-test-id": 'field-prefix', className: styles.prefix, "data-disabled": disabled || undefined, children: prefix }))),
10
+ }), [disabled, prefix]);
11
+ }
@@ -0,0 +1,7 @@
1
+ type UseValueControl<TValue> = {
2
+ value?: TValue;
3
+ onChange?(value: TValue): void;
4
+ defaultValue?: TValue;
5
+ };
6
+ export declare function useValueControl<TValue>({ value, onChange, defaultValue }: UseValueControl<TValue>): readonly [TValue | undefined, (value: any, ...args: any[]) => any];
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { useUncontrolledProp } from 'uncontrollable';
2
+ export function useValueControl({ value, onChange, defaultValue }) {
3
+ return useUncontrolledProp(value, defaultValue, (newValue) => {
4
+ const newState = typeof newValue === 'function' ? newValue(value) : newValue;
5
+ onChange === null || onChange === void 0 ? void 0 : onChange(newState);
6
+ });
7
+ }