@cloud-ru/ds-uikit-product-fields-predefined 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 (376) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/LICENSE +201 -0
  3. package/README.md +1339 -0
  4. package/dist/cjs/components/FieldChat/FieldChat.d.ts +7 -0
  5. package/dist/cjs/components/FieldChat/FieldChat.js +50 -0
  6. package/dist/cjs/components/FieldChat/components/Attachments/Attachments.d.ts +8 -0
  7. package/dist/cjs/components/FieldChat/components/Attachments/Attachments.js +16 -0
  8. package/dist/cjs/components/FieldChat/components/Attachments/index.d.ts +1 -0
  9. package/dist/cjs/components/FieldChat/components/Attachments/index.js +17 -0
  10. package/dist/cjs/components/FieldChat/components/Attachments/styles.module.css +12 -0
  11. package/dist/cjs/components/FieldChat/components/FieldSubmitButton/FieldSubmitButton.d.ts +18 -0
  12. package/dist/cjs/components/FieldChat/components/FieldSubmitButton/FieldSubmitButton.js +22 -0
  13. package/dist/cjs/components/FieldChat/components/FieldSubmitButton/index.d.ts +1 -0
  14. package/dist/cjs/components/FieldChat/components/FieldSubmitButton/index.js +17 -0
  15. package/dist/cjs/components/FieldChat/components/FieldSubmitButton/styles.module.css +3 -0
  16. package/dist/cjs/components/FieldChat/components/TextAreaActionsFooter/TextAreaActionsFooter.d.ts +8 -0
  17. package/dist/cjs/components/FieldChat/components/TextAreaActionsFooter/TextAreaActionsFooter.js +11 -0
  18. package/dist/cjs/components/FieldChat/components/TextAreaActionsFooter/index.d.ts +1 -0
  19. package/dist/cjs/components/FieldChat/components/TextAreaActionsFooter/index.js +17 -0
  20. package/dist/cjs/components/FieldChat/components/TextAreaActionsFooter/styles.module.css +25 -0
  21. package/dist/cjs/components/FieldChat/index.d.ts +2 -0
  22. package/dist/cjs/components/FieldChat/index.js +18 -0
  23. package/dist/cjs/components/FieldChat/styles.module.css +14 -0
  24. package/dist/cjs/components/FieldChat/types.d.ts +14 -0
  25. package/dist/cjs/components/FieldChat/types.js +2 -0
  26. package/dist/cjs/components/FieldCode/FieldCode.d.ts +30 -0
  27. package/dist/cjs/components/FieldCode/FieldCode.js +42 -0
  28. package/dist/cjs/components/FieldCode/components/Cell/Cell.d.ts +7 -0
  29. package/dist/cjs/components/FieldCode/components/Cell/Cell.js +17 -0
  30. package/dist/cjs/components/FieldCode/components/Cell/index.d.ts +1 -0
  31. package/dist/cjs/components/FieldCode/components/Cell/index.js +17 -0
  32. package/dist/cjs/components/FieldCode/components/Cell/styles.module.css +19 -0
  33. package/dist/cjs/components/FieldCode/components/ResendCode/ResendCode.d.ts +8 -0
  34. package/dist/cjs/components/FieldCode/components/ResendCode/ResendCode.js +19 -0
  35. package/dist/cjs/components/FieldCode/components/ResendCode/index.d.ts +1 -0
  36. package/dist/cjs/components/FieldCode/components/ResendCode/index.js +17 -0
  37. package/dist/cjs/components/FieldCode/components/ResendCode/utils.d.ts +1 -0
  38. package/dist/cjs/components/FieldCode/components/ResendCode/utils.js +8 -0
  39. package/dist/cjs/components/FieldCode/components/index.d.ts +2 -0
  40. package/dist/cjs/components/FieldCode/components/index.js +18 -0
  41. package/dist/cjs/components/FieldCode/constants.d.ts +2 -0
  42. package/dist/cjs/components/FieldCode/constants.js +5 -0
  43. package/dist/cjs/components/FieldCode/hooks/index.d.ts +5 -0
  44. package/dist/cjs/components/FieldCode/hooks/index.js +21 -0
  45. package/dist/cjs/components/FieldCode/hooks/useCodeInput.d.ts +22 -0
  46. package/dist/cjs/components/FieldCode/hooks/useCodeInput.js +97 -0
  47. package/dist/cjs/components/FieldCode/hooks/useFieldCodeOverflow.d.ts +6 -0
  48. package/dist/cjs/components/FieldCode/hooks/useFieldCodeOverflow.js +43 -0
  49. package/dist/cjs/components/FieldCode/hooks/useFieldCodeValidate.d.ts +6 -0
  50. package/dist/cjs/components/FieldCode/hooks/useFieldCodeValidate.js +22 -0
  51. package/dist/cjs/components/FieldCode/hooks/useFieldHelpers.d.ts +12 -0
  52. package/dist/cjs/components/FieldCode/hooks/useFieldHelpers.js +31 -0
  53. package/dist/cjs/components/FieldCode/hooks/useFocusCell.d.ts +5 -0
  54. package/dist/cjs/components/FieldCode/hooks/useFocusCell.js +21 -0
  55. package/dist/cjs/components/FieldCode/hooks/useRefState.d.ts +7 -0
  56. package/dist/cjs/components/FieldCode/hooks/useRefState.js +21 -0
  57. package/dist/cjs/components/FieldCode/index.d.ts +3 -0
  58. package/dist/cjs/components/FieldCode/index.js +19 -0
  59. package/dist/cjs/components/FieldCode/styles.module.css +45 -0
  60. package/dist/cjs/components/FieldCode/utils.d.ts +6 -0
  61. package/dist/cjs/components/FieldCode/utils.js +21 -0
  62. package/dist/cjs/components/FieldDescription/FieldDescription.d.ts +10 -0
  63. package/dist/cjs/components/FieldDescription/FieldDescription.js +55 -0
  64. package/dist/cjs/components/FieldDescription/FieldDescriptionRHF.d.ts +9 -0
  65. package/dist/cjs/components/FieldDescription/FieldDescriptionRHF.js +47 -0
  66. package/dist/cjs/components/FieldDescription/components/FieldWithAddButton.d.ts +7 -0
  67. package/dist/cjs/components/FieldDescription/components/FieldWithAddButton.js +27 -0
  68. package/dist/cjs/components/FieldDescription/components/index.d.ts +1 -0
  69. package/dist/cjs/components/FieldDescription/components/index.js +17 -0
  70. package/dist/cjs/components/FieldDescription/constants.d.ts +1 -0
  71. package/dist/cjs/components/FieldDescription/constants.js +4 -0
  72. package/dist/cjs/components/FieldDescription/index.d.ts +3 -0
  73. package/dist/cjs/components/FieldDescription/index.js +19 -0
  74. package/dist/cjs/components/FieldDescription/types.d.ts +17 -0
  75. package/dist/cjs/components/FieldDescription/types.js +2 -0
  76. package/dist/cjs/components/FieldMask/FieldMask.d.ts +12 -0
  77. package/dist/cjs/components/FieldMask/FieldMask.js +30 -0
  78. package/dist/cjs/components/FieldMask/constants.d.ts +19 -0
  79. package/dist/cjs/components/FieldMask/constants.js +60 -0
  80. package/dist/cjs/components/FieldMask/index.d.ts +3 -0
  81. package/dist/cjs/components/FieldMask/index.js +21 -0
  82. package/dist/cjs/components/FieldMask/types.d.ts +3 -0
  83. package/dist/cjs/components/FieldMask/types.js +2 -0
  84. package/dist/cjs/components/FieldName/FieldName.d.ts +5 -0
  85. package/dist/cjs/components/FieldName/FieldName.js +84 -0
  86. package/dist/cjs/components/FieldName/FieldNameRHF.d.ts +5 -0
  87. package/dist/cjs/components/FieldName/FieldNameRHF.js +68 -0
  88. package/dist/cjs/components/FieldName/constants.d.ts +1 -0
  89. package/dist/cjs/components/FieldName/constants.js +4 -0
  90. package/dist/cjs/components/FieldName/index.d.ts +3 -0
  91. package/dist/cjs/components/FieldName/index.js +19 -0
  92. package/dist/cjs/components/FieldName/types.d.ts +22 -0
  93. package/dist/cjs/components/FieldName/types.js +2 -0
  94. package/dist/cjs/components/FieldPhone/FieldPhone.d.ts +13 -0
  95. package/dist/cjs/components/FieldPhone/FieldPhone.js +166 -0
  96. package/dist/cjs/components/FieldPhone/constants.d.ts +8 -0
  97. package/dist/cjs/components/FieldPhone/constants.js +11 -0
  98. package/dist/cjs/components/FieldPhone/countries.d.ts +3500 -0
  99. package/dist/cjs/components/FieldPhone/countries.js +1441 -0
  100. package/dist/cjs/components/FieldPhone/hooks/index.d.ts +2 -0
  101. package/dist/cjs/components/FieldPhone/hooks/index.js +18 -0
  102. package/dist/cjs/components/FieldPhone/hooks/useCountries.d.ts +2 -0
  103. package/dist/cjs/components/FieldPhone/hooks/useCountries.js +36 -0
  104. package/dist/cjs/components/FieldPhone/hooks/useMapCountryToOptions.d.ts +2 -0
  105. package/dist/cjs/components/FieldPhone/hooks/useMapCountryToOptions.js +20 -0
  106. package/dist/cjs/components/FieldPhone/index.d.ts +5 -0
  107. package/dist/cjs/components/FieldPhone/index.js +24 -0
  108. package/dist/cjs/components/FieldPhone/styles.module.css +3 -0
  109. package/dist/cjs/components/FieldPhone/types.d.ts +31 -0
  110. package/dist/cjs/components/FieldPhone/types.js +2 -0
  111. package/dist/cjs/components/FieldPhone/utils.d.ts +14 -0
  112. package/dist/cjs/components/FieldPhone/utils.js +85 -0
  113. package/dist/cjs/components/FieldSelectCreate/FieldSelectCreate.d.ts +8 -0
  114. package/dist/cjs/components/FieldSelectCreate/FieldSelectCreate.js +66 -0
  115. package/dist/cjs/components/FieldSelectCreate/constants.d.ts +14 -0
  116. package/dist/cjs/components/FieldSelectCreate/constants.js +17 -0
  117. package/dist/cjs/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.d.ts +8 -0
  118. package/dist/cjs/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.js +19 -0
  119. package/dist/cjs/components/FieldSelectCreate/helperComponents/SelectFooter/index.d.ts +1 -0
  120. package/dist/cjs/components/FieldSelectCreate/helperComponents/SelectFooter/index.js +17 -0
  121. package/dist/cjs/components/FieldSelectCreate/helperComponents/SelectFooter/styles.module.css +6 -0
  122. package/dist/cjs/components/FieldSelectCreate/index.d.ts +3 -0
  123. package/dist/cjs/components/FieldSelectCreate/index.js +19 -0
  124. package/dist/cjs/components/FieldSelectCreate/styles.module.css +9 -0
  125. package/dist/cjs/components/FieldSelectCreate/types.d.ts +58 -0
  126. package/dist/cjs/components/FieldSelectCreate/types.js +2 -0
  127. package/dist/cjs/components/FieldSelectCreate/useSelectDataStates.d.ts +11 -0
  128. package/dist/cjs/components/FieldSelectCreate/useSelectDataStates.js +29 -0
  129. package/dist/cjs/components/FieldSelectCreate/utils.d.ts +2 -0
  130. package/dist/cjs/components/FieldSelectCreate/utils.js +7 -0
  131. package/dist/cjs/components/index.d.ts +7 -0
  132. package/dist/cjs/components/index.js +23 -0
  133. package/dist/cjs/constants.d.ts +19 -0
  134. package/dist/cjs/constants.js +22 -0
  135. package/dist/cjs/helpers/getSymbolsRangeFromMask.d.ts +7 -0
  136. package/dist/cjs/helpers/getSymbolsRangeFromMask.js +15 -0
  137. package/dist/cjs/helpers/index.d.ts +1 -0
  138. package/dist/cjs/helpers/index.js +17 -0
  139. package/dist/cjs/hooks/index.d.ts +2 -0
  140. package/dist/cjs/hooks/index.js +18 -0
  141. package/dist/cjs/hooks/useCustomFieldValidation.d.ts +12 -0
  142. package/dist/cjs/hooks/useCustomFieldValidation.js +32 -0
  143. package/dist/cjs/hooks/useOpen.d.ts +5 -0
  144. package/dist/cjs/hooks/useOpen.js +18 -0
  145. package/dist/cjs/index.d.ts +6 -0
  146. package/dist/cjs/index.js +25 -0
  147. package/dist/cjs/locale/index.d.ts +845 -0
  148. package/dist/cjs/locale/index.js +429 -0
  149. package/dist/cjs/package.json +3 -0
  150. package/dist/cjs/style.css +136 -0
  151. package/dist/esm/components/FieldChat/FieldChat.d.ts +7 -0
  152. package/dist/esm/components/FieldChat/FieldChat.js +44 -0
  153. package/dist/esm/components/FieldChat/components/Attachments/Attachments.d.ts +8 -0
  154. package/dist/esm/components/FieldChat/components/Attachments/Attachments.js +10 -0
  155. package/dist/esm/components/FieldChat/components/Attachments/index.d.ts +1 -0
  156. package/dist/esm/components/FieldChat/components/Attachments/index.js +1 -0
  157. package/dist/esm/components/FieldChat/components/Attachments/styles.module.css +12 -0
  158. package/dist/esm/components/FieldChat/components/FieldSubmitButton/FieldSubmitButton.d.ts +18 -0
  159. package/dist/esm/components/FieldChat/components/FieldSubmitButton/FieldSubmitButton.js +16 -0
  160. package/dist/esm/components/FieldChat/components/FieldSubmitButton/index.d.ts +1 -0
  161. package/dist/esm/components/FieldChat/components/FieldSubmitButton/index.js +1 -0
  162. package/dist/esm/components/FieldChat/components/FieldSubmitButton/styles.module.css +3 -0
  163. package/dist/esm/components/FieldChat/components/TextAreaActionsFooter/TextAreaActionsFooter.d.ts +8 -0
  164. package/dist/esm/components/FieldChat/components/TextAreaActionsFooter/TextAreaActionsFooter.js +5 -0
  165. package/dist/esm/components/FieldChat/components/TextAreaActionsFooter/index.d.ts +1 -0
  166. package/dist/esm/components/FieldChat/components/TextAreaActionsFooter/index.js +1 -0
  167. package/dist/esm/components/FieldChat/components/TextAreaActionsFooter/styles.module.css +25 -0
  168. package/dist/esm/components/FieldChat/index.d.ts +2 -0
  169. package/dist/esm/components/FieldChat/index.js +2 -0
  170. package/dist/esm/components/FieldChat/styles.module.css +14 -0
  171. package/dist/esm/components/FieldChat/types.d.ts +14 -0
  172. package/dist/esm/components/FieldChat/types.js +1 -0
  173. package/dist/esm/components/FieldCode/FieldCode.d.ts +30 -0
  174. package/dist/esm/components/FieldCode/FieldCode.js +36 -0
  175. package/dist/esm/components/FieldCode/components/Cell/Cell.d.ts +7 -0
  176. package/dist/esm/components/FieldCode/components/Cell/Cell.js +11 -0
  177. package/dist/esm/components/FieldCode/components/Cell/index.d.ts +1 -0
  178. package/dist/esm/components/FieldCode/components/Cell/index.js +1 -0
  179. package/dist/esm/components/FieldCode/components/Cell/styles.module.css +19 -0
  180. package/dist/esm/components/FieldCode/components/ResendCode/ResendCode.d.ts +8 -0
  181. package/dist/esm/components/FieldCode/components/ResendCode/ResendCode.js +16 -0
  182. package/dist/esm/components/FieldCode/components/ResendCode/index.d.ts +1 -0
  183. package/dist/esm/components/FieldCode/components/ResendCode/index.js +1 -0
  184. package/dist/esm/components/FieldCode/components/ResendCode/utils.d.ts +1 -0
  185. package/dist/esm/components/FieldCode/components/ResendCode/utils.js +5 -0
  186. package/dist/esm/components/FieldCode/components/index.d.ts +2 -0
  187. package/dist/esm/components/FieldCode/components/index.js +2 -0
  188. package/dist/esm/components/FieldCode/constants.d.ts +2 -0
  189. package/dist/esm/components/FieldCode/constants.js +2 -0
  190. package/dist/esm/components/FieldCode/hooks/index.d.ts +5 -0
  191. package/dist/esm/components/FieldCode/hooks/index.js +5 -0
  192. package/dist/esm/components/FieldCode/hooks/useCodeInput.d.ts +22 -0
  193. package/dist/esm/components/FieldCode/hooks/useCodeInput.js +94 -0
  194. package/dist/esm/components/FieldCode/hooks/useFieldCodeOverflow.d.ts +6 -0
  195. package/dist/esm/components/FieldCode/hooks/useFieldCodeOverflow.js +40 -0
  196. package/dist/esm/components/FieldCode/hooks/useFieldCodeValidate.d.ts +6 -0
  197. package/dist/esm/components/FieldCode/hooks/useFieldCodeValidate.js +19 -0
  198. package/dist/esm/components/FieldCode/hooks/useFieldHelpers.d.ts +12 -0
  199. package/dist/esm/components/FieldCode/hooks/useFieldHelpers.js +28 -0
  200. package/dist/esm/components/FieldCode/hooks/useFocusCell.d.ts +5 -0
  201. package/dist/esm/components/FieldCode/hooks/useFocusCell.js +18 -0
  202. package/dist/esm/components/FieldCode/hooks/useRefState.d.ts +7 -0
  203. package/dist/esm/components/FieldCode/hooks/useRefState.js +18 -0
  204. package/dist/esm/components/FieldCode/index.d.ts +3 -0
  205. package/dist/esm/components/FieldCode/index.js +3 -0
  206. package/dist/esm/components/FieldCode/styles.module.css +45 -0
  207. package/dist/esm/components/FieldCode/utils.d.ts +6 -0
  208. package/dist/esm/components/FieldCode/utils.js +13 -0
  209. package/dist/esm/components/FieldDescription/FieldDescription.d.ts +10 -0
  210. package/dist/esm/components/FieldDescription/FieldDescription.js +49 -0
  211. package/dist/esm/components/FieldDescription/FieldDescriptionRHF.d.ts +9 -0
  212. package/dist/esm/components/FieldDescription/FieldDescriptionRHF.js +41 -0
  213. package/dist/esm/components/FieldDescription/components/FieldWithAddButton.d.ts +7 -0
  214. package/dist/esm/components/FieldDescription/components/FieldWithAddButton.js +24 -0
  215. package/dist/esm/components/FieldDescription/components/index.d.ts +1 -0
  216. package/dist/esm/components/FieldDescription/components/index.js +1 -0
  217. package/dist/esm/components/FieldDescription/constants.d.ts +1 -0
  218. package/dist/esm/components/FieldDescription/constants.js +1 -0
  219. package/dist/esm/components/FieldDescription/index.d.ts +3 -0
  220. package/dist/esm/components/FieldDescription/index.js +3 -0
  221. package/dist/esm/components/FieldDescription/types.d.ts +17 -0
  222. package/dist/esm/components/FieldDescription/types.js +1 -0
  223. package/dist/esm/components/FieldMask/FieldMask.d.ts +12 -0
  224. package/dist/esm/components/FieldMask/FieldMask.js +24 -0
  225. package/dist/esm/components/FieldMask/constants.d.ts +19 -0
  226. package/dist/esm/components/FieldMask/constants.js +57 -0
  227. package/dist/esm/components/FieldMask/index.d.ts +3 -0
  228. package/dist/esm/components/FieldMask/index.js +3 -0
  229. package/dist/esm/components/FieldMask/types.d.ts +3 -0
  230. package/dist/esm/components/FieldMask/types.js +1 -0
  231. package/dist/esm/components/FieldName/FieldName.d.ts +5 -0
  232. package/dist/esm/components/FieldName/FieldName.js +78 -0
  233. package/dist/esm/components/FieldName/FieldNameRHF.d.ts +5 -0
  234. package/dist/esm/components/FieldName/FieldNameRHF.js +62 -0
  235. package/dist/esm/components/FieldName/constants.d.ts +1 -0
  236. package/dist/esm/components/FieldName/constants.js +1 -0
  237. package/dist/esm/components/FieldName/index.d.ts +3 -0
  238. package/dist/esm/components/FieldName/index.js +3 -0
  239. package/dist/esm/components/FieldName/types.d.ts +22 -0
  240. package/dist/esm/components/FieldName/types.js +1 -0
  241. package/dist/esm/components/FieldPhone/FieldPhone.d.ts +13 -0
  242. package/dist/esm/components/FieldPhone/FieldPhone.js +160 -0
  243. package/dist/esm/components/FieldPhone/constants.d.ts +8 -0
  244. package/dist/esm/components/FieldPhone/constants.js +8 -0
  245. package/dist/esm/components/FieldPhone/countries.d.ts +3500 -0
  246. package/dist/esm/components/FieldPhone/countries.js +1435 -0
  247. package/dist/esm/components/FieldPhone/hooks/index.d.ts +2 -0
  248. package/dist/esm/components/FieldPhone/hooks/index.js +2 -0
  249. package/dist/esm/components/FieldPhone/hooks/useCountries.d.ts +2 -0
  250. package/dist/esm/components/FieldPhone/hooks/useCountries.js +33 -0
  251. package/dist/esm/components/FieldPhone/hooks/useMapCountryToOptions.d.ts +2 -0
  252. package/dist/esm/components/FieldPhone/hooks/useMapCountryToOptions.js +17 -0
  253. package/dist/esm/components/FieldPhone/index.d.ts +5 -0
  254. package/dist/esm/components/FieldPhone/index.js +5 -0
  255. package/dist/esm/components/FieldPhone/styles.module.css +3 -0
  256. package/dist/esm/components/FieldPhone/types.d.ts +31 -0
  257. package/dist/esm/components/FieldPhone/types.js +1 -0
  258. package/dist/esm/components/FieldPhone/utils.d.ts +14 -0
  259. package/dist/esm/components/FieldPhone/utils.js +78 -0
  260. package/dist/esm/components/FieldSelectCreate/FieldSelectCreate.d.ts +8 -0
  261. package/dist/esm/components/FieldSelectCreate/FieldSelectCreate.js +60 -0
  262. package/dist/esm/components/FieldSelectCreate/constants.d.ts +14 -0
  263. package/dist/esm/components/FieldSelectCreate/constants.js +14 -0
  264. package/dist/esm/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.d.ts +8 -0
  265. package/dist/esm/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.js +13 -0
  266. package/dist/esm/components/FieldSelectCreate/helperComponents/SelectFooter/index.d.ts +1 -0
  267. package/dist/esm/components/FieldSelectCreate/helperComponents/SelectFooter/index.js +1 -0
  268. package/dist/esm/components/FieldSelectCreate/helperComponents/SelectFooter/styles.module.css +6 -0
  269. package/dist/esm/components/FieldSelectCreate/index.d.ts +3 -0
  270. package/dist/esm/components/FieldSelectCreate/index.js +3 -0
  271. package/dist/esm/components/FieldSelectCreate/styles.module.css +9 -0
  272. package/dist/esm/components/FieldSelectCreate/types.d.ts +58 -0
  273. package/dist/esm/components/FieldSelectCreate/types.js +1 -0
  274. package/dist/esm/components/FieldSelectCreate/useSelectDataStates.d.ts +11 -0
  275. package/dist/esm/components/FieldSelectCreate/useSelectDataStates.js +26 -0
  276. package/dist/esm/components/FieldSelectCreate/utils.d.ts +2 -0
  277. package/dist/esm/components/FieldSelectCreate/utils.js +4 -0
  278. package/dist/esm/components/index.d.ts +7 -0
  279. package/dist/esm/components/index.js +7 -0
  280. package/dist/esm/constants.d.ts +19 -0
  281. package/dist/esm/constants.js +19 -0
  282. package/dist/esm/helpers/getSymbolsRangeFromMask.d.ts +7 -0
  283. package/dist/esm/helpers/getSymbolsRangeFromMask.js +12 -0
  284. package/dist/esm/helpers/index.d.ts +1 -0
  285. package/dist/esm/helpers/index.js +1 -0
  286. package/dist/esm/hooks/index.d.ts +2 -0
  287. package/dist/esm/hooks/index.js +2 -0
  288. package/dist/esm/hooks/useCustomFieldValidation.d.ts +12 -0
  289. package/dist/esm/hooks/useCustomFieldValidation.js +28 -0
  290. package/dist/esm/hooks/useOpen.d.ts +5 -0
  291. package/dist/esm/hooks/useOpen.js +15 -0
  292. package/dist/esm/index.d.ts +6 -0
  293. package/dist/esm/index.js +6 -0
  294. package/dist/esm/locale/index.d.ts +845 -0
  295. package/dist/esm/locale/index.js +426 -0
  296. package/dist/esm/style.css +136 -0
  297. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  298. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  299. package/package.json +74 -0
  300. package/src/components/FieldChat/FieldChat.tsx +113 -0
  301. package/src/components/FieldChat/components/Attachments/Attachments.tsx +31 -0
  302. package/src/components/FieldChat/components/Attachments/index.ts +1 -0
  303. package/src/components/FieldChat/components/Attachments/styles.module.scss +19 -0
  304. package/src/components/FieldChat/components/FieldSubmitButton/FieldSubmitButton.tsx +71 -0
  305. package/src/components/FieldChat/components/FieldSubmitButton/index.ts +1 -0
  306. package/src/components/FieldChat/components/FieldSubmitButton/styles.module.scss +6 -0
  307. package/src/components/FieldChat/components/TextAreaActionsFooter/TextAreaActionsFooter.tsx +19 -0
  308. package/src/components/FieldChat/components/TextAreaActionsFooter/index.ts +1 -0
  309. package/src/components/FieldChat/components/TextAreaActionsFooter/styles.module.scss +29 -0
  310. package/src/components/FieldChat/index.ts +2 -0
  311. package/src/components/FieldChat/styles.module.scss +20 -0
  312. package/src/components/FieldChat/types.ts +29 -0
  313. package/src/components/FieldCode/FieldCode.tsx +138 -0
  314. package/src/components/FieldCode/components/Cell/Cell.tsx +35 -0
  315. package/src/components/FieldCode/components/Cell/index.ts +1 -0
  316. package/src/components/FieldCode/components/Cell/styles.module.scss +27 -0
  317. package/src/components/FieldCode/components/ResendCode/ResendCode.tsx +41 -0
  318. package/src/components/FieldCode/components/ResendCode/index.ts +1 -0
  319. package/src/components/FieldCode/components/ResendCode/utils.ts +5 -0
  320. package/src/components/FieldCode/components/index.ts +2 -0
  321. package/src/components/FieldCode/constants.ts +2 -0
  322. package/src/components/FieldCode/hooks/index.ts +5 -0
  323. package/src/components/FieldCode/hooks/useCodeInput.ts +146 -0
  324. package/src/components/FieldCode/hooks/useFieldCodeOverflow.ts +53 -0
  325. package/src/components/FieldCode/hooks/useFieldCodeValidate.ts +32 -0
  326. package/src/components/FieldCode/hooks/useFieldHelpers.ts +45 -0
  327. package/src/components/FieldCode/hooks/useFocusCell.ts +26 -0
  328. package/src/components/FieldCode/hooks/useRefState.ts +23 -0
  329. package/src/components/FieldCode/index.ts +3 -0
  330. package/src/components/FieldCode/styles.module.scss +51 -0
  331. package/src/components/FieldCode/utils.ts +23 -0
  332. package/src/components/FieldDescription/FieldDescription.tsx +98 -0
  333. package/src/components/FieldDescription/FieldDescriptionRHF.tsx +93 -0
  334. package/src/components/FieldDescription/components/FieldWithAddButton.tsx +51 -0
  335. package/src/components/FieldDescription/components/index.ts +1 -0
  336. package/src/components/FieldDescription/constants.ts +1 -0
  337. package/src/components/FieldDescription/index.ts +3 -0
  338. package/src/components/FieldDescription/types.ts +23 -0
  339. package/src/components/FieldMask/FieldMask.tsx +56 -0
  340. package/src/components/FieldMask/constants.ts +70 -0
  341. package/src/components/FieldMask/index.ts +3 -0
  342. package/src/components/FieldMask/types.ts +5 -0
  343. package/src/components/FieldName/FieldName.tsx +126 -0
  344. package/src/components/FieldName/FieldNameRHF.tsx +114 -0
  345. package/src/components/FieldName/constants.ts +1 -0
  346. package/src/components/FieldName/index.ts +3 -0
  347. package/src/components/FieldName/types.ts +28 -0
  348. package/src/components/FieldPhone/FieldPhone.tsx +264 -0
  349. package/src/components/FieldPhone/constants.ts +10 -0
  350. package/src/components/FieldPhone/countries.tsx +1755 -0
  351. package/src/components/FieldPhone/hooks/index.ts +2 -0
  352. package/src/components/FieldPhone/hooks/useCountries.ts +40 -0
  353. package/src/components/FieldPhone/hooks/useMapCountryToOptions.ts +25 -0
  354. package/src/components/FieldPhone/index.ts +5 -0
  355. package/src/components/FieldPhone/styles.module.scss +9 -0
  356. package/src/components/FieldPhone/types.ts +32 -0
  357. package/src/components/FieldPhone/utils.ts +112 -0
  358. package/src/components/FieldSelectCreate/FieldSelectCreate.tsx +133 -0
  359. package/src/components/FieldSelectCreate/constants.ts +15 -0
  360. package/src/components/FieldSelectCreate/helperComponents/SelectFooter/SelectFooter.tsx +37 -0
  361. package/src/components/FieldSelectCreate/helperComponents/SelectFooter/index.ts +1 -0
  362. package/src/components/FieldSelectCreate/helperComponents/SelectFooter/styles.module.scss +8 -0
  363. package/src/components/FieldSelectCreate/index.ts +3 -0
  364. package/src/components/FieldSelectCreate/styles.module.scss +12 -0
  365. package/src/components/FieldSelectCreate/types.ts +70 -0
  366. package/src/components/FieldSelectCreate/useSelectDataStates.tsx +57 -0
  367. package/src/components/FieldSelectCreate/utils.ts +4 -0
  368. package/src/components/index.ts +7 -0
  369. package/src/constants.ts +19 -0
  370. package/src/helpers/getSymbolsRangeFromMask.ts +15 -0
  371. package/src/helpers/index.ts +1 -0
  372. package/src/hooks/index.ts +2 -0
  373. package/src/hooks/useCustomFieldValidation.ts +38 -0
  374. package/src/hooks/useOpen.ts +22 -0
  375. package/src/index.ts +6 -0
  376. package/src/locale/index.ts +431 -0
@@ -0,0 +1,2 @@
1
+ export * from './useCountries';
2
+ export * from './useMapCountryToOptions';
@@ -0,0 +1,18 @@
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("./useCountries"), exports);
18
+ __exportStar(require("./useMapCountryToOptions"), exports);
@@ -0,0 +1,2 @@
1
+ import { CountrySettings, FieldPhoneOptionsProps } from '../types';
2
+ export declare function useCountries(optionsSettings?: CountrySettings): FieldPhoneOptionsProps[];
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCountries = useCountries;
4
+ const react_1 = require("react");
5
+ const countries_1 = require("../countries");
6
+ const utils_1 = require("../utils");
7
+ const useMapCountryToOptions_1 = require("./useMapCountryToOptions");
8
+ function useCountries(optionsSettings) {
9
+ const mapCountryToOption = (0, useMapCountryToOptions_1.useMapCountryToOptions)();
10
+ const filterCountries = (0, react_1.useMemo)(() => {
11
+ if (!optionsSettings) {
12
+ return () => true;
13
+ }
14
+ const { includedCountries, excludedCountries } = optionsSettings;
15
+ const uniqueKey = 'value';
16
+ if (includedCountries) {
17
+ const includedSet = (0, utils_1.uniqueSet)(includedCountries, uniqueKey);
18
+ return (country) => includedSet.has(country[uniqueKey]);
19
+ }
20
+ if (excludedCountries) {
21
+ const excludedSet = (0, utils_1.uniqueSet)(excludedCountries, uniqueKey);
22
+ return (country) => !excludedSet.has(country[uniqueKey]);
23
+ }
24
+ return () => true;
25
+ }, [optionsSettings]);
26
+ return (0, react_1.useMemo)(() => {
27
+ if (optionsSettings?.overriddenOptions)
28
+ return optionsSettings.overriddenOptions;
29
+ return countries_1.ALL_COUNTRY_CODES.reduce((result, country) => {
30
+ if (filterCountries(country)) {
31
+ result.push(mapCountryToOption(country));
32
+ }
33
+ return result;
34
+ }, []);
35
+ }, [optionsSettings, filterCountries, mapCountryToOption]);
36
+ }
@@ -0,0 +1,2 @@
1
+ import { Country, FieldPhoneOptionsProps } from '../types';
2
+ export declare function useMapCountryToOptions(): ({ value: id, mask, caption, icon, iso2 }: Country) => FieldPhoneOptionsProps;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useMapCountryToOptions = useMapCountryToOptions;
4
+ const react_1 = require("react");
5
+ const locale_1 = require("../../../locale");
6
+ const constants_1 = require("../constants");
7
+ function useMapCountryToOptions() {
8
+ const { t } = locale_1.fieldsPredefinedLocale.useTranslations();
9
+ const mapCountryToOption = (0, react_1.useCallback)(({ value: id, mask, caption, icon, iso2 }) => ({
10
+ id,
11
+ mask,
12
+ content: {
13
+ label: t(`FieldPhone.${id}`),
14
+ caption,
15
+ },
16
+ beforeContent: (0, react_1.createElement)(icon, { size: constants_1.FLAG_ICON_SIZE }),
17
+ iso2,
18
+ }), [t]);
19
+ return mapCountryToOption;
20
+ }
@@ -0,0 +1,5 @@
1
+ export * from './countries';
2
+ export * from './FieldPhone';
3
+ export * from './hooks';
4
+ export * from './types';
5
+ export { detectCountryByPhone, formatPhoneNumber } from './utils';
@@ -0,0 +1,24 @@
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
+ exports.formatPhoneNumber = exports.detectCountryByPhone = void 0;
18
+ __exportStar(require("./countries"), exports);
19
+ __exportStar(require("./FieldPhone"), exports);
20
+ __exportStar(require("./hooks"), exports);
21
+ __exportStar(require("./types"), exports);
22
+ var utils_1 = require("./utils");
23
+ Object.defineProperty(exports, "detectCountryByPhone", { enumerable: true, get: function () { return utils_1.detectCountryByPhone; } });
24
+ Object.defineProperty(exports, "formatPhoneNumber", { enumerable: true, get: function () { return utils_1.formatPhoneNumber; } });
@@ -0,0 +1,3 @@
1
+ .fieldPhone input[data-empty]{
2
+ color:var(--sn-theme-color-available-version-textDisabled, var(--sn-brand-color-text-version-disabled, rgba(65, 66, 78, 0.3490196078)));
3
+ }
@@ -0,0 +1,31 @@
1
+ import { ReactNode } from 'react';
2
+ import { useIMask } from 'react-imask';
3
+ import { ALL_COUNTRY_CODES } from './countries';
4
+ export type FieldPhoneOptionsProps = {
5
+ id: string;
6
+ beforeContent: ReactNode;
7
+ content: {
8
+ label: string;
9
+ caption: string;
10
+ };
11
+ mask: string;
12
+ iso2: string;
13
+ };
14
+ export type MaskOptions = Parameters<typeof useIMask>[0];
15
+ export type Country = (typeof ALL_COUNTRY_CODES)[number];
16
+ type OneOf<T extends object> = {
17
+ [K in keyof T]: {
18
+ [P in K]: T[P];
19
+ } & {
20
+ [P in Exclude<keyof T, K>]?: never;
21
+ };
22
+ }[keyof T];
23
+ export type CountrySettings = OneOf<{
24
+ /** Список элементов выпадающего списка со странами; переопределяет встроенный список пакета */
25
+ overriddenOptions: FieldPhoneOptionsProps[];
26
+ /** Список стран, которые должны отображаться в селекторе (из встроенного перечня пакета) */
27
+ includedCountries: Country[];
28
+ /** Список стран, которые будут исключены из встроенного перечня пакета */
29
+ excludedCountries: Country[];
30
+ }>;
31
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { FieldPhoneOptionsProps } from './types';
2
+ export declare const uniqueSet: <T, K extends keyof T>(arr: T[], key: K) => Set<T[K]>;
3
+ export declare const formatPhoneNumber: <T extends {
4
+ caption: string;
5
+ mask: string;
6
+ }>(phone: string, countries: readonly T[]) => string;
7
+ export declare function detectCountryByPhone(text: string, options: FieldPhoneOptionsProps[]): FieldPhoneOptionsProps | undefined;
8
+ export declare const handleAutoInsert: ({ raw, onValueChange, onCountryChange, country, options, }: {
9
+ raw: string;
10
+ onValueChange(str: string): void;
11
+ onCountryChange(country: FieldPhoneOptionsProps): void;
12
+ country?: FieldPhoneOptionsProps;
13
+ options: FieldPhoneOptionsProps[];
14
+ }) => void;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleAutoInsert = exports.formatPhoneNumber = exports.uniqueSet = void 0;
4
+ exports.detectCountryByPhone = detectCountryByPhone;
5
+ const awesome_phonenumber_1 = require("awesome-phonenumber");
6
+ const countries_1 = require("./countries");
7
+ const uniqueSet = (arr, key) => new Set(arr.map(obj => obj[key]));
8
+ exports.uniqueSet = uniqueSet;
9
+ /* Приходит +79878887879/+7987****875, на основании mask возвращается +7 987-888-78-79/+7 987-***-*8-75 */
10
+ const formatPhoneNumber = (phone, countries) => {
11
+ const digits = phone.replace(/[^\d*]/g, '');
12
+ const country = countries.find(item => digits.startsWith(item.caption.replace('+', '')));
13
+ if (!country) {
14
+ return phone;
15
+ }
16
+ const countryCode = country.caption.replace('+', '');
17
+ const restNumber = digits.slice(countryCode.length);
18
+ let formatted = '';
19
+ let index = 0;
20
+ for (const char of country.mask) {
21
+ if (char === 'X') {
22
+ formatted += restNumber.charAt(index) || '';
23
+ index++;
24
+ }
25
+ else {
26
+ formatted += char;
27
+ }
28
+ }
29
+ return `${country.caption} ${formatted}`;
30
+ };
31
+ exports.formatPhoneNumber = formatPhoneNumber;
32
+ const byId = (id) => (option) => option.id === id;
33
+ function detectCountryByPhone(text, options) {
34
+ const cleaned = text.replace(/[^\d+]/g, '');
35
+ const withPlus = cleaned.startsWith('+') ? cleaned : `+${cleaned}`;
36
+ const parsedNumber = (0, awesome_phonenumber_1.parsePhoneNumber)(withPlus);
37
+ const regionCode = parsedNumber.regionCode;
38
+ /* У Абхазии iso2 совпадает с Россией */
39
+ if (/^\+?7(840|940)/.test(cleaned)) {
40
+ let russia;
41
+ for (const option of options) {
42
+ const id = option.id;
43
+ const iso = option.iso2;
44
+ if (id === countries_1.ABKHAZIA_COUNTRY_CODE.value) {
45
+ return option;
46
+ }
47
+ if (!russia && (id === countries_1.RUSSIA_COUNTRY_CODE.value || iso === countries_1.RUSSIA_COUNTRY_CODE.iso2)) {
48
+ russia = option;
49
+ }
50
+ }
51
+ return russia;
52
+ }
53
+ if (regionCode === countries_1.RUSSIA_COUNTRY_CODE.iso2) {
54
+ return options.find(byId(countries_1.RUSSIA_COUNTRY_CODE.value));
55
+ }
56
+ return options.find(opt => opt.iso2 === regionCode);
57
+ }
58
+ const handleAutoInsert = ({ raw, onValueChange, onCountryChange, country, options, }) => {
59
+ if (!raw)
60
+ return;
61
+ const parsed = (0, awesome_phonenumber_1.parsePhoneNumber)(raw);
62
+ const ok = parsed.valid || parsed.possible;
63
+ if (!ok)
64
+ return;
65
+ const detected = detectCountryByPhone(raw, options);
66
+ if (!detected)
67
+ return;
68
+ let national = parsed.number?.significant.replace(/\D/g, '');
69
+ if (!national)
70
+ return;
71
+ const nextNationalLength = (detected.mask?.match(/X/g) ?? []).length;
72
+ if (nextNationalLength && national.length > nextNationalLength) {
73
+ national = national.slice(-nextNationalLength);
74
+ }
75
+ const fullDigits = (parsed.number?.e164 ?? raw).replace(/\D/g, '');
76
+ const countryCodeDigits = String(parsed.countryCode ?? '');
77
+ const expected = countryCodeDigits.length + nextNationalLength;
78
+ if (fullDigits.length < expected)
79
+ return;
80
+ if (detected.id !== country?.id) {
81
+ onCountryChange(detected);
82
+ }
83
+ onValueChange(national);
84
+ };
85
+ exports.handleAutoInsert = handleAutoInsert;
@@ -0,0 +1,8 @@
1
+ import { FieldSelectCreateProps } from './types';
2
+ /**
3
+ * Поле выбора с действием «создать»: `FieldSelect` из `@cloud-ru/ds-fields` + встроенная форма создания опции
4
+ * в модалке или дровере (`createLayoutType`). Кнопка «Создать <entityName>» — под полем и в футере
5
+ * дроплиста (`SelectFooter`). Пустые состояния и тексты строятся из `entityName`. Доступ рулит `permission`.
6
+ * На mobile дроплист и модалка/дровер — `BottomSheet` (адаптив `@ds`), своего пропа `layoutType` нет.
7
+ */
8
+ export declare const FieldSelectCreate: import("react").ForwardRefExoticComponent<FieldSelectCreateProps & import("react").RefAttributes<HTMLInputElement>>;
@@ -0,0 +1,66 @@
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.FieldSelectCreate = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const button_1 = require("@cloud-ru/ds-button");
9
+ const drawer_1 = require("@cloud-ru/ds-drawer");
10
+ const fields_1 = require("@cloud-ru/ds-fields");
11
+ const system_1 = require("@cloud-ru/ds-icons/interface/system");
12
+ const modal_1 = require("@cloud-ru/ds-modal");
13
+ const tooltip_1 = require("@cloud-ru/ds-tooltip");
14
+ const utils_1 = require("@cloud-ru/ds-utils");
15
+ const classnames_1 = __importDefault(require("classnames"));
16
+ const react_1 = require("react");
17
+ const constants_1 = require("../../constants");
18
+ const hooks_1 = require("../../hooks");
19
+ const locale_1 = require("../../locale");
20
+ const constants_2 = require("./constants");
21
+ const SelectFooter_1 = require("./helperComponents/SelectFooter");
22
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
23
+ const useSelectDataStates_1 = require("./useSelectDataStates");
24
+ /**
25
+ * Поле выбора с действием «создать»: `FieldSelect` из `@cloud-ru/ds-fields` + встроенная форма создания опции
26
+ * в модалке или дровере (`createLayoutType`). Кнопка «Создать <entityName>» — под полем и в футере
27
+ * дроплиста (`SelectFooter`). Пустые состояния и тексты строятся из `entityName`. Доступ рулит `permission`.
28
+ * На mobile дроплист и модалка/дровер — `BottomSheet` (адаптив `@ds`), своего пропа `layoutType` нет.
29
+ */
30
+ exports.FieldSelectCreate = (0, react_1.forwardRef)(function FieldSelectCreate({ selectProps, createLayoutProps, createLayoutType = constants_2.CREATE_LAYOUT_TYPE.Drawer, entityName, submitHandler, onRefetch, className, afterClose, entityIcon, permission = constants_2.PERMISSION.CanCreate, ...rest }, ref) {
31
+ const { t } = locale_1.fieldsPredefinedLocale.useTranslations();
32
+ const { isOpen, onOpen, onClose } = (0, hooks_1.useOpen)();
33
+ const selectDataStates = (0, useSelectDataStates_1.useSelectDataStates)({ entityName, entityIcon, onRefetch });
34
+ const size = selectProps.size ?? 'm';
35
+ const isNone = permission === constants_2.PERMISSION.None;
36
+ const canCreate = permission === constants_2.PERMISSION.CanCreate;
37
+ const handleClose = (0, react_1.useCallback)(() => {
38
+ onClose();
39
+ afterClose?.();
40
+ }, [afterClose, onClose]);
41
+ const handleCreate = (0, react_1.useCallback)(async () => {
42
+ const newValue = await submitHandler();
43
+ // Автовыбор новой опции — в single-режиме; в multiple выбор оставляем потребителю.
44
+ if (typeof newValue === 'string' && selectProps.selection !== 'multiple') {
45
+ selectProps.onChange?.(newValue);
46
+ }
47
+ handleClose();
48
+ }, [handleClose, selectProps, submitHandler]);
49
+ const createButtonLabel = `${t('FieldSelectCreate.create')} ${entityName.single.toLocaleLowerCase()}`;
50
+ const noPermissionTip = t('FieldSelectCreate.noPermission');
51
+ // createLayoutType и createLayoutProps дискриминируются союзом, но при деструктуризации корреляция
52
+ // теряется — поэтому приводим тип поверхности к целевому внутри ветки (как в легаси).
53
+ const layoutProps = {
54
+ ...createLayoutProps,
55
+ open: isOpen,
56
+ onClose: handleClose,
57
+ 'data-test-id': constants_1.TEST_IDS.fieldSelectCreateSurface,
58
+ approveButton: { label: t('FieldSelectCreate.create'), onClick: handleCreate },
59
+ cancelButton: { label: t('FieldSelectCreate.cancel'), onClick: handleClose },
60
+ };
61
+ const formLayout = createLayoutType === constants_2.CREATE_LAYOUT_TYPE.Modal ? ((0, jsx_runtime_1.jsx)(modal_1.Modal, { ...layoutProps })) : ((0, jsx_runtime_1.jsx)(drawer_1.Drawer, { ...layoutProps, position: createLayoutProps.position ?? drawer_1.POSITION.Right }));
62
+ const withTip = (node, show) => show ? (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { tip: noPermissionTip, children: node }) : node;
63
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.fieldSelectCreate, className), ...(0, utils_1.extractSupportProps)(rest), "data-test-id": constants_1.TEST_IDS.fieldSelectCreate, children: [withTip((0, jsx_runtime_1.jsx)(fields_1.FieldSelect, { ...selectProps, ref: ref, size: size, disabled: isNone || selectProps.disabled, placeholder: selectProps.placeholder ?? t('FieldSelectCreate.placeholder'), ...selectDataStates, footer:
64
+ // В состоянии ошибки показываем только «Обновить» из errorDataState — без футера «Создать» (по макету).
65
+ selectProps.dataError ? undefined : ((0, jsx_runtime_1.jsx)(SelectFooter_1.SelectFooter, { onClick: onOpen, createButtonLabel: createButtonLabel, canCreate: canCreate })) }), isNone), withTip((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, label: createButtonLabel, icon: (0, jsx_runtime_1.jsx)(system_1.PlusSVG, {}), iconPosition: button_1.ICON_POSITION.Before, onClick: onOpen, size: size, disabled: !canCreate, className: styles_module_scss_1.default.createButton, "data-test-id": constants_1.TEST_IDS.fieldSelectCreateButton }), !canCreate), formLayout] }));
66
+ });
@@ -0,0 +1,14 @@
1
+ /** Поверхность формы создания опции: модальное окно или дровер. */
2
+ export declare const CREATE_LAYOUT_TYPE: {
3
+ readonly Modal: "modal";
4
+ readonly Drawer: "drawer";
5
+ };
6
+ /** Права пользователя на чтение/создание опций. */
7
+ export declare const PERMISSION: {
8
+ /** Поле недоступно. */
9
+ readonly None: "none";
10
+ /** Поле активно, создание опции недоступно. */
11
+ readonly CanRead: "canRead";
12
+ /** Полный доступ: чтение и создание. */
13
+ readonly CanCreate: "canCreate";
14
+ };
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PERMISSION = exports.CREATE_LAYOUT_TYPE = void 0;
4
+ /** Поверхность формы создания опции: модальное окно или дровер. */
5
+ exports.CREATE_LAYOUT_TYPE = {
6
+ Modal: 'modal',
7
+ Drawer: 'drawer',
8
+ };
9
+ /** Права пользователя на чтение/создание опций. */
10
+ exports.PERMISSION = {
11
+ /** Поле недоступно. */
12
+ None: 'none',
13
+ /** Поле активно, создание опции недоступно. */
14
+ CanRead: 'canRead',
15
+ /** Полный доступ: чтение и создание. */
16
+ CanCreate: 'canCreate',
17
+ };
@@ -0,0 +1,8 @@
1
+ type SelectFooterProps = {
2
+ onClick(): void;
3
+ createButtonLabel: string;
4
+ canCreate: boolean;
5
+ };
6
+ /** Персистентный футер дроплиста с кнопкой «Создать» (недоступна и с tooltip при нехватке прав). */
7
+ export declare function SelectFooter({ onClick, createButtonLabel, canCreate }: SelectFooterProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,19 @@
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.SelectFooter = SelectFooter;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const button_1 = require("@cloud-ru/ds-button");
9
+ const system_1 = require("@cloud-ru/ds-icons/interface/system");
10
+ const tooltip_1 = require("@cloud-ru/ds-tooltip");
11
+ const constants_1 = require("../../../../constants");
12
+ const locale_1 = require("../../../../locale");
13
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
14
+ /** Персистентный футер дроплиста с кнопкой «Создать» (недоступна и с tooltip при нехватке прав). */
15
+ function SelectFooter({ onClick, createButtonLabel, canCreate }) {
16
+ const { t } = locale_1.fieldsPredefinedLocale.useTranslations();
17
+ const button = ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, label: createButtonLabel, icon: (0, jsx_runtime_1.jsx)(system_1.PlusSVG, {}), iconPosition: button_1.ICON_POSITION.Before, onClick: onClick, disabled: !canCreate, "data-test-id": constants_1.TEST_IDS.fieldSelectCreateFooterButton }));
18
+ return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.footerWrapper, children: canCreate ? button : (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { tip: t('FieldSelectCreate.noPermission'), children: button }) }));
19
+ }
@@ -0,0 +1 @@
1
+ export * from './SelectFooter';
@@ -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("./SelectFooter"), exports);
@@ -0,0 +1,6 @@
1
+ .footerWrapper{
2
+ display:flex;
3
+ align-items:center;
4
+ padding-top:var(--sn-primitive-dimension-4, 4px);
5
+ border-top:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-available-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-default-borderColor, rgba(159, 166, 198, 0.3019607843)));
6
+ }
@@ -0,0 +1,3 @@
1
+ export * from './constants';
2
+ export * from './FieldSelectCreate';
3
+ export * from './types';
@@ -0,0 +1,19 @@
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("./constants"), exports);
18
+ __exportStar(require("./FieldSelectCreate"), exports);
19
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,9 @@
1
+ .fieldSelectCreate{
2
+ display:flex;
3
+ flex-direction:column;
4
+ gap:var(--sn-primitive-dimension-8, 8px);
5
+ }
6
+
7
+ .createButton{
8
+ align-self:flex-start;
9
+ }
@@ -0,0 +1,58 @@
1
+ import { DrawerProps, Position } from '@cloud-ru/ds-drawer';
2
+ import { FieldSelectMultipleProps, FieldSelectSingleProps } from '@cloud-ru/ds-fields';
3
+ import { ModalProps } from '@cloud-ru/ds-modal';
4
+ import { ValueOf, WithSupportProps } from '@cloud-ru/ds-utils';
5
+ import { CREATE_LAYOUT_TYPE, PERMISSION } from './constants';
6
+ export type CreateLayoutType = ValueOf<typeof CREATE_LAYOUT_TYPE>;
7
+ export type Permission = ValueOf<typeof PERMISSION>;
8
+ export type EntityName = {
9
+ /** Единственное число (винительный падеж) — для кнопки «Создать <single>». */
10
+ single: string;
11
+ /** Множественное число — для текстов пустых состояний и ошибки. */
12
+ plural: string;
13
+ };
14
+ export type EntityIcon = NonNullable<NonNullable<FieldSelectSingleProps['noDataState']>['icon']>['icon'];
15
+ type OmittedSelectKeys = 'footer' | 'noDataState' | 'noResultsState' | 'errorDataState';
16
+ export type SelectFieldProps = (Omit<FieldSelectSingleProps, OmittedSelectKeys> & {
17
+ selection?: 'single';
18
+ }) | (Omit<FieldSelectMultipleProps, OmittedSelectKeys> & {
19
+ selection: 'multiple';
20
+ });
21
+ type ManagedLayoutKeys = 'open' | 'onClose' | 'approveButton' | 'cancelButton';
22
+ export type LayoutProps = {
23
+ /** По клику на «Создать» открывается модальное окно. */
24
+ createLayoutType: 'modal';
25
+ /** Пропсы модалки создания (`content` — форма создания опции). */
26
+ createLayoutProps: Omit<ModalProps, ManagedLayoutKeys>;
27
+ } | {
28
+ /** По клику на «Создать» открывается дровер (по умолчанию). */
29
+ createLayoutType?: 'drawer';
30
+ /** Пропсы дровера создания (`content` — форма создания опции); `position` по умолчанию `right`. */
31
+ createLayoutProps: Omit<DrawerProps, ManagedLayoutKeys | 'position'> & {
32
+ position?: Position;
33
+ };
34
+ };
35
+ export type FieldSelectCreateProps = WithSupportProps<LayoutProps & {
36
+ /** Название сущности в единственном и множественном числе — для кнопок и пустых состояний. */
37
+ entityName: EntityName;
38
+ /** Действие создания опции: возвращает `value` новой опции, которая выбирается в поле (single-режим). */
39
+ submitHandler(): Promise<string | void>;
40
+ /** Пропсы, прокидываемые в `FieldSelect` (`@cloud-ru/ds-fields`). */
41
+ selectProps: SelectFieldProps;
42
+ /** Повтор загрузки в состоянии ошибки (кнопка «Обновить» в футере `errorDataState`). */
43
+ onRefetch?(): void;
44
+ /** CSS-класс корневой обёртки. */
45
+ className?: string;
46
+ /** Колбэк после закрытия модалки/дровера создания. */
47
+ afterClose?(): void;
48
+ /** Иконка пустого состояния `noData` (по умолчанию — иконка поиска). */
49
+ entityIcon?: EntityIcon;
50
+ /**
51
+ * Права пользователя:
52
+ * - `canCreate` (по умолчанию) — доступны и выбор, и создание;
53
+ * - `canRead` — поле активно, но создание недоступно (кнопки «Создать» с tooltip);
54
+ * - `none` — поле недоступно (с tooltip).
55
+ */
56
+ permission?: Permission;
57
+ }>;
58
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,11 @@
1
+ import { FieldSelectSingleProps } from '@cloud-ru/ds-fields';
2
+ import { EntityIcon, EntityName } from './types';
3
+ type Props = {
4
+ entityName: EntityName;
5
+ entityIcon?: EntityIcon;
6
+ onRefetch?(): void;
7
+ };
8
+ type SelectDataStates = Pick<FieldSelectSingleProps, 'noDataState' | 'noResultsState' | 'errorDataState'>;
9
+ /** Строит пустые/ошибочные состояния дроплиста из `entityName` (единственное/множественное число). */
10
+ export declare function useSelectDataStates({ entityName, entityIcon, onRefetch }: Props): SelectDataStates;
11
+ export {};
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSelectDataStates = useSelectDataStates;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const button_1 = require("@cloud-ru/ds-button");
6
+ const system_1 = require("@cloud-ru/ds-icons/interface/system");
7
+ const react_1 = require("react");
8
+ const constants_1 = require("../../constants");
9
+ const locale_1 = require("../../locale");
10
+ const utils_1 = require("./utils");
11
+ /** Строит пустые/ошибочные состояния дроплиста из `entityName` (единственное/множественное число). */
12
+ function useSelectDataStates({ entityName, entityIcon, onRefetch }) {
13
+ const { t } = locale_1.fieldsPredefinedLocale.useTranslations();
14
+ return (0, react_1.useMemo)(() => ({
15
+ noDataState: {
16
+ icon: { icon: entityIcon ?? system_1.SearchSVG, appearance: 'green' },
17
+ description: `${(0, utils_1.capitalize)(entityName.plural)} ${t('FieldSelectCreate.noData')}`,
18
+ },
19
+ noResultsState: {
20
+ icon: { icon: system_1.SearchSVG, appearance: 'green' },
21
+ description: ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, utils_1.capitalize)(entityName.plural), " ", t('FieldSelectCreate.noResult'), ".", (0, jsx_runtime_1.jsx)("br", {}), t('FieldSelectCreate.changeRequest'), " ", entityName.single.toLocaleLowerCase()] })),
22
+ },
23
+ errorDataState: {
24
+ icon: { icon: system_1.CrossCircleSVG, appearance: 'neutral' },
25
+ description: `${t('FieldSelectCreate.loadError')} ${entityName.plural.toLocaleLowerCase()}`,
26
+ footer: onRefetch ? ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Tonal, appearance: button_1.APPEARANCE.Neutral, label: t('FieldSelectCreate.refetch'), icon: (0, jsx_runtime_1.jsx)(system_1.UpdateSVG, {}), iconPosition: button_1.ICON_POSITION.After, onClick: onRefetch, "data-test-id": constants_1.TEST_IDS.fieldSelectCreateRetry })) : undefined,
27
+ },
28
+ }), [entityIcon, entityName, onRefetch, t]);
29
+ }
@@ -0,0 +1,2 @@
1
+ /** Первая буква строки в верхний регистр. */
2
+ export declare function capitalize(value: string): string;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.capitalize = capitalize;
4
+ /** Первая буква строки в верхний регистр. */
5
+ function capitalize(value) {
6
+ return value.charAt(0).toUpperCase() + value.slice(1);
7
+ }
@@ -0,0 +1,7 @@
1
+ export * from './FieldChat';
2
+ export * from './FieldCode';
3
+ export * from './FieldDescription';
4
+ export * from './FieldMask';
5
+ export * from './FieldName';
6
+ export * from './FieldPhone';
7
+ export * from './FieldSelectCreate';
@@ -0,0 +1,23 @@
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("./FieldChat"), exports);
18
+ __exportStar(require("./FieldCode"), exports);
19
+ __exportStar(require("./FieldDescription"), exports);
20
+ __exportStar(require("./FieldMask"), exports);
21
+ __exportStar(require("./FieldName"), exports);
22
+ __exportStar(require("./FieldPhone"), exports);
23
+ __exportStar(require("./FieldSelectCreate"), exports);