@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
@@ -0,0 +1,133 @@
1
+ import type { FormTypeFieldDef } from '../../model/FormTypeFieldDef';
2
+ import { EDUCATION_LEVEL, INTERNSHIP_DIRECTION, WORKING_HOURS } from './constants';
3
+ import type { CustomFieldProps } from './CustomFieldProps';
4
+ import { AcquiringField } from './Fields/AcquiringField';
5
+ import { AddressBranchField } from './Fields/AddressBranchField';
6
+ import { AmountField } from './Fields/AmountField';
7
+ import { AnnualRevenueField } from './Fields/AnnualRevenueField';
8
+ import { ApplicationDateField } from './Fields/ApplicationDateField';
9
+ import { ApplierTypeField } from './Fields/ApplierTypeField';
10
+ import { AverageGradeField } from './Fields/AverageGradeField';
11
+ import { BankEmpoleeField } from './Fields/BankEmpoleeField';
12
+ import { BirthdayField } from './Fields/BirthdayField';
13
+ import { CallbackTimeField } from './Fields/CallbackTimeField';
14
+ import { CollectionCountField } from './Fields/CollectionCountField';
15
+ import { CommentField } from './Fields/CommentField';
16
+ import { DadataPartySelectField } from './Fields/DadataPartySelectField';
17
+ import { DesiredMeetingDateField } from './Fields/DesiredMeetingDateField';
18
+ import { EmailField } from './Fields/EmailField';
19
+ import { FeedbackMethodField } from './Fields/FeedbackMethodField';
20
+ import { FileUploadField } from './Fields/FileUpload';
21
+ import { FullNameField } from './Fields/FullNameField';
22
+ import { FullRegionField } from './Fields/FullRegionField';
23
+ import { InnField } from './Fields/InnField';
24
+ import { InternshipEndDateField } from './Fields/InternshipEndDateField';
25
+ import { InternshipStartDateField } from './Fields/InternshipStartDateField';
26
+ import { IsClientField } from './Fields/IsClientField';
27
+ import { LocalitiesField } from './Fields/LocalitiesField';
28
+ import { MiddleNameField } from './Fields/MiddleNameField';
29
+ import { NameField } from './Fields/NameField';
30
+ import { OnlineCheckoutField } from './Fields/OnlineCheckoutField';
31
+ import { PartnerCommentsField } from './Fields/PartnerCommentsField';
32
+ import { PartnerNameField } from './Fields/PartnerNameField';
33
+ import { PartnerSymbolCodeField } from './Fields/PartnerSymbolCodeField';
34
+ import { PhoneField } from './Fields/PhoneField';
35
+ import { PosTerminalField } from './Fields/PosTerminalField';
36
+ import { ProductField } from './Fields/ProductField';
37
+ import { QuestionProductField } from './Fields/QuestionProductField';
38
+ import { RegionField } from './Fields/RegionField';
39
+ import { RepresentativeNameField } from './Fields/RepresentativeNameField';
40
+ import { SecondaryPhoneField } from './Fields/SecondaryPhoneField';
41
+ import { SelectField, type SelectFieldProps } from './Fields/SelectField';
42
+ import { ServiceDirectionField } from './Fields/ServiceDirectionField';
43
+ import { SituationDescriptionField } from './Fields/SituationDescriptionField';
44
+ import { SufferedFromField } from './Fields/SufferedFromField';
45
+ import { SurnameField } from './Fields/SurnameField';
46
+ import { TermField } from './Fields/TermField';
47
+ import { TextField } from './Fields/TextField';
48
+ import { UltraPremiumField } from './Fields/UltraPremiumField';
49
+ import { VedField } from './Fields/VedField';
50
+ import { ConsentToReceiveMaterialsField } from './Fields/СonsentToReceiveMaterialsField';
51
+ import { getPremium } from './getPremium';
52
+
53
+ const PRODUCT_REF = {
54
+ $ref: '/wcms-resources/outservice-productlist.json',
55
+ };
56
+
57
+ const AGENTS_REF = {
58
+ $ref: '/wcms-resources/agenty-dlya-rko.json',
59
+ };
60
+
61
+ export const InputsMap = {
62
+ fullName: FullNameField,
63
+ addressBranch: AddressBranchField,
64
+ desiredMeetingDate: DesiredMeetingDateField,
65
+ product: (props: CustomFieldProps) => <ProductField {...props} source={PRODUCT_REF} />,
66
+ localities: LocalitiesField,
67
+ isClient: IsClientField,
68
+ partnerComments: PartnerCommentsField,
69
+ collectionCount: CollectionCountField,
70
+ acquiringType: AcquiringField,
71
+ onlineCheckout: OnlineCheckoutField,
72
+ posTerminal: PosTerminalField,
73
+ serviceType: UltraPremiumField,
74
+ term: TermField,
75
+ amount: AmountField,
76
+ annualRevenue: AnnualRevenueField,
77
+ vedTypes: VedField,
78
+ feedbackMethod: FeedbackMethodField,
79
+ serviceDirection: ServiceDirectionField,
80
+ bankEmpolee: BankEmpoleeField,
81
+ secondaryPhone: SecondaryPhoneField,
82
+ applicationDate: ApplicationDateField,
83
+ region: (props: CustomFieldProps) =>
84
+ getPremium(props?.params?.typeForm as FormTypeFieldDef) ? (
85
+ <FullRegionField {...props} />
86
+ ) : (
87
+ <RegionField {...props} />
88
+ ),
89
+ consentToReceiveMaterials: ConsentToReceiveMaterialsField,
90
+ sufferedFrom: SufferedFromField,
91
+ situationDescription: SituationDescriptionField,
92
+ representativeName: RepresentativeNameField,
93
+ applierType: ApplierTypeField,
94
+ surname: SurnameField,
95
+ name: NameField,
96
+ middleName: MiddleNameField,
97
+ birthday: BirthdayField,
98
+ phone: PhoneField,
99
+ email: EmailField,
100
+ inn: InnField,
101
+ comment: CommentField,
102
+ fullRegion: FullRegionField,
103
+ partnerSymbolCode: (props: CustomFieldProps) => (
104
+ <PartnerSymbolCodeField {...props} source={AGENTS_REF} />
105
+ ),
106
+ partnerName: (props: CustomFieldProps) => <PartnerNameField {...props} source={AGENTS_REF} />,
107
+ dadataPartyNameSelect: DadataPartySelectField,
108
+ dadataPartyInnSelect: DadataPartySelectField,
109
+ questionProduct: QuestionProductField,
110
+ callbackTime: CallbackTimeField,
111
+ russianPhone: PhoneField,
112
+ cityOfResidence: (props: CustomFieldProps) => <TextField {...props} label="Город проживания" />,
113
+ internshipStartDate: InternshipStartDateField,
114
+ internshipEndDate: InternshipEndDateField,
115
+ university: (props: CustomFieldProps) => <TextField {...props} label="ВУЗ" />,
116
+ courseYear: (props: CustomFieldProps) => <TextField {...props} label="Курс" />,
117
+ graduationYear: (props: CustomFieldProps) => <TextField {...props} label="Год окончания" />,
118
+ fieldOfStudy: (props: CustomFieldProps) => <TextField {...props} label="Направление обучения" />,
119
+ educationLevel: (props: SelectFieldProps) => (
120
+ <SelectField {...props} label="Ступень обучения" options={EDUCATION_LEVEL} />
121
+ ),
122
+ averageGrade: AverageGradeField,
123
+ skillsAndKnowledge: CommentField,
124
+ workExperience: CommentField,
125
+ motivationForInternship: CommentField,
126
+ internshipDirection: (props: SelectFieldProps) => (
127
+ <SelectField {...props} label="Направление стажировки" options={INTERNSHIP_DIRECTION} />
128
+ ),
129
+ workingHours: (props: SelectFieldProps) => (
130
+ <SelectField {...props} label="Количество рабочих часов" options={WORKING_HOURS} />
131
+ ),
132
+ fileUpload: FileUploadField,
133
+ };
@@ -45,5 +45,21 @@ type NameFieldApplicationDef =
45
45
  | 'dadataPartyInnSelect'
46
46
  | 'questionProduct'
47
47
  | 'callbackTime'
48
- | 'russianPhone';
48
+ | 'russianPhone'
49
+ | 'cityOfResidence'
50
+ | 'internshipStartDate'
51
+ | 'internshipEndDate'
52
+ | 'university'
53
+ | 'fieldOfStudy'
54
+ | 'courseYear'
55
+ | 'graduationYear'
56
+ | 'averageGrade'
57
+ | 'skillsAndKnowledge'
58
+ | 'educationLevel'
59
+ | 'workingHours'
60
+ | 'motivationForInternship'
61
+ | 'workExperience'
62
+ | 'internshipDirection'
63
+ | 'fileUpload'
64
+ | 'fileId';
49
65
  export type NameFieldDef = NameFieldApplicationDef;
@@ -97,3 +97,32 @@ export const VED_TYPES: RadioButtonItem[] = [
97
97
  { id: 'conversionTransactions', text: 'Конверсионные операции' },
98
98
  { id: 'otherIssues', text: 'Иные вопросы ВЭД' },
99
99
  ];
100
+
101
+ export const INTERNSHIP_DIRECTION: Option[] = [
102
+ { key: 'economics', text: 'Экономика и финансы' },
103
+ { key: 'audit', text: 'Аудит' },
104
+ { key: 'law', text: 'Юриспруденция' },
105
+ { key: 'it', text: 'ИТ' },
106
+ { key: 'marketing', text: 'Маркетинг' },
107
+ { key: 'hr', text: 'HR' },
108
+ { key: 'analytics', text: 'Аналитика' },
109
+ { key: 'management', text: 'Менеджмент' },
110
+ { key: 'administration', text: 'ГМУ' },
111
+ { key: 'design', text: 'Дизайн' },
112
+ { key: 'journalism', text: 'Журналистика' },
113
+ { key: 'contact', text: 'Контакт-центр' },
114
+ { key: 'other', text: 'Другое' },
115
+ ];
116
+
117
+ export const WORKING_HOURS: Option[] = [
118
+ { key: '20', text: '20' },
119
+ { key: '30', text: '30' },
120
+ { key: '40', text: '40' },
121
+ ];
122
+
123
+ export const EDUCATION_LEVEL: Option[] = [
124
+ { key: 'bachelor', text: 'Бакалавриат' },
125
+ { key: 'specialist', text: 'Специалитет' },
126
+ { key: 'master', text: 'Магистратура' },
127
+ { key: 'doctorate', text: 'Аспирантура' },
128
+ ];
@@ -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 = 'Ошибка при загрузке файла. Попробуйте загрузить файл позднее';