@redneckz/wildless-cms-uni-blocks 0.14.989 → 0.14.991

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 (642) hide show
  1. package/bundle/api/LeadServiceAPI.d.ts +10 -3
  2. package/bundle/api/getSubmitBody.d.ts +201 -97
  3. package/bundle/api/sendFile.d.ts +16 -0
  4. package/bundle/blocks.schema.json +1 -1
  5. package/bundle/bundle.umd.js +566 -51
  6. package/bundle/bundle.umd.min.js +1 -1
  7. package/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
  8. package/bundle/components/ApplicationForm/constants.d.ts +7 -0
  9. package/bundle/components/ApplicationForm/handlers.d.ts +3 -2
  10. package/bundle/hooks/useDragAndDrop.d.ts +16 -0
  11. package/bundle/model/FormTypeFieldDef.d.ts +1 -1
  12. package/bundle/model/InputTypes.d.ts +1 -1
  13. package/bundle/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
  14. package/bundle/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
  15. package/bundle/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
  16. package/bundle/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
  17. package/bundle/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
  18. package/bundle/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
  19. package/bundle/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
  20. package/bundle/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
  21. package/bundle/ui-kit/FormField/Fields/TextField.d.ts +2 -0
  22. package/bundle/ui-kit/FormField/InputsMap.d.ts +62 -0
  23. package/bundle/ui-kit/FormField/NameFieldDef.d.ts +1 -1
  24. package/bundle/ui-kit/FormField/constants.d.ts +3 -0
  25. package/bundle/ui-kit/FormField/validators.d.ts +1 -0
  26. package/bundle/ui-kit/Input/InputFile.d.ts +2 -0
  27. package/bundle/ui-kit/Input/InputFileControl.d.ts +2 -0
  28. package/bundle/ui-kit/Input/InputProps.d.ts +6 -1
  29. package/bundle/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
  30. package/bundle/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
  31. package/bundle/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
  32. package/bundle/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
  33. package/bundle/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
  34. package/bundle/ui-kit/Input/constants.d.ts +6 -0
  35. package/bundle/ui-kit/Input/renderFileInput.d.ts +12 -0
  36. package/bundle/ui-kit/Input/renderInfoText.d.ts +1 -0
  37. package/bundle/ui-kit/Input/styles.d.ts +2 -0
  38. package/bundle/ui-kit/Input/useVerifyFile.d.ts +17 -0
  39. package/bundle/ui-kit/PreventableEvent.d.ts +4 -0
  40. package/bundle/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
  41. package/bundle/utils/animateStepWithMinDuration.d.ts +8 -0
  42. package/bundle/utils/isDateValid.d.ts +4 -0
  43. package/dist/api/LeadServiceAPI.d.ts +10 -3
  44. package/dist/api/LeadServiceAPI.js +20 -9
  45. package/dist/api/LeadServiceAPI.js.map +1 -1
  46. package/dist/api/getSubmitBody.d.ts +201 -97
  47. package/dist/api/getSubmitBody.js +13 -6
  48. package/dist/api/getSubmitBody.js.map +1 -1
  49. package/dist/api/sendFile.d.ts +16 -0
  50. package/dist/api/sendFile.js +78 -0
  51. package/dist/api/sendFile.js.map +1 -0
  52. package/dist/components/ApplicationForm/ApplicationForm.js +5 -6
  53. package/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
  54. package/dist/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
  55. package/dist/components/ApplicationForm/constants.d.ts +7 -0
  56. package/dist/components/ApplicationForm/constants.js +29 -0
  57. package/dist/components/ApplicationForm/constants.js.map +1 -0
  58. package/dist/components/ApplicationForm/handlers.d.ts +3 -2
  59. package/dist/components/ApplicationForm/handlers.js +3 -3
  60. package/dist/components/ApplicationForm/handlers.js.map +1 -1
  61. package/dist/components/ApplicationForm/useVerifyPhoneDialogSubmit.js +3 -0
  62. package/dist/components/ApplicationForm/useVerifyPhoneDialogSubmit.js.map +1 -1
  63. package/dist/hooks/useDragAndDrop.d.ts +16 -0
  64. package/dist/hooks/useDragAndDrop.js +29 -0
  65. package/dist/hooks/useDragAndDrop.js.map +1 -0
  66. package/dist/model/FormTypeFieldDef.d.ts +1 -1
  67. package/dist/model/InputTypes.d.ts +1 -1
  68. package/dist/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
  69. package/dist/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
  70. package/dist/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
  71. package/dist/ui-kit/FormField/Fields/AverageGradeField.js +9 -0
  72. package/dist/ui-kit/FormField/Fields/AverageGradeField.js.map +1 -0
  73. package/dist/ui-kit/FormField/Fields/BirthdayField.js +4 -1
  74. package/dist/ui-kit/FormField/Fields/BirthdayField.js.map +1 -1
  75. package/dist/ui-kit/FormField/Fields/CommentField.js +1 -1
  76. package/dist/ui-kit/FormField/Fields/CommentField.js.map +1 -1
  77. package/dist/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
  78. package/dist/ui-kit/FormField/Fields/FileIdField.js +7 -0
  79. package/dist/ui-kit/FormField/Fields/FileIdField.js.map +1 -0
  80. package/dist/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
  81. package/dist/ui-kit/FormField/Fields/FileUpload.js +14 -0
  82. package/dist/ui-kit/FormField/Fields/FileUpload.js.map +1 -0
  83. package/dist/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
  84. package/dist/ui-kit/FormField/Fields/InternshipEndDateField.js +23 -0
  85. package/dist/ui-kit/FormField/Fields/InternshipEndDateField.js.map +1 -0
  86. package/dist/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
  87. package/dist/ui-kit/FormField/Fields/InternshipStartDateField.js +23 -0
  88. package/dist/ui-kit/FormField/Fields/InternshipStartDateField.js.map +1 -0
  89. package/dist/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
  90. package/dist/ui-kit/FormField/Fields/SelectField.js +7 -0
  91. package/dist/ui-kit/FormField/Fields/SelectField.js.map +1 -0
  92. package/dist/ui-kit/FormField/Fields/TextField.d.ts +2 -0
  93. package/dist/ui-kit/FormField/Fields/TextField.js +7 -0
  94. package/dist/ui-kit/FormField/Fields/TextField.js.map +1 -0
  95. package/dist/ui-kit/FormField/InputsMap.d.ts +62 -0
  96. package/dist/ui-kit/FormField/InputsMap.js +119 -0
  97. package/dist/ui-kit/FormField/InputsMap.js.map +1 -0
  98. package/dist/ui-kit/FormField/NameFieldDef.d.ts +1 -1
  99. package/dist/ui-kit/FormField/constants.d.ts +3 -0
  100. package/dist/ui-kit/FormField/constants.js +27 -1
  101. package/dist/ui-kit/FormField/constants.js.map +1 -1
  102. package/dist/ui-kit/FormField/getField.js +2 -94
  103. package/dist/ui-kit/FormField/getField.js.map +1 -1
  104. package/dist/ui-kit/FormField/getObjectValidator.js +15 -1
  105. package/dist/ui-kit/FormField/getObjectValidator.js.map +1 -1
  106. package/dist/ui-kit/FormField/validators.d.ts +1 -0
  107. package/dist/ui-kit/FormField/validators.js +4 -1
  108. package/dist/ui-kit/FormField/validators.js.map +1 -1
  109. package/dist/ui-kit/Input/Input.js +2 -2
  110. package/dist/ui-kit/Input/Input.js.map +1 -1
  111. package/dist/ui-kit/Input/InputFile.d.ts +2 -0
  112. package/dist/ui-kit/Input/InputFile.js +75 -0
  113. package/dist/ui-kit/Input/InputFile.js.map +1 -0
  114. package/dist/ui-kit/Input/InputFileControl.d.ts +2 -0
  115. package/dist/ui-kit/Input/InputFileControl.js +10 -0
  116. package/dist/ui-kit/Input/InputFileControl.js.map +1 -0
  117. package/dist/ui-kit/Input/InputProps.d.ts +6 -1
  118. package/dist/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
  119. package/dist/ui-kit/Input/checks/checkFIleExtension.js +12 -0
  120. package/dist/ui-kit/Input/checks/checkFIleExtension.js.map +1 -0
  121. package/dist/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
  122. package/dist/ui-kit/Input/checks/checkFileMimeType.js +20 -0
  123. package/dist/ui-kit/Input/checks/checkFileMimeType.js.map +1 -0
  124. package/dist/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
  125. package/dist/ui-kit/Input/checks/checkFileSignature.js +25 -0
  126. package/dist/ui-kit/Input/checks/checkFileSignature.js.map +1 -0
  127. package/dist/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
  128. package/dist/ui-kit/Input/checks/checkFileSize.js +13 -0
  129. package/dist/ui-kit/Input/checks/checkFileSize.js.map +1 -0
  130. package/dist/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
  131. package/dist/ui-kit/Input/checks/getFileSignature.js +19 -0
  132. package/dist/ui-kit/Input/checks/getFileSignature.js.map +1 -0
  133. package/dist/ui-kit/Input/constants.d.ts +6 -0
  134. package/dist/ui-kit/Input/constants.js +9 -0
  135. package/dist/ui-kit/Input/constants.js.map +1 -0
  136. package/dist/ui-kit/Input/renderFileInput.d.ts +12 -0
  137. package/dist/ui-kit/Input/renderFileInput.js +33 -0
  138. package/dist/ui-kit/Input/renderFileInput.js.map +1 -0
  139. package/dist/ui-kit/Input/renderInfoText.d.ts +1 -0
  140. package/dist/ui-kit/Input/renderInfoText.js +14 -0
  141. package/dist/ui-kit/Input/renderInfoText.js.map +1 -0
  142. package/dist/ui-kit/Input/styles.d.ts +2 -0
  143. package/dist/ui-kit/Input/styles.js +5 -0
  144. package/dist/ui-kit/Input/styles.js.map +1 -0
  145. package/dist/ui-kit/Input/useVerifyFile.d.ts +17 -0
  146. package/dist/ui-kit/Input/useVerifyFile.js +64 -0
  147. package/dist/ui-kit/Input/useVerifyFile.js.map +1 -0
  148. package/dist/ui-kit/PreventableEvent.d.ts +4 -0
  149. package/dist/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
  150. package/dist/ui-kit/ProgressBar/ProgressBar.js +1 -1
  151. package/dist/ui-kit/ProgressBar/ProgressBar.js.map +1 -1
  152. package/dist/utils/animateStepWithMinDuration.d.ts +8 -0
  153. package/dist/utils/animateStepWithMinDuration.js +26 -0
  154. package/dist/utils/animateStepWithMinDuration.js.map +1 -0
  155. package/dist/utils/isDateValid.d.ts +4 -0
  156. package/dist/utils/isDateValid.js +24 -0
  157. package/dist/utils/isDateValid.js.map +1 -0
  158. package/lib/api/LeadServiceAPI.d.ts +10 -3
  159. package/lib/api/LeadServiceAPI.js +20 -9
  160. package/lib/api/LeadServiceAPI.js.map +1 -1
  161. package/lib/api/getSubmitBody.d.ts +201 -97
  162. package/lib/api/getSubmitBody.js +13 -6
  163. package/lib/api/getSubmitBody.js.map +1 -1
  164. package/lib/api/sendFile.d.ts +16 -0
  165. package/lib/api/sendFile.js +75 -0
  166. package/lib/api/sendFile.js.map +1 -0
  167. package/lib/common.css +1 -1
  168. package/lib/components/ApplicationForm/ApplicationForm.fixture.d.ts +2 -0
  169. package/lib/components/ApplicationForm/ApplicationForm.js +5 -6
  170. package/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
  171. package/lib/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
  172. package/lib/components/ApplicationForm/constants.d.ts +7 -0
  173. package/lib/components/ApplicationForm/constants.js +27 -0
  174. package/lib/components/ApplicationForm/constants.js.map +1 -0
  175. package/lib/components/ApplicationForm/handlers.d.ts +3 -2
  176. package/lib/components/ApplicationForm/handlers.js +3 -3
  177. package/lib/components/ApplicationForm/handlers.js.map +1 -1
  178. package/lib/components/ApplicationForm/useVerifyPhoneDialogSubmit.js +3 -0
  179. package/lib/components/ApplicationForm/useVerifyPhoneDialogSubmit.js.map +1 -1
  180. package/lib/hooks/useDragAndDrop.d.ts +16 -0
  181. package/lib/hooks/useDragAndDrop.js +26 -0
  182. package/lib/hooks/useDragAndDrop.js.map +1 -0
  183. package/lib/model/FormTypeFieldDef.d.ts +1 -1
  184. package/lib/model/InputTypes.d.ts +1 -1
  185. package/lib/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
  186. package/lib/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
  187. package/lib/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
  188. package/lib/ui-kit/FormField/Fields/AverageGradeField.js +7 -0
  189. package/lib/ui-kit/FormField/Fields/AverageGradeField.js.map +1 -0
  190. package/lib/ui-kit/FormField/Fields/BirthdayField.js +4 -1
  191. package/lib/ui-kit/FormField/Fields/BirthdayField.js.map +1 -1
  192. package/lib/ui-kit/FormField/Fields/CommentField.js +1 -1
  193. package/lib/ui-kit/FormField/Fields/CommentField.js.map +1 -1
  194. package/lib/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
  195. package/lib/ui-kit/FormField/Fields/FileIdField.js +5 -0
  196. package/lib/ui-kit/FormField/Fields/FileIdField.js.map +1 -0
  197. package/lib/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
  198. package/lib/ui-kit/FormField/Fields/FileUpload.js +12 -0
  199. package/lib/ui-kit/FormField/Fields/FileUpload.js.map +1 -0
  200. package/lib/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
  201. package/lib/ui-kit/FormField/Fields/InternshipEndDateField.js +21 -0
  202. package/lib/ui-kit/FormField/Fields/InternshipEndDateField.js.map +1 -0
  203. package/lib/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
  204. package/lib/ui-kit/FormField/Fields/InternshipStartDateField.js +21 -0
  205. package/lib/ui-kit/FormField/Fields/InternshipStartDateField.js.map +1 -0
  206. package/lib/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
  207. package/lib/ui-kit/FormField/Fields/SelectField.js +5 -0
  208. package/lib/ui-kit/FormField/Fields/SelectField.js.map +1 -0
  209. package/lib/ui-kit/FormField/Fields/TextField.d.ts +2 -0
  210. package/lib/ui-kit/FormField/Fields/TextField.js +5 -0
  211. package/lib/ui-kit/FormField/Fields/TextField.js.map +1 -0
  212. package/lib/ui-kit/FormField/InputsMap.d.ts +62 -0
  213. package/lib/ui-kit/FormField/InputsMap.js +117 -0
  214. package/lib/ui-kit/FormField/InputsMap.js.map +1 -0
  215. package/lib/ui-kit/FormField/NameFieldDef.d.ts +1 -1
  216. package/lib/ui-kit/FormField/constants.d.ts +3 -0
  217. package/lib/ui-kit/FormField/constants.js +26 -0
  218. package/lib/ui-kit/FormField/constants.js.map +1 -1
  219. package/lib/ui-kit/FormField/getField.js +1 -93
  220. package/lib/ui-kit/FormField/getField.js.map +1 -1
  221. package/lib/ui-kit/FormField/getObjectValidator.js +16 -2
  222. package/lib/ui-kit/FormField/getObjectValidator.js.map +1 -1
  223. package/lib/ui-kit/FormField/validators.d.ts +1 -0
  224. package/lib/ui-kit/FormField/validators.js +2 -0
  225. package/lib/ui-kit/FormField/validators.js.map +1 -1
  226. package/lib/ui-kit/Input/Input.js +1 -1
  227. package/lib/ui-kit/Input/Input.js.map +1 -1
  228. package/lib/ui-kit/Input/InputFile.d.ts +2 -0
  229. package/lib/ui-kit/Input/InputFile.js +73 -0
  230. package/lib/ui-kit/Input/InputFile.js.map +1 -0
  231. package/lib/ui-kit/Input/InputFileControl.d.ts +2 -0
  232. package/lib/ui-kit/Input/InputFileControl.js +8 -0
  233. package/lib/ui-kit/Input/InputFileControl.js.map +1 -0
  234. package/lib/ui-kit/Input/InputProps.d.ts +6 -1
  235. package/lib/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
  236. package/lib/ui-kit/Input/checks/checkFIleExtension.js +9 -0
  237. package/lib/ui-kit/Input/checks/checkFIleExtension.js.map +1 -0
  238. package/lib/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
  239. package/lib/ui-kit/Input/checks/checkFileMimeType.js +17 -0
  240. package/lib/ui-kit/Input/checks/checkFileMimeType.js.map +1 -0
  241. package/lib/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
  242. package/lib/ui-kit/Input/checks/checkFileSignature.js +22 -0
  243. package/lib/ui-kit/Input/checks/checkFileSignature.js.map +1 -0
  244. package/lib/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
  245. package/lib/ui-kit/Input/checks/checkFileSize.js +10 -0
  246. package/lib/ui-kit/Input/checks/checkFileSize.js.map +1 -0
  247. package/lib/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
  248. package/lib/ui-kit/Input/checks/getFileSignature.js +16 -0
  249. package/lib/ui-kit/Input/checks/getFileSignature.js.map +1 -0
  250. package/lib/ui-kit/Input/constants.d.ts +6 -0
  251. package/lib/ui-kit/Input/constants.js +7 -0
  252. package/lib/ui-kit/Input/constants.js.map +1 -0
  253. package/lib/ui-kit/Input/renderFileInput.d.ts +12 -0
  254. package/lib/ui-kit/Input/renderFileInput.js +30 -0
  255. package/lib/ui-kit/Input/renderFileInput.js.map +1 -0
  256. package/lib/ui-kit/Input/renderInfoText.d.ts +1 -0
  257. package/lib/ui-kit/Input/renderInfoText.js +11 -0
  258. package/lib/ui-kit/Input/renderInfoText.js.map +1 -0
  259. package/lib/ui-kit/Input/styles.d.ts +2 -0
  260. package/lib/ui-kit/Input/styles.js +3 -0
  261. package/lib/ui-kit/Input/styles.js.map +1 -0
  262. package/lib/ui-kit/Input/useVerifyFile.d.ts +17 -0
  263. package/lib/ui-kit/Input/useVerifyFile.js +61 -0
  264. package/lib/ui-kit/Input/useVerifyFile.js.map +1 -0
  265. package/lib/ui-kit/PreventableEvent.d.ts +4 -0
  266. package/lib/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
  267. package/lib/ui-kit/ProgressBar/ProgressBar.js +1 -1
  268. package/lib/ui-kit/ProgressBar/ProgressBar.js.map +1 -1
  269. package/lib/utils/animateStepWithMinDuration.d.ts +8 -0
  270. package/lib/utils/animateStepWithMinDuration.js +23 -0
  271. package/lib/utils/animateStepWithMinDuration.js.map +1 -0
  272. package/lib/utils/isDateValid.d.ts +4 -0
  273. package/lib/utils/isDateValid.js +21 -0
  274. package/lib/utils/isDateValid.js.map +1 -0
  275. package/mobile/bundle/api/LeadServiceAPI.d.ts +10 -3
  276. package/mobile/bundle/api/getSubmitBody.d.ts +201 -97
  277. package/mobile/bundle/api/sendFile.d.ts +16 -0
  278. package/mobile/bundle/bundle.umd.js +566 -51
  279. package/mobile/bundle/bundle.umd.min.js +1 -1
  280. package/mobile/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
  281. package/mobile/bundle/components/ApplicationForm/constants.d.ts +7 -0
  282. package/mobile/bundle/components/ApplicationForm/handlers.d.ts +3 -2
  283. package/mobile/bundle/hooks/useDragAndDrop.d.ts +16 -0
  284. package/mobile/bundle/model/FormTypeFieldDef.d.ts +1 -1
  285. package/mobile/bundle/model/InputTypes.d.ts +1 -1
  286. package/mobile/bundle/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
  287. package/mobile/bundle/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
  288. package/mobile/bundle/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
  289. package/mobile/bundle/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
  290. package/mobile/bundle/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
  291. package/mobile/bundle/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
  292. package/mobile/bundle/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
  293. package/mobile/bundle/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
  294. package/mobile/bundle/ui-kit/FormField/Fields/TextField.d.ts +2 -0
  295. package/mobile/bundle/ui-kit/FormField/InputsMap.d.ts +62 -0
  296. package/mobile/bundle/ui-kit/FormField/NameFieldDef.d.ts +1 -1
  297. package/mobile/bundle/ui-kit/FormField/constants.d.ts +3 -0
  298. package/mobile/bundle/ui-kit/FormField/validators.d.ts +1 -0
  299. package/mobile/bundle/ui-kit/Input/InputFile.d.ts +2 -0
  300. package/mobile/bundle/ui-kit/Input/InputFileControl.d.ts +2 -0
  301. package/mobile/bundle/ui-kit/Input/InputProps.d.ts +6 -1
  302. package/mobile/bundle/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
  303. package/mobile/bundle/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
  304. package/mobile/bundle/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
  305. package/mobile/bundle/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
  306. package/mobile/bundle/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
  307. package/mobile/bundle/ui-kit/Input/constants.d.ts +6 -0
  308. package/mobile/bundle/ui-kit/Input/renderFileInput.d.ts +12 -0
  309. package/mobile/bundle/ui-kit/Input/renderInfoText.d.ts +1 -0
  310. package/mobile/bundle/ui-kit/Input/styles.d.ts +2 -0
  311. package/mobile/bundle/ui-kit/Input/useVerifyFile.d.ts +17 -0
  312. package/mobile/bundle/ui-kit/PreventableEvent.d.ts +4 -0
  313. package/mobile/bundle/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
  314. package/mobile/bundle/utils/animateStepWithMinDuration.d.ts +8 -0
  315. package/mobile/bundle/utils/isDateValid.d.ts +4 -0
  316. package/mobile/dist/api/LeadServiceAPI.d.ts +10 -3
  317. package/mobile/dist/api/LeadServiceAPI.js +20 -9
  318. package/mobile/dist/api/LeadServiceAPI.js.map +1 -1
  319. package/mobile/dist/api/getSubmitBody.d.ts +201 -97
  320. package/mobile/dist/api/getSubmitBody.js +13 -6
  321. package/mobile/dist/api/getSubmitBody.js.map +1 -1
  322. package/mobile/dist/api/sendFile.d.ts +16 -0
  323. package/mobile/dist/api/sendFile.js +78 -0
  324. package/mobile/dist/api/sendFile.js.map +1 -0
  325. package/mobile/dist/components/ApplicationForm/ApplicationForm.js +5 -6
  326. package/mobile/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
  327. package/mobile/dist/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
  328. package/mobile/dist/components/ApplicationForm/constants.d.ts +7 -0
  329. package/mobile/dist/components/ApplicationForm/constants.js +29 -0
  330. package/mobile/dist/components/ApplicationForm/constants.js.map +1 -0
  331. package/mobile/dist/components/ApplicationForm/handlers.d.ts +3 -2
  332. package/mobile/dist/components/ApplicationForm/handlers.js +3 -3
  333. package/mobile/dist/components/ApplicationForm/handlers.js.map +1 -1
  334. package/mobile/dist/components/ApplicationForm/useVerifyPhoneDialogSubmit.js +3 -0
  335. package/mobile/dist/components/ApplicationForm/useVerifyPhoneDialogSubmit.js.map +1 -1
  336. package/mobile/dist/hooks/useDragAndDrop.d.ts +16 -0
  337. package/mobile/dist/hooks/useDragAndDrop.js +29 -0
  338. package/mobile/dist/hooks/useDragAndDrop.js.map +1 -0
  339. package/mobile/dist/model/FormTypeFieldDef.d.ts +1 -1
  340. package/mobile/dist/model/InputTypes.d.ts +1 -1
  341. package/mobile/dist/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
  342. package/mobile/dist/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
  343. package/mobile/dist/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
  344. package/mobile/dist/ui-kit/FormField/Fields/AverageGradeField.js +9 -0
  345. package/mobile/dist/ui-kit/FormField/Fields/AverageGradeField.js.map +1 -0
  346. package/mobile/dist/ui-kit/FormField/Fields/BirthdayField.js +4 -1
  347. package/mobile/dist/ui-kit/FormField/Fields/BirthdayField.js.map +1 -1
  348. package/mobile/dist/ui-kit/FormField/Fields/CommentField.js +1 -1
  349. package/mobile/dist/ui-kit/FormField/Fields/CommentField.js.map +1 -1
  350. package/mobile/dist/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
  351. package/mobile/dist/ui-kit/FormField/Fields/FileIdField.js +7 -0
  352. package/mobile/dist/ui-kit/FormField/Fields/FileIdField.js.map +1 -0
  353. package/mobile/dist/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
  354. package/mobile/dist/ui-kit/FormField/Fields/FileUpload.js +14 -0
  355. package/mobile/dist/ui-kit/FormField/Fields/FileUpload.js.map +1 -0
  356. package/mobile/dist/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
  357. package/mobile/dist/ui-kit/FormField/Fields/InternshipEndDateField.js +23 -0
  358. package/mobile/dist/ui-kit/FormField/Fields/InternshipEndDateField.js.map +1 -0
  359. package/mobile/dist/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
  360. package/mobile/dist/ui-kit/FormField/Fields/InternshipStartDateField.js +23 -0
  361. package/mobile/dist/ui-kit/FormField/Fields/InternshipStartDateField.js.map +1 -0
  362. package/mobile/dist/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
  363. package/mobile/dist/ui-kit/FormField/Fields/SelectField.js +7 -0
  364. package/mobile/dist/ui-kit/FormField/Fields/SelectField.js.map +1 -0
  365. package/mobile/dist/ui-kit/FormField/Fields/TextField.d.ts +2 -0
  366. package/mobile/dist/ui-kit/FormField/Fields/TextField.js +7 -0
  367. package/mobile/dist/ui-kit/FormField/Fields/TextField.js.map +1 -0
  368. package/mobile/dist/ui-kit/FormField/InputsMap.d.ts +62 -0
  369. package/mobile/dist/ui-kit/FormField/InputsMap.js +119 -0
  370. package/mobile/dist/ui-kit/FormField/InputsMap.js.map +1 -0
  371. package/mobile/dist/ui-kit/FormField/NameFieldDef.d.ts +1 -1
  372. package/mobile/dist/ui-kit/FormField/constants.d.ts +3 -0
  373. package/mobile/dist/ui-kit/FormField/constants.js +27 -1
  374. package/mobile/dist/ui-kit/FormField/constants.js.map +1 -1
  375. package/mobile/dist/ui-kit/FormField/getField.js +2 -94
  376. package/mobile/dist/ui-kit/FormField/getField.js.map +1 -1
  377. package/mobile/dist/ui-kit/FormField/getObjectValidator.js +15 -1
  378. package/mobile/dist/ui-kit/FormField/getObjectValidator.js.map +1 -1
  379. package/mobile/dist/ui-kit/FormField/validators.d.ts +1 -0
  380. package/mobile/dist/ui-kit/FormField/validators.js +4 -1
  381. package/mobile/dist/ui-kit/FormField/validators.js.map +1 -1
  382. package/mobile/dist/ui-kit/Input/Input.js +2 -2
  383. package/mobile/dist/ui-kit/Input/Input.js.map +1 -1
  384. package/mobile/dist/ui-kit/Input/InputFile.d.ts +2 -0
  385. package/mobile/dist/ui-kit/Input/InputFile.js +75 -0
  386. package/mobile/dist/ui-kit/Input/InputFile.js.map +1 -0
  387. package/mobile/dist/ui-kit/Input/InputFileControl.d.ts +2 -0
  388. package/mobile/dist/ui-kit/Input/InputFileControl.js +10 -0
  389. package/mobile/dist/ui-kit/Input/InputFileControl.js.map +1 -0
  390. package/mobile/dist/ui-kit/Input/InputProps.d.ts +6 -1
  391. package/mobile/dist/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
  392. package/mobile/dist/ui-kit/Input/checks/checkFIleExtension.js +12 -0
  393. package/mobile/dist/ui-kit/Input/checks/checkFIleExtension.js.map +1 -0
  394. package/mobile/dist/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
  395. package/mobile/dist/ui-kit/Input/checks/checkFileMimeType.js +20 -0
  396. package/mobile/dist/ui-kit/Input/checks/checkFileMimeType.js.map +1 -0
  397. package/mobile/dist/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
  398. package/mobile/dist/ui-kit/Input/checks/checkFileSignature.js +25 -0
  399. package/mobile/dist/ui-kit/Input/checks/checkFileSignature.js.map +1 -0
  400. package/mobile/dist/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
  401. package/mobile/dist/ui-kit/Input/checks/checkFileSize.js +13 -0
  402. package/mobile/dist/ui-kit/Input/checks/checkFileSize.js.map +1 -0
  403. package/mobile/dist/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
  404. package/mobile/dist/ui-kit/Input/checks/getFileSignature.js +19 -0
  405. package/mobile/dist/ui-kit/Input/checks/getFileSignature.js.map +1 -0
  406. package/mobile/dist/ui-kit/Input/constants.d.ts +6 -0
  407. package/mobile/dist/ui-kit/Input/constants.js +9 -0
  408. package/mobile/dist/ui-kit/Input/constants.js.map +1 -0
  409. package/mobile/dist/ui-kit/Input/renderFileInput.d.ts +12 -0
  410. package/mobile/dist/ui-kit/Input/renderFileInput.js +33 -0
  411. package/mobile/dist/ui-kit/Input/renderFileInput.js.map +1 -0
  412. package/mobile/dist/ui-kit/Input/renderInfoText.d.ts +1 -0
  413. package/mobile/dist/ui-kit/Input/renderInfoText.js +14 -0
  414. package/mobile/dist/ui-kit/Input/renderInfoText.js.map +1 -0
  415. package/mobile/dist/ui-kit/Input/styles.d.ts +2 -0
  416. package/mobile/dist/ui-kit/Input/styles.js +5 -0
  417. package/mobile/dist/ui-kit/Input/styles.js.map +1 -0
  418. package/mobile/dist/ui-kit/Input/useVerifyFile.d.ts +17 -0
  419. package/mobile/dist/ui-kit/Input/useVerifyFile.js +64 -0
  420. package/mobile/dist/ui-kit/Input/useVerifyFile.js.map +1 -0
  421. package/mobile/dist/ui-kit/PreventableEvent.d.ts +4 -0
  422. package/mobile/dist/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
  423. package/mobile/dist/ui-kit/ProgressBar/ProgressBar.js +1 -1
  424. package/mobile/dist/ui-kit/ProgressBar/ProgressBar.js.map +1 -1
  425. package/mobile/dist/utils/animateStepWithMinDuration.d.ts +8 -0
  426. package/mobile/dist/utils/animateStepWithMinDuration.js +26 -0
  427. package/mobile/dist/utils/animateStepWithMinDuration.js.map +1 -0
  428. package/mobile/dist/utils/isDateValid.d.ts +4 -0
  429. package/mobile/dist/utils/isDateValid.js +24 -0
  430. package/mobile/dist/utils/isDateValid.js.map +1 -0
  431. package/mobile/lib/api/LeadServiceAPI.d.ts +10 -3
  432. package/mobile/lib/api/LeadServiceAPI.js +20 -9
  433. package/mobile/lib/api/LeadServiceAPI.js.map +1 -1
  434. package/mobile/lib/api/getSubmitBody.d.ts +201 -97
  435. package/mobile/lib/api/getSubmitBody.js +13 -6
  436. package/mobile/lib/api/getSubmitBody.js.map +1 -1
  437. package/mobile/lib/api/sendFile.d.ts +16 -0
  438. package/mobile/lib/api/sendFile.js +75 -0
  439. package/mobile/lib/api/sendFile.js.map +1 -0
  440. package/mobile/lib/common.css +1 -1
  441. package/mobile/lib/components/ApplicationForm/ApplicationForm.js +5 -6
  442. package/mobile/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
  443. package/mobile/lib/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
  444. package/mobile/lib/components/ApplicationForm/constants.d.ts +7 -0
  445. package/mobile/lib/components/ApplicationForm/constants.js +27 -0
  446. package/mobile/lib/components/ApplicationForm/constants.js.map +1 -0
  447. package/mobile/lib/components/ApplicationForm/handlers.d.ts +3 -2
  448. package/mobile/lib/components/ApplicationForm/handlers.js +3 -3
  449. package/mobile/lib/components/ApplicationForm/handlers.js.map +1 -1
  450. package/mobile/lib/components/ApplicationForm/useVerifyPhoneDialogSubmit.js +3 -0
  451. package/mobile/lib/components/ApplicationForm/useVerifyPhoneDialogSubmit.js.map +1 -1
  452. package/mobile/lib/hooks/useDragAndDrop.d.ts +16 -0
  453. package/mobile/lib/hooks/useDragAndDrop.js +26 -0
  454. package/mobile/lib/hooks/useDragAndDrop.js.map +1 -0
  455. package/mobile/lib/model/FormTypeFieldDef.d.ts +1 -1
  456. package/mobile/lib/model/InputTypes.d.ts +1 -1
  457. package/mobile/lib/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
  458. package/mobile/lib/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
  459. package/mobile/lib/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
  460. package/mobile/lib/ui-kit/FormField/Fields/AverageGradeField.js +7 -0
  461. package/mobile/lib/ui-kit/FormField/Fields/AverageGradeField.js.map +1 -0
  462. package/mobile/lib/ui-kit/FormField/Fields/BirthdayField.js +4 -1
  463. package/mobile/lib/ui-kit/FormField/Fields/BirthdayField.js.map +1 -1
  464. package/mobile/lib/ui-kit/FormField/Fields/CommentField.js +1 -1
  465. package/mobile/lib/ui-kit/FormField/Fields/CommentField.js.map +1 -1
  466. package/mobile/lib/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
  467. package/mobile/lib/ui-kit/FormField/Fields/FileIdField.js +5 -0
  468. package/mobile/lib/ui-kit/FormField/Fields/FileIdField.js.map +1 -0
  469. package/mobile/lib/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
  470. package/mobile/lib/ui-kit/FormField/Fields/FileUpload.js +12 -0
  471. package/mobile/lib/ui-kit/FormField/Fields/FileUpload.js.map +1 -0
  472. package/mobile/lib/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
  473. package/mobile/lib/ui-kit/FormField/Fields/InternshipEndDateField.js +21 -0
  474. package/mobile/lib/ui-kit/FormField/Fields/InternshipEndDateField.js.map +1 -0
  475. package/mobile/lib/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
  476. package/mobile/lib/ui-kit/FormField/Fields/InternshipStartDateField.js +21 -0
  477. package/mobile/lib/ui-kit/FormField/Fields/InternshipStartDateField.js.map +1 -0
  478. package/mobile/lib/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
  479. package/mobile/lib/ui-kit/FormField/Fields/SelectField.js +5 -0
  480. package/mobile/lib/ui-kit/FormField/Fields/SelectField.js.map +1 -0
  481. package/mobile/lib/ui-kit/FormField/Fields/TextField.d.ts +2 -0
  482. package/mobile/lib/ui-kit/FormField/Fields/TextField.js +5 -0
  483. package/mobile/lib/ui-kit/FormField/Fields/TextField.js.map +1 -0
  484. package/mobile/lib/ui-kit/FormField/InputsMap.d.ts +62 -0
  485. package/mobile/lib/ui-kit/FormField/InputsMap.js +117 -0
  486. package/mobile/lib/ui-kit/FormField/InputsMap.js.map +1 -0
  487. package/mobile/lib/ui-kit/FormField/NameFieldDef.d.ts +1 -1
  488. package/mobile/lib/ui-kit/FormField/constants.d.ts +3 -0
  489. package/mobile/lib/ui-kit/FormField/constants.js +26 -0
  490. package/mobile/lib/ui-kit/FormField/constants.js.map +1 -1
  491. package/mobile/lib/ui-kit/FormField/getField.js +1 -93
  492. package/mobile/lib/ui-kit/FormField/getField.js.map +1 -1
  493. package/mobile/lib/ui-kit/FormField/getObjectValidator.js +16 -2
  494. package/mobile/lib/ui-kit/FormField/getObjectValidator.js.map +1 -1
  495. package/mobile/lib/ui-kit/FormField/validators.d.ts +1 -0
  496. package/mobile/lib/ui-kit/FormField/validators.js +2 -0
  497. package/mobile/lib/ui-kit/FormField/validators.js.map +1 -1
  498. package/mobile/lib/ui-kit/Input/Input.js +1 -1
  499. package/mobile/lib/ui-kit/Input/Input.js.map +1 -1
  500. package/mobile/lib/ui-kit/Input/InputFile.d.ts +2 -0
  501. package/mobile/lib/ui-kit/Input/InputFile.js +73 -0
  502. package/mobile/lib/ui-kit/Input/InputFile.js.map +1 -0
  503. package/mobile/lib/ui-kit/Input/InputFileControl.d.ts +2 -0
  504. package/mobile/lib/ui-kit/Input/InputFileControl.js +8 -0
  505. package/mobile/lib/ui-kit/Input/InputFileControl.js.map +1 -0
  506. package/mobile/lib/ui-kit/Input/InputProps.d.ts +6 -1
  507. package/mobile/lib/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
  508. package/mobile/lib/ui-kit/Input/checks/checkFIleExtension.js +9 -0
  509. package/mobile/lib/ui-kit/Input/checks/checkFIleExtension.js.map +1 -0
  510. package/mobile/lib/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
  511. package/mobile/lib/ui-kit/Input/checks/checkFileMimeType.js +17 -0
  512. package/mobile/lib/ui-kit/Input/checks/checkFileMimeType.js.map +1 -0
  513. package/mobile/lib/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
  514. package/mobile/lib/ui-kit/Input/checks/checkFileSignature.js +22 -0
  515. package/mobile/lib/ui-kit/Input/checks/checkFileSignature.js.map +1 -0
  516. package/mobile/lib/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
  517. package/mobile/lib/ui-kit/Input/checks/checkFileSize.js +10 -0
  518. package/mobile/lib/ui-kit/Input/checks/checkFileSize.js.map +1 -0
  519. package/mobile/lib/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
  520. package/mobile/lib/ui-kit/Input/checks/getFileSignature.js +16 -0
  521. package/mobile/lib/ui-kit/Input/checks/getFileSignature.js.map +1 -0
  522. package/mobile/lib/ui-kit/Input/constants.d.ts +6 -0
  523. package/mobile/lib/ui-kit/Input/constants.js +7 -0
  524. package/mobile/lib/ui-kit/Input/constants.js.map +1 -0
  525. package/mobile/lib/ui-kit/Input/renderFileInput.d.ts +12 -0
  526. package/mobile/lib/ui-kit/Input/renderFileInput.js +30 -0
  527. package/mobile/lib/ui-kit/Input/renderFileInput.js.map +1 -0
  528. package/mobile/lib/ui-kit/Input/renderInfoText.d.ts +1 -0
  529. package/mobile/lib/ui-kit/Input/renderInfoText.js +11 -0
  530. package/mobile/lib/ui-kit/Input/renderInfoText.js.map +1 -0
  531. package/mobile/lib/ui-kit/Input/styles.d.ts +2 -0
  532. package/mobile/lib/ui-kit/Input/styles.js +3 -0
  533. package/mobile/lib/ui-kit/Input/styles.js.map +1 -0
  534. package/mobile/lib/ui-kit/Input/useVerifyFile.d.ts +17 -0
  535. package/mobile/lib/ui-kit/Input/useVerifyFile.js +61 -0
  536. package/mobile/lib/ui-kit/Input/useVerifyFile.js.map +1 -0
  537. package/mobile/lib/ui-kit/PreventableEvent.d.ts +4 -0
  538. package/mobile/lib/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
  539. package/mobile/lib/ui-kit/ProgressBar/ProgressBar.js +1 -1
  540. package/mobile/lib/ui-kit/ProgressBar/ProgressBar.js.map +1 -1
  541. package/mobile/lib/utils/animateStepWithMinDuration.d.ts +8 -0
  542. package/mobile/lib/utils/animateStepWithMinDuration.js +23 -0
  543. package/mobile/lib/utils/animateStepWithMinDuration.js.map +1 -0
  544. package/mobile/lib/utils/isDateValid.d.ts +4 -0
  545. package/mobile/lib/utils/isDateValid.js +21 -0
  546. package/mobile/lib/utils/isDateValid.js.map +1 -0
  547. package/mobile/src/api/LeadServiceAPI.ts +37 -10
  548. package/mobile/src/api/getSubmitBody.ts +28 -7
  549. package/mobile/src/api/sendFile.ts +97 -0
  550. package/mobile/src/components/ApplicationForm/ApplicationForm.example.json +192 -0
  551. package/mobile/src/components/ApplicationForm/ApplicationForm.tsx +22 -16
  552. package/mobile/src/components/ApplicationForm/ApplicationFormContent.ts +16 -2
  553. package/mobile/src/components/ApplicationForm/constants.ts +33 -0
  554. package/mobile/src/components/ApplicationForm/handlers.ts +5 -3
  555. package/mobile/src/components/ApplicationForm/useVerifyPhoneDialogSubmit.tsx +3 -0
  556. package/mobile/src/hooks/useDragAndDrop.ts +48 -0
  557. package/mobile/src/model/FormTypeFieldDef.ts +2 -1
  558. package/mobile/src/model/InputTypes.ts +1 -1
  559. package/mobile/src/ui-kit/FormField/CustomFieldProps.ts +1 -0
  560. package/mobile/src/ui-kit/FormField/Fields/AddressBranchField.tsx +1 -1
  561. package/mobile/src/ui-kit/FormField/Fields/AverageGradeField.tsx +14 -0
  562. package/mobile/src/ui-kit/FormField/Fields/BirthdayField.tsx +12 -7
  563. package/mobile/src/ui-kit/FormField/Fields/CommentField.tsx +1 -1
  564. package/mobile/src/ui-kit/FormField/Fields/FileIdField.tsx +7 -0
  565. package/mobile/src/ui-kit/FormField/Fields/FileUpload.tsx +22 -0
  566. package/mobile/src/ui-kit/FormField/Fields/InternshipEndDateField.tsx +38 -0
  567. package/mobile/src/ui-kit/FormField/Fields/InternshipStartDateField.tsx +38 -0
  568. package/mobile/src/ui-kit/FormField/Fields/SelectField.tsx +12 -0
  569. package/mobile/src/ui-kit/FormField/Fields/TextField.tsx +7 -0
  570. package/mobile/src/ui-kit/FormField/InputsMap.tsx +133 -0
  571. package/mobile/src/ui-kit/FormField/NameFieldDef.ts +17 -1
  572. package/mobile/src/ui-kit/FormField/constants.tsx +29 -0
  573. package/mobile/src/ui-kit/FormField/getField.tsx +1 -105
  574. package/mobile/src/ui-kit/FormField/getObjectValidator.tsx +16 -1
  575. package/mobile/src/ui-kit/FormField/validators.ts +4 -0
  576. package/mobile/src/ui-kit/Input/Input.tsx +1 -2
  577. package/mobile/src/ui-kit/Input/InputFile.tsx +132 -0
  578. package/mobile/src/ui-kit/Input/InputFileControl.tsx +22 -0
  579. package/mobile/src/ui-kit/Input/InputProps.ts +10 -1
  580. package/mobile/src/ui-kit/Input/checks/checkFIleExtension.ts +9 -0
  581. package/mobile/src/ui-kit/Input/checks/checkFileMimeType.ts +20 -0
  582. package/mobile/src/ui-kit/Input/checks/checkFileSignature.ts +30 -0
  583. package/mobile/src/ui-kit/Input/checks/checkFileSize.ts +10 -0
  584. package/mobile/src/ui-kit/Input/checks/getFileSignature.ts +16 -0
  585. package/mobile/src/ui-kit/Input/constants.ts +6 -0
  586. package/mobile/src/ui-kit/Input/renderFileInput.tsx +87 -0
  587. package/mobile/src/ui-kit/Input/renderInfoText.tsx +15 -0
  588. package/mobile/src/ui-kit/Input/styles.ts +2 -0
  589. package/mobile/src/ui-kit/Input/useVerifyFile.ts +100 -0
  590. package/mobile/src/ui-kit/PreventableEvent.ts +5 -0
  591. package/mobile/src/ui-kit/ProgressBar/ProgressBar.tsx +7 -2
  592. package/mobile/src/utils/animateStepWithMinDuration.ts +38 -0
  593. package/mobile/src/utils/isDateValid.ts +33 -0
  594. package/package.json +2 -2
  595. package/src/api/LeadServiceAPI.ts +37 -10
  596. package/src/api/getSubmitBody.ts +28 -7
  597. package/src/api/sendFile.ts +97 -0
  598. package/src/components/ApplicationForm/ApplicationForm.example.json +192 -0
  599. package/src/components/ApplicationForm/ApplicationForm.fixture.tsx +132 -0
  600. package/src/components/ApplicationForm/ApplicationForm.tsx +22 -16
  601. package/src/components/ApplicationForm/ApplicationFormContent.ts +16 -2
  602. package/src/components/ApplicationForm/constants.ts +33 -0
  603. package/src/components/ApplicationForm/handlers.ts +5 -3
  604. package/src/components/ApplicationForm/useVerifyPhoneDialogSubmit.tsx +3 -0
  605. package/src/hooks/useDragAndDrop.ts +48 -0
  606. package/src/model/FormTypeFieldDef.ts +2 -1
  607. package/src/model/InputTypes.ts +1 -1
  608. package/src/ui-kit/FormField/CustomFieldProps.ts +1 -0
  609. package/src/ui-kit/FormField/Fields/AddressBranchField.tsx +1 -1
  610. package/src/ui-kit/FormField/Fields/AverageGradeField.tsx +14 -0
  611. package/src/ui-kit/FormField/Fields/BirthdayField.tsx +12 -7
  612. package/src/ui-kit/FormField/Fields/CommentField.tsx +1 -1
  613. package/src/ui-kit/FormField/Fields/FileIdField.tsx +7 -0
  614. package/src/ui-kit/FormField/Fields/FileUpload.tsx +22 -0
  615. package/src/ui-kit/FormField/Fields/InternshipEndDateField.tsx +38 -0
  616. package/src/ui-kit/FormField/Fields/InternshipStartDateField.tsx +38 -0
  617. package/src/ui-kit/FormField/Fields/SelectField.tsx +12 -0
  618. package/src/ui-kit/FormField/Fields/TextField.tsx +7 -0
  619. package/src/ui-kit/FormField/InputsMap.tsx +133 -0
  620. package/src/ui-kit/FormField/NameFieldDef.ts +17 -1
  621. package/src/ui-kit/FormField/constants.tsx +29 -0
  622. package/src/ui-kit/FormField/getField.tsx +1 -105
  623. package/src/ui-kit/FormField/getObjectValidator.tsx +16 -1
  624. package/src/ui-kit/FormField/validators.ts +4 -0
  625. package/src/ui-kit/Input/Input.tsx +1 -2
  626. package/src/ui-kit/Input/InputFile.tsx +132 -0
  627. package/src/ui-kit/Input/InputFileControl.tsx +22 -0
  628. package/src/ui-kit/Input/InputProps.ts +10 -1
  629. package/src/ui-kit/Input/checks/checkFIleExtension.ts +9 -0
  630. package/src/ui-kit/Input/checks/checkFileMimeType.ts +20 -0
  631. package/src/ui-kit/Input/checks/checkFileSignature.ts +30 -0
  632. package/src/ui-kit/Input/checks/checkFileSize.ts +10 -0
  633. package/src/ui-kit/Input/checks/getFileSignature.ts +16 -0
  634. package/src/ui-kit/Input/constants.ts +6 -0
  635. package/src/ui-kit/Input/renderFileInput.tsx +87 -0
  636. package/src/ui-kit/Input/renderInfoText.tsx +15 -0
  637. package/src/ui-kit/Input/styles.ts +2 -0
  638. package/src/ui-kit/Input/useVerifyFile.ts +100 -0
  639. package/src/ui-kit/PreventableEvent.ts +5 -0
  640. package/src/ui-kit/ProgressBar/ProgressBar.tsx +7 -2
  641. package/src/utils/animateStepWithMinDuration.ts +38 -0
  642. package/src/utils/isDateValid.ts +33 -0
@@ -1,114 +1,10 @@
1
1
  import { type FormFieldRegisterer } from '../../hooks/useForm/useForm';
2
- import { type FormTypeFieldDef } from '../../model/FormTypeFieldDef';
3
2
  import { type VNode } from '../../model/VNode';
4
3
  import { type BaseFieldDef } from './BaseFieldDef';
5
- import { type CustomFieldProps } from './CustomFieldProps';
6
- import { AcquiringField } from './Fields/AcquiringField';
7
- import { AddressBranchField } from './Fields/AddressBranchField';
8
- import { AmountField } from './Fields/AmountField';
9
- import { AnnualRevenueField } from './Fields/AnnualRevenueField';
10
- import { ApplicationDateField } from './Fields/ApplicationDateField';
11
- import { ApplierTypeField } from './Fields/ApplierTypeField';
12
- import { BankEmpoleeField } from './Fields/BankEmpoleeField';
13
- import { BirthdayField } from './Fields/BirthdayField';
14
- import { CallbackTimeField } from './Fields/CallbackTimeField';
15
- import { CollectionCountField } from './Fields/CollectionCountField';
16
- import { CommentField } from './Fields/CommentField';
17
- import { DadataPartySelectField } from './Fields/DadataPartySelectField';
18
- import { DesiredMeetingDateField } from './Fields/DesiredMeetingDateField';
19
- import { EmailField } from './Fields/EmailField';
20
- import { FeedbackMethodField } from './Fields/FeedbackMethodField';
21
- import { FullNameField } from './Fields/FullNameField';
22
- import { FullRegionField } from './Fields/FullRegionField';
23
- import { InnField } from './Fields/InnField';
24
- import { IsClientField } from './Fields/IsClientField';
25
- import { LocalitiesField } from './Fields/LocalitiesField';
26
- import { MiddleNameField } from './Fields/MiddleNameField';
27
- import { NameField } from './Fields/NameField';
28
- import { OnlineCheckoutField } from './Fields/OnlineCheckoutField';
29
- import { PartnerCommentsField } from './Fields/PartnerCommentsField';
30
- import { PartnerNameField } from './Fields/PartnerNameField';
31
- import { PartnerSymbolCodeField } from './Fields/PartnerSymbolCodeField';
32
- import { PhoneField } from './Fields/PhoneField';
33
- import { PosTerminalField } from './Fields/PosTerminalField';
34
- import { ProductField } from './Fields/ProductField';
35
- import { QuestionProductField } from './Fields/QuestionProductField';
36
- import { RegionField } from './Fields/RegionField';
37
- import { RepresentativeNameField } from './Fields/RepresentativeNameField';
38
- import { SecondaryPhoneField } from './Fields/SecondaryPhoneField';
39
- import { ServiceDirectionField } from './Fields/ServiceDirectionField';
40
- import { SituationDescriptionField } from './Fields/SituationDescriptionField';
41
- import { SufferedFromField } from './Fields/SufferedFromField';
42
- import { SurnameField } from './Fields/SurnameField';
43
- import { TermField } from './Fields/TermField';
44
- import { UltraPremiumField } from './Fields/UltraPremiumField';
45
- import { VedField } from './Fields/VedField';
46
- import { ConsentToReceiveMaterialsField } from './Fields/СonsentToReceiveMaterialsField';
47
- import { getPremium } from './getPremium';
4
+ import { InputsMap } from './InputsMap';
48
5
  import { RefWrapper } from './RefWrapper';
49
6
  import { shouldRenderField } from './shouldRenderField';
50
7
 
51
- const PRODUCT_REF = {
52
- $ref: '/wcms-resources/outservice-productlist.json',
53
- };
54
-
55
- const AGENTS_REF = {
56
- $ref: '/wcms-resources/agenty-dlya-rko.json',
57
- };
58
-
59
- const InputsMap = {
60
- fullName: FullNameField,
61
- addressBranch: AddressBranchField,
62
- desiredMeetingDate: DesiredMeetingDateField,
63
- product: (props: CustomFieldProps) => <ProductField {...props} source={PRODUCT_REF} />,
64
- localities: LocalitiesField,
65
- isClient: IsClientField,
66
- partnerComments: PartnerCommentsField,
67
- collectionCount: CollectionCountField,
68
- acquiringType: AcquiringField,
69
- onlineCheckout: OnlineCheckoutField,
70
- posTerminal: PosTerminalField,
71
- serviceType: UltraPremiumField,
72
- term: TermField,
73
- amount: AmountField,
74
- annualRevenue: AnnualRevenueField,
75
- vedTypes: VedField,
76
- feedbackMethod: FeedbackMethodField,
77
- serviceDirection: ServiceDirectionField,
78
- bankEmpolee: BankEmpoleeField,
79
- secondaryPhone: SecondaryPhoneField,
80
- applicationDate: ApplicationDateField,
81
- region: (props: CustomFieldProps) =>
82
- getPremium(props?.params?.typeForm as FormTypeFieldDef) ? (
83
- <FullRegionField {...props} />
84
- ) : (
85
- <RegionField {...props} />
86
- ),
87
- consentToReceiveMaterials: ConsentToReceiveMaterialsField,
88
- sufferedFrom: SufferedFromField,
89
- situationDescription: SituationDescriptionField,
90
- representativeName: RepresentativeNameField,
91
- applierType: ApplierTypeField,
92
- surname: SurnameField,
93
- name: NameField,
94
- middleName: MiddleNameField,
95
- birthday: BirthdayField,
96
- phone: PhoneField,
97
- email: EmailField,
98
- inn: InnField,
99
- comment: CommentField,
100
- fullRegion: FullRegionField,
101
- partnerSymbolCode: (props: CustomFieldProps) => (
102
- <PartnerSymbolCodeField {...props} source={AGENTS_REF} />
103
- ),
104
- partnerName: (props: CustomFieldProps) => <PartnerNameField {...props} source={AGENTS_REF} />,
105
- dadataPartyNameSelect: DadataPartySelectField,
106
- dadataPartyInnSelect: DadataPartySelectField,
107
- questionProduct: QuestionProductField,
108
- callbackTime: CallbackTimeField,
109
- russianPhone: PhoneField,
110
- };
111
-
112
8
  export const getField =
113
9
  <F extends BaseFieldDef>(
114
10
  field: FormFieldRegisterer<any>,
@@ -3,6 +3,7 @@ import { type Validator } from '../../validation/validator';
3
3
  import { type BaseFieldDef } from './BaseFieldDef';
4
4
  import {
5
5
  agreementValidator,
6
+ birthdayValidator,
6
7
  defaultSelectValidator,
7
8
  defaultValidator,
8
9
  emailValidator,
@@ -34,7 +35,7 @@ export const validatorObj: Record<string, Validator> = {
34
35
  surname: nameValidator('Укажите свою фамилию на кириллице'),
35
36
  name: nameValidator('Укажите своё имя на кириллице (без сокращений)'),
36
37
  middleName: nameValidator('Укажите своё отчество на кириллице'),
37
- birthday: defaultValidator('Укажите дату рождения'),
38
+ birthday: birthdayValidator('Укажите дату рождения'),
38
39
  phone: phoneValidator('Укажите номер телефона'),
39
40
  email: emailValidator('Укажите электронную почту'),
40
41
  inn: innValidator('Укажите ИНН'),
@@ -48,6 +49,20 @@ export const validatorObj: Record<string, Validator> = {
48
49
  callbackTime: defaultValidator(),
49
50
  questionProduct: defaultValidator(),
50
51
  russianPhone: russianPhoneValidator('Укажите номер телефона'),
52
+ cityOfResidence: defaultValidator(),
53
+ internshipStartDate: defaultValidator(),
54
+ internshipEndDate: defaultValidator(),
55
+ university: defaultValidator(),
56
+ fieldOfStudy: defaultValidator(),
57
+ courseYear: defaultValidator(),
58
+ graduationYear: defaultValidator(),
59
+ averageGrade: defaultValidator(),
60
+ skillsAndKnowledge: defaultValidator(),
61
+ educationLevel: defaultSelectValidator(),
62
+ motivationForInternship: defaultValidator(),
63
+ workExperience: defaultValidator(),
64
+ internshipDirection: defaultValidator(),
65
+ workingHours: defaultValidator(),
51
66
  };
52
67
 
53
68
  export const getFormValidator = <FormState extends Record<string, any>, F extends BaseFieldDef>(
@@ -1,4 +1,5 @@
1
1
  import { isCyrillic } from '../../utils/isCyrilic';
2
+ import { isDateValid } from '../../utils/isDateValid';
2
3
  import { required } from '../../validation/required';
3
4
  import { validator } from '../../validation/validator';
4
5
 
@@ -51,3 +52,6 @@ export const emailValidator = (errorMsg: string) =>
51
52
 
52
53
  export const isValidInnLength = (value: string | undefined): boolean =>
53
54
  typeof value === 'string' && (value.length === 10 || value.length === 12);
55
+
56
+ export const birthdayValidator = (errorMsg: string) =>
57
+ validator((_: Date) => isDateValid(_, { maxLimit: new Date() }))(errorMsg);
@@ -4,6 +4,7 @@ import { style } from '../../utils/style';
4
4
  import { getValidStyle } from './getValidStyle';
5
5
  import { type InputProps } from './InputProps';
6
6
  import { renderLabel } from './renderLabel';
7
+ import { defaultStyle } from './styles';
7
8
 
8
9
  export const Input = JSX<InputProps>(
9
10
  // eslint-disable-next-line max-lines-per-function
@@ -88,5 +89,3 @@ export const Input = JSX<InputProps>(
88
89
  );
89
90
  },
90
91
  );
91
-
92
- const defaultStyle = 'w-full border rounded-md text-primary-text outline-none p-m';
@@ -0,0 +1,132 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { useEffect, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
3
+ import { SUCCESS_STATUS, type ResponseData } from '../../api/sendFile';
4
+ import { useDragAndDrop } from '../../hooks/useDragAndDrop';
5
+ import { noop } from '../../utils/noop';
6
+ import { style } from '../../utils/style';
7
+ import { CloseButton } from '../DialogManager/CloseButton';
8
+ import { ProgressBar } from '../ProgressBar/ProgressBar';
9
+ import { getValidStyle } from './getValidStyle';
10
+ import { type InputProps } from './InputProps';
11
+ import { renderErrorText } from './renderErrorText';
12
+ import { renderFileInput } from './renderFileInput';
13
+ import { renderInfoText } from './renderInfoText';
14
+ import { borderStyle, defaultStyle } from './styles';
15
+ import { useVerifyFile } from './useVerifyFile';
16
+
17
+ export const InputFile = JSX<InputProps>(
18
+ // eslint-disable-next-line max-lines-per-function
19
+ ({
20
+ key,
21
+ className,
22
+ id,
23
+ name,
24
+ type = 'file',
25
+ label,
26
+ valid = true,
27
+ pattern,
28
+ autoFocus = false,
29
+ extensions,
30
+ children,
31
+ onFocus,
32
+ onBlur,
33
+ maxSizeMB,
34
+ error,
35
+ onFileChanged = noop,
36
+ }) => {
37
+ const inputRef = useRef<HTMLInputElement | null>(null);
38
+ const [selectedFile, setSelectedFile] = useState<File | null>(null);
39
+ const [uploadError, setUploadError] = useState('');
40
+ const [uploadResponse, setUploadResponse] = useState<ResponseData | null>(null);
41
+
42
+ const { verifyFile, isFileUploading, progress } = useVerifyFile({
43
+ onUploadError: setUploadError,
44
+ onUploadResponse: setUploadResponse,
45
+ onFileSelected: setSelectedFile,
46
+ extensions,
47
+ maxSizeMB,
48
+ });
49
+
50
+ useEffect(() => {
51
+ if (autoFocus) {
52
+ inputRef.current?.focus();
53
+ }
54
+ }, [autoFocus, inputRef]);
55
+
56
+ const handleFileChange = async (file?: File) => {
57
+ handleResetFile();
58
+ if (file) {
59
+ await verifyFile({ file, onFileChanged });
60
+ }
61
+ };
62
+
63
+ const handleResetFile = () => {
64
+ setSelectedFile(null);
65
+ setUploadError('');
66
+ setUploadResponse(null);
67
+ onFileChanged('');
68
+ };
69
+
70
+ const { handleDrag, handleLeave, handleDrop, isDragActive } = useDragAndDrop({
71
+ onReset: handleResetFile,
72
+ onFileSelected: verifyFile,
73
+ uploadResponse,
74
+ onFileChanged,
75
+ });
76
+
77
+ const paddingStyle = children ? 'pr-3xl' : '';
78
+ const validStyle = getValidStyle(valid);
79
+ const activeDragStyle = isDragActive ? 'border-primary-hover' : '';
80
+
81
+ return (
82
+ <div
83
+ className={style('relative', className)}
84
+ onDragEnter={handleDrag}
85
+ onDragOver={handleDrag}
86
+ onDragLeave={handleLeave}
87
+ onDrop={handleDrop}
88
+ >
89
+ <label
90
+ className={style(
91
+ 'h-14 cursor-pointer space-y-xs block',
92
+ defaultStyle,
93
+ paddingStyle,
94
+ borderStyle,
95
+ validStyle,
96
+ activeDragStyle,
97
+ )}
98
+ >
99
+ {isFileUploading ? (
100
+ <div>
101
+ <ProgressBar step={progress} isOnlyInteger={true} />
102
+ </div>
103
+ ) : (
104
+ renderFileInput({
105
+ label,
106
+ inputRef,
107
+ id,
108
+ key,
109
+ type,
110
+ name,
111
+ pattern,
112
+ disabled: Boolean(uploadResponse || isFileUploading),
113
+ onChange: handleFileChange,
114
+ onFocus,
115
+ onBlur,
116
+ extensions,
117
+ uploadResponse,
118
+ file: selectedFile,
119
+ })
120
+ )}
121
+ </label>
122
+ {uploadResponse?.status === SUCCESS_STATUS ? (
123
+ <CloseButton className="absolute top-0 right-0 z-10" onClose={handleResetFile} />
124
+ ) : null}
125
+
126
+ {renderInfoText(extensions, maxSizeMB)}
127
+ {renderErrorText(error || uploadError)}
128
+ {children}
129
+ </div>
130
+ );
131
+ },
132
+ );
@@ -0,0 +1,22 @@
1
+ import { JSX } from '@redneckz/uni-jsx';
2
+ import { getRequiredLabel } from '../../utils/getRequiredLabel';
3
+ import { InputFile } from './InputFile';
4
+ import { type InputProps } from './InputProps';
5
+
6
+ export const InputFileControl = JSX<InputProps>(
7
+ ({ label, value = '', error, type, inputRef, required, ...rest }) => {
8
+ return (
9
+ <div ref={inputRef}>
10
+ <InputFile
11
+ type={type || 'file'}
12
+ aria-label={label}
13
+ label={getRequiredLabel({ label, required })}
14
+ valid={Boolean(!error)}
15
+ value={value}
16
+ error={error}
17
+ {...rest}
18
+ />
19
+ </div>
20
+ );
21
+ },
22
+ );
@@ -3,7 +3,16 @@ import { type DefaultControlType } from '../../model/DefaultControlType';
3
3
  import { type InputTypes } from '../../model/InputTypes';
4
4
  import { type PreventableEventWithTarget } from '../PreventableEvent';
5
5
 
6
- export interface InputProps<V = string> extends DefaultControlType, ControlProps<V> {
6
+ export type FileInputProps = {
7
+ extensions?: string[];
8
+ maxSizeMB?: number;
9
+ onFileChanged?: (value: string) => void;
10
+ };
11
+
12
+ export interface InputProps<V = string>
13
+ extends DefaultControlType,
14
+ ControlProps<V>,
15
+ FileInputProps {
7
16
  id?: string;
8
17
  name?: string;
9
18
  type?: InputTypes;
@@ -0,0 +1,9 @@
1
+ import { EXTENSIONS_ERROR_TEXT } from '../constants';
2
+
3
+ export const checkFileExtension = async (file: File, extensions?: string[]): Promise<void> => {
4
+ const fileExt = file.name.split('.')[1];
5
+ console.log(fileExt, extensions);
6
+ if (!extensions?.includes(fileExt)) {
7
+ throw new Error(EXTENSIONS_ERROR_TEXT);
8
+ }
9
+ };
@@ -0,0 +1,20 @@
1
+ import { EXTENSIONS_ERROR_TEXT } from '../constants';
2
+
3
+ const EXT_TO_MIME: Record<string, string> = {
4
+ pdf: 'application/pdf',
5
+ doc: 'application/msword',
6
+ docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
7
+ pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
8
+ };
9
+
10
+ export const checkFileMimeType = async (file?: File, extensions?: string[]): Promise<void> => {
11
+ const fileMimeType = file?.type ?? '';
12
+
13
+ const expectedMimeTypes = (extensions || [])
14
+ .map((ext) => EXT_TO_MIME[ext])
15
+ .filter((mime) => mime !== undefined);
16
+
17
+ if (!expectedMimeTypes.includes(fileMimeType)) {
18
+ throw new Error(EXTENSIONS_ERROR_TEXT);
19
+ }
20
+ };
@@ -0,0 +1,30 @@
1
+ import { EXTENSIONS_ERROR_TEXT } from '../constants';
2
+ import { getFileSignature } from './getFileSignature';
3
+
4
+ const SIGNATURES: Record<string, string> = {
5
+ pdf: '25 50 44 46 2d',
6
+ docx: '50 4b 03 04',
7
+ pptx: '50 4b 03 04',
8
+ xlsx: '50 4b 03 04',
9
+ doc: 'D0 CF 11 E0 A1 B1 1A E1',
10
+ };
11
+
12
+ export const checkFileSignature = async (
13
+ file?: File,
14
+ expectedTypes?: (keyof typeof SIGNATURES)[],
15
+ ): Promise<void> => {
16
+ const hexSignature = await getFileSignature(file);
17
+
18
+ const isValid = (expectedTypes ?? []).some((type) => {
19
+ const expectedSignature = SIGNATURES[type]?.toLowerCase();
20
+
21
+ console.log(expectedSignature);
22
+ console.log(hexSignature);
23
+
24
+ return expectedSignature && hexSignature.startsWith(expectedSignature);
25
+ });
26
+
27
+ if (!isValid) {
28
+ throw new Error(EXTENSIONS_ERROR_TEXT);
29
+ }
30
+ };
@@ -0,0 +1,10 @@
1
+ import { EMPTY_FILE_ERROR_TEXT, MAX_SIZE_ERROR_TEXT } from '../constants';
2
+
3
+ export const checkFileSize = async (file: File, maxSizeMB?: number): Promise<void> => {
4
+ if (maxSizeMB && file.size > maxSizeMB * 1024 * 1024) {
5
+ throw new Error(MAX_SIZE_ERROR_TEXT);
6
+ }
7
+ if (file.size === 0) {
8
+ throw new Error(EMPTY_FILE_ERROR_TEXT);
9
+ }
10
+ };
@@ -0,0 +1,16 @@
1
+ export const getFileSignature = (file?: File): Promise<string> => {
2
+ return new Promise((resolve, reject) => {
3
+ const reader = new FileReader();
4
+ reader.onload = () => {
5
+ const buffer = reader.result as ArrayBuffer;
6
+ const bytes = new Uint8Array(buffer);
7
+ const hex = Array.from(bytes)
8
+ .map((b) => b.toString(16).padStart(2, '0'))
9
+ .join(' ');
10
+ resolve(hex);
11
+ };
12
+ reader.onerror = reject;
13
+
14
+ return file && reader.readAsArrayBuffer(file.slice(0, 8));
15
+ });
16
+ };
@@ -0,0 +1,6 @@
1
+ export const ACCEPTED_EXTENSIONS_TEXT = 'Поддерживаемые форматы файлов';
2
+ export const MAX_SIZE_TEXT = 'Максимальный размер файла';
3
+ export const EMPTY_FILE_ERROR_TEXT = 'Ошибка загрузки файла. Убедитесь, что файл не пустой';
4
+ export const EXTENSIONS_ERROR_TEXT = 'Файл не соответствует допустимым расширениям';
5
+ export const MAX_SIZE_ERROR_TEXT = 'Файл превышает допустимый размер';
6
+ export const DEFAULT_ERROR_TEXT = 'Ошибка при загрузке файла. Попробуйте загрузить файл позднее';
@@ -0,0 +1,87 @@
1
+ import { SUCCESS_STATUS, type ResponseData } from '../../api/sendFile';
2
+ import type { IconName } from '../../icons/IconName';
3
+ import type { IconVersion } from '../../model/IconVersion';
4
+ import { noop } from '../../utils/noop';
5
+ import { style } from '../../utils/style';
6
+ import { Icon } from '../Icon/Icon';
7
+ import type { PreventableEvent, PreventableEventWithTargetFiles } from '../PreventableEvent';
8
+ import type { InputProps } from './InputProps';
9
+ import { renderLabel } from './renderLabel';
10
+
11
+ const ICON_PROPS: { name: IconName; iconVersion: IconVersion; width: string; height: string } = {
12
+ name: 'DocIcon',
13
+ iconVersion: 'black',
14
+ width: '24',
15
+ height: '24',
16
+ };
17
+
18
+ interface InputFileProps extends InputProps<File> {
19
+ key?: string;
20
+ uploadResponse?: ResponseData | null;
21
+ file?: File | null;
22
+ onReset?: (e: PreventableEvent) => void;
23
+ isCustomValid?: boolean;
24
+ }
25
+
26
+ export const renderFileInput = ({
27
+ label,
28
+ inputRef,
29
+ id,
30
+ key,
31
+ type,
32
+ name,
33
+ pattern,
34
+ disabled,
35
+ onChange = noop,
36
+ onFocus,
37
+ onBlur,
38
+ extensions,
39
+ uploadResponse,
40
+ file,
41
+ }: InputFileProps) => {
42
+ const ariaLabel = label ?? name ?? id;
43
+
44
+ return (
45
+ <div>
46
+ {uploadResponse?.status === SUCCESS_STATUS ? (
47
+ renderFileName(file)
48
+ ) : (
49
+ <div className="flex items-center space-x-2">
50
+ <Icon className="inline-block" {...ICON_PROPS} />
51
+ {renderLabel(label)}
52
+ <input
53
+ ref={inputRef}
54
+ className={style('h-14 hidden')}
55
+ id={id}
56
+ key={key}
57
+ type={type}
58
+ name={name || id}
59
+ pattern={pattern}
60
+ disabled={disabled}
61
+ aria-label={ariaLabel}
62
+ onChange={(e: PreventableEventWithTargetFiles) => {
63
+ e?.target?.files && onChange(e?.target?.files[0]);
64
+ }}
65
+ onFocus={onFocus}
66
+ onBlur={onBlur}
67
+ accept={extensionsToAccept(extensions)}
68
+ />
69
+ </div>
70
+ )}
71
+ </div>
72
+ );
73
+ };
74
+
75
+ const extensionsToAccept = (extensions: string[] = []): string => {
76
+ return extensions
77
+ .map((ext) => {
78
+ const str = String(ext).trim();
79
+
80
+ return str.startsWith('.') ? str : '.' + str;
81
+ })
82
+ .map((ext) => ext.toLowerCase())
83
+ .filter((ext, index, arr) => arr.indexOf(ext) === index)
84
+ .join(', ');
85
+ };
86
+
87
+ const renderFileName = (file?: File | null | undefined) => <span>{file?.name}</span>;
@@ -0,0 +1,15 @@
1
+ import { Text } from '../Text/Text';
2
+ import { ACCEPTED_EXTENSIONS_TEXT, MAX_SIZE_TEXT } from './constants';
3
+
4
+ export const renderInfoText = (extensions?: string[], maxSize?: number) => {
5
+ const extensionsMessage = extensions
6
+ ? `${ACCEPTED_EXTENSIONS_TEXT} - ${extensions.join(', ')}. `
7
+ : '';
8
+ const maxSizeMessage = maxSize ? `${MAX_SIZE_TEXT} - ${maxSize}Мб.` : '';
9
+
10
+ return (
11
+ <Text size="text-xs" font="font-light" color="text-secondary-text">
12
+ {extensionsMessage + maxSizeMessage}
13
+ </Text>
14
+ );
15
+ };
@@ -0,0 +1,2 @@
1
+ export const defaultStyle = 'w-full border rounded-md text-primary-text outline-none p-m';
2
+ export const borderStyle = 'border-dashed';
@@ -0,0 +1,100 @@
1
+ import { useMemo, useState } from '@redneckz/uni-jsx/lib/hooks';
2
+ import { sendFile, SUCCESS_STATUS, type ResponseData } from '../../api/sendFile';
3
+ import { animateStepWithMinDuration } from '../../utils/animateStepWithMinDuration';
4
+ import { debounce } from '../../utils/debounce';
5
+ import { noop } from '../../utils/noop';
6
+ import { checkFileExtension } from './checks/checkFIleExtension';
7
+ import { checkFileMimeType } from './checks/checkFileMimeType';
8
+ import { checkFileSignature } from './checks/checkFileSignature';
9
+ import { checkFileSize } from './checks/checkFileSize';
10
+ import { DEFAULT_ERROR_TEXT } from './constants';
11
+ import { type FileInputProps } from './InputProps';
12
+
13
+ const DEBOUNCE_DELAY = 500;
14
+
15
+ interface VerifyFileProps extends FileInputProps {
16
+ onUploadError?: (value: string) => void;
17
+ onFileSelected?: (value: File) => void;
18
+ onUploadResponse?: (value: ResponseData) => void;
19
+ }
20
+
21
+ export type VerifyFileParams = {
22
+ file: File;
23
+ onFileChanged?: (value: string) => void;
24
+ };
25
+
26
+ export const useVerifyFile = ({
27
+ onUploadError = noop,
28
+ onFileSelected = noop,
29
+ extensions,
30
+ maxSizeMB,
31
+ onUploadResponse = noop,
32
+ }: VerifyFileProps) => {
33
+ const [progress, setProgress] = useState(0);
34
+ const [isFileUploading, setIsFileUploading] = useState(false);
35
+
36
+ const debouncedOnFileUploaded = useMemo(
37
+ () => debounce((isUploading: boolean) => setIsFileUploading(isUploading), DEBOUNCE_DELAY),
38
+ [setIsFileUploading],
39
+ );
40
+ const debouncedOnUploadError = useMemo(
41
+ () => debounce((message: string) => onUploadError(message), DEBOUNCE_DELAY),
42
+ [onUploadError],
43
+ );
44
+
45
+ const debouncedOnUploadResponse = useMemo(
46
+ () => debounce((response: ResponseData) => onUploadResponse(response), DEBOUNCE_DELAY),
47
+ [onUploadResponse],
48
+ );
49
+
50
+ const verifyFile = async ({ file, onFileChanged = noop }: VerifyFileParams) => {
51
+ onFileSelected(file);
52
+ setIsFileUploading(true);
53
+
54
+ const checks = [
55
+ () => checkFileExtension(file, extensions),
56
+ () => checkFileSize(file, maxSizeMB),
57
+ () => checkFileSignature(file, extensions),
58
+ () => checkFileMimeType(file, extensions),
59
+ ];
60
+
61
+ const checkProgressStep = 50 / checks.length;
62
+ let currentProgress = 0;
63
+
64
+ try {
65
+ for (let i = 0; i < checks.length; i++) {
66
+ const checkPromise = checks[i];
67
+
68
+ await checkPromise();
69
+
70
+ const targetProgress = (i + 1) * checkProgressStep;
71
+
72
+ await animateStepWithMinDuration({
73
+ from: currentProgress,
74
+ to: targetProgress,
75
+ onUpdate: setProgress,
76
+ minDuration: 300,
77
+ });
78
+
79
+ currentProgress = targetProgress;
80
+ }
81
+
82
+ const response = await sendFile({
83
+ file,
84
+ onProgress: setProgress,
85
+ });
86
+ debouncedOnUploadResponse(response);
87
+ onFileChanged(response?.fileId ?? '');
88
+ if (response?.status === SUCCESS_STATUS) {
89
+ debouncedOnFileUploaded?.(false);
90
+ }
91
+ } catch (e) {
92
+ const errorMessage = e instanceof Error ? e.message : DEFAULT_ERROR_TEXT;
93
+ debouncedOnUploadError(errorMessage);
94
+ onFileChanged('');
95
+ }
96
+ debouncedOnFileUploaded?.(false);
97
+ };
98
+
99
+ return { verifyFile, isFileUploading, progress };
100
+ };
@@ -4,3 +4,8 @@ export interface PreventableEvent {
4
4
  }
5
5
 
6
6
  export type PreventableEventWithTarget = PreventableEvent & { target?: EventTarget | null };
7
+
8
+ export type PreventableEventWithTargetFiles = PreventableEvent & {
9
+ target?: HTMLInputElement | null;
10
+ dataTransfer?: DataTransfer;
11
+ };