@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.
- package/bundle/api/LeadServiceAPI.d.ts +10 -3
- package/bundle/api/getSubmitBody.d.ts +201 -97
- package/bundle/api/sendFile.d.ts +16 -0
- package/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +566 -51
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
- package/bundle/components/ApplicationForm/constants.d.ts +7 -0
- package/bundle/components/ApplicationForm/handlers.d.ts +3 -2
- package/bundle/hooks/useDragAndDrop.d.ts +16 -0
- package/bundle/model/FormTypeFieldDef.d.ts +1 -1
- package/bundle/model/InputTypes.d.ts +1 -1
- package/bundle/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
- package/bundle/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
- package/bundle/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
- package/bundle/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
- package/bundle/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
- package/bundle/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
- package/bundle/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
- package/bundle/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
- package/bundle/ui-kit/FormField/Fields/TextField.d.ts +2 -0
- package/bundle/ui-kit/FormField/InputsMap.d.ts +62 -0
- package/bundle/ui-kit/FormField/NameFieldDef.d.ts +1 -1
- package/bundle/ui-kit/FormField/constants.d.ts +3 -0
- package/bundle/ui-kit/FormField/validators.d.ts +1 -0
- package/bundle/ui-kit/Input/InputFile.d.ts +2 -0
- package/bundle/ui-kit/Input/InputFileControl.d.ts +2 -0
- package/bundle/ui-kit/Input/InputProps.d.ts +6 -1
- package/bundle/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
- package/bundle/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
- package/bundle/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
- package/bundle/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
- package/bundle/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
- package/bundle/ui-kit/Input/constants.d.ts +6 -0
- package/bundle/ui-kit/Input/renderFileInput.d.ts +12 -0
- package/bundle/ui-kit/Input/renderInfoText.d.ts +1 -0
- package/bundle/ui-kit/Input/styles.d.ts +2 -0
- package/bundle/ui-kit/Input/useVerifyFile.d.ts +17 -0
- package/bundle/ui-kit/PreventableEvent.d.ts +4 -0
- package/bundle/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
- package/bundle/utils/animateStepWithMinDuration.d.ts +8 -0
- package/bundle/utils/isDateValid.d.ts +4 -0
- package/dist/api/LeadServiceAPI.d.ts +10 -3
- package/dist/api/LeadServiceAPI.js +20 -9
- package/dist/api/LeadServiceAPI.js.map +1 -1
- package/dist/api/getSubmitBody.d.ts +201 -97
- package/dist/api/getSubmitBody.js +13 -6
- package/dist/api/getSubmitBody.js.map +1 -1
- package/dist/api/sendFile.d.ts +16 -0
- package/dist/api/sendFile.js +78 -0
- package/dist/api/sendFile.js.map +1 -0
- package/dist/components/ApplicationForm/ApplicationForm.js +5 -6
- package/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
- package/dist/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
- package/dist/components/ApplicationForm/constants.d.ts +7 -0
- package/dist/components/ApplicationForm/constants.js +29 -0
- package/dist/components/ApplicationForm/constants.js.map +1 -0
- package/dist/components/ApplicationForm/handlers.d.ts +3 -2
- package/dist/components/ApplicationForm/handlers.js +3 -3
- package/dist/components/ApplicationForm/handlers.js.map +1 -1
- package/dist/components/ApplicationForm/useVerifyPhoneDialogSubmit.js +3 -0
- package/dist/components/ApplicationForm/useVerifyPhoneDialogSubmit.js.map +1 -1
- package/dist/hooks/useDragAndDrop.d.ts +16 -0
- package/dist/hooks/useDragAndDrop.js +29 -0
- package/dist/hooks/useDragAndDrop.js.map +1 -0
- package/dist/model/FormTypeFieldDef.d.ts +1 -1
- package/dist/model/InputTypes.d.ts +1 -1
- package/dist/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
- package/dist/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
- package/dist/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
- package/dist/ui-kit/FormField/Fields/AverageGradeField.js +9 -0
- package/dist/ui-kit/FormField/Fields/AverageGradeField.js.map +1 -0
- package/dist/ui-kit/FormField/Fields/BirthdayField.js +4 -1
- package/dist/ui-kit/FormField/Fields/BirthdayField.js.map +1 -1
- package/dist/ui-kit/FormField/Fields/CommentField.js +1 -1
- package/dist/ui-kit/FormField/Fields/CommentField.js.map +1 -1
- package/dist/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
- package/dist/ui-kit/FormField/Fields/FileIdField.js +7 -0
- package/dist/ui-kit/FormField/Fields/FileIdField.js.map +1 -0
- package/dist/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
- package/dist/ui-kit/FormField/Fields/FileUpload.js +14 -0
- package/dist/ui-kit/FormField/Fields/FileUpload.js.map +1 -0
- package/dist/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
- package/dist/ui-kit/FormField/Fields/InternshipEndDateField.js +23 -0
- package/dist/ui-kit/FormField/Fields/InternshipEndDateField.js.map +1 -0
- package/dist/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
- package/dist/ui-kit/FormField/Fields/InternshipStartDateField.js +23 -0
- package/dist/ui-kit/FormField/Fields/InternshipStartDateField.js.map +1 -0
- package/dist/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
- package/dist/ui-kit/FormField/Fields/SelectField.js +7 -0
- package/dist/ui-kit/FormField/Fields/SelectField.js.map +1 -0
- package/dist/ui-kit/FormField/Fields/TextField.d.ts +2 -0
- package/dist/ui-kit/FormField/Fields/TextField.js +7 -0
- package/dist/ui-kit/FormField/Fields/TextField.js.map +1 -0
- package/dist/ui-kit/FormField/InputsMap.d.ts +62 -0
- package/dist/ui-kit/FormField/InputsMap.js +119 -0
- package/dist/ui-kit/FormField/InputsMap.js.map +1 -0
- package/dist/ui-kit/FormField/NameFieldDef.d.ts +1 -1
- package/dist/ui-kit/FormField/constants.d.ts +3 -0
- package/dist/ui-kit/FormField/constants.js +27 -1
- package/dist/ui-kit/FormField/constants.js.map +1 -1
- package/dist/ui-kit/FormField/getField.js +2 -94
- package/dist/ui-kit/FormField/getField.js.map +1 -1
- package/dist/ui-kit/FormField/getObjectValidator.js +15 -1
- package/dist/ui-kit/FormField/getObjectValidator.js.map +1 -1
- package/dist/ui-kit/FormField/validators.d.ts +1 -0
- package/dist/ui-kit/FormField/validators.js +4 -1
- package/dist/ui-kit/FormField/validators.js.map +1 -1
- package/dist/ui-kit/Input/Input.js +2 -2
- package/dist/ui-kit/Input/Input.js.map +1 -1
- package/dist/ui-kit/Input/InputFile.d.ts +2 -0
- package/dist/ui-kit/Input/InputFile.js +75 -0
- package/dist/ui-kit/Input/InputFile.js.map +1 -0
- package/dist/ui-kit/Input/InputFileControl.d.ts +2 -0
- package/dist/ui-kit/Input/InputFileControl.js +10 -0
- package/dist/ui-kit/Input/InputFileControl.js.map +1 -0
- package/dist/ui-kit/Input/InputProps.d.ts +6 -1
- package/dist/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
- package/dist/ui-kit/Input/checks/checkFIleExtension.js +12 -0
- package/dist/ui-kit/Input/checks/checkFIleExtension.js.map +1 -0
- package/dist/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
- package/dist/ui-kit/Input/checks/checkFileMimeType.js +20 -0
- package/dist/ui-kit/Input/checks/checkFileMimeType.js.map +1 -0
- package/dist/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
- package/dist/ui-kit/Input/checks/checkFileSignature.js +25 -0
- package/dist/ui-kit/Input/checks/checkFileSignature.js.map +1 -0
- package/dist/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
- package/dist/ui-kit/Input/checks/checkFileSize.js +13 -0
- package/dist/ui-kit/Input/checks/checkFileSize.js.map +1 -0
- package/dist/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
- package/dist/ui-kit/Input/checks/getFileSignature.js +19 -0
- package/dist/ui-kit/Input/checks/getFileSignature.js.map +1 -0
- package/dist/ui-kit/Input/constants.d.ts +6 -0
- package/dist/ui-kit/Input/constants.js +9 -0
- package/dist/ui-kit/Input/constants.js.map +1 -0
- package/dist/ui-kit/Input/renderFileInput.d.ts +12 -0
- package/dist/ui-kit/Input/renderFileInput.js +33 -0
- package/dist/ui-kit/Input/renderFileInput.js.map +1 -0
- package/dist/ui-kit/Input/renderInfoText.d.ts +1 -0
- package/dist/ui-kit/Input/renderInfoText.js +14 -0
- package/dist/ui-kit/Input/renderInfoText.js.map +1 -0
- package/dist/ui-kit/Input/styles.d.ts +2 -0
- package/dist/ui-kit/Input/styles.js +5 -0
- package/dist/ui-kit/Input/styles.js.map +1 -0
- package/dist/ui-kit/Input/useVerifyFile.d.ts +17 -0
- package/dist/ui-kit/Input/useVerifyFile.js +64 -0
- package/dist/ui-kit/Input/useVerifyFile.js.map +1 -0
- package/dist/ui-kit/PreventableEvent.d.ts +4 -0
- package/dist/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
- package/dist/ui-kit/ProgressBar/ProgressBar.js +1 -1
- package/dist/ui-kit/ProgressBar/ProgressBar.js.map +1 -1
- package/dist/utils/animateStepWithMinDuration.d.ts +8 -0
- package/dist/utils/animateStepWithMinDuration.js +26 -0
- package/dist/utils/animateStepWithMinDuration.js.map +1 -0
- package/dist/utils/isDateValid.d.ts +4 -0
- package/dist/utils/isDateValid.js +24 -0
- package/dist/utils/isDateValid.js.map +1 -0
- package/lib/api/LeadServiceAPI.d.ts +10 -3
- package/lib/api/LeadServiceAPI.js +20 -9
- package/lib/api/LeadServiceAPI.js.map +1 -1
- package/lib/api/getSubmitBody.d.ts +201 -97
- package/lib/api/getSubmitBody.js +13 -6
- package/lib/api/getSubmitBody.js.map +1 -1
- package/lib/api/sendFile.d.ts +16 -0
- package/lib/api/sendFile.js +75 -0
- package/lib/api/sendFile.js.map +1 -0
- package/lib/common.css +1 -1
- package/lib/components/ApplicationForm/ApplicationForm.fixture.d.ts +2 -0
- package/lib/components/ApplicationForm/ApplicationForm.js +5 -6
- package/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
- package/lib/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
- package/lib/components/ApplicationForm/constants.d.ts +7 -0
- package/lib/components/ApplicationForm/constants.js +27 -0
- package/lib/components/ApplicationForm/constants.js.map +1 -0
- package/lib/components/ApplicationForm/handlers.d.ts +3 -2
- package/lib/components/ApplicationForm/handlers.js +3 -3
- package/lib/components/ApplicationForm/handlers.js.map +1 -1
- package/lib/components/ApplicationForm/useVerifyPhoneDialogSubmit.js +3 -0
- package/lib/components/ApplicationForm/useVerifyPhoneDialogSubmit.js.map +1 -1
- package/lib/hooks/useDragAndDrop.d.ts +16 -0
- package/lib/hooks/useDragAndDrop.js +26 -0
- package/lib/hooks/useDragAndDrop.js.map +1 -0
- package/lib/model/FormTypeFieldDef.d.ts +1 -1
- package/lib/model/InputTypes.d.ts +1 -1
- package/lib/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
- package/lib/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
- package/lib/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
- package/lib/ui-kit/FormField/Fields/AverageGradeField.js +7 -0
- package/lib/ui-kit/FormField/Fields/AverageGradeField.js.map +1 -0
- package/lib/ui-kit/FormField/Fields/BirthdayField.js +4 -1
- package/lib/ui-kit/FormField/Fields/BirthdayField.js.map +1 -1
- package/lib/ui-kit/FormField/Fields/CommentField.js +1 -1
- package/lib/ui-kit/FormField/Fields/CommentField.js.map +1 -1
- package/lib/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
- package/lib/ui-kit/FormField/Fields/FileIdField.js +5 -0
- package/lib/ui-kit/FormField/Fields/FileIdField.js.map +1 -0
- package/lib/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
- package/lib/ui-kit/FormField/Fields/FileUpload.js +12 -0
- package/lib/ui-kit/FormField/Fields/FileUpload.js.map +1 -0
- package/lib/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
- package/lib/ui-kit/FormField/Fields/InternshipEndDateField.js +21 -0
- package/lib/ui-kit/FormField/Fields/InternshipEndDateField.js.map +1 -0
- package/lib/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
- package/lib/ui-kit/FormField/Fields/InternshipStartDateField.js +21 -0
- package/lib/ui-kit/FormField/Fields/InternshipStartDateField.js.map +1 -0
- package/lib/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
- package/lib/ui-kit/FormField/Fields/SelectField.js +5 -0
- package/lib/ui-kit/FormField/Fields/SelectField.js.map +1 -0
- package/lib/ui-kit/FormField/Fields/TextField.d.ts +2 -0
- package/lib/ui-kit/FormField/Fields/TextField.js +5 -0
- package/lib/ui-kit/FormField/Fields/TextField.js.map +1 -0
- package/lib/ui-kit/FormField/InputsMap.d.ts +62 -0
- package/lib/ui-kit/FormField/InputsMap.js +117 -0
- package/lib/ui-kit/FormField/InputsMap.js.map +1 -0
- package/lib/ui-kit/FormField/NameFieldDef.d.ts +1 -1
- package/lib/ui-kit/FormField/constants.d.ts +3 -0
- package/lib/ui-kit/FormField/constants.js +26 -0
- package/lib/ui-kit/FormField/constants.js.map +1 -1
- package/lib/ui-kit/FormField/getField.js +1 -93
- package/lib/ui-kit/FormField/getField.js.map +1 -1
- package/lib/ui-kit/FormField/getObjectValidator.js +16 -2
- package/lib/ui-kit/FormField/getObjectValidator.js.map +1 -1
- package/lib/ui-kit/FormField/validators.d.ts +1 -0
- package/lib/ui-kit/FormField/validators.js +2 -0
- package/lib/ui-kit/FormField/validators.js.map +1 -1
- package/lib/ui-kit/Input/Input.js +1 -1
- package/lib/ui-kit/Input/Input.js.map +1 -1
- package/lib/ui-kit/Input/InputFile.d.ts +2 -0
- package/lib/ui-kit/Input/InputFile.js +73 -0
- package/lib/ui-kit/Input/InputFile.js.map +1 -0
- package/lib/ui-kit/Input/InputFileControl.d.ts +2 -0
- package/lib/ui-kit/Input/InputFileControl.js +8 -0
- package/lib/ui-kit/Input/InputFileControl.js.map +1 -0
- package/lib/ui-kit/Input/InputProps.d.ts +6 -1
- package/lib/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
- package/lib/ui-kit/Input/checks/checkFIleExtension.js +9 -0
- package/lib/ui-kit/Input/checks/checkFIleExtension.js.map +1 -0
- package/lib/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
- package/lib/ui-kit/Input/checks/checkFileMimeType.js +17 -0
- package/lib/ui-kit/Input/checks/checkFileMimeType.js.map +1 -0
- package/lib/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
- package/lib/ui-kit/Input/checks/checkFileSignature.js +22 -0
- package/lib/ui-kit/Input/checks/checkFileSignature.js.map +1 -0
- package/lib/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
- package/lib/ui-kit/Input/checks/checkFileSize.js +10 -0
- package/lib/ui-kit/Input/checks/checkFileSize.js.map +1 -0
- package/lib/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
- package/lib/ui-kit/Input/checks/getFileSignature.js +16 -0
- package/lib/ui-kit/Input/checks/getFileSignature.js.map +1 -0
- package/lib/ui-kit/Input/constants.d.ts +6 -0
- package/lib/ui-kit/Input/constants.js +7 -0
- package/lib/ui-kit/Input/constants.js.map +1 -0
- package/lib/ui-kit/Input/renderFileInput.d.ts +12 -0
- package/lib/ui-kit/Input/renderFileInput.js +30 -0
- package/lib/ui-kit/Input/renderFileInput.js.map +1 -0
- package/lib/ui-kit/Input/renderInfoText.d.ts +1 -0
- package/lib/ui-kit/Input/renderInfoText.js +11 -0
- package/lib/ui-kit/Input/renderInfoText.js.map +1 -0
- package/lib/ui-kit/Input/styles.d.ts +2 -0
- package/lib/ui-kit/Input/styles.js +3 -0
- package/lib/ui-kit/Input/styles.js.map +1 -0
- package/lib/ui-kit/Input/useVerifyFile.d.ts +17 -0
- package/lib/ui-kit/Input/useVerifyFile.js +61 -0
- package/lib/ui-kit/Input/useVerifyFile.js.map +1 -0
- package/lib/ui-kit/PreventableEvent.d.ts +4 -0
- package/lib/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
- package/lib/ui-kit/ProgressBar/ProgressBar.js +1 -1
- package/lib/ui-kit/ProgressBar/ProgressBar.js.map +1 -1
- package/lib/utils/animateStepWithMinDuration.d.ts +8 -0
- package/lib/utils/animateStepWithMinDuration.js +23 -0
- package/lib/utils/animateStepWithMinDuration.js.map +1 -0
- package/lib/utils/isDateValid.d.ts +4 -0
- package/lib/utils/isDateValid.js +21 -0
- package/lib/utils/isDateValid.js.map +1 -0
- package/mobile/bundle/api/LeadServiceAPI.d.ts +10 -3
- package/mobile/bundle/api/getSubmitBody.d.ts +201 -97
- package/mobile/bundle/api/sendFile.d.ts +16 -0
- package/mobile/bundle/bundle.umd.js +566 -51
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
- package/mobile/bundle/components/ApplicationForm/constants.d.ts +7 -0
- package/mobile/bundle/components/ApplicationForm/handlers.d.ts +3 -2
- package/mobile/bundle/hooks/useDragAndDrop.d.ts +16 -0
- package/mobile/bundle/model/FormTypeFieldDef.d.ts +1 -1
- package/mobile/bundle/model/InputTypes.d.ts +1 -1
- package/mobile/bundle/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
- package/mobile/bundle/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
- package/mobile/bundle/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
- package/mobile/bundle/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
- package/mobile/bundle/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
- package/mobile/bundle/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
- package/mobile/bundle/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
- package/mobile/bundle/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
- package/mobile/bundle/ui-kit/FormField/Fields/TextField.d.ts +2 -0
- package/mobile/bundle/ui-kit/FormField/InputsMap.d.ts +62 -0
- package/mobile/bundle/ui-kit/FormField/NameFieldDef.d.ts +1 -1
- package/mobile/bundle/ui-kit/FormField/constants.d.ts +3 -0
- package/mobile/bundle/ui-kit/FormField/validators.d.ts +1 -0
- package/mobile/bundle/ui-kit/Input/InputFile.d.ts +2 -0
- package/mobile/bundle/ui-kit/Input/InputFileControl.d.ts +2 -0
- package/mobile/bundle/ui-kit/Input/InputProps.d.ts +6 -1
- package/mobile/bundle/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
- package/mobile/bundle/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
- package/mobile/bundle/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
- package/mobile/bundle/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
- package/mobile/bundle/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
- package/mobile/bundle/ui-kit/Input/constants.d.ts +6 -0
- package/mobile/bundle/ui-kit/Input/renderFileInput.d.ts +12 -0
- package/mobile/bundle/ui-kit/Input/renderInfoText.d.ts +1 -0
- package/mobile/bundle/ui-kit/Input/styles.d.ts +2 -0
- package/mobile/bundle/ui-kit/Input/useVerifyFile.d.ts +17 -0
- package/mobile/bundle/ui-kit/PreventableEvent.d.ts +4 -0
- package/mobile/bundle/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
- package/mobile/bundle/utils/animateStepWithMinDuration.d.ts +8 -0
- package/mobile/bundle/utils/isDateValid.d.ts +4 -0
- package/mobile/dist/api/LeadServiceAPI.d.ts +10 -3
- package/mobile/dist/api/LeadServiceAPI.js +20 -9
- package/mobile/dist/api/LeadServiceAPI.js.map +1 -1
- package/mobile/dist/api/getSubmitBody.d.ts +201 -97
- package/mobile/dist/api/getSubmitBody.js +13 -6
- package/mobile/dist/api/getSubmitBody.js.map +1 -1
- package/mobile/dist/api/sendFile.d.ts +16 -0
- package/mobile/dist/api/sendFile.js +78 -0
- package/mobile/dist/api/sendFile.js.map +1 -0
- package/mobile/dist/components/ApplicationForm/ApplicationForm.js +5 -6
- package/mobile/dist/components/ApplicationForm/ApplicationForm.js.map +1 -1
- package/mobile/dist/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
- package/mobile/dist/components/ApplicationForm/constants.d.ts +7 -0
- package/mobile/dist/components/ApplicationForm/constants.js +29 -0
- package/mobile/dist/components/ApplicationForm/constants.js.map +1 -0
- package/mobile/dist/components/ApplicationForm/handlers.d.ts +3 -2
- package/mobile/dist/components/ApplicationForm/handlers.js +3 -3
- package/mobile/dist/components/ApplicationForm/handlers.js.map +1 -1
- package/mobile/dist/components/ApplicationForm/useVerifyPhoneDialogSubmit.js +3 -0
- package/mobile/dist/components/ApplicationForm/useVerifyPhoneDialogSubmit.js.map +1 -1
- package/mobile/dist/hooks/useDragAndDrop.d.ts +16 -0
- package/mobile/dist/hooks/useDragAndDrop.js +29 -0
- package/mobile/dist/hooks/useDragAndDrop.js.map +1 -0
- package/mobile/dist/model/FormTypeFieldDef.d.ts +1 -1
- package/mobile/dist/model/InputTypes.d.ts +1 -1
- package/mobile/dist/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
- package/mobile/dist/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
- package/mobile/dist/ui-kit/FormField/Fields/AverageGradeField.js +9 -0
- package/mobile/dist/ui-kit/FormField/Fields/AverageGradeField.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/BirthdayField.js +4 -1
- package/mobile/dist/ui-kit/FormField/Fields/BirthdayField.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/Fields/CommentField.js +1 -1
- package/mobile/dist/ui-kit/FormField/Fields/CommentField.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
- package/mobile/dist/ui-kit/FormField/Fields/FileIdField.js +7 -0
- package/mobile/dist/ui-kit/FormField/Fields/FileIdField.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
- package/mobile/dist/ui-kit/FormField/Fields/FileUpload.js +14 -0
- package/mobile/dist/ui-kit/FormField/Fields/FileUpload.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
- package/mobile/dist/ui-kit/FormField/Fields/InternshipEndDateField.js +23 -0
- package/mobile/dist/ui-kit/FormField/Fields/InternshipEndDateField.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
- package/mobile/dist/ui-kit/FormField/Fields/InternshipStartDateField.js +23 -0
- package/mobile/dist/ui-kit/FormField/Fields/InternshipStartDateField.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
- package/mobile/dist/ui-kit/FormField/Fields/SelectField.js +7 -0
- package/mobile/dist/ui-kit/FormField/Fields/SelectField.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/Fields/TextField.d.ts +2 -0
- package/mobile/dist/ui-kit/FormField/Fields/TextField.js +7 -0
- package/mobile/dist/ui-kit/FormField/Fields/TextField.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/InputsMap.d.ts +62 -0
- package/mobile/dist/ui-kit/FormField/InputsMap.js +119 -0
- package/mobile/dist/ui-kit/FormField/InputsMap.js.map +1 -0
- package/mobile/dist/ui-kit/FormField/NameFieldDef.d.ts +1 -1
- package/mobile/dist/ui-kit/FormField/constants.d.ts +3 -0
- package/mobile/dist/ui-kit/FormField/constants.js +27 -1
- package/mobile/dist/ui-kit/FormField/constants.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/getField.js +2 -94
- package/mobile/dist/ui-kit/FormField/getField.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/getObjectValidator.js +15 -1
- package/mobile/dist/ui-kit/FormField/getObjectValidator.js.map +1 -1
- package/mobile/dist/ui-kit/FormField/validators.d.ts +1 -0
- package/mobile/dist/ui-kit/FormField/validators.js +4 -1
- package/mobile/dist/ui-kit/FormField/validators.js.map +1 -1
- package/mobile/dist/ui-kit/Input/Input.js +2 -2
- package/mobile/dist/ui-kit/Input/Input.js.map +1 -1
- package/mobile/dist/ui-kit/Input/InputFile.d.ts +2 -0
- package/mobile/dist/ui-kit/Input/InputFile.js +75 -0
- package/mobile/dist/ui-kit/Input/InputFile.js.map +1 -0
- package/mobile/dist/ui-kit/Input/InputFileControl.d.ts +2 -0
- package/mobile/dist/ui-kit/Input/InputFileControl.js +10 -0
- package/mobile/dist/ui-kit/Input/InputFileControl.js.map +1 -0
- package/mobile/dist/ui-kit/Input/InputProps.d.ts +6 -1
- package/mobile/dist/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
- package/mobile/dist/ui-kit/Input/checks/checkFIleExtension.js +12 -0
- package/mobile/dist/ui-kit/Input/checks/checkFIleExtension.js.map +1 -0
- package/mobile/dist/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
- package/mobile/dist/ui-kit/Input/checks/checkFileMimeType.js +20 -0
- package/mobile/dist/ui-kit/Input/checks/checkFileMimeType.js.map +1 -0
- package/mobile/dist/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
- package/mobile/dist/ui-kit/Input/checks/checkFileSignature.js +25 -0
- package/mobile/dist/ui-kit/Input/checks/checkFileSignature.js.map +1 -0
- package/mobile/dist/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
- package/mobile/dist/ui-kit/Input/checks/checkFileSize.js +13 -0
- package/mobile/dist/ui-kit/Input/checks/checkFileSize.js.map +1 -0
- package/mobile/dist/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
- package/mobile/dist/ui-kit/Input/checks/getFileSignature.js +19 -0
- package/mobile/dist/ui-kit/Input/checks/getFileSignature.js.map +1 -0
- package/mobile/dist/ui-kit/Input/constants.d.ts +6 -0
- package/mobile/dist/ui-kit/Input/constants.js +9 -0
- package/mobile/dist/ui-kit/Input/constants.js.map +1 -0
- package/mobile/dist/ui-kit/Input/renderFileInput.d.ts +12 -0
- package/mobile/dist/ui-kit/Input/renderFileInput.js +33 -0
- package/mobile/dist/ui-kit/Input/renderFileInput.js.map +1 -0
- package/mobile/dist/ui-kit/Input/renderInfoText.d.ts +1 -0
- package/mobile/dist/ui-kit/Input/renderInfoText.js +14 -0
- package/mobile/dist/ui-kit/Input/renderInfoText.js.map +1 -0
- package/mobile/dist/ui-kit/Input/styles.d.ts +2 -0
- package/mobile/dist/ui-kit/Input/styles.js +5 -0
- package/mobile/dist/ui-kit/Input/styles.js.map +1 -0
- package/mobile/dist/ui-kit/Input/useVerifyFile.d.ts +17 -0
- package/mobile/dist/ui-kit/Input/useVerifyFile.js +64 -0
- package/mobile/dist/ui-kit/Input/useVerifyFile.js.map +1 -0
- package/mobile/dist/ui-kit/PreventableEvent.d.ts +4 -0
- package/mobile/dist/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
- package/mobile/dist/ui-kit/ProgressBar/ProgressBar.js +1 -1
- package/mobile/dist/ui-kit/ProgressBar/ProgressBar.js.map +1 -1
- package/mobile/dist/utils/animateStepWithMinDuration.d.ts +8 -0
- package/mobile/dist/utils/animateStepWithMinDuration.js +26 -0
- package/mobile/dist/utils/animateStepWithMinDuration.js.map +1 -0
- package/mobile/dist/utils/isDateValid.d.ts +4 -0
- package/mobile/dist/utils/isDateValid.js +24 -0
- package/mobile/dist/utils/isDateValid.js.map +1 -0
- package/mobile/lib/api/LeadServiceAPI.d.ts +10 -3
- package/mobile/lib/api/LeadServiceAPI.js +20 -9
- package/mobile/lib/api/LeadServiceAPI.js.map +1 -1
- package/mobile/lib/api/getSubmitBody.d.ts +201 -97
- package/mobile/lib/api/getSubmitBody.js +13 -6
- package/mobile/lib/api/getSubmitBody.js.map +1 -1
- package/mobile/lib/api/sendFile.d.ts +16 -0
- package/mobile/lib/api/sendFile.js +75 -0
- package/mobile/lib/api/sendFile.js.map +1 -0
- package/mobile/lib/common.css +1 -1
- package/mobile/lib/components/ApplicationForm/ApplicationForm.js +5 -6
- package/mobile/lib/components/ApplicationForm/ApplicationForm.js.map +1 -1
- package/mobile/lib/components/ApplicationForm/ApplicationFormContent.d.ts +8 -2
- package/mobile/lib/components/ApplicationForm/constants.d.ts +7 -0
- package/mobile/lib/components/ApplicationForm/constants.js +27 -0
- package/mobile/lib/components/ApplicationForm/constants.js.map +1 -0
- package/mobile/lib/components/ApplicationForm/handlers.d.ts +3 -2
- package/mobile/lib/components/ApplicationForm/handlers.js +3 -3
- package/mobile/lib/components/ApplicationForm/handlers.js.map +1 -1
- package/mobile/lib/components/ApplicationForm/useVerifyPhoneDialogSubmit.js +3 -0
- package/mobile/lib/components/ApplicationForm/useVerifyPhoneDialogSubmit.js.map +1 -1
- package/mobile/lib/hooks/useDragAndDrop.d.ts +16 -0
- package/mobile/lib/hooks/useDragAndDrop.js +26 -0
- package/mobile/lib/hooks/useDragAndDrop.js.map +1 -0
- package/mobile/lib/model/FormTypeFieldDef.d.ts +1 -1
- package/mobile/lib/model/InputTypes.d.ts +1 -1
- package/mobile/lib/ui-kit/FormField/CustomFieldProps.d.ts +1 -0
- package/mobile/lib/ui-kit/FormField/Fields/AddressBranchField.d.ts +1 -2
- package/mobile/lib/ui-kit/FormField/Fields/AverageGradeField.d.ts +2 -0
- package/mobile/lib/ui-kit/FormField/Fields/AverageGradeField.js +7 -0
- package/mobile/lib/ui-kit/FormField/Fields/AverageGradeField.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/Fields/BirthdayField.js +4 -1
- package/mobile/lib/ui-kit/FormField/Fields/BirthdayField.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/Fields/CommentField.js +1 -1
- package/mobile/lib/ui-kit/FormField/Fields/CommentField.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/Fields/FileIdField.d.ts +2 -0
- package/mobile/lib/ui-kit/FormField/Fields/FileIdField.js +5 -0
- package/mobile/lib/ui-kit/FormField/Fields/FileIdField.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/Fields/FileUpload.d.ts +2 -0
- package/mobile/lib/ui-kit/FormField/Fields/FileUpload.js +12 -0
- package/mobile/lib/ui-kit/FormField/Fields/FileUpload.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/Fields/InternshipEndDateField.d.ts +2 -0
- package/mobile/lib/ui-kit/FormField/Fields/InternshipEndDateField.js +21 -0
- package/mobile/lib/ui-kit/FormField/Fields/InternshipEndDateField.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/Fields/InternshipStartDateField.d.ts +2 -0
- package/mobile/lib/ui-kit/FormField/Fields/InternshipStartDateField.js +21 -0
- package/mobile/lib/ui-kit/FormField/Fields/InternshipStartDateField.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/Fields/SelectField.d.ts +6 -0
- package/mobile/lib/ui-kit/FormField/Fields/SelectField.js +5 -0
- package/mobile/lib/ui-kit/FormField/Fields/SelectField.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/Fields/TextField.d.ts +2 -0
- package/mobile/lib/ui-kit/FormField/Fields/TextField.js +5 -0
- package/mobile/lib/ui-kit/FormField/Fields/TextField.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/InputsMap.d.ts +62 -0
- package/mobile/lib/ui-kit/FormField/InputsMap.js +117 -0
- package/mobile/lib/ui-kit/FormField/InputsMap.js.map +1 -0
- package/mobile/lib/ui-kit/FormField/NameFieldDef.d.ts +1 -1
- package/mobile/lib/ui-kit/FormField/constants.d.ts +3 -0
- package/mobile/lib/ui-kit/FormField/constants.js +26 -0
- package/mobile/lib/ui-kit/FormField/constants.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/getField.js +1 -93
- package/mobile/lib/ui-kit/FormField/getField.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/getObjectValidator.js +16 -2
- package/mobile/lib/ui-kit/FormField/getObjectValidator.js.map +1 -1
- package/mobile/lib/ui-kit/FormField/validators.d.ts +1 -0
- package/mobile/lib/ui-kit/FormField/validators.js +2 -0
- package/mobile/lib/ui-kit/FormField/validators.js.map +1 -1
- package/mobile/lib/ui-kit/Input/Input.js +1 -1
- package/mobile/lib/ui-kit/Input/Input.js.map +1 -1
- package/mobile/lib/ui-kit/Input/InputFile.d.ts +2 -0
- package/mobile/lib/ui-kit/Input/InputFile.js +73 -0
- package/mobile/lib/ui-kit/Input/InputFile.js.map +1 -0
- package/mobile/lib/ui-kit/Input/InputFileControl.d.ts +2 -0
- package/mobile/lib/ui-kit/Input/InputFileControl.js +8 -0
- package/mobile/lib/ui-kit/Input/InputFileControl.js.map +1 -0
- package/mobile/lib/ui-kit/Input/InputProps.d.ts +6 -1
- package/mobile/lib/ui-kit/Input/checks/checkFIleExtension.d.ts +1 -0
- package/mobile/lib/ui-kit/Input/checks/checkFIleExtension.js +9 -0
- package/mobile/lib/ui-kit/Input/checks/checkFIleExtension.js.map +1 -0
- package/mobile/lib/ui-kit/Input/checks/checkFileMimeType.d.ts +1 -0
- package/mobile/lib/ui-kit/Input/checks/checkFileMimeType.js +17 -0
- package/mobile/lib/ui-kit/Input/checks/checkFileMimeType.js.map +1 -0
- package/mobile/lib/ui-kit/Input/checks/checkFileSignature.d.ts +3 -0
- package/mobile/lib/ui-kit/Input/checks/checkFileSignature.js +22 -0
- package/mobile/lib/ui-kit/Input/checks/checkFileSignature.js.map +1 -0
- package/mobile/lib/ui-kit/Input/checks/checkFileSize.d.ts +1 -0
- package/mobile/lib/ui-kit/Input/checks/checkFileSize.js +10 -0
- package/mobile/lib/ui-kit/Input/checks/checkFileSize.js.map +1 -0
- package/mobile/lib/ui-kit/Input/checks/getFileSignature.d.ts +1 -0
- package/mobile/lib/ui-kit/Input/checks/getFileSignature.js +16 -0
- package/mobile/lib/ui-kit/Input/checks/getFileSignature.js.map +1 -0
- package/mobile/lib/ui-kit/Input/constants.d.ts +6 -0
- package/mobile/lib/ui-kit/Input/constants.js +7 -0
- package/mobile/lib/ui-kit/Input/constants.js.map +1 -0
- package/mobile/lib/ui-kit/Input/renderFileInput.d.ts +12 -0
- package/mobile/lib/ui-kit/Input/renderFileInput.js +30 -0
- package/mobile/lib/ui-kit/Input/renderFileInput.js.map +1 -0
- package/mobile/lib/ui-kit/Input/renderInfoText.d.ts +1 -0
- package/mobile/lib/ui-kit/Input/renderInfoText.js +11 -0
- package/mobile/lib/ui-kit/Input/renderInfoText.js.map +1 -0
- package/mobile/lib/ui-kit/Input/styles.d.ts +2 -0
- package/mobile/lib/ui-kit/Input/styles.js +3 -0
- package/mobile/lib/ui-kit/Input/styles.js.map +1 -0
- package/mobile/lib/ui-kit/Input/useVerifyFile.d.ts +17 -0
- package/mobile/lib/ui-kit/Input/useVerifyFile.js +61 -0
- package/mobile/lib/ui-kit/Input/useVerifyFile.js.map +1 -0
- package/mobile/lib/ui-kit/PreventableEvent.d.ts +4 -0
- package/mobile/lib/ui-kit/ProgressBar/ProgressBar.d.ts +1 -0
- package/mobile/lib/ui-kit/ProgressBar/ProgressBar.js +1 -1
- package/mobile/lib/ui-kit/ProgressBar/ProgressBar.js.map +1 -1
- package/mobile/lib/utils/animateStepWithMinDuration.d.ts +8 -0
- package/mobile/lib/utils/animateStepWithMinDuration.js +23 -0
- package/mobile/lib/utils/animateStepWithMinDuration.js.map +1 -0
- package/mobile/lib/utils/isDateValid.d.ts +4 -0
- package/mobile/lib/utils/isDateValid.js +21 -0
- package/mobile/lib/utils/isDateValid.js.map +1 -0
- package/mobile/src/api/LeadServiceAPI.ts +37 -10
- package/mobile/src/api/getSubmitBody.ts +28 -7
- package/mobile/src/api/sendFile.ts +97 -0
- package/mobile/src/components/ApplicationForm/ApplicationForm.example.json +192 -0
- package/mobile/src/components/ApplicationForm/ApplicationForm.tsx +22 -16
- package/mobile/src/components/ApplicationForm/ApplicationFormContent.ts +16 -2
- package/mobile/src/components/ApplicationForm/constants.ts +33 -0
- package/mobile/src/components/ApplicationForm/handlers.ts +5 -3
- package/mobile/src/components/ApplicationForm/useVerifyPhoneDialogSubmit.tsx +3 -0
- package/mobile/src/hooks/useDragAndDrop.ts +48 -0
- package/mobile/src/model/FormTypeFieldDef.ts +2 -1
- package/mobile/src/model/InputTypes.ts +1 -1
- package/mobile/src/ui-kit/FormField/CustomFieldProps.ts +1 -0
- package/mobile/src/ui-kit/FormField/Fields/AddressBranchField.tsx +1 -1
- package/mobile/src/ui-kit/FormField/Fields/AverageGradeField.tsx +14 -0
- package/mobile/src/ui-kit/FormField/Fields/BirthdayField.tsx +12 -7
- package/mobile/src/ui-kit/FormField/Fields/CommentField.tsx +1 -1
- package/mobile/src/ui-kit/FormField/Fields/FileIdField.tsx +7 -0
- package/mobile/src/ui-kit/FormField/Fields/FileUpload.tsx +22 -0
- package/mobile/src/ui-kit/FormField/Fields/InternshipEndDateField.tsx +38 -0
- package/mobile/src/ui-kit/FormField/Fields/InternshipStartDateField.tsx +38 -0
- package/mobile/src/ui-kit/FormField/Fields/SelectField.tsx +12 -0
- package/mobile/src/ui-kit/FormField/Fields/TextField.tsx +7 -0
- package/mobile/src/ui-kit/FormField/InputsMap.tsx +133 -0
- package/mobile/src/ui-kit/FormField/NameFieldDef.ts +17 -1
- package/mobile/src/ui-kit/FormField/constants.tsx +29 -0
- package/mobile/src/ui-kit/FormField/getField.tsx +1 -105
- package/mobile/src/ui-kit/FormField/getObjectValidator.tsx +16 -1
- package/mobile/src/ui-kit/FormField/validators.ts +4 -0
- package/mobile/src/ui-kit/Input/Input.tsx +1 -2
- package/mobile/src/ui-kit/Input/InputFile.tsx +132 -0
- package/mobile/src/ui-kit/Input/InputFileControl.tsx +22 -0
- package/mobile/src/ui-kit/Input/InputProps.ts +10 -1
- package/mobile/src/ui-kit/Input/checks/checkFIleExtension.ts +9 -0
- package/mobile/src/ui-kit/Input/checks/checkFileMimeType.ts +20 -0
- package/mobile/src/ui-kit/Input/checks/checkFileSignature.ts +30 -0
- package/mobile/src/ui-kit/Input/checks/checkFileSize.ts +10 -0
- package/mobile/src/ui-kit/Input/checks/getFileSignature.ts +16 -0
- package/mobile/src/ui-kit/Input/constants.ts +6 -0
- package/mobile/src/ui-kit/Input/renderFileInput.tsx +87 -0
- package/mobile/src/ui-kit/Input/renderInfoText.tsx +15 -0
- package/mobile/src/ui-kit/Input/styles.ts +2 -0
- package/mobile/src/ui-kit/Input/useVerifyFile.ts +100 -0
- package/mobile/src/ui-kit/PreventableEvent.ts +5 -0
- package/mobile/src/ui-kit/ProgressBar/ProgressBar.tsx +7 -2
- package/mobile/src/utils/animateStepWithMinDuration.ts +38 -0
- package/mobile/src/utils/isDateValid.ts +33 -0
- package/package.json +2 -2
- package/src/api/LeadServiceAPI.ts +37 -10
- package/src/api/getSubmitBody.ts +28 -7
- package/src/api/sendFile.ts +97 -0
- package/src/components/ApplicationForm/ApplicationForm.example.json +192 -0
- package/src/components/ApplicationForm/ApplicationForm.fixture.tsx +132 -0
- package/src/components/ApplicationForm/ApplicationForm.tsx +22 -16
- package/src/components/ApplicationForm/ApplicationFormContent.ts +16 -2
- package/src/components/ApplicationForm/constants.ts +33 -0
- package/src/components/ApplicationForm/handlers.ts +5 -3
- package/src/components/ApplicationForm/useVerifyPhoneDialogSubmit.tsx +3 -0
- package/src/hooks/useDragAndDrop.ts +48 -0
- package/src/model/FormTypeFieldDef.ts +2 -1
- package/src/model/InputTypes.ts +1 -1
- package/src/ui-kit/FormField/CustomFieldProps.ts +1 -0
- package/src/ui-kit/FormField/Fields/AddressBranchField.tsx +1 -1
- package/src/ui-kit/FormField/Fields/AverageGradeField.tsx +14 -0
- package/src/ui-kit/FormField/Fields/BirthdayField.tsx +12 -7
- package/src/ui-kit/FormField/Fields/CommentField.tsx +1 -1
- package/src/ui-kit/FormField/Fields/FileIdField.tsx +7 -0
- package/src/ui-kit/FormField/Fields/FileUpload.tsx +22 -0
- package/src/ui-kit/FormField/Fields/InternshipEndDateField.tsx +38 -0
- package/src/ui-kit/FormField/Fields/InternshipStartDateField.tsx +38 -0
- package/src/ui-kit/FormField/Fields/SelectField.tsx +12 -0
- package/src/ui-kit/FormField/Fields/TextField.tsx +7 -0
- package/src/ui-kit/FormField/InputsMap.tsx +133 -0
- package/src/ui-kit/FormField/NameFieldDef.ts +17 -1
- package/src/ui-kit/FormField/constants.tsx +29 -0
- package/src/ui-kit/FormField/getField.tsx +1 -105
- package/src/ui-kit/FormField/getObjectValidator.tsx +16 -1
- package/src/ui-kit/FormField/validators.ts +4 -0
- package/src/ui-kit/Input/Input.tsx +1 -2
- package/src/ui-kit/Input/InputFile.tsx +132 -0
- package/src/ui-kit/Input/InputFileControl.tsx +22 -0
- package/src/ui-kit/Input/InputProps.ts +10 -1
- package/src/ui-kit/Input/checks/checkFIleExtension.ts +9 -0
- package/src/ui-kit/Input/checks/checkFileMimeType.ts +20 -0
- package/src/ui-kit/Input/checks/checkFileSignature.ts +30 -0
- package/src/ui-kit/Input/checks/checkFileSize.ts +10 -0
- package/src/ui-kit/Input/checks/getFileSignature.ts +16 -0
- package/src/ui-kit/Input/constants.ts +6 -0
- package/src/ui-kit/Input/renderFileInput.tsx +87 -0
- package/src/ui-kit/Input/renderInfoText.tsx +15 -0
- package/src/ui-kit/Input/styles.ts +2 -0
- package/src/ui-kit/Input/useVerifyFile.ts +100 -0
- package/src/ui-kit/PreventableEvent.ts +5 -0
- package/src/ui-kit/ProgressBar/ProgressBar.tsx +7 -2
- package/src/utils/animateStepWithMinDuration.ts +38 -0
- package/src/utils/isDateValid.ts +33 -0
|
@@ -1211,6 +1211,27 @@
|
|
|
1211
1211
|
const cyrillicPattern = /^[а-яё-]*$/i;
|
|
1212
1212
|
const isCyrillic = (_ = '') => cyrillicPattern.test(_);
|
|
1213
1213
|
|
|
1214
|
+
const isDateValid = (value, limits) => {
|
|
1215
|
+
if (!value || isNaN(value.getTime())) {
|
|
1216
|
+
return false;
|
|
1217
|
+
}
|
|
1218
|
+
const { minLimit, maxLimit } = limits;
|
|
1219
|
+
const time = value.getTime();
|
|
1220
|
+
return isValidMin(time, minLimit) && isValidMax(time, maxLimit);
|
|
1221
|
+
};
|
|
1222
|
+
const isValidMin = (time, minLimit) => {
|
|
1223
|
+
if (!minLimit || isNaN(minLimit.getTime())) {
|
|
1224
|
+
return true;
|
|
1225
|
+
}
|
|
1226
|
+
return time > minLimit.getTime();
|
|
1227
|
+
};
|
|
1228
|
+
const isValidMax = (time, maxLimit) => {
|
|
1229
|
+
if (!maxLimit || isNaN(maxLimit.getTime())) {
|
|
1230
|
+
return true;
|
|
1231
|
+
}
|
|
1232
|
+
return time < maxLimit.getTime();
|
|
1233
|
+
};
|
|
1234
|
+
|
|
1214
1235
|
const required = validator((_) => _ !== null && _ !== undefined && _ !== '');
|
|
1215
1236
|
|
|
1216
1237
|
const ERROR_MESSAGE$1 = 'Некорректно заполненное поле';
|
|
@@ -1227,6 +1248,7 @@
|
|
|
1227
1248
|
const emailValidate = (email) => /^[^\s@]+@[^\s@]+\.[a-zA-Z]{2,4}$/.test(email);
|
|
1228
1249
|
const emailValidator = (errorMsg) => validator((_) => emailValidate(_))(errorMsg);
|
|
1229
1250
|
const isValidInnLength = (value) => typeof value === 'string' && (value.length === 10 || value.length === 12);
|
|
1251
|
+
const birthdayValidator = (errorMsg) => validator((_) => isDateValid(_, { maxLimit: new Date() }))(errorMsg);
|
|
1230
1252
|
|
|
1231
1253
|
const validatorObj$1 = {
|
|
1232
1254
|
fullName: defaultValidator(),
|
|
@@ -1249,7 +1271,7 @@
|
|
|
1249
1271
|
surname: nameValidator('Укажите свою фамилию на кириллице'),
|
|
1250
1272
|
name: nameValidator('Укажите своё имя на кириллице (без сокращений)'),
|
|
1251
1273
|
middleName: nameValidator('Укажите своё отчество на кириллице'),
|
|
1252
|
-
birthday:
|
|
1274
|
+
birthday: birthdayValidator('Укажите дату рождения'),
|
|
1253
1275
|
phone: phoneValidator('Укажите номер телефона'),
|
|
1254
1276
|
email: emailValidator('Укажите электронную почту'),
|
|
1255
1277
|
inn: innValidator('Укажите ИНН'),
|
|
@@ -1263,6 +1285,20 @@
|
|
|
1263
1285
|
callbackTime: defaultValidator(),
|
|
1264
1286
|
questionProduct: defaultValidator(),
|
|
1265
1287
|
russianPhone: russianPhoneValidator('Укажите номер телефона'),
|
|
1288
|
+
cityOfResidence: defaultValidator(),
|
|
1289
|
+
internshipStartDate: defaultValidator(),
|
|
1290
|
+
internshipEndDate: defaultValidator(),
|
|
1291
|
+
university: defaultValidator(),
|
|
1292
|
+
fieldOfStudy: defaultValidator(),
|
|
1293
|
+
courseYear: defaultValidator(),
|
|
1294
|
+
graduationYear: defaultValidator(),
|
|
1295
|
+
averageGrade: defaultValidator(),
|
|
1296
|
+
skillsAndKnowledge: defaultValidator(),
|
|
1297
|
+
educationLevel: defaultSelectValidator(),
|
|
1298
|
+
motivationForInternship: defaultValidator(),
|
|
1299
|
+
workExperience: defaultValidator(),
|
|
1300
|
+
internshipDirection: defaultValidator(),
|
|
1301
|
+
workingHours: defaultValidator(),
|
|
1266
1302
|
};
|
|
1267
1303
|
const getFormValidator = (fieldDefs, externalValidatorObj = {}) => {
|
|
1268
1304
|
const requiredFields = fieldDefs.filter((_) => Boolean(_?.required && _?.name));
|
|
@@ -1423,6 +1459,32 @@
|
|
|
1423
1459
|
{ id: 'conversionTransactions', text: 'Конверсионные операции' },
|
|
1424
1460
|
{ id: 'otherIssues', text: 'Иные вопросы ВЭД' },
|
|
1425
1461
|
];
|
|
1462
|
+
const INTERNSHIP_DIRECTION = [
|
|
1463
|
+
{ key: 'economics', text: 'Экономика и финансы' },
|
|
1464
|
+
{ key: 'audit', text: 'Аудит' },
|
|
1465
|
+
{ key: 'law', text: 'Юриспруденция' },
|
|
1466
|
+
{ key: 'it', text: 'ИТ' },
|
|
1467
|
+
{ key: 'marketing', text: 'Маркетинг' },
|
|
1468
|
+
{ key: 'hr', text: 'HR' },
|
|
1469
|
+
{ key: 'analytics', text: 'Аналитика' },
|
|
1470
|
+
{ key: 'management', text: 'Менеджмент' },
|
|
1471
|
+
{ key: 'administration', text: 'ГМУ' },
|
|
1472
|
+
{ key: 'design', text: 'Дизайн' },
|
|
1473
|
+
{ key: 'journalism', text: 'Журналистика' },
|
|
1474
|
+
{ key: 'contact', text: 'Контакт-центр' },
|
|
1475
|
+
{ key: 'other', text: 'Другое' },
|
|
1476
|
+
];
|
|
1477
|
+
const WORKING_HOURS = [
|
|
1478
|
+
{ key: '20', text: '20' },
|
|
1479
|
+
{ key: '30', text: '30' },
|
|
1480
|
+
{ key: '40', text: '40' },
|
|
1481
|
+
];
|
|
1482
|
+
const EDUCATION_LEVEL = [
|
|
1483
|
+
{ key: 'bachelor', text: 'Бакалавриат' },
|
|
1484
|
+
{ key: 'specialist', text: 'Специалитет' },
|
|
1485
|
+
{ key: 'master', text: 'Магистратура' },
|
|
1486
|
+
{ key: 'doctorate', text: 'Аспирантура' },
|
|
1487
|
+
];
|
|
1426
1488
|
|
|
1427
1489
|
// TODO Базовая функицональность всех Control - надо вынести и привязать к required флагу
|
|
1428
1490
|
const getRequiredLabel = ({ label, required = false }) => label && required ? `${label}*` : label;
|
|
@@ -1474,6 +1536,9 @@
|
|
|
1474
1536
|
|
|
1475
1537
|
const getValidStyle = (valid) => (valid ? inputValidStyle : 'border-error');
|
|
1476
1538
|
|
|
1539
|
+
const defaultStyle$1 = 'w-full border rounded-md text-primary-text outline-none p-m';
|
|
1540
|
+
const borderStyle = 'border-dashed';
|
|
1541
|
+
|
|
1477
1542
|
const Input = JSX(
|
|
1478
1543
|
// eslint-disable-next-line max-lines-per-function
|
|
1479
1544
|
({ key, className, id, name, type = 'text', label, placeholder, value = '', valid = true, pattern, autoFocus = false, isTextarea = false, disabled = false, children, onChange, onFocus, onBlur, }) => {
|
|
@@ -1492,7 +1557,6 @@
|
|
|
1492
1557
|
const ariaLabel = label ?? name ?? id;
|
|
1493
1558
|
return (jsxs("div", { className: style('relative', className), children: [jsxs("label", { className: "space-y-xs", children: [renderLabel$1(label), isTextarea ? (jsx("textarea", { className: style('block resize-y min-h-24', defaultStyle$1, validStyle), id: style('textarea', id), value: value, name: name || id, placeholder: placeholder, disabled: disabled, "aria-label": ariaLabel, onChange: handleChange, onFocus: onFocus, onBlur: onBlur }, key)) : (jsx("input", { ref: inputRef, className: style('h-14', defaultStyle$1, paddingStyle, validStyle), id: id, type: type, value: value, name: name || id, placeholder: placeholder, pattern: pattern, disabled: disabled, "aria-label": ariaLabel, onChange: handleChange, onFocus: onFocus, onBlur: onBlur }, key))] }), children] }));
|
|
1494
1559
|
});
|
|
1495
|
-
const defaultStyle$1 = 'w-full border rounded-md text-primary-text outline-none p-m';
|
|
1496
1560
|
|
|
1497
1561
|
const InputWrapper = JSX(({ className, label, value = '', error, errors, type, isInteger, placeholder, maxLength, inputRef, isOpen, onOpen, onClose, required, onChange = noop, ...rest }) => {
|
|
1498
1562
|
const popupRef = useOutsideClick(onClose);
|
|
@@ -1729,6 +1793,33 @@
|
|
|
1729
1793
|
|
|
1730
1794
|
const API_BASE_URI = '/api/v1';
|
|
1731
1795
|
|
|
1796
|
+
const ENDPOINT_MAPPING = {
|
|
1797
|
+
lead: {
|
|
1798
|
+
withTypeForm: true,
|
|
1799
|
+
isNaturalEndpoint: true,
|
|
1800
|
+
},
|
|
1801
|
+
sendcorporatelead: {
|
|
1802
|
+
withTypeForm: true,
|
|
1803
|
+
isNaturalEndpoint: false,
|
|
1804
|
+
},
|
|
1805
|
+
practice: {
|
|
1806
|
+
withTypeForm: false,
|
|
1807
|
+
isNaturalEndpoint: true,
|
|
1808
|
+
},
|
|
1809
|
+
internship: {
|
|
1810
|
+
withTypeForm: false,
|
|
1811
|
+
isNaturalEndpoint: true,
|
|
1812
|
+
},
|
|
1813
|
+
initcorporatelead: {
|
|
1814
|
+
withTypeForm: false,
|
|
1815
|
+
isNaturalEndpoint: false,
|
|
1816
|
+
},
|
|
1817
|
+
callback: {
|
|
1818
|
+
withTypeForm: false,
|
|
1819
|
+
isNaturalEndpoint: true,
|
|
1820
|
+
},
|
|
1821
|
+
};
|
|
1822
|
+
|
|
1732
1823
|
const formatDate = (date, toTimeStamp = false) => {
|
|
1733
1824
|
if (typeof date === 'string') {
|
|
1734
1825
|
return date.split('-').reverse().join('.');
|
|
@@ -1743,16 +1834,22 @@
|
|
|
1743
1834
|
|
|
1744
1835
|
const formatPhone = (phone) => phone?.replace(/[^+\d]/g, '');
|
|
1745
1836
|
|
|
1746
|
-
const getSubmitBody = (body,
|
|
1747
|
-
const
|
|
1837
|
+
const getSubmitBody = ({ body, endpoint, router }) => {
|
|
1838
|
+
const isNaturalPerson = endpoint && ENDPOINT_MAPPING[endpoint].isNaturalEndpoint;
|
|
1839
|
+
const withTypeForm = endpoint && ENDPOINT_MAPPING[endpoint].withTypeForm;
|
|
1840
|
+
const { typeForm, region, phone = '', email, birthday, desiredMeetingDate, fullRegion, addressBranch, secondaryPhone = '', bankEmpolee, applicationDate, partnerName, russianPhone, partnerSymbolCode, internshipEndDate, internshipStartDate, ...staticBody } = body;
|
|
1748
1841
|
return {
|
|
1749
|
-
typeForm,
|
|
1842
|
+
...(withTypeForm ? { typeForm } : {}),
|
|
1750
1843
|
...getRegion(region, isNaturalPerson),
|
|
1751
1844
|
...getEmail(email, isNaturalPerson),
|
|
1752
1845
|
...getPhone(phone),
|
|
1753
1846
|
...getPhone(russianPhone),
|
|
1754
|
-
...getFormatDate(
|
|
1755
|
-
...
|
|
1847
|
+
...(isNaturalPerson ? getFormatDate([[birthday, 'birthday']]) : { birthday }),
|
|
1848
|
+
...getFormatDate([
|
|
1849
|
+
[desiredMeetingDate, 'desiredMeetingDate'],
|
|
1850
|
+
[internshipEndDate, 'internshipEndDate'],
|
|
1851
|
+
[internshipStartDate, 'internshipStartDate'],
|
|
1852
|
+
]),
|
|
1756
1853
|
...(typeForm === 'FEEDBACK'
|
|
1757
1854
|
? {}
|
|
1758
1855
|
: {
|
|
@@ -1776,7 +1873,7 @@
|
|
|
1776
1873
|
};
|
|
1777
1874
|
};
|
|
1778
1875
|
const getPhone = (phone) => (phone ? { phone: formatPhone(phone) } : {});
|
|
1779
|
-
const getFormatDate = (
|
|
1876
|
+
const getFormatDate = (dates) => Object.fromEntries(dates.filter(([value]) => value).map(([value, key]) => [key, formatDate(value)]));
|
|
1780
1877
|
const getRegion = (region, isNaturalPerson = true) => ({
|
|
1781
1878
|
[isNaturalPerson ? 'regionBranch' : 'region']: region,
|
|
1782
1879
|
});
|
|
@@ -1799,12 +1896,16 @@
|
|
|
1799
1896
|
}
|
|
1800
1897
|
: {};
|
|
1801
1898
|
|
|
1899
|
+
// eslint-disable-next-line max-lines-per-function
|
|
1802
1900
|
function LeadServiceAPI() {
|
|
1803
|
-
async function send(body, router,
|
|
1804
|
-
const
|
|
1805
|
-
const
|
|
1806
|
-
const
|
|
1807
|
-
|
|
1901
|
+
async function send({ body, router, endpoint }) {
|
|
1902
|
+
const calculatedEndpoint = endpoint && getEndpoint(endpoint, body);
|
|
1903
|
+
const url = `${API_BASE_URI}/${calculatedEndpoint}`;
|
|
1904
|
+
const submitBody = getSubmitBody({
|
|
1905
|
+
body,
|
|
1906
|
+
endpoint,
|
|
1907
|
+
router,
|
|
1908
|
+
});
|
|
1808
1909
|
try {
|
|
1809
1910
|
const response = await LeadServiceFetch(url, submitBody);
|
|
1810
1911
|
if (!response?.ok) {
|
|
@@ -1831,11 +1932,11 @@
|
|
|
1831
1932
|
return null;
|
|
1832
1933
|
}
|
|
1833
1934
|
}
|
|
1834
|
-
async function checkCode({ reqId, code, body }) {
|
|
1935
|
+
async function checkCode({ reqId, code, body, router, }) {
|
|
1835
1936
|
const submitBody = {
|
|
1836
1937
|
requestId: reqId,
|
|
1837
1938
|
confimationCode: code,
|
|
1838
|
-
leadRequest: getSubmitBody(body,
|
|
1939
|
+
leadRequest: getSubmitBody({ body, router }),
|
|
1839
1940
|
};
|
|
1840
1941
|
try {
|
|
1841
1942
|
const response = await LeadServiceFetch(`${API_BASE_URI}/confirmCorporateLead`, submitBody);
|
|
@@ -1845,9 +1946,9 @@
|
|
|
1845
1946
|
return null;
|
|
1846
1947
|
}
|
|
1847
1948
|
}
|
|
1848
|
-
async function sendPhoneCallRequest(body,
|
|
1949
|
+
async function sendPhoneCallRequest(body, endpoint) {
|
|
1849
1950
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
1850
|
-
const submitBody = getSubmitBody(body,
|
|
1951
|
+
const submitBody = getSubmitBody({ body, endpoint });
|
|
1851
1952
|
const formatSubmitBody = getFormatCallbackSubmitBody(submitBody);
|
|
1852
1953
|
try {
|
|
1853
1954
|
const response = await LeadServiceFetch(`${API_BASE_URI}/callback`, formatSubmitBody);
|
|
@@ -1882,6 +1983,13 @@
|
|
|
1882
1983
|
clientTimezone: getUserTimezoneOffset(),
|
|
1883
1984
|
};
|
|
1884
1985
|
};
|
|
1986
|
+
const getEndpoint = (endpoint, body) => {
|
|
1987
|
+
const { serviceDirection } = body;
|
|
1988
|
+
if (endpoint === 'lead' && serviceDirection !== 'Юридическое лицо / ИП') {
|
|
1989
|
+
return 'lead';
|
|
1990
|
+
}
|
|
1991
|
+
return endpoint;
|
|
1992
|
+
};
|
|
1885
1993
|
|
|
1886
1994
|
const handleAspects = async ({ aspectsAttributes, aspects, ev }) => {
|
|
1887
1995
|
for (const { aspectName, params } of aspectsAttributes ?? []) {
|
|
@@ -1911,8 +2019,8 @@
|
|
|
1911
2019
|
},
|
|
1912
2020
|
});
|
|
1913
2021
|
};
|
|
1914
|
-
const handleCallback = async ({ formatData, data, aspects = {}, ev, typeForm, responseTypeDialog, onSuccess = noop, }) => {
|
|
1915
|
-
const response = await API$2.sendPhoneCallRequest(formatData);
|
|
2022
|
+
const handleCallback = async ({ formatData, data, aspects = {}, ev, typeForm, responseTypeDialog, onSuccess = noop, endpoint, }) => {
|
|
2023
|
+
const response = await API$2.sendPhoneCallRequest(formatData, endpoint);
|
|
1916
2024
|
onSuccess();
|
|
1917
2025
|
if (response?.status === 'success') {
|
|
1918
2026
|
responseTypeDialog.open({ ok: true, typeForm });
|
|
@@ -1932,7 +2040,7 @@
|
|
|
1932
2040
|
}
|
|
1933
2041
|
};
|
|
1934
2042
|
const handleDefault = async ({ formatData, data, aspects = {}, ev, router, responseTypeDialog, endpoint, withSnowplow, }) => {
|
|
1935
|
-
const response = await API$2.send(formatData, router, endpoint
|
|
2043
|
+
const response = await API$2.send({ body: formatData, router, endpoint });
|
|
1936
2044
|
const ok = Boolean(response);
|
|
1937
2045
|
responseTypeDialog.open({ ok });
|
|
1938
2046
|
if (ok) {
|
|
@@ -2208,6 +2316,10 @@
|
|
|
2208
2316
|
|
|
2209
2317
|
const ApplierTypeField = JSX(({ field, input }) => (jsx(SelectControl, { label: "\u0422\u0438\u043F \u043E\u0431\u0440\u0430\u0442\u0438\u0432\u0448\u0435\u0433\u043E\u0441\u044F", ...input, options: APPLIER_TYPES, ...field('applierType') })));
|
|
2210
2318
|
|
|
2319
|
+
const AverageGradeField = JSX(({ field, input }) => {
|
|
2320
|
+
return (jsx(InputControl, { label: "\u0421\u0440\u0435\u0434\u043D\u0438\u0439 \u0431\u0430\u043B\u043B \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F", type: "number", ...field(input?.name ?? ''), ...input }));
|
|
2321
|
+
});
|
|
2322
|
+
|
|
2211
2323
|
const BankEmpoleeField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0424\u0418\u041E \u0438\u043B\u0438 \u0434\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u0432\u0448\u0435\u0433\u043E \u0412\u0430\u0441 \u0441\u043E\u0442\u0440\u0443\u0434\u043D\u0438\u043A\u0430 \u0411\u0430\u043D\u043A\u0430", ...field(input?.name ?? ''), ...input })));
|
|
2212
2324
|
|
|
2213
2325
|
const useElementSpace = (ref, heightEl) => {
|
|
@@ -2322,7 +2434,7 @@
|
|
|
2322
2434
|
const START_YEAR = 1940;
|
|
2323
2435
|
const getYears = () => Array.from({ length: new Date().getFullYear() - START_YEAR + 1 }, (_, i) => START_YEAR + i);
|
|
2324
2436
|
|
|
2325
|
-
const ICON_PROPS$
|
|
2437
|
+
const ICON_PROPS$2 = {
|
|
2326
2438
|
name: 'CalendarIcon',
|
|
2327
2439
|
iconVersion: 'black',
|
|
2328
2440
|
width: '24',
|
|
@@ -2357,7 +2469,7 @@
|
|
|
2357
2469
|
useEffect(() => {
|
|
2358
2470
|
updateSelectedDate({ inputValue, setSelectedMonth, setSelectedYear, onChange });
|
|
2359
2471
|
}, [inputValue]);
|
|
2360
|
-
return (jsxs("div", { onClick: onInputClick, className: style('relative', className), children: [jsx("input", { ref: ref, className: "h-full w-full px-m text-l text-black focus-visible:outline-none rounded-none", value: inputValue, type: "text", onChange: handleChange, onBlur: onBlur, disabled: disabled }), disabled ? null : jsx(Icon, { className: "mr-s", ...ICON_PROPS$
|
|
2472
|
+
return (jsxs("div", { onClick: onInputClick, className: style('relative', className), children: [jsx("input", { ref: ref, className: "h-full w-full px-m text-l text-black focus-visible:outline-none rounded-none", value: inputValue, type: "text", onChange: handleChange, onBlur: onBlur, disabled: disabled }), disabled ? null : jsx(Icon, { className: "mr-s", ...ICON_PROPS$2 })] }));
|
|
2361
2473
|
});
|
|
2362
2474
|
const isValidYear = (year) => Number(year) >= START_YEAR && Number(year) <= new Date().getFullYear();
|
|
2363
2475
|
const isValidMonth = (month) => Number(month) > 0 && Number(month) < 13;
|
|
@@ -2464,7 +2576,7 @@
|
|
|
2464
2576
|
onChange?.(new Date(selectedYear, selectedMonth, Math.min(maxDateOfMonth, value.getDate())));
|
|
2465
2577
|
};
|
|
2466
2578
|
|
|
2467
|
-
const ICON_PROPS = {
|
|
2579
|
+
const ICON_PROPS$1 = {
|
|
2468
2580
|
name: 'ArrowUpIcon',
|
|
2469
2581
|
iconVersion: 'black',
|
|
2470
2582
|
width: '24',
|
|
@@ -2506,18 +2618,21 @@
|
|
|
2506
2618
|
setSelectedYear,
|
|
2507
2619
|
}), isCalendarVisible && !disabled ? (jsxs("div", { className: style('absolute bg-white z-20 select-none', {
|
|
2508
2620
|
'bottom-full': spaceAbove,
|
|
2509
|
-
}), children: [jsxs("div", { className: "flex gap-s", children: [jsx("div", { className: "my-auto", onClick: handlePrevMonth, children: jsx(Icon, { ...ICON_PROPS, className: "-rotate-90 cursor-pointer" }) }), jsx(Select, { onChange: handleSelectMonth, value: { key: months[selectedMonth] }, options: monthsOptions, ...SELECT_PROPS }), jsx(Select, { onChange: handleSelectYear, value: { key: String(selectedYear) }, options: yearsOptions, ...SELECT_PROPS }), jsx("div", { className: "my-auto", onClick: handleNextMonth, children: jsx(Icon, { ...ICON_PROPS, className: "rotate-90 cursor-pointer" }) })] }), jsx(Calendar, { today: value, currentMonth: selectedMonth, currentYear: selectedYear, min: minDate, max: maxDate, weekends: weekends, onDateSelect: handleDateSelect })] })) : null] })] }));
|
|
2621
|
+
}), children: [jsxs("div", { className: "flex gap-s", children: [jsx("div", { className: "my-auto", onClick: handlePrevMonth, children: jsx(Icon, { ...ICON_PROPS$1, className: "-rotate-90 cursor-pointer" }) }), jsx(Select, { onChange: handleSelectMonth, value: { key: months[selectedMonth] }, options: monthsOptions, ...SELECT_PROPS }), jsx(Select, { onChange: handleSelectYear, value: { key: String(selectedYear) }, options: yearsOptions, ...SELECT_PROPS }), jsx("div", { className: "my-auto", onClick: handleNextMonth, children: jsx(Icon, { ...ICON_PROPS$1, className: "rotate-90 cursor-pointer" }) })] }), jsx(Calendar, { today: value, currentMonth: selectedMonth, currentYear: selectedYear, min: minDate, max: maxDate, weekends: weekends, onDateSelect: handleDateSelect })] })) : null] })] }));
|
|
2510
2622
|
});
|
|
2511
2623
|
|
|
2512
2624
|
const DatePickerControl = JSX(({ className, label, error, required, ...rest }) => (jsxs("div", { className: style('shrink-0 w-full', className), children: [jsx(DatePicker, { label: getRequiredLabel({ label, required }), valid: Boolean(!error), ...rest }), renderErrorText(error)] })));
|
|
2513
2625
|
|
|
2514
|
-
const BirthdayField = JSX(({ field, input }) =>
|
|
2626
|
+
const BirthdayField = JSX(({ field, input }) => {
|
|
2627
|
+
const today = new Date();
|
|
2628
|
+
return (jsx(DatePickerControl, { label: input?.label || 'Дата рождения', ...field(input?.name ?? ''), maxDate: today, ...input }));
|
|
2629
|
+
});
|
|
2515
2630
|
|
|
2516
2631
|
const CallbackTimeField = JSX(({ field, input }) => (jsx(SelectControl, { label: "\u041A\u043E\u0433\u0434\u0430 \u043F\u0435\u0440\u0435\u0437\u0432\u043E\u043D\u0438\u0442\u044C?", ...input, options: CALLBACK_TIME, ...field(input?.name ?? '') })));
|
|
2517
2632
|
|
|
2518
2633
|
const CollectionCountField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u043E\u0431\u044A\u0435\u043A\u0442\u043E\u0432 \u0438\u043D\u043A\u0430\u0441\u0441\u0430\u0446\u0438\u0438", isInteger: true, ...field(input?.name ?? ''), ...input })));
|
|
2519
2634
|
|
|
2520
|
-
const CommentField = JSX(({ field, input }) => (jsx(InputControl, { className: "col-span-2", ...field(input?.name ?? ''), placeholder:
|
|
2635
|
+
const CommentField = JSX(({ field, input }) => (jsx(InputControl, { className: "col-span-2", ...field(input?.name ?? ''), placeholder: input?.placeholder ?? 'Ваше сообщение', isTextarea: true, ...input })));
|
|
2521
2636
|
|
|
2522
2637
|
function useAsyncEffect(effect, deps) {
|
|
2523
2638
|
useEffect(() => {
|
|
@@ -2656,6 +2771,355 @@
|
|
|
2656
2771
|
|
|
2657
2772
|
const FeedbackMethodField = JSX(({ field, input }) => (jsx(SelectControl, { label: "\u0421\u043F\u043E\u0441\u043E\u0431 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u0432\u0435\u0442\u0430", options: FEEDBACK_METHOD, ...field(input?.name ?? ''), ...input })));
|
|
2658
2773
|
|
|
2774
|
+
const ACCEPTED_EXTENSIONS_TEXT = 'Поддерживаемые форматы файлов';
|
|
2775
|
+
const MAX_SIZE_TEXT = 'Максимальный размер файла';
|
|
2776
|
+
const EMPTY_FILE_ERROR_TEXT = 'Ошибка загрузки файла. Убедитесь, что файл не пустой';
|
|
2777
|
+
const EXTENSIONS_ERROR_TEXT = 'Файл не соответствует допустимым расширениям';
|
|
2778
|
+
const MAX_SIZE_ERROR_TEXT = 'Файл превышает допустимый размер';
|
|
2779
|
+
const DEFAULT_ERROR_TEXT = 'Ошибка при загрузке файла. Попробуйте загрузить файл позднее';
|
|
2780
|
+
|
|
2781
|
+
const FILE_CHECK_URL = 'uploadFile';
|
|
2782
|
+
const SUCCESS_STATUS = 'SUCCESS';
|
|
2783
|
+
async function sendFile({ file, onProgress = noop }) {
|
|
2784
|
+
return new Promise((resolve, reject) => {
|
|
2785
|
+
const formData = new FormData();
|
|
2786
|
+
formData.append('file', file);
|
|
2787
|
+
let processingAnimation = undefined;
|
|
2788
|
+
const xhr = new XMLHttpRequest();
|
|
2789
|
+
let lastProgress;
|
|
2790
|
+
xhr.upload.onprogress = (event) => {
|
|
2791
|
+
if (event.lengthComputable) {
|
|
2792
|
+
const percentComplete = (event.loaded / event.total) * 50;
|
|
2793
|
+
onProgress(percentComplete);
|
|
2794
|
+
}
|
|
2795
|
+
};
|
|
2796
|
+
xhr.upload.onload = () => {
|
|
2797
|
+
let current = 50;
|
|
2798
|
+
onProgress(current);
|
|
2799
|
+
processingAnimation = window.setInterval(() => {
|
|
2800
|
+
current += 0.2;
|
|
2801
|
+
lastProgress = current;
|
|
2802
|
+
if (current < 90) {
|
|
2803
|
+
onProgress(current);
|
|
2804
|
+
}
|
|
2805
|
+
else {
|
|
2806
|
+
onProgress(90);
|
|
2807
|
+
window.clearInterval(processingAnimation);
|
|
2808
|
+
}
|
|
2809
|
+
}, 100);
|
|
2810
|
+
};
|
|
2811
|
+
xhr.onload = async () => {
|
|
2812
|
+
try {
|
|
2813
|
+
const response = JSON.parse(xhr.responseText);
|
|
2814
|
+
if (response.status === 'SUCCESS') {
|
|
2815
|
+
window.clearInterval(processingAnimation);
|
|
2816
|
+
await animateToFull(lastProgress, onProgress);
|
|
2817
|
+
resolve(response);
|
|
2818
|
+
}
|
|
2819
|
+
else {
|
|
2820
|
+
reject(new Error(response.errorDesc ?? DEFAULT_ERROR_TEXT));
|
|
2821
|
+
}
|
|
2822
|
+
}
|
|
2823
|
+
catch (e) {
|
|
2824
|
+
reject(new Error(DEFAULT_ERROR_TEXT));
|
|
2825
|
+
}
|
|
2826
|
+
};
|
|
2827
|
+
xhr.onerror = () => {
|
|
2828
|
+
reject(new Error(DEFAULT_ERROR_TEXT));
|
|
2829
|
+
};
|
|
2830
|
+
xhr.open('POST', `${API_BASE_URI}/${FILE_CHECK_URL}`);
|
|
2831
|
+
xhr.send(formData);
|
|
2832
|
+
});
|
|
2833
|
+
}
|
|
2834
|
+
const animateToFull = (current, onProgress) => new Promise((resolve) => {
|
|
2835
|
+
let value = current;
|
|
2836
|
+
const increment = (100 - current) / 30;
|
|
2837
|
+
const interval = 16;
|
|
2838
|
+
const step = () => {
|
|
2839
|
+
value += increment;
|
|
2840
|
+
if (value >= 100) {
|
|
2841
|
+
onProgress(100);
|
|
2842
|
+
resolve();
|
|
2843
|
+
}
|
|
2844
|
+
else {
|
|
2845
|
+
onProgress(value);
|
|
2846
|
+
setTimeout(step, interval);
|
|
2847
|
+
}
|
|
2848
|
+
};
|
|
2849
|
+
step();
|
|
2850
|
+
});
|
|
2851
|
+
|
|
2852
|
+
const useDragAndDrop = ({ onFileSelected, onReset, uploadResponse, onFileChanged, }) => {
|
|
2853
|
+
const [isDragActive, setIsDragActive] = useState(false);
|
|
2854
|
+
const handleDrag = (e) => {
|
|
2855
|
+
e.preventDefault();
|
|
2856
|
+
if (uploadResponse) {
|
|
2857
|
+
return;
|
|
2858
|
+
}
|
|
2859
|
+
setIsDragActive(true);
|
|
2860
|
+
};
|
|
2861
|
+
const handleLeave = () => setIsDragActive(false);
|
|
2862
|
+
const handleDrop = async (e) => {
|
|
2863
|
+
e.preventDefault();
|
|
2864
|
+
if (uploadResponse) {
|
|
2865
|
+
return;
|
|
2866
|
+
}
|
|
2867
|
+
onReset();
|
|
2868
|
+
setIsDragActive(false);
|
|
2869
|
+
const file = e.dataTransfer?.files?.[0];
|
|
2870
|
+
if (file) {
|
|
2871
|
+
await onFileSelected({ file, onFileChanged });
|
|
2872
|
+
}
|
|
2873
|
+
};
|
|
2874
|
+
return { handleDrag, handleLeave, handleDrop, isDragActive };
|
|
2875
|
+
};
|
|
2876
|
+
|
|
2877
|
+
const ProgressBar = JSX(({ step = 10, description, showPercentage = true, isOnlyInteger = false }) => (jsxs("div", { children: [jsx("div", { className: "h-4 w-full bg-gray relative", children: jsx("div", { className: "h-4 bg-green", style: { width: `${step}%` } }) }), jsxs("div", { className: "relative", children: [showPercentage ? (jsxs("div", { className: "absolute left-2/4 text-green", children: [isOnlyInteger ? Math.round(step) : step, "%"] })) : null, description ? jsx("div", { className: "text-right pr-m text-gray", children: description }) : null] })] })));
|
|
2878
|
+
|
|
2879
|
+
const ICON_PROPS = {
|
|
2880
|
+
name: 'DocIcon',
|
|
2881
|
+
iconVersion: 'black',
|
|
2882
|
+
width: '24',
|
|
2883
|
+
height: '24',
|
|
2884
|
+
};
|
|
2885
|
+
const renderFileInput = ({ label, inputRef, id, key, type, name, pattern, disabled, onChange = noop, onFocus, onBlur, extensions, uploadResponse, file, }) => {
|
|
2886
|
+
const ariaLabel = label ?? name ?? id;
|
|
2887
|
+
return (jsx("div", { children: uploadResponse?.status === SUCCESS_STATUS ? (renderFileName(file)) : (jsxs("div", { className: "flex items-center space-x-2", children: [jsx(Icon, { className: "inline-block", ...ICON_PROPS }), renderLabel$1(label), jsx("input", { ref: inputRef, className: style('h-14 hidden'), id: id, type: type, name: name || id, pattern: pattern, disabled: disabled, "aria-label": ariaLabel, onChange: (e) => {
|
|
2888
|
+
e?.target?.files && onChange(e?.target?.files[0]);
|
|
2889
|
+
}, onFocus: onFocus, onBlur: onBlur, accept: extensionsToAccept(extensions) }, key)] })) }));
|
|
2890
|
+
};
|
|
2891
|
+
const extensionsToAccept = (extensions = []) => {
|
|
2892
|
+
return extensions
|
|
2893
|
+
.map((ext) => {
|
|
2894
|
+
const str = String(ext).trim();
|
|
2895
|
+
return str.startsWith('.') ? str : '.' + str;
|
|
2896
|
+
})
|
|
2897
|
+
.map((ext) => ext.toLowerCase())
|
|
2898
|
+
.filter((ext, index, arr) => arr.indexOf(ext) === index)
|
|
2899
|
+
.join(', ');
|
|
2900
|
+
};
|
|
2901
|
+
const renderFileName = (file) => jsx("span", { children: file?.name });
|
|
2902
|
+
|
|
2903
|
+
const renderInfoText = (extensions, maxSize) => {
|
|
2904
|
+
const extensionsMessage = extensions
|
|
2905
|
+
? `${ACCEPTED_EXTENSIONS_TEXT} - ${extensions.join(', ')}. `
|
|
2906
|
+
: '';
|
|
2907
|
+
const maxSizeMessage = maxSize ? `${MAX_SIZE_TEXT} - ${maxSize}Мб.` : '';
|
|
2908
|
+
return (jsx(Text, { size: "text-xs", font: "font-light", color: "text-secondary-text", children: extensionsMessage + maxSizeMessage }));
|
|
2909
|
+
};
|
|
2910
|
+
|
|
2911
|
+
const animateStepWithMinDuration = ({ from, to, onUpdate = noop, minDuration = 300, }) => {
|
|
2912
|
+
return new Promise((resolve) => {
|
|
2913
|
+
const startTime = performance.now();
|
|
2914
|
+
const animate = () => {
|
|
2915
|
+
const currentTime = performance.now();
|
|
2916
|
+
const elapsed = currentTime - startTime;
|
|
2917
|
+
const animationProgress = Math.min(elapsed / minDuration, 1);
|
|
2918
|
+
const easeProgress = 1 - Math.pow(1 - animationProgress, 3);
|
|
2919
|
+
const value = from + (to - from) * easeProgress;
|
|
2920
|
+
onUpdate(value);
|
|
2921
|
+
if (animationProgress < 1) {
|
|
2922
|
+
requestAnimationFrame(animate);
|
|
2923
|
+
}
|
|
2924
|
+
else {
|
|
2925
|
+
onUpdate(to);
|
|
2926
|
+
resolve();
|
|
2927
|
+
}
|
|
2928
|
+
};
|
|
2929
|
+
requestAnimationFrame(animate);
|
|
2930
|
+
});
|
|
2931
|
+
};
|
|
2932
|
+
|
|
2933
|
+
const checkFileExtension = async (file, extensions) => {
|
|
2934
|
+
const fileExt = file.name.split('.')[1];
|
|
2935
|
+
console.log(fileExt, extensions);
|
|
2936
|
+
if (!extensions?.includes(fileExt)) {
|
|
2937
|
+
throw new Error(EXTENSIONS_ERROR_TEXT);
|
|
2938
|
+
}
|
|
2939
|
+
};
|
|
2940
|
+
|
|
2941
|
+
const EXT_TO_MIME = {
|
|
2942
|
+
pdf: 'application/pdf',
|
|
2943
|
+
doc: 'application/msword',
|
|
2944
|
+
docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
|
|
2945
|
+
pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
|
|
2946
|
+
};
|
|
2947
|
+
const checkFileMimeType = async (file, extensions) => {
|
|
2948
|
+
const fileMimeType = file?.type ?? '';
|
|
2949
|
+
const expectedMimeTypes = (extensions || [])
|
|
2950
|
+
.map((ext) => EXT_TO_MIME[ext])
|
|
2951
|
+
.filter((mime) => mime !== undefined);
|
|
2952
|
+
if (!expectedMimeTypes.includes(fileMimeType)) {
|
|
2953
|
+
throw new Error(EXTENSIONS_ERROR_TEXT);
|
|
2954
|
+
}
|
|
2955
|
+
};
|
|
2956
|
+
|
|
2957
|
+
const getFileSignature = (file) => {
|
|
2958
|
+
return new Promise((resolve, reject) => {
|
|
2959
|
+
const reader = new FileReader();
|
|
2960
|
+
reader.onload = () => {
|
|
2961
|
+
const buffer = reader.result;
|
|
2962
|
+
const bytes = new Uint8Array(buffer);
|
|
2963
|
+
const hex = Array.from(bytes)
|
|
2964
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
2965
|
+
.join(' ');
|
|
2966
|
+
resolve(hex);
|
|
2967
|
+
};
|
|
2968
|
+
reader.onerror = reject;
|
|
2969
|
+
return file && reader.readAsArrayBuffer(file.slice(0, 8));
|
|
2970
|
+
});
|
|
2971
|
+
};
|
|
2972
|
+
|
|
2973
|
+
const SIGNATURES = {
|
|
2974
|
+
pdf: '25 50 44 46 2d',
|
|
2975
|
+
docx: '50 4b 03 04',
|
|
2976
|
+
pptx: '50 4b 03 04',
|
|
2977
|
+
xlsx: '50 4b 03 04',
|
|
2978
|
+
doc: 'D0 CF 11 E0 A1 B1 1A E1',
|
|
2979
|
+
};
|
|
2980
|
+
const checkFileSignature = async (file, expectedTypes) => {
|
|
2981
|
+
const hexSignature = await getFileSignature(file);
|
|
2982
|
+
const isValid = (expectedTypes ?? []).some((type) => {
|
|
2983
|
+
const expectedSignature = SIGNATURES[type]?.toLowerCase();
|
|
2984
|
+
console.log(expectedSignature);
|
|
2985
|
+
console.log(hexSignature);
|
|
2986
|
+
return expectedSignature && hexSignature.startsWith(expectedSignature);
|
|
2987
|
+
});
|
|
2988
|
+
if (!isValid) {
|
|
2989
|
+
throw new Error(EXTENSIONS_ERROR_TEXT);
|
|
2990
|
+
}
|
|
2991
|
+
};
|
|
2992
|
+
|
|
2993
|
+
const checkFileSize = async (file, maxSizeMB) => {
|
|
2994
|
+
if (maxSizeMB && file.size > maxSizeMB * 1024 * 1024) {
|
|
2995
|
+
throw new Error(MAX_SIZE_ERROR_TEXT);
|
|
2996
|
+
}
|
|
2997
|
+
if (file.size === 0) {
|
|
2998
|
+
throw new Error(EMPTY_FILE_ERROR_TEXT);
|
|
2999
|
+
}
|
|
3000
|
+
};
|
|
3001
|
+
|
|
3002
|
+
const DEBOUNCE_DELAY = 500;
|
|
3003
|
+
const useVerifyFile = ({ onUploadError = noop, onFileSelected = noop, extensions, maxSizeMB, onUploadResponse = noop, }) => {
|
|
3004
|
+
const [progress, setProgress] = useState(0);
|
|
3005
|
+
const [isFileUploading, setIsFileUploading] = useState(false);
|
|
3006
|
+
const debouncedOnFileUploaded = useMemo(() => debounce((isUploading) => setIsFileUploading(isUploading), DEBOUNCE_DELAY), [setIsFileUploading]);
|
|
3007
|
+
const debouncedOnUploadError = useMemo(() => debounce((message) => onUploadError(message), DEBOUNCE_DELAY), [onUploadError]);
|
|
3008
|
+
const debouncedOnUploadResponse = useMemo(() => debounce((response) => onUploadResponse(response), DEBOUNCE_DELAY), [onUploadResponse]);
|
|
3009
|
+
const verifyFile = async ({ file, onFileChanged = noop }) => {
|
|
3010
|
+
onFileSelected(file);
|
|
3011
|
+
setIsFileUploading(true);
|
|
3012
|
+
const checks = [
|
|
3013
|
+
() => checkFileExtension(file, extensions),
|
|
3014
|
+
() => checkFileSize(file, maxSizeMB),
|
|
3015
|
+
() => checkFileSignature(file, extensions),
|
|
3016
|
+
() => checkFileMimeType(file, extensions),
|
|
3017
|
+
];
|
|
3018
|
+
const checkProgressStep = 50 / checks.length;
|
|
3019
|
+
let currentProgress = 0;
|
|
3020
|
+
try {
|
|
3021
|
+
for (let i = 0; i < checks.length; i++) {
|
|
3022
|
+
const checkPromise = checks[i];
|
|
3023
|
+
await checkPromise();
|
|
3024
|
+
const targetProgress = (i + 1) * checkProgressStep;
|
|
3025
|
+
await animateStepWithMinDuration({
|
|
3026
|
+
from: currentProgress,
|
|
3027
|
+
to: targetProgress,
|
|
3028
|
+
onUpdate: setProgress,
|
|
3029
|
+
minDuration: 300,
|
|
3030
|
+
});
|
|
3031
|
+
currentProgress = targetProgress;
|
|
3032
|
+
}
|
|
3033
|
+
const response = await sendFile({
|
|
3034
|
+
file,
|
|
3035
|
+
onProgress: setProgress,
|
|
3036
|
+
});
|
|
3037
|
+
debouncedOnUploadResponse(response);
|
|
3038
|
+
onFileChanged(response?.fileId ?? '');
|
|
3039
|
+
if (response?.status === SUCCESS_STATUS) {
|
|
3040
|
+
debouncedOnFileUploaded?.(false);
|
|
3041
|
+
}
|
|
3042
|
+
}
|
|
3043
|
+
catch (e) {
|
|
3044
|
+
const errorMessage = e instanceof Error ? e.message : DEFAULT_ERROR_TEXT;
|
|
3045
|
+
debouncedOnUploadError(errorMessage);
|
|
3046
|
+
onFileChanged('');
|
|
3047
|
+
}
|
|
3048
|
+
debouncedOnFileUploaded?.(false);
|
|
3049
|
+
};
|
|
3050
|
+
return { verifyFile, isFileUploading, progress };
|
|
3051
|
+
};
|
|
3052
|
+
|
|
3053
|
+
const InputFile = JSX(
|
|
3054
|
+
// eslint-disable-next-line max-lines-per-function
|
|
3055
|
+
({ key, className, id, name, type = 'file', label, valid = true, pattern, autoFocus = false, extensions, children, onFocus, onBlur, maxSizeMB, error, onFileChanged = noop, }) => {
|
|
3056
|
+
const inputRef = useRef(null);
|
|
3057
|
+
const [selectedFile, setSelectedFile] = useState(null);
|
|
3058
|
+
const [uploadError, setUploadError] = useState('');
|
|
3059
|
+
const [uploadResponse, setUploadResponse] = useState(null);
|
|
3060
|
+
const { verifyFile, isFileUploading, progress } = useVerifyFile({
|
|
3061
|
+
onUploadError: setUploadError,
|
|
3062
|
+
onUploadResponse: setUploadResponse,
|
|
3063
|
+
onFileSelected: setSelectedFile,
|
|
3064
|
+
extensions,
|
|
3065
|
+
maxSizeMB,
|
|
3066
|
+
});
|
|
3067
|
+
useEffect(() => {
|
|
3068
|
+
if (autoFocus) {
|
|
3069
|
+
inputRef.current?.focus();
|
|
3070
|
+
}
|
|
3071
|
+
}, [autoFocus, inputRef]);
|
|
3072
|
+
const handleFileChange = async (file) => {
|
|
3073
|
+
handleResetFile();
|
|
3074
|
+
if (file) {
|
|
3075
|
+
await verifyFile({ file, onFileChanged });
|
|
3076
|
+
}
|
|
3077
|
+
};
|
|
3078
|
+
const handleResetFile = () => {
|
|
3079
|
+
setSelectedFile(null);
|
|
3080
|
+
setUploadError('');
|
|
3081
|
+
setUploadResponse(null);
|
|
3082
|
+
onFileChanged('');
|
|
3083
|
+
};
|
|
3084
|
+
const { handleDrag, handleLeave, handleDrop, isDragActive } = useDragAndDrop({
|
|
3085
|
+
onReset: handleResetFile,
|
|
3086
|
+
onFileSelected: verifyFile,
|
|
3087
|
+
uploadResponse,
|
|
3088
|
+
onFileChanged,
|
|
3089
|
+
});
|
|
3090
|
+
const paddingStyle = children ? 'pr-3xl' : '';
|
|
3091
|
+
const validStyle = getValidStyle(valid);
|
|
3092
|
+
const activeDragStyle = isDragActive ? 'border-primary-hover' : '';
|
|
3093
|
+
return (jsxs("div", { className: style('relative', className), onDragEnter: handleDrag, onDragOver: handleDrag, onDragLeave: handleLeave, onDrop: handleDrop, children: [jsx("label", { className: style('h-14 cursor-pointer space-y-xs block', defaultStyle$1, paddingStyle, borderStyle, validStyle, activeDragStyle), children: isFileUploading ? (jsx("div", { children: jsx(ProgressBar, { step: progress, isOnlyInteger: true }) })) : (renderFileInput({
|
|
3094
|
+
label,
|
|
3095
|
+
inputRef,
|
|
3096
|
+
id,
|
|
3097
|
+
key,
|
|
3098
|
+
type,
|
|
3099
|
+
name,
|
|
3100
|
+
pattern,
|
|
3101
|
+
disabled: Boolean(uploadResponse || isFileUploading),
|
|
3102
|
+
onChange: handleFileChange,
|
|
3103
|
+
onFocus,
|
|
3104
|
+
onBlur,
|
|
3105
|
+
extensions,
|
|
3106
|
+
uploadResponse,
|
|
3107
|
+
file: selectedFile,
|
|
3108
|
+
})) }), uploadResponse?.status === SUCCESS_STATUS ? (jsx(CloseButton, { className: "absolute top-0 right-0 z-10", onClose: handleResetFile })) : null, renderInfoText(extensions, maxSizeMB), renderErrorText(error || uploadError), children] }));
|
|
3109
|
+
});
|
|
3110
|
+
|
|
3111
|
+
const InputFileControl = JSX(({ label, value = '', error, type, inputRef, required, ...rest }) => {
|
|
3112
|
+
return (jsx("div", { ref: inputRef, children: jsx(InputFile, { type: type || 'file', "aria-label": label, label: getRequiredLabel({ label, required }), valid: Boolean(!error), value: value, error: error, ...rest }) }));
|
|
3113
|
+
});
|
|
3114
|
+
|
|
3115
|
+
const FileUploadField = JSX(({ field, input }) => {
|
|
3116
|
+
const [fileId, setFileId] = useState('');
|
|
3117
|
+
useEffect(() => {
|
|
3118
|
+
field('fileId')?.onChange?.(fileId);
|
|
3119
|
+
}, [fileId]);
|
|
3120
|
+
return (jsx(InputFileControl, { type: "file", label: input?.name ?? '', ...field(input?.name ?? ''), ...input, onFileChanged: setFileId }));
|
|
3121
|
+
});
|
|
3122
|
+
|
|
2659
3123
|
const FullNameField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0424\u0418\u041E", ...field(input?.name ?? ''), ...input })));
|
|
2660
3124
|
|
|
2661
3125
|
const FullRegionField = JSX(({ field, input, params }) => {
|
|
@@ -2670,6 +3134,38 @@
|
|
|
2670
3134
|
|
|
2671
3135
|
const InnField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u0418\u041D\u041D", isInteger: true, maxLength: 12, ...input, ...field(input?.name ?? '') })));
|
|
2672
3136
|
|
|
3137
|
+
const INTERNSHIP_END_DATE_ERROR = 'Некорректно заполненное поле';
|
|
3138
|
+
const InternshipEndDateField = JSX(({ field, input }) => {
|
|
3139
|
+
const [startDate, setStartDate] = useState();
|
|
3140
|
+
const [internshipEndDateError, setInternshipEndDateError] = useState('');
|
|
3141
|
+
const [internshipEndDateValue, setInternshipEndDateValue] = useState();
|
|
3142
|
+
useEffect(() => {
|
|
3143
|
+
setStartDate(field('internshipStartDate').value);
|
|
3144
|
+
}, [field('internshipStartDate').value]);
|
|
3145
|
+
const handleInputChange = (value) => {
|
|
3146
|
+
setInternshipEndDateValue(value);
|
|
3147
|
+
field(input?.name ?? '')?.onChange?.(value);
|
|
3148
|
+
setInternshipEndDateError(isDateValid(value, { minLimit: startDate }) ? '' : INTERNSHIP_END_DATE_ERROR);
|
|
3149
|
+
};
|
|
3150
|
+
return (jsx(DatePickerControl, { label: input?.label || 'Дата окончания практики', ...field(input?.name ?? ''), ...input, value: internshipEndDateValue, error: field(input?.name ?? '')?.error || internshipEndDateError, errors: [field(input?.name ?? '')?.error || internshipEndDateError], onChange: handleInputChange, minDate: startDate }));
|
|
3151
|
+
});
|
|
3152
|
+
|
|
3153
|
+
const INTERNSHIP_START_DATE_ERROR = 'Некорректно заполненное поле';
|
|
3154
|
+
const InternshipStartDateField = JSX(({ field, input }) => {
|
|
3155
|
+
const [endDate, setEndDate] = useState();
|
|
3156
|
+
const [internshipStartDateError, setInternshipStartDateError] = useState('');
|
|
3157
|
+
const [internshipStartDateValue, setInternshipStartDateValue] = useState();
|
|
3158
|
+
useEffect(() => {
|
|
3159
|
+
setEndDate(field('internshipEndDate').value);
|
|
3160
|
+
}, [field('internshipEndDate').value]);
|
|
3161
|
+
const handleInputChange = (value) => {
|
|
3162
|
+
setInternshipStartDateValue(value);
|
|
3163
|
+
field(input?.name ?? '')?.onChange?.(value);
|
|
3164
|
+
setInternshipStartDateError(isDateValid(value, { maxLimit: endDate }) ? '' : INTERNSHIP_START_DATE_ERROR);
|
|
3165
|
+
};
|
|
3166
|
+
return (jsx(DatePickerControl, { label: input?.label || 'Дата начала практики', ...field(input?.name ?? ''), ...input, value: internshipStartDateValue, error: internshipStartDateError || field(input?.name ?? '')?.error, errors: [internshipStartDateError ?? field(input?.name ?? '')?.error], onChange: handleInputChange, maxDate: endDate }));
|
|
3167
|
+
});
|
|
3168
|
+
|
|
2673
3169
|
const CheckboxWithError = JSX(({ className, text, value, key, disabled, error, onChange }) => (jsxs("div", { className: style('shrink-0', className), children: [jsx(Checkbox, { text: text, value: value, disabled: disabled, onChange: onChange }, key), renderErrorText(error)] })));
|
|
2674
3170
|
|
|
2675
3171
|
const IsClientField = JSX(({ field, input }) => (jsx(CheckboxWithError, { ...field(input?.name ?? ''), ...input, text: '\u042F\u0432\u043B\u044F\u044E\u0441\u044C \u043A\u043B\u0438\u0435\u043D\u0442\u043E\u043C \u0431\u0430\u043D\u043A\u0430 \u0410\u041E "\u0420\u043E\u0441\u0441\u0435\u043B\u044C\u0445\u043E\u0437\u0431\u0430\u043D\u043A"' })));
|
|
@@ -2800,6 +3296,8 @@
|
|
|
2800
3296
|
: withValidator(fieldPhone, validatorObj$1.secondaryPhone)) }));
|
|
2801
3297
|
});
|
|
2802
3298
|
|
|
3299
|
+
const SelectField$1 = JSX(({ field, input, label, options }) => (jsx(SelectControl, { label: label, options: options, ...field(input?.name ?? ''), ...input })));
|
|
3300
|
+
|
|
2803
3301
|
const ServiceDirectionField = JSX(({ field, input }) => (jsx(SelectControl, { label: "\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u043D\u0438\u044F", placeholder: "\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u043D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435", options: SERVICE_DIRECTIONS, ...field(input?.name ?? ''), ...input })));
|
|
2804
3302
|
|
|
2805
3303
|
const SituationDescriptionField = JSX(({ field, input }) => (jsx(InputControl, { label: "\u041E\u043F\u0438\u0441\u0430\u043D\u0438\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438", ...input, ...field('situationDescription') })));
|
|
@@ -2813,6 +3311,8 @@
|
|
|
2813
3311
|
const ITEMS_CREDIT_TERM = ['От 1 мес', 'До 15 лет'];
|
|
2814
3312
|
const TermField = JSX(({ field }) => (jsx(InputRange, { title: "\u0421\u0440\u043E\u043A, \u043C\u0435\u0441\u044F\u0446\u0435\u0432", items: ITEMS_CREDIT_TERM, min: MIN_CREDIT_TERM, max: MAX_CREDIT_TERM, ...field('term') })));
|
|
2815
3313
|
|
|
3314
|
+
const TextField = JSX(({ field, input, label }) => (jsx(InputControl, { label: label, maxLength: 60, ...field(input?.name ?? ''), ...input })));
|
|
3315
|
+
|
|
2816
3316
|
const UltraPremiumField = JSX(({ field, input }) => (jsx(SelectControl, { label: "\u0422\u0438\u043F \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u043D\u0438\u044F", options: SERVICE_TYPES, ...field(input?.name ?? ''), ...input })));
|
|
2817
3317
|
|
|
2818
3318
|
const orientationStyleMap = {
|
|
@@ -2833,22 +3333,6 @@
|
|
|
2833
3333
|
|
|
2834
3334
|
const ConsentToReceiveMaterialsField = JSX(({ field, input }) => (jsx(Checkbox, { text: "\u0421\u043E\u0433\u043B\u0430\u0441\u0435\u043D \u043D\u0430 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u0435 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0445 \u0438 \u0430\u043D\u0430\u043B\u0438\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0445 \u043C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u043E\u0432 \u043F\u043E \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u0435", ...field(input?.name ?? ''), ...input })));
|
|
2835
3335
|
|
|
2836
|
-
const RefWrapper = JSX(({ onFieldRef = noop, children }) => {
|
|
2837
|
-
const ref = useRef(null);
|
|
2838
|
-
useEffect(() => {
|
|
2839
|
-
if (ref.current) {
|
|
2840
|
-
onFieldRef(ref.current);
|
|
2841
|
-
}
|
|
2842
|
-
}, []);
|
|
2843
|
-
return jsx("div", { ref: ref, children: children });
|
|
2844
|
-
});
|
|
2845
|
-
|
|
2846
|
-
function shouldRenderField({ input, field, }) {
|
|
2847
|
-
const { condition } = input;
|
|
2848
|
-
const { value } = field(condition?.name || '');
|
|
2849
|
-
return !condition || condition?.values?.includes(value?.key ?? value);
|
|
2850
|
-
}
|
|
2851
|
-
|
|
2852
3336
|
const PRODUCT_REF = {
|
|
2853
3337
|
$ref: '/wcms-resources/outservice-productlist.json',
|
|
2854
3338
|
};
|
|
@@ -2899,7 +3383,39 @@
|
|
|
2899
3383
|
questionProduct: QuestionProductField,
|
|
2900
3384
|
callbackTime: CallbackTimeField,
|
|
2901
3385
|
russianPhone: PhoneField,
|
|
3386
|
+
cityOfResidence: (props) => jsx(TextField, { ...props, label: "\u0413\u043E\u0440\u043E\u0434 \u043F\u0440\u043E\u0436\u0438\u0432\u0430\u043D\u0438\u044F" }),
|
|
3387
|
+
internshipStartDate: InternshipStartDateField,
|
|
3388
|
+
internshipEndDate: InternshipEndDateField,
|
|
3389
|
+
university: (props) => jsx(TextField, { ...props, label: "\u0412\u0423\u0417" }),
|
|
3390
|
+
courseYear: (props) => jsx(TextField, { ...props, label: "\u041A\u0443\u0440\u0441" }),
|
|
3391
|
+
graduationYear: (props) => jsx(TextField, { ...props, label: "\u0413\u043E\u0434 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F" }),
|
|
3392
|
+
fieldOfStudy: (props) => jsx(TextField, { ...props, label: "\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F" }),
|
|
3393
|
+
educationLevel: (props) => (jsx(SelectField$1, { ...props, label: "\u0421\u0442\u0443\u043F\u0435\u043D\u044C \u043E\u0431\u0443\u0447\u0435\u043D\u0438\u044F", options: EDUCATION_LEVEL })),
|
|
3394
|
+
averageGrade: AverageGradeField,
|
|
3395
|
+
skillsAndKnowledge: CommentField,
|
|
3396
|
+
workExperience: CommentField,
|
|
3397
|
+
motivationForInternship: CommentField,
|
|
3398
|
+
internshipDirection: (props) => (jsx(SelectField$1, { ...props, label: "\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0441\u0442\u0430\u0436\u0438\u0440\u043E\u0432\u043A\u0438", options: INTERNSHIP_DIRECTION })),
|
|
3399
|
+
workingHours: (props) => (jsx(SelectField$1, { ...props, label: "\u041A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0440\u0430\u0431\u043E\u0447\u0438\u0445 \u0447\u0430\u0441\u043E\u0432", options: WORKING_HOURS })),
|
|
3400
|
+
fileUpload: FileUploadField,
|
|
2902
3401
|
};
|
|
3402
|
+
|
|
3403
|
+
const RefWrapper = JSX(({ onFieldRef = noop, children }) => {
|
|
3404
|
+
const ref = useRef(null);
|
|
3405
|
+
useEffect(() => {
|
|
3406
|
+
if (ref.current) {
|
|
3407
|
+
onFieldRef(ref.current);
|
|
3408
|
+
}
|
|
3409
|
+
}, []);
|
|
3410
|
+
return jsx("div", { ref: ref, children: children });
|
|
3411
|
+
});
|
|
3412
|
+
|
|
3413
|
+
function shouldRenderField({ input, field, }) {
|
|
3414
|
+
const { condition } = input;
|
|
3415
|
+
const { value } = field(condition?.name || '');
|
|
3416
|
+
return !condition || condition?.values?.includes(value?.key ?? value);
|
|
3417
|
+
}
|
|
3418
|
+
|
|
2903
3419
|
const getField = (field, params, externalInputs = {}) => (input, i) => {
|
|
2904
3420
|
const fieldsRegister = {
|
|
2905
3421
|
...InputsMap$1,
|
|
@@ -3012,6 +3528,7 @@
|
|
|
3012
3528
|
const API$1 = LeadServiceAPI();
|
|
3013
3529
|
const useVerifyPhoneDialogSubmit$1 = ({ values, onSuccess, formatData, reqId, }) => {
|
|
3014
3530
|
const timer = Math.max(getTimer(Date.now()), 0);
|
|
3531
|
+
const router = useRouter();
|
|
3015
3532
|
const [errorText, setErrorText] = useState('');
|
|
3016
3533
|
const [isLoading, { setTrue: startLoading, setFalse: endLoading }] = useBool(false);
|
|
3017
3534
|
const [timeNextReq, setTimeNextReq] = useState(timer);
|
|
@@ -3024,6 +3541,7 @@
|
|
|
3024
3541
|
code: values.join(''),
|
|
3025
3542
|
body: formatData,
|
|
3026
3543
|
reqId,
|
|
3544
|
+
router,
|
|
3027
3545
|
});
|
|
3028
3546
|
if (response?.errorDesc) {
|
|
3029
3547
|
setErrorText(response?.errorDesc);
|
|
@@ -3095,7 +3613,7 @@
|
|
|
3095
3613
|
const verifyPhoneDialog = useDialog(VerifyPhoneDialog$1);
|
|
3096
3614
|
const handleSubmit = useCallback(async (formData, ev) => {
|
|
3097
3615
|
const formatData = getFormatData({ ...formData, ...additionalParams });
|
|
3098
|
-
await executeHandler(
|
|
3616
|
+
await executeHandler({
|
|
3099
3617
|
formatData,
|
|
3100
3618
|
ev,
|
|
3101
3619
|
typeForm,
|
|
@@ -3105,9 +3623,8 @@
|
|
|
3105
3623
|
responseTypeDialog,
|
|
3106
3624
|
verifyPhoneDialog,
|
|
3107
3625
|
onSuccess,
|
|
3108
|
-
endpoint,
|
|
3109
3626
|
withSnowplow,
|
|
3110
|
-
});
|
|
3627
|
+
}, endpoint);
|
|
3111
3628
|
}, [typeForm]);
|
|
3112
3629
|
const [, { field, onSubmit }] = useForm(initialFormState, {
|
|
3113
3630
|
resetOnSubmit: true,
|
|
@@ -3123,9 +3640,9 @@
|
|
|
3123
3640
|
typeForm,
|
|
3124
3641
|
})] }), isContacts ? renderContacts() : null] }));
|
|
3125
3642
|
});
|
|
3126
|
-
const executeHandler = async (
|
|
3127
|
-
const handler = handlerMap[endpoint] || handlerMap.default;
|
|
3128
|
-
await handler(context);
|
|
3643
|
+
const executeHandler = async (context, endpoint) => {
|
|
3644
|
+
const handler = (endpoint && handlerMap[endpoint]) || handlerMap.default;
|
|
3645
|
+
await handler({ ...context, endpoint });
|
|
3129
3646
|
};
|
|
3130
3647
|
|
|
3131
3648
|
const mapProductTypeToName = {
|
|
@@ -8991,8 +9508,6 @@
|
|
|
8991
9508
|
const showIncreasedPercents = (currentCashback, cashback) => INCREASED_PERCENTS.includes(currentCashback.percent.key) ||
|
|
8992
9509
|
!cashback.some((_) => INCREASED_PERCENTS.includes(_.percent.key));
|
|
8993
9510
|
|
|
8994
|
-
const ProgressBar = JSX(({ step = 10, description, showPercentage = true }) => (jsxs("div", { children: [jsx("div", { className: "h-4 w-full bg-gray relative", children: jsx("div", { className: "h-4 bg-green", style: { width: `${step}%` } }) }), jsxs("div", { className: "relative", children: [showPercentage ? jsxs("div", { className: "absolute left-2/4 text-green", children: [step, "%"] }) : null, description ? jsx("div", { className: "text-right pr-m text-gray", children: description }) : null] })] })));
|
|
8995
|
-
|
|
8996
9511
|
const CreditCardFormProgress = JSX(({ step = 1, totalSteps = 6, stepsTitles = [] }) => {
|
|
8997
9512
|
const progress = useMemo(() => ((step + 1) / totalSteps) * 100, [step, totalSteps]);
|
|
8998
9513
|
return (jsx("div", { className: "py-lg px-5xl bg-white col-span-12", children: jsxs("div", { children: [jsxs("span", { className: "font-bold mr-s", children: ["\u0428\u0430\u0433 ", step + 1, " \u0438\u0437 ", totalSteps, "."] }), stepsTitles[step] || null, jsx(ProgressBar, { step: progress, showPercentage: false })] }) }));
|
|
@@ -12949,7 +13464,7 @@
|
|
|
12949
13464
|
slots: () => [HEADER_SLOT, FOOTER_SLOT, STICKY_FOOTER_SLOT],
|
|
12950
13465
|
});
|
|
12951
13466
|
|
|
12952
|
-
const packageVersion = "0.14.
|
|
13467
|
+
const packageVersion = "0.14.990";
|
|
12953
13468
|
|
|
12954
13469
|
exports.Blocks = Blocks;
|
|
12955
13470
|
exports.ContentPage = ContentPage;
|