@cloud-ru/ds-fields 1.0.0

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 (314) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +201 -0
  3. package/README.md +888 -0
  4. package/dist/cjs/components/FieldColor/FieldColor.d.ts +48 -0
  5. package/dist/cjs/components/FieldColor/FieldColor.js +147 -0
  6. package/dist/cjs/components/FieldColor/index.d.ts +1 -0
  7. package/dist/cjs/components/FieldColor/index.js +17 -0
  8. package/dist/cjs/components/FieldColor/styles.module.css +79 -0
  9. package/dist/cjs/components/FieldColor/utils.d.ts +7 -0
  10. package/dist/cjs/components/FieldColor/utils.js +19 -0
  11. package/dist/cjs/components/FieldCombo/FieldCombo.d.ts +91 -0
  12. package/dist/cjs/components/FieldCombo/FieldCombo.js +200 -0
  13. package/dist/cjs/components/FieldCombo/index.d.ts +1 -0
  14. package/dist/cjs/components/FieldCombo/index.js +17 -0
  15. package/dist/cjs/components/FieldDate/FieldDate.d.ts +2 -0
  16. package/dist/cjs/components/FieldDate/FieldDate.js +369 -0
  17. package/dist/cjs/components/FieldDate/constants.d.ts +10 -0
  18. package/dist/cjs/components/FieldDate/constants.js +13 -0
  19. package/dist/cjs/components/FieldDate/index.d.ts +3 -0
  20. package/dist/cjs/components/FieldDate/index.js +19 -0
  21. package/dist/cjs/components/FieldDate/mask.d.ts +20 -0
  22. package/dist/cjs/components/FieldDate/mask.js +117 -0
  23. package/dist/cjs/components/FieldDate/styles.module.css +43 -0
  24. package/dist/cjs/components/FieldDate/types.d.ts +100 -0
  25. package/dist/cjs/components/FieldDate/types.js +2 -0
  26. package/dist/cjs/components/FieldDate/utils.d.ts +3 -0
  27. package/dist/cjs/components/FieldDate/utils.js +8 -0
  28. package/dist/cjs/components/FieldSecure/FieldSecure.d.ts +64 -0
  29. package/dist/cjs/components/FieldSecure/FieldSecure.js +158 -0
  30. package/dist/cjs/components/FieldSecure/index.d.ts +1 -0
  31. package/dist/cjs/components/FieldSecure/index.js +17 -0
  32. package/dist/cjs/components/FieldSelect/FieldSelect.d.ts +2 -0
  33. package/dist/cjs/components/FieldSelect/FieldSelect.js +360 -0
  34. package/dist/cjs/components/FieldSelect/constants.d.ts +4 -0
  35. package/dist/cjs/components/FieldSelect/constants.js +7 -0
  36. package/dist/cjs/components/FieldSelect/index.d.ts +3 -0
  37. package/dist/cjs/components/FieldSelect/index.js +19 -0
  38. package/dist/cjs/components/FieldSelect/styles.module.css +92 -0
  39. package/dist/cjs/components/FieldSelect/types.d.ts +197 -0
  40. package/dist/cjs/components/FieldSelect/types.js +2 -0
  41. package/dist/cjs/components/FieldSelect/utils.d.ts +19 -0
  42. package/dist/cjs/components/FieldSelect/utils.js +104 -0
  43. package/dist/cjs/components/FieldSlider/FieldSlider.d.ts +92 -0
  44. package/dist/cjs/components/FieldSlider/FieldSlider.js +196 -0
  45. package/dist/cjs/components/FieldSlider/index.d.ts +2 -0
  46. package/dist/cjs/components/FieldSlider/index.js +18 -0
  47. package/dist/cjs/components/FieldSlider/styles.module.css +44 -0
  48. package/dist/cjs/components/FieldSlider/types.d.ts +4 -0
  49. package/dist/cjs/components/FieldSlider/types.js +2 -0
  50. package/dist/cjs/components/FieldSlider/utils/generateAllowedValues.d.ts +1 -0
  51. package/dist/cjs/components/FieldSlider/utils/generateAllowedValues.js +16 -0
  52. package/dist/cjs/components/FieldSlider/utils/getClosestMark.d.ts +4 -0
  53. package/dist/cjs/components/FieldSlider/utils/getClosestMark.js +16 -0
  54. package/dist/cjs/components/FieldSlider/utils/getMarkLabel.d.ts +2 -0
  55. package/dist/cjs/components/FieldSlider/utils/getMarkLabel.js +7 -0
  56. package/dist/cjs/components/FieldSlider/utils/getTextFieldValue.d.ts +2 -0
  57. package/dist/cjs/components/FieldSlider/utils/getTextFieldValue.js +9 -0
  58. package/dist/cjs/components/FieldSlider/utils/index.d.ts +5 -0
  59. package/dist/cjs/components/FieldSlider/utils/index.js +21 -0
  60. package/dist/cjs/components/FieldSlider/utils/isMarkObject.d.ts +6 -0
  61. package/dist/cjs/components/FieldSlider/utils/isMarkObject.js +6 -0
  62. package/dist/cjs/components/FieldStepper/FieldStepper.d.ts +81 -0
  63. package/dist/cjs/components/FieldStepper/FieldStepper.js +160 -0
  64. package/dist/cjs/components/FieldStepper/index.d.ts +1 -0
  65. package/dist/cjs/components/FieldStepper/index.js +17 -0
  66. package/dist/cjs/components/FieldStepper/styles.module.css +78 -0
  67. package/dist/cjs/components/FieldStepper/utils.d.ts +14 -0
  68. package/dist/cjs/components/FieldStepper/utils.js +45 -0
  69. package/dist/cjs/components/FieldText/FieldText.d.ts +11 -0
  70. package/dist/cjs/components/FieldText/FieldText.js +14 -0
  71. package/dist/cjs/components/FieldText/index.d.ts +1 -0
  72. package/dist/cjs/components/FieldText/index.js +17 -0
  73. package/dist/cjs/components/FieldTextArea/FieldTextArea.d.ts +95 -0
  74. package/dist/cjs/components/FieldTextArea/FieldTextArea.js +114 -0
  75. package/dist/cjs/components/FieldTextArea/index.d.ts +1 -0
  76. package/dist/cjs/components/FieldTextArea/index.js +17 -0
  77. package/dist/cjs/components/FieldTextArea/styles.module.css +123 -0
  78. package/dist/cjs/components/FieldTime/FieldTime.d.ts +74 -0
  79. package/dist/cjs/components/FieldTime/FieldTime.js +167 -0
  80. package/dist/cjs/components/FieldTime/index.d.ts +2 -0
  81. package/dist/cjs/components/FieldTime/index.js +17 -0
  82. package/dist/cjs/components/FieldTime/mask.d.ts +3 -0
  83. package/dist/cjs/components/FieldTime/mask.js +24 -0
  84. package/dist/cjs/components/FieldTime/styles.module.css +3 -0
  85. package/dist/cjs/components/index.d.ts +14 -0
  86. package/dist/cjs/components/index.js +32 -0
  87. package/dist/cjs/components/shared/helperComponents/FieldElementButton/FieldElementButton.d.ts +35 -0
  88. package/dist/cjs/components/shared/helperComponents/FieldElementButton/FieldElementButton.js +47 -0
  89. package/dist/cjs/components/shared/helperComponents/FieldElementButton/FieldElementButtonList.d.ts +26 -0
  90. package/dist/cjs/components/shared/helperComponents/FieldElementButton/FieldElementButtonList.js +24 -0
  91. package/dist/cjs/components/shared/helperComponents/FieldElementButton/constants.d.ts +9 -0
  92. package/dist/cjs/components/shared/helperComponents/FieldElementButton/constants.js +12 -0
  93. package/dist/cjs/components/shared/helperComponents/FieldElementButton/index.d.ts +4 -0
  94. package/dist/cjs/components/shared/helperComponents/FieldElementButton/index.js +20 -0
  95. package/dist/cjs/components/shared/helperComponents/FieldElementButton/styles.module.css +204 -0
  96. package/dist/cjs/components/shared/helperComponents/FieldElementButton/types.d.ts +4 -0
  97. package/dist/cjs/components/shared/helperComponents/FieldElementButton/types.js +2 -0
  98. package/dist/cjs/components/shared/helperComponents/FieldShell/FieldShell.d.ts +43 -0
  99. package/dist/cjs/components/shared/helperComponents/FieldShell/FieldShell.js +22 -0
  100. package/dist/cjs/components/shared/helperComponents/FieldShell/index.d.ts +1 -0
  101. package/dist/cjs/components/shared/helperComponents/FieldShell/index.js +17 -0
  102. package/dist/cjs/components/shared/helperComponents/FieldShell/styles.module.css +11 -0
  103. package/dist/cjs/components/shared/hooks/useCopyButton.d.ts +20 -0
  104. package/dist/cjs/components/shared/hooks/useCopyButton.js +58 -0
  105. package/dist/cjs/components/shared/index.d.ts +4 -0
  106. package/dist/cjs/components/shared/index.js +20 -0
  107. package/dist/cjs/components/shared/styles.module.css +673 -0
  108. package/dist/cjs/components/shared/utils.d.ts +69 -0
  109. package/dist/cjs/components/shared/utils.js +104 -0
  110. package/dist/cjs/constants.d.ts +61 -0
  111. package/dist/cjs/constants.js +76 -0
  112. package/dist/cjs/hooks/index.d.ts +1 -0
  113. package/dist/cjs/hooks/index.js +17 -0
  114. package/dist/cjs/hooks/useAdaptiveAutoFocus.d.ts +7 -0
  115. package/dist/cjs/hooks/useAdaptiveAutoFocus.js +10 -0
  116. package/dist/cjs/index.d.ts +3 -0
  117. package/dist/cjs/index.js +19 -0
  118. package/dist/cjs/package.json +3 -0
  119. package/dist/cjs/segments/index.d.ts +2 -0
  120. package/dist/cjs/segments/index.js +18 -0
  121. package/dist/cjs/segments/segments.d.ts +22 -0
  122. package/dist/cjs/segments/segments.js +46 -0
  123. package/dist/cjs/segments/useSegmentedMask.d.ts +43 -0
  124. package/dist/cjs/segments/useSegmentedMask.js +282 -0
  125. package/dist/cjs/style.css +1350 -0
  126. package/dist/esm/components/FieldColor/FieldColor.d.ts +48 -0
  127. package/dist/esm/components/FieldColor/FieldColor.js +141 -0
  128. package/dist/esm/components/FieldColor/index.d.ts +1 -0
  129. package/dist/esm/components/FieldColor/index.js +1 -0
  130. package/dist/esm/components/FieldColor/styles.module.css +79 -0
  131. package/dist/esm/components/FieldColor/utils.d.ts +7 -0
  132. package/dist/esm/components/FieldColor/utils.js +16 -0
  133. package/dist/esm/components/FieldCombo/FieldCombo.d.ts +91 -0
  134. package/dist/esm/components/FieldCombo/FieldCombo.js +194 -0
  135. package/dist/esm/components/FieldCombo/index.d.ts +1 -0
  136. package/dist/esm/components/FieldCombo/index.js +1 -0
  137. package/dist/esm/components/FieldDate/FieldDate.d.ts +2 -0
  138. package/dist/esm/components/FieldDate/FieldDate.js +363 -0
  139. package/dist/esm/components/FieldDate/constants.d.ts +10 -0
  140. package/dist/esm/components/FieldDate/constants.js +10 -0
  141. package/dist/esm/components/FieldDate/index.d.ts +3 -0
  142. package/dist/esm/components/FieldDate/index.js +3 -0
  143. package/dist/esm/components/FieldDate/mask.d.ts +20 -0
  144. package/dist/esm/components/FieldDate/mask.js +111 -0
  145. package/dist/esm/components/FieldDate/styles.module.css +43 -0
  146. package/dist/esm/components/FieldDate/types.d.ts +100 -0
  147. package/dist/esm/components/FieldDate/types.js +1 -0
  148. package/dist/esm/components/FieldDate/utils.d.ts +3 -0
  149. package/dist/esm/components/FieldDate/utils.js +5 -0
  150. package/dist/esm/components/FieldSecure/FieldSecure.d.ts +64 -0
  151. package/dist/esm/components/FieldSecure/FieldSecure.js +152 -0
  152. package/dist/esm/components/FieldSecure/index.d.ts +1 -0
  153. package/dist/esm/components/FieldSecure/index.js +1 -0
  154. package/dist/esm/components/FieldSelect/FieldSelect.d.ts +2 -0
  155. package/dist/esm/components/FieldSelect/FieldSelect.js +354 -0
  156. package/dist/esm/components/FieldSelect/constants.d.ts +4 -0
  157. package/dist/esm/components/FieldSelect/constants.js +4 -0
  158. package/dist/esm/components/FieldSelect/index.d.ts +3 -0
  159. package/dist/esm/components/FieldSelect/index.js +3 -0
  160. package/dist/esm/components/FieldSelect/styles.module.css +92 -0
  161. package/dist/esm/components/FieldSelect/types.d.ts +197 -0
  162. package/dist/esm/components/FieldSelect/types.js +1 -0
  163. package/dist/esm/components/FieldSelect/utils.d.ts +19 -0
  164. package/dist/esm/components/FieldSelect/utils.js +93 -0
  165. package/dist/esm/components/FieldSlider/FieldSlider.d.ts +92 -0
  166. package/dist/esm/components/FieldSlider/FieldSlider.js +190 -0
  167. package/dist/esm/components/FieldSlider/index.d.ts +2 -0
  168. package/dist/esm/components/FieldSlider/index.js +2 -0
  169. package/dist/esm/components/FieldSlider/styles.module.css +44 -0
  170. package/dist/esm/components/FieldSlider/types.d.ts +4 -0
  171. package/dist/esm/components/FieldSlider/types.js +1 -0
  172. package/dist/esm/components/FieldSlider/utils/generateAllowedValues.d.ts +1 -0
  173. package/dist/esm/components/FieldSlider/utils/generateAllowedValues.js +13 -0
  174. package/dist/esm/components/FieldSlider/utils/getClosestMark.d.ts +4 -0
  175. package/dist/esm/components/FieldSlider/utils/getClosestMark.js +13 -0
  176. package/dist/esm/components/FieldSlider/utils/getMarkLabel.d.ts +2 -0
  177. package/dist/esm/components/FieldSlider/utils/getMarkLabel.js +4 -0
  178. package/dist/esm/components/FieldSlider/utils/getTextFieldValue.d.ts +2 -0
  179. package/dist/esm/components/FieldSlider/utils/getTextFieldValue.js +6 -0
  180. package/dist/esm/components/FieldSlider/utils/index.d.ts +5 -0
  181. package/dist/esm/components/FieldSlider/utils/index.js +5 -0
  182. package/dist/esm/components/FieldSlider/utils/isMarkObject.d.ts +6 -0
  183. package/dist/esm/components/FieldSlider/utils/isMarkObject.js +3 -0
  184. package/dist/esm/components/FieldStepper/FieldStepper.d.ts +81 -0
  185. package/dist/esm/components/FieldStepper/FieldStepper.js +154 -0
  186. package/dist/esm/components/FieldStepper/index.d.ts +1 -0
  187. package/dist/esm/components/FieldStepper/index.js +1 -0
  188. package/dist/esm/components/FieldStepper/styles.module.css +78 -0
  189. package/dist/esm/components/FieldStepper/utils.d.ts +14 -0
  190. package/dist/esm/components/FieldStepper/utils.js +38 -0
  191. package/dist/esm/components/FieldText/FieldText.d.ts +11 -0
  192. package/dist/esm/components/FieldText/FieldText.js +11 -0
  193. package/dist/esm/components/FieldText/index.d.ts +1 -0
  194. package/dist/esm/components/FieldText/index.js +1 -0
  195. package/dist/esm/components/FieldTextArea/FieldTextArea.d.ts +95 -0
  196. package/dist/esm/components/FieldTextArea/FieldTextArea.js +108 -0
  197. package/dist/esm/components/FieldTextArea/index.d.ts +1 -0
  198. package/dist/esm/components/FieldTextArea/index.js +1 -0
  199. package/dist/esm/components/FieldTextArea/styles.module.css +123 -0
  200. package/dist/esm/components/FieldTime/FieldTime.d.ts +74 -0
  201. package/dist/esm/components/FieldTime/FieldTime.js +161 -0
  202. package/dist/esm/components/FieldTime/index.d.ts +2 -0
  203. package/dist/esm/components/FieldTime/index.js +1 -0
  204. package/dist/esm/components/FieldTime/mask.d.ts +3 -0
  205. package/dist/esm/components/FieldTime/mask.js +20 -0
  206. package/dist/esm/components/FieldTime/styles.module.css +3 -0
  207. package/dist/esm/components/index.d.ts +14 -0
  208. package/dist/esm/components/index.js +12 -0
  209. package/dist/esm/components/shared/helperComponents/FieldElementButton/FieldElementButton.d.ts +35 -0
  210. package/dist/esm/components/shared/helperComponents/FieldElementButton/FieldElementButton.js +41 -0
  211. package/dist/esm/components/shared/helperComponents/FieldElementButton/FieldElementButtonList.d.ts +26 -0
  212. package/dist/esm/components/shared/helperComponents/FieldElementButton/FieldElementButtonList.js +21 -0
  213. package/dist/esm/components/shared/helperComponents/FieldElementButton/constants.d.ts +9 -0
  214. package/dist/esm/components/shared/helperComponents/FieldElementButton/constants.js +9 -0
  215. package/dist/esm/components/shared/helperComponents/FieldElementButton/index.d.ts +4 -0
  216. package/dist/esm/components/shared/helperComponents/FieldElementButton/index.js +4 -0
  217. package/dist/esm/components/shared/helperComponents/FieldElementButton/styles.module.css +204 -0
  218. package/dist/esm/components/shared/helperComponents/FieldElementButton/types.d.ts +4 -0
  219. package/dist/esm/components/shared/helperComponents/FieldElementButton/types.js +1 -0
  220. package/dist/esm/components/shared/helperComponents/FieldShell/FieldShell.d.ts +43 -0
  221. package/dist/esm/components/shared/helperComponents/FieldShell/FieldShell.js +16 -0
  222. package/dist/esm/components/shared/helperComponents/FieldShell/index.d.ts +1 -0
  223. package/dist/esm/components/shared/helperComponents/FieldShell/index.js +1 -0
  224. package/dist/esm/components/shared/helperComponents/FieldShell/styles.module.css +11 -0
  225. package/dist/esm/components/shared/hooks/useCopyButton.d.ts +20 -0
  226. package/dist/esm/components/shared/hooks/useCopyButton.js +55 -0
  227. package/dist/esm/components/shared/index.d.ts +4 -0
  228. package/dist/esm/components/shared/index.js +4 -0
  229. package/dist/esm/components/shared/styles.module.css +673 -0
  230. package/dist/esm/components/shared/utils.d.ts +69 -0
  231. package/dist/esm/components/shared/utils.js +91 -0
  232. package/dist/esm/constants.d.ts +61 -0
  233. package/dist/esm/constants.js +73 -0
  234. package/dist/esm/hooks/index.d.ts +1 -0
  235. package/dist/esm/hooks/index.js +1 -0
  236. package/dist/esm/hooks/useAdaptiveAutoFocus.d.ts +7 -0
  237. package/dist/esm/hooks/useAdaptiveAutoFocus.js +7 -0
  238. package/dist/esm/index.d.ts +3 -0
  239. package/dist/esm/index.js +3 -0
  240. package/dist/esm/segments/index.d.ts +2 -0
  241. package/dist/esm/segments/index.js +2 -0
  242. package/dist/esm/segments/segments.d.ts +22 -0
  243. package/dist/esm/segments/segments.js +43 -0
  244. package/dist/esm/segments/useSegmentedMask.d.ts +43 -0
  245. package/dist/esm/segments/useSegmentedMask.js +279 -0
  246. package/dist/esm/style.css +1350 -0
  247. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  248. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  249. package/package.json +62 -0
  250. package/src/components/FieldColor/FieldColor.tsx +426 -0
  251. package/src/components/FieldColor/index.ts +1 -0
  252. package/src/components/FieldColor/styles.module.scss +120 -0
  253. package/src/components/FieldColor/utils.ts +17 -0
  254. package/src/components/FieldCombo/FieldCombo.tsx +495 -0
  255. package/src/components/FieldCombo/index.ts +1 -0
  256. package/src/components/FieldDate/FieldDate.tsx +658 -0
  257. package/src/components/FieldDate/constants.ts +11 -0
  258. package/src/components/FieldDate/index.ts +3 -0
  259. package/src/components/FieldDate/mask.ts +123 -0
  260. package/src/components/FieldDate/styles.module.scss +56 -0
  261. package/src/components/FieldDate/types.ts +124 -0
  262. package/src/components/FieldDate/utils.ts +7 -0
  263. package/src/components/FieldSecure/FieldSecure.tsx +398 -0
  264. package/src/components/FieldSecure/index.ts +1 -0
  265. package/src/components/FieldSelect/FieldSelect.tsx +689 -0
  266. package/src/components/FieldSelect/constants.ts +4 -0
  267. package/src/components/FieldSelect/index.ts +3 -0
  268. package/src/components/FieldSelect/styles.module.scss +104 -0
  269. package/src/components/FieldSelect/types.ts +212 -0
  270. package/src/components/FieldSelect/utils.ts +134 -0
  271. package/src/components/FieldSlider/FieldSlider.tsx +502 -0
  272. package/src/components/FieldSlider/index.ts +2 -0
  273. package/src/components/FieldSlider/styles.module.scss +47 -0
  274. package/src/components/FieldSlider/types.ts +5 -0
  275. package/src/components/FieldSlider/utils/generateAllowedValues.ts +13 -0
  276. package/src/components/FieldSlider/utils/getClosestMark.ts +21 -0
  277. package/src/components/FieldSlider/utils/getMarkLabel.ts +7 -0
  278. package/src/components/FieldSlider/utils/getTextFieldValue.ts +8 -0
  279. package/src/components/FieldSlider/utils/index.ts +5 -0
  280. package/src/components/FieldSlider/utils/isMarkObject.ts +7 -0
  281. package/src/components/FieldStepper/FieldStepper.tsx +457 -0
  282. package/src/components/FieldStepper/index.ts +1 -0
  283. package/src/components/FieldStepper/styles.module.scss +98 -0
  284. package/src/components/FieldStepper/utils.ts +44 -0
  285. package/src/components/FieldText/FieldText.tsx +27 -0
  286. package/src/components/FieldText/index.ts +1 -0
  287. package/src/components/FieldTextArea/FieldTextArea.tsx +374 -0
  288. package/src/components/FieldTextArea/index.ts +1 -0
  289. package/src/components/FieldTextArea/styles.module.scss +192 -0
  290. package/src/components/FieldTime/FieldTime.tsx +401 -0
  291. package/src/components/FieldTime/index.ts +2 -0
  292. package/src/components/FieldTime/mask.ts +22 -0
  293. package/src/components/FieldTime/styles.module.scss +3 -0
  294. package/src/components/index.ts +14 -0
  295. package/src/components/shared/helperComponents/FieldElementButton/FieldElementButton.tsx +127 -0
  296. package/src/components/shared/helperComponents/FieldElementButton/FieldElementButtonList.tsx +72 -0
  297. package/src/components/shared/helperComponents/FieldElementButton/constants.ts +10 -0
  298. package/src/components/shared/helperComponents/FieldElementButton/index.ts +4 -0
  299. package/src/components/shared/helperComponents/FieldElementButton/styles.module.scss +137 -0
  300. package/src/components/shared/helperComponents/FieldElementButton/types.ts +6 -0
  301. package/src/components/shared/helperComponents/FieldShell/FieldShell.tsx +100 -0
  302. package/src/components/shared/helperComponents/FieldShell/index.ts +1 -0
  303. package/src/components/shared/helperComponents/FieldShell/styles.module.scss +13 -0
  304. package/src/components/shared/hooks/useCopyButton.tsx +103 -0
  305. package/src/components/shared/index.ts +4 -0
  306. package/src/components/shared/styles.module.scss +409 -0
  307. package/src/components/shared/utils.ts +128 -0
  308. package/src/constants.ts +73 -0
  309. package/src/hooks/index.ts +1 -0
  310. package/src/hooks/useAdaptiveAutoFocus.ts +16 -0
  311. package/src/index.ts +3 -0
  312. package/src/segments/index.ts +2 -0
  313. package/src/segments/segments.ts +74 -0
  314. package/src/segments/useSegmentedMask.ts +361 -0
@@ -0,0 +1,100 @@
1
+ import { CalendarDropdownProps } from '@cloud-ru/ds-calendar';
2
+ import { FieldDecoratorProps, Size, ValidationState } from '@cloud-ru/ds-field-decorator';
3
+ import { ValueOf, WithSupportProps } from '@cloud-ru/ds-utils';
4
+ import { FocusEvent, ReactNode } from 'react';
5
+ import { FieldLayoutPresets } from '../../hooks';
6
+ import { DATE_MODE } from './constants';
7
+ export type DateMode = ValueOf<typeof DATE_MODE>;
8
+ /** Значение одиночной даты/даты-времени. */
9
+ export type DateValue = Date | undefined;
10
+ /** Значение периода (`[from, to]`). */
11
+ export type DateRangeValue = [DateValue, DateValue];
12
+ type FieldDateDecoratorProps = Omit<FieldDecoratorProps, 'children' | 'validationState' | 'size'>;
13
+ type CalendarPassthrough = Pick<CalendarDropdownProps, 'today' | 'showHolidays' | 'buildCellProps' | 'locale' | 'presets' | 'placement' | 'closeOnApply' | 'closeOnPopstate' | 'open' | 'onOpenChange'>;
14
+ type CommonFieldDateProps = WithSupportProps<FieldDateDecoratorProps & CalendarPassthrough & {
15
+ /** Размер */
16
+ size?: Size;
17
+ /** Состояние валидации */
18
+ validationState?: ValidationState;
19
+ /** CSS-класс корня `FieldDecorator` */
20
+ className?: string;
21
+ /** CSS-класс оболочки поля */
22
+ fieldClassName?: string;
23
+ /** Placeholder в триггере, когда нет значения */
24
+ placeholder?: string;
25
+ /**
26
+ * `aria-label` поля начала периода (режим `date-range`).
27
+ * @default 'Начало периода'
28
+ */
29
+ labelFrom?: string;
30
+ /**
31
+ * `aria-label` поля конца периода (режим `date-range`).
32
+ * @default 'Конец периода'
33
+ */
34
+ labelTo?: string;
35
+ /** Иконка перед текстом (если не задано — `CalendarSVG`) */
36
+ iconBefore?: ReactNode;
37
+ /** Деактивировано */
38
+ disabled?: boolean;
39
+ /** Read-only режим */
40
+ readonly?: boolean;
41
+ /**
42
+ * Фон поля (acrylic)
43
+ * @default true
44
+ */
45
+ background?: boolean;
46
+ /**
47
+ * Показывать кнопку очистки значения (✕). Активна, когда есть значение и поле не disabled/readonly.
48
+ * @default true
49
+ */
50
+ showClearButton?: boolean;
51
+ /**
52
+ * Показывать кнопку копирования значения (только при `readonly` и непустом значении).
53
+ * @default true
54
+ */
55
+ showCopyButton?: boolean;
56
+ /** Колбек после копирования значения в буфер */
57
+ onCopyButtonClick?(): void;
58
+ /**
59
+ * Показывать секунды в режиме `date-time` (в маске и в выпадающем календаре).
60
+ * @default true
61
+ */
62
+ showSeconds?: boolean;
63
+ /** HTML-атрибут `id` для input (и `for` у label) */
64
+ id?: string;
65
+ /** HTML-атрибут `name` для input */
66
+ name?: string;
67
+ /** Автофокус input при монтировании. На mobile выключается адаптивно (см. `layoutPresets`) */
68
+ autoFocus?: boolean;
69
+ /**
70
+ * Переопределение адаптивных дефолтов по раскладке. Участвует `autoFocus`: на mobile он выключен
71
+ * (открывает клавиатуру без действия). Вернуть на mobile — `layoutPresets={{ mobile: { autoFocus: true } }}`.
72
+ */
73
+ layoutPresets?: FieldLayoutPresets;
74
+ /** Колбек фокуса input */
75
+ onFocus?(event: FocusEvent<HTMLInputElement>): void;
76
+ /** Колбек блюра input */
77
+ onBlur?(event: FocusEvent<HTMLInputElement>): void;
78
+ }>;
79
+ export type FieldDateSingleProps = CommonFieldDateProps & {
80
+ /** Режим выбора даты. По умолчанию `'date'`. */
81
+ mode?: typeof DATE_MODE.Date | typeof DATE_MODE.DateTime;
82
+ /** Управляемое значение */
83
+ value?: DateValue;
84
+ /** Неуправляемое значение по умолчанию */
85
+ defaultValue?: DateValue;
86
+ /** Колбек смены значения */
87
+ onChange?(value: DateValue): void;
88
+ };
89
+ export type FieldDateRangeProps = CommonFieldDateProps & {
90
+ /** Режим выбора периода */
91
+ mode: typeof DATE_MODE.DateRange;
92
+ /** Управляемое значение */
93
+ value?: DateRangeValue;
94
+ /** Неуправляемое значение по умолчанию */
95
+ defaultValue?: DateRangeValue;
96
+ /** Колбек смены значения */
97
+ onChange?(value: DateRangeValue): void;
98
+ };
99
+ export type FieldDateProps = FieldDateSingleProps | FieldDateRangeProps;
100
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ import { FieldDateProps, FieldDateRangeProps } from './types';
2
+ /** Type-guard: режим выбора периода (range) против одиночной даты/даты-времени. */
3
+ export declare function isRange(props: FieldDateProps): props is FieldDateRangeProps;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRange = isRange;
4
+ const constants_1 = require("./constants");
5
+ /** Type-guard: режим выбора периода (range) против одиночной даты/даты-времени. */
6
+ function isRange(props) {
7
+ return props.mode === constants_1.DATE_MODE.DateRange;
8
+ }
@@ -0,0 +1,64 @@
1
+ import { FieldDecoratorProps } from '@cloud-ru/ds-field-decorator';
2
+ import { InputPrivateProps } from '@cloud-ru/ds-input-private';
3
+ import { ReactNode } from 'react';
4
+ type FieldSecureDecoratorProps = Omit<FieldDecoratorProps, 'children'>;
5
+ type FieldSecureOwnProps = {
6
+ /** CSS-класс корня `FieldDecorator` */
7
+ className?: string;
8
+ /** CSS-класс оболочки поля ввода */
9
+ fieldClassName?: string;
10
+ /**
11
+ * Фон поля (acrylic)
12
+ * @default true
13
+ */
14
+ background?: boolean;
15
+ /** Значение (controlled-режим) */
16
+ value?: string;
17
+ /** Начальное значение (uncontrolled-режим) */
18
+ defaultValue?: string;
19
+ /** Колбек смены значения */
20
+ onChange?(value: string): void;
21
+ /**
22
+ * Скрыто ли значение (controlled). Для uncontrolled-режима используйте `defaultHidden`.
23
+ */
24
+ hidden?: boolean;
25
+ /**
26
+ * Начальное состояние маскирования (uncontrolled-режим). Кнопка «глаз» переключает
27
+ * маскирование сама; `hidden` для этого передавать не нужно.
28
+ * @default true
29
+ */
30
+ defaultHidden?: boolean;
31
+ /** Колбек смены маскирования */
32
+ onHiddenChange?(hidden: boolean): void;
33
+ /**
34
+ * Показывать кнопку «глаз»
35
+ * @default true
36
+ */
37
+ showHideButton?: boolean;
38
+ /**
39
+ * Показывать кнопку копирования (только при `readonly = true` и непустом `value`)
40
+ * @default true
41
+ */
42
+ showCopyButton?: boolean;
43
+ /** Колбек после копирования значения в буфер */
44
+ onCopyButtonClick?(): void;
45
+ /**
46
+ * Разрешить ввод свыше `maxLength` символов.
47
+ * @default false
48
+ */
49
+ allowMoreThanMaxLength?: boolean;
50
+ /**
51
+ * Async-загрузчик значения. Вызывается перед раскрытием/копированием значения,
52
+ * результат передаётся через `onChange`. Во время запроса показывается Skeleton.
53
+ * После успешного запроса значение считается полученным и больше не запрашивается.
54
+ */
55
+ asyncValueGetter?: () => Promise<string>;
56
+ /**
57
+ * Ведущая иконка.
58
+ * @deprecated Используйте `iconBefore`.
59
+ */
60
+ prefixIcon?: ReactNode;
61
+ };
62
+ export type FieldSecureProps = FieldSecureDecoratorProps & Omit<InputPrivateProps, 'className' | 'type' | 'value' | 'onChange'> & FieldSecureOwnProps;
63
+ export declare const FieldSecure: import("react").ForwardRefExoticComponent<Omit<FieldSecureProps, "ref"> & import("react").RefAttributes<HTMLInputElement>>;
64
+ export {};
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FieldSecure = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ // Имя совпадает с мастер-нодой Figma (`fieldSecure`). Легаси-проп `prefixIcon` ниже
9
+ // сохраняет совместимость с `@snack-uikit/fields` (`FieldSecure.prefixIcon`).
10
+ const divider_1 = require("@cloud-ru/ds-divider");
11
+ const field_decorator_1 = require("@cloud-ru/ds-field-decorator");
12
+ const system_1 = require("@cloud-ru/ds-icons/interface/system");
13
+ const input_private_1 = require("@cloud-ru/ds-input-private");
14
+ const skeleton_1 = require("@cloud-ru/ds-skeleton");
15
+ const utils_1 = require("@cloud-ru/ds-utils");
16
+ const classnames_1 = __importDefault(require("classnames"));
17
+ const merge_refs_1 = __importDefault(require("merge-refs"));
18
+ const react_1 = require("react");
19
+ const constants_1 = require("../../constants");
20
+ const shared_1 = require("../shared");
21
+ const styles_module_scss_1 = __importDefault(require('../shared/styles.module.css'));
22
+ const isCursorAtEnd = (el) => Boolean(el && el.selectionStart === el.value.length && el.selectionEnd === el.value.length);
23
+ exports.FieldSecure = (0, react_1.forwardRef)(function FieldSecure({ label = '', labelTooltip, caption, hint, error, validationState = field_decorator_1.VALIDATION_STATE.Default, showHintIcon, length, required, size = field_decorator_1.SIZE.M, className, fieldClassName, background = true, value: valueProp, defaultValue, hidden: hiddenProp, defaultHidden, onHiddenChange, showHideButton: showHideButtonProp = true, showCopyButton: showCopyButtonProp = true, onCopyButtonClick, allowMoreThanMaxLength = false, asyncValueGetter, prefixIcon, disabled, readonly: readOnly, onChange, placeholder, 'data-test-id': dataTestId, ...inputProps }, ref) {
24
+ const { onFocus: onFocusProp, onBlur: onBlurProp, onKeyDown: onKeyDownProp, tabIndex: tabIndexProp, maxLength, ...restInputProps } = inputProps;
25
+ const localRef = (0, react_1.useRef)(null);
26
+ const copyButtonRef = (0, react_1.useRef)(null);
27
+ const hideButtonRef = (0, react_1.useRef)(null);
28
+ const [focusVisible, setFocusVisible] = (0, react_1.useState)(false);
29
+ const [hover, setHover] = (0, react_1.useState)(false);
30
+ const [hiddenInner, setHiddenInner] = (0, react_1.useState)(defaultHidden ?? true);
31
+ const [isLoading, setIsLoading] = (0, react_1.useState)(false);
32
+ const [isAsyncLoaded, setIsAsyncLoaded] = (0, react_1.useState)(false);
33
+ const isHiddenControlled = hiddenProp !== undefined;
34
+ const hidden = isHiddenControlled ? hiddenProp : hiddenInner;
35
+ // controlled/uncontrolled: useValueControl держит значение при отсутствии `value`.
36
+ const [value = '', setValue] = (0, utils_1.useValueControl)({ value: valueProp, defaultValue });
37
+ const emitChange = (0, react_1.useCallback)((next) => {
38
+ setValue(next);
39
+ onChange?.(next);
40
+ }, [onChange, setValue]);
41
+ const ensureAsyncValue = (0, react_1.useCallback)(async () => {
42
+ if (!asyncValueGetter || isAsyncLoaded) {
43
+ return true;
44
+ }
45
+ setIsLoading(true);
46
+ try {
47
+ const next = await asyncValueGetter();
48
+ setIsAsyncLoaded(true);
49
+ emitChange(next);
50
+ return true;
51
+ }
52
+ catch {
53
+ return false;
54
+ }
55
+ finally {
56
+ setIsLoading(false);
57
+ }
58
+ }, [asyncValueGetter, emitChange, isAsyncLoaded]);
59
+ const toggleHidden = (0, react_1.useCallback)(() => {
60
+ ensureAsyncValue().then(success => {
61
+ if (!success) {
62
+ return;
63
+ }
64
+ const next = !hidden;
65
+ if (!isHiddenControlled) {
66
+ setHiddenInner(next);
67
+ }
68
+ onHiddenChange?.(next);
69
+ // Возврат фокуса в поле + каретка в конец после переключения (паритет с легаси FieldSecure).
70
+ if (!readOnly) {
71
+ setTimeout(() => {
72
+ const input = localRef.current;
73
+ if (input) {
74
+ input.focus();
75
+ const end = input.value.length;
76
+ input.setSelectionRange(end, end);
77
+ }
78
+ }, 0);
79
+ }
80
+ });
81
+ }, [ensureAsyncValue, hidden, isHiddenControlled, onHiddenChange, readOnly]);
82
+ const effectiveValidationState = (0, react_1.useMemo)(() => (error ? field_decorator_1.VALIDATION_STATE.Error : validationState), [error, validationState]);
83
+ const stringValue = String(value ?? '');
84
+ const showCopyUi = Boolean(showCopyButtonProp && stringValue && !disabled && readOnly);
85
+ const showHideUi = Boolean(showHideButtonProp && !(readOnly && !stringValue));
86
+ const onCopy = (0, react_1.useCallback)(() => ensureAsyncValue().then(async (success) => {
87
+ const copied = success && (await (0, shared_1.copyTextToClipboard)(stringValue));
88
+ if (copied) {
89
+ onCopyButtonClick?.();
90
+ }
91
+ return copied;
92
+ }), [ensureAsyncValue, onCopyButtonClick, stringValue]);
93
+ const copyButtonSettings = (0, shared_1.useCopyButton)({
94
+ copyButtonRef,
95
+ showCopyButton: showCopyUi,
96
+ size: (0, shared_1.toInputSize)(size),
97
+ onCopy,
98
+ disabled: Boolean(disabled),
99
+ });
100
+ // ArrowRight с copy-кнопки уводит фокус на «глаз» (buttonFieldAfter), продолжая roving-цепочку.
101
+ const onPostfixKeyDown = (0, react_1.useCallback)((event) => {
102
+ if (event.key === 'ArrowRight' && showHideUi && hideButtonRef.current) {
103
+ event.preventDefault();
104
+ hideButtonRef.current.focus();
105
+ }
106
+ }, [showHideUi]);
107
+ const { postfixButtons, inputTabIndex, onInputKeyDown } = (0, input_private_1.useButtonNavigation)({
108
+ inputRef: localRef,
109
+ postfixButtons: (0, react_1.useMemo)(() => [copyButtonSettings], [copyButtonSettings]),
110
+ onButtonKeyDown: onPostfixKeyDown,
111
+ readonly: Boolean(readOnly),
112
+ submitKeys: ['Enter', 'Space', 'Tab'],
113
+ });
114
+ const handleKeyDown = (0, react_1.useCallback)((event) => {
115
+ onKeyDownProp?.(event);
116
+ onInputKeyDown(event);
117
+ // ArrowRight в конце поля уводит фокус на кнопку «глаз» (если рядом нет видимой copy).
118
+ const atEnd = Boolean(readOnly) || isCursorAtEnd(localRef.current);
119
+ if (showHideUi && event.key === 'ArrowRight' && atEnd && !showCopyUi && hideButtonRef.current) {
120
+ event.preventDefault();
121
+ hideButtonRef.current.focus();
122
+ }
123
+ }, [onInputKeyDown, onKeyDownProp, readOnly, showCopyUi, showHideUi]);
124
+ // ArrowLeft с «глаза» возвращает фокус на copy (если видима) или в поле.
125
+ const onEyeKeyDown = (0, react_1.useCallback)((event) => {
126
+ if (event.key === 'ArrowLeft') {
127
+ event.preventDefault();
128
+ ((showCopyUi && copyButtonRef.current) || localRef.current)?.focus();
129
+ }
130
+ }, [showCopyUi]);
131
+ const handleFocus = (0, react_1.useCallback)((event) => {
132
+ setFocusVisible(event.target.matches(':focus-visible'));
133
+ onFocusProp?.(event);
134
+ }, [onFocusProp]);
135
+ const handleBlur = (0, react_1.useCallback)((event) => {
136
+ setFocusVisible(false);
137
+ onBlurProp?.(event);
138
+ }, [onBlurProp]);
139
+ const handleMouseEnter = (0, react_1.useCallback)(() => {
140
+ if (!readOnly && !disabled) {
141
+ setHover(true);
142
+ }
143
+ }, [disabled, readOnly]);
144
+ const handleMouseLeave = (0, react_1.useCallback)(() => {
145
+ setHover(false);
146
+ }, []);
147
+ const shell = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.fieldWrapper, fieldClassName), "data-test-id": constants_1.TEST_IDS.fieldSecureShell, "data-size": size, "data-validation-state": effectiveValidationState, "data-disabled": disabled || undefined, "data-readonly": readOnly || undefined, "data-withbackground": background || undefined, "data-focusvisible": focusVisible || undefined, "data-hover": !readOnly && !disabled && hover ? true : undefined, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.backgroundWrapper, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.materialLayer, ...(0, shared_1.getAcrylicProps)({
148
+ validationState: effectiveValidationState,
149
+ disabled,
150
+ readonly: readOnly,
151
+ hover,
152
+ focusVisible,
153
+ }), children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.acrylicBg, "aria-hidden": true }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.borderStateLayer, "data-state": 'borderOnBackground' }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.focusLayer })] }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.fieldContainer, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.contentWrapper, children: [prefixIcon && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.iconSlot, children: prefixIcon }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.inputLine, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.inputArea, children: [(0, jsx_runtime_1.jsx)(skeleton_1.WithSkeleton, { skeleton: (0, jsx_runtime_1.jsx)(skeleton_1.Skeleton, { width: '100%', borderRadius: 2, "data-test-id": constants_1.TEST_IDS.fieldSecureSkeleton }), loading: isLoading, children: (0, jsx_runtime_1.jsx)(input_private_1.InputPrivate, { ref: (0, merge_refs_1.default)(ref, localRef), className: styles_module_scss_1.default.fieldInput, value: value, disabled: disabled, readonly: readOnly, onChange: emitChange, placeholder: placeholder, tabIndex: tabIndexProp ?? inputTabIndex, onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: handleBlur, type: hidden ? input_private_1.TYPE.Password : input_private_1.TYPE.Text, maxLength: allowMoreThanMaxLength ? undefined : maxLength, ...restInputProps, "data-test-id": constants_1.TEST_IDS.fieldSecureInput }) }), postfixButtons && (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.postfixButtonsSlot, children: postfixButtons })] }) })] }) }), showHideUi && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.elementWrapperAfter, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.lineWrapper, "data-outline": true, children: (0, jsx_runtime_1.jsx)(divider_1.Divider, { orientation: 'vertical', variant: 'regular' }) }), (0, jsx_runtime_1.jsx)(shared_1.FieldElementButton, { ref: hideButtonRef, variant: 'after', size: size, action: hidden ? (0, jsx_runtime_1.jsx)(system_1.EyeSVG, {}) : (0, jsx_runtime_1.jsx)(system_1.EyeClosedSVG, {}), onClick: toggleHidden, onKeyDown: onEyeKeyDown, disabled: disabled,
154
+ // Roving-композит (легаси: обе кнопки в postfixButtons useButtonNavigation):
155
+ // Tab уходит из поля целиком, по кнопкам (copy → глаз) ходят стрелки.
156
+ tabIndex: -1, "data-test-id": constants_1.TEST_IDS.fieldSecureHideButton })] }))] }));
157
+ return ((0, jsx_runtime_1.jsx)(field_decorator_1.FieldDecorator, { className: className, label: label, labelTooltip: labelTooltip, caption: caption, hint: hint, error: error, validationState: validationState, showHintIcon: showHintIcon, length: length ?? (maxLength ? { current: stringValue.length, max: maxLength } : undefined), required: required, labelFor: inputProps.id, disabled: disabled, readonly: readOnly, size: size, "data-test-id": dataTestId, children: shell }));
158
+ });
@@ -0,0 +1 @@
1
+ export * from './FieldSecure';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./FieldSecure"), exports);
@@ -0,0 +1,2 @@
1
+ import { FieldSelectProps } from './types';
2
+ export declare const FieldSelect: import("react").ForwardRefExoticComponent<FieldSelectProps & import("react").RefAttributes<HTMLInputElement>>;