tp-react-elements-dev 1.12.24 → 1.12.25
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/README.md +196 -167
- package/dist/assets/icons/flaticon_hvc.css +71 -70
- package/dist/assets/icons/flaticon_hvc.scss +126 -124
- package/dist/auth/authContext.d.ts +19 -0
- package/dist/auth/authContext.esm.js +26 -0
- package/dist/components/Button/Button.d.ts +7 -0
- package/dist/components/Button/Button.esm.js +15 -0
- package/dist/components/Button/index.d.ts +1 -0
- package/dist/components/Button/index.esm.js +1 -0
- package/dist/components/CheckBox/index.d.ts +1 -0
- package/dist/components/CheckBox/index.esm.js +1 -0
- package/dist/components/CheckBoxGroup/index.d.ts +1 -0
- package/dist/components/CheckBoxGroup/index.esm.js +1 -0
- package/dist/components/DatePicker/index.d.ts +4 -0
- package/dist/components/DatePicker/index.esm.js +4 -0
- package/dist/components/Delete/index.d.ts +1 -0
- package/dist/components/Delete/index.esm.js +1 -0
- package/dist/components/DeleteComponent/DeleteField.d.ts +0 -1
- package/dist/components/DeleteComponent/{DeleteField.js → DeleteField.esm.js} +6 -6
- package/dist/components/DeleteComponent/index.d.ts +1 -0
- package/dist/components/DeleteComponent/index.esm.js +1 -0
- package/dist/components/Feedback/index.d.ts +5 -0
- package/dist/components/Feedback/index.esm.js +7 -0
- package/dist/components/FileUpload/index.d.ts +2 -0
- package/dist/components/FileUpload/index.esm.js +2 -0
- package/dist/components/Form/Form.styles.d.ts +8 -26
- package/dist/components/Form/Form.styles.esm.js +111 -0
- package/dist/components/Form/FormActiveSwitch.d.ts +1 -2
- package/dist/components/Form/FormActiveSwitch.esm.js +11 -0
- package/dist/components/Form/FormConstants.d.ts +2 -3
- package/dist/components/Form/{FormConstants.js → FormConstants.esm.js} +89 -103
- package/dist/components/Form/FormContainer.d.ts +2 -3
- package/dist/components/Form/FormContainer.esm.js +3 -0
- package/dist/components/Form/FormRender.d.ts +11 -4
- package/dist/components/Form/FormRender.esm.js +130 -0
- package/dist/components/Form/FormRenderConstants.d.ts +0 -1
- package/dist/components/Form/FormRenderWrapper.d.ts +37 -5
- package/dist/components/Form/FormRenderWrapper.esm.js +33 -0
- package/dist/components/Form/index.d.ts +6 -0
- package/dist/components/Form/index.esm.js +5 -0
- package/dist/components/FormComponents/DatePicker/DatepickerWrapperV2.d.ts +1 -2
- package/dist/components/FormComponents/DatePicker/DatepickerWrapperV2.esm.js +72 -0
- package/dist/components/FormComponents/DatePicker/MonthPicker.d.ts +0 -1
- package/dist/components/FormComponents/DatePicker/{MonthPicker.js → MonthPicker.esm.js} +3 -3
- package/dist/components/FormComponents/DatePicker/Monthpickerrender.d.ts +1 -2
- package/dist/components/FormComponents/DatePicker/Monthpickerrender.esm.js +70 -0
- package/dist/components/FormComponents/FileUpload/FormRenderFileUpload.d.ts +1 -2
- package/dist/components/FormComponents/FileUpload/FormRenderFileUpload.esm.js +71 -0
- package/dist/components/FormComponents/FileUpload/FormRenderMultiFileUpload.d.ts +1 -2
- package/dist/components/FormComponents/FileUpload/FormRenderMultiFileUpload.esm.js +85 -0
- package/dist/components/FormComponents/FormBottomField/FormBottomField.d.ts +15 -2
- package/dist/components/FormComponents/FormBottomField/FormBottomField.esm.js +22 -0
- package/dist/components/FormComponents/FormCheckBox/FormCheckBox.d.ts +20 -2
- package/dist/components/FormComponents/FormCheckBox/FormCheckBox.esm.js +32 -0
- package/dist/components/FormComponents/FormCheckBoxGroup/FormCheckBoxGroup.d.ts +20 -2
- package/dist/components/FormComponents/FormCheckBoxGroup/FormCheckBoxGroup.esm.js +42 -0
- package/dist/components/FormComponents/FormErrorField/FormErrorField.d.ts +14 -2
- package/dist/components/FormComponents/FormErrorField/FormErrorField.esm.js +21 -0
- package/dist/components/FormComponents/FormNumberField/FormNumberField.d.ts +40 -3
- package/dist/components/FormComponents/FormNumberField/FormNumberField.esm.js +102 -0
- package/dist/components/FormComponents/FormNumberField/FormNumberFieldDecimal.d.ts +1 -2
- package/dist/components/FormComponents/FormNumberField/FormNumberFieldDecimal.esm.js +50 -0
- package/dist/components/FormComponents/FormRadioGroup/FormRadioGroup.d.ts +21 -3
- package/dist/components/FormComponents/FormRadioGroup/FormRadioGroup.esm.js +44 -0
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.d.ts +20 -2
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.esm.js +65 -0
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.styles.d.ts +1 -4
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.styles.esm.js +35 -0
- package/dist/components/FormComponents/FormTextField/FormTextField.d.ts +39 -3
- package/dist/components/FormComponents/FormTextField/FormTextField.esm.js +111 -0
- package/dist/components/FormComponents/FormTextField/FormTextField.styles.d.ts +10 -4
- package/dist/components/FormComponents/FormTextField/FormTextField.styles.esm.js +27 -0
- package/dist/components/FormComponents/HelperText/HelperText.d.ts +14 -2
- package/dist/components/FormComponents/HelperText/HelperText.esm.js +23 -0
- package/dist/components/FormComponents/PasswordField/PasswordField.d.ts +21 -3
- package/dist/components/FormComponents/PasswordField/PasswordField.esm.js +91 -0
- package/dist/components/FormComponents/RichTextEditor/RichTextEditor.d.ts +1 -2
- package/dist/components/FormComponents/RichTextEditor/{RichTextEditor.js → RichTextEditor.esm.js} +50 -31
- package/dist/components/FormComponents/RichTextEditor/RichTextEditorWrapper.d.ts +1 -2
- package/dist/components/FormComponents/RichTextEditor/{RichTextEditorWrapper.js → RichTextEditorWrapper.esm.js} +4 -3
- package/dist/components/FormComponents/RichTextEditor/jodit.index.d.ts +5 -10
- package/dist/components/FormComponents/RichTextEditor/jodit.index.esm.js +23 -0
- package/dist/components/FormComponents/Select/MultiSelect.d.ts +0 -1
- package/dist/components/FormComponents/Select/MultiSelectv1.d.ts +1 -2
- package/dist/components/FormComponents/Select/{MultiSelectv1.js → MultiSelectv1.esm.js} +54 -61
- package/dist/components/FormComponents/Select/SingleSelect.d.ts +2 -3
- package/dist/components/FormComponents/Select/SingleSelect.esm.js +61 -0
- package/dist/components/FormComponents/Select/SingleSelectNonAutoComplete.d.ts +1 -2
- package/dist/components/FormComponents/Select/SingleSelectNonAutoComplete.esm.js +32 -0
- package/dist/components/FormComponents/Select/SingleSelectSearchApi.d.ts +2 -3
- package/dist/components/FormComponents/Select/{SingleSelectSearchApi.js → SingleSelectSearchApi.esm.js} +2 -6
- package/dist/components/FormComponents/TimePicker/TimePicker.d.ts +1 -2
- package/dist/components/FormComponents/TimePicker/TimePicker.esm.js +70 -0
- package/dist/components/FormComponents/YearPickerField/YearPickerField.d.ts +2 -3
- package/dist/components/FormComponents/YearPickerField/{YearPickerField.js → YearPickerField.esm.js} +2 -6
- package/dist/components/FormComponents/index.d.ts +16 -25
- package/dist/components/FormComponents/{index.js → index.esm.js} +24 -26
- package/dist/components/Global.styles.d.ts +7 -22
- package/dist/components/{Global.styles.js → Global.styles.esm.js} +2 -2
- package/dist/components/ModalField/ConfirmationDialog.d.ts +2 -11
- package/dist/components/ModalField/ConfirmationDialog.esm.js +46 -0
- package/dist/components/ModalField/ModalField.d.ts +2 -3
- package/dist/components/ModalField/{ModalField.js → ModalField.esm.js} +10 -10
- package/dist/components/ModalField/index.d.ts +2 -0
- package/dist/components/ModalField/index.esm.js +2 -0
- package/dist/components/NumberField/index.d.ts +2 -0
- package/dist/components/NumberField/index.esm.js +2 -0
- package/dist/components/PasswordField/index.d.ts +1 -0
- package/dist/components/PasswordField/index.esm.js +1 -0
- package/dist/components/RadioGroup/index.d.ts +1 -0
- package/dist/components/RadioGroup/index.esm.js +1 -0
- package/dist/components/RichTextEditor/index.d.ts +2 -0
- package/dist/components/RichTextEditor/index.esm.js +2 -0
- package/dist/components/Select/index.d.ts +6 -0
- package/dist/components/Select/index.esm.js +8 -0
- package/dist/components/SelectField/MultiSelectField.d.ts +1 -0
- package/dist/components/SelectField/MultiSelectFieldComponent.d.ts +0 -1
- package/dist/components/SelectField/{MultiSelectFieldComponent.js → MultiSelectFieldComponent.esm.js} +36 -45
- package/dist/components/SelectField/index.d.ts +2 -0
- package/dist/components/SelectField/index.esm.js +1 -0
- package/dist/components/SessionTimeOut/SessionTimeOut.d.ts +1 -3
- package/dist/components/SessionTimeOut/{SessionTimeOut.js → SessionTimeOut.esm.js} +6 -7
- package/dist/components/SessionTimeOut/index.d.ts +1 -0
- package/dist/components/SessionTimeOut/index.esm.js +1 -0
- package/dist/components/TextAreaField/index.d.ts +1 -0
- package/dist/components/TextAreaField/index.esm.js +1 -0
- package/dist/components/TextField/index.d.ts +1 -0
- package/dist/components/TextField/index.esm.js +1 -0
- package/dist/components/TimePicker/index.d.ts +1 -0
- package/dist/components/TimePicker/index.esm.js +1 -0
- package/dist/components/TimePickerField/TimePickerField.d.ts +0 -1
- package/dist/components/TimePickerField/TimePickerField.esm.js +11 -0
- package/dist/components/TimePickerField/index.d.ts +1 -0
- package/dist/components/TimePickerField/index.esm.js +1 -0
- package/dist/index.d.ts +14 -9
- package/dist/index.esm.css +1 -0
- package/dist/index.esm.js +14 -0
- package/dist/theme/index.d.ts +0 -2
- package/dist/theme/{index.js → index.esm.js} +4 -7
- package/dist/types/index.d.ts +3 -4
- package/dist/utils/Constants/FormConstants.d.ts +40 -0
- package/dist/utils/Constants/FormConstants.esm.js +78 -0
- package/dist/{lib → utils}/Constants/FunctionConstants.d.ts +6 -7
- package/dist/{lib/Constants/FunctionConstants.js → utils/Constants/FunctionConstants.esm.js} +46 -54
- package/dist/utils/Constants/FunctionConstants.test.d.ts +1 -0
- package/dist/utils/Constants/crypto-js.d.ts +29 -0
- package/dist/utils/Constants/date-pickers.d.ts +29 -0
- package/dist/utils/Constants/date-pickers.esm.js +33 -0
- package/dist/utils/Constants/file-saver.d.ts +14 -0
- package/dist/utils/Constants/file-saver.esm.js +22 -0
- package/dist/utils/Constants/index.d.ts +5 -0
- package/dist/utils/Constants/xlsx-js-style.d.ts +22 -0
- package/dist/utils/Constants/xlsx-js-style.esm.js +46 -0
- package/dist/{lib → utils}/Interface/FormInterface.d.ts +11 -8
- package/dist/utils/Interface/MainInterface.d.ts +17 -0
- package/dist/utils/Interface/ModalInterface.d.ts +12 -0
- package/dist/utils/Interface/index.d.ts +3 -0
- package/dist/{lib → utils}/index.d.ts +3 -4
- package/dist/{lib/index.js → utils/index.esm.js} +2 -2
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.esm.js +1 -0
- package/dist/validation/schemas.d.ts +65 -6
- package/dist/validation/schemas.esm.js +111 -0
- package/package.json +62 -27
- package/scripts/install-deps.js +103 -46
- package/dist/assets/types.d.ts +0 -62
- package/dist/components/DeleteComponent/DeleteField.d.ts.map +0 -1
- package/dist/components/Form/Form.styles.d.ts.map +0 -1
- package/dist/components/Form/Form.styles.js +0 -111
- package/dist/components/Form/FormActiveSwitch.d.ts.map +0 -1
- package/dist/components/Form/FormActiveSwitch.js +0 -27
- package/dist/components/Form/FormConstants.d.ts.map +0 -1
- package/dist/components/Form/FormContainer.d.ts.map +0 -1
- package/dist/components/Form/FormRender.d.ts.map +0 -1
- package/dist/components/Form/FormRender.js +0 -96
- package/dist/components/Form/FormRenderConstants.d.ts.map +0 -1
- package/dist/components/Form/FormRenderWrapper.d.ts.map +0 -1
- package/dist/components/Form/FormRenderWrapper.js +0 -13
- package/dist/components/FormComponents/DatePicker/DateRangePicker.d.ts +0 -7
- package/dist/components/FormComponents/DatePicker/DateRangePicker.d.ts.map +0 -1
- package/dist/components/FormComponents/DatePicker/DatepickerWrapperV2.d.ts.map +0 -1
- package/dist/components/FormComponents/DatePicker/DatepickerWrapperV2.js +0 -58
- package/dist/components/FormComponents/DatePicker/MonthPicker.d.ts.map +0 -1
- package/dist/components/FormComponents/DatePicker/Monthpickerrender.d.ts.map +0 -1
- package/dist/components/FormComponents/DatePicker/Monthpickerrender.js +0 -61
- package/dist/components/FormComponents/FileUpload/FormRenderFileUpload.d.ts.map +0 -1
- package/dist/components/FormComponents/FileUpload/FormRenderFileUpload.js +0 -86
- package/dist/components/FormComponents/FileUpload/FormRenderMultiFileUpload.d.ts.map +0 -1
- package/dist/components/FormComponents/FileUpload/FormRenderMultiFileUpload.js +0 -96
- package/dist/components/FormComponents/FormBottomField/FormBottomField.d.ts.map +0 -1
- package/dist/components/FormComponents/FormBottomField/FormBottomField.js +0 -9
- package/dist/components/FormComponents/FormCheckBox/FormCheckBox.d.ts.map +0 -1
- package/dist/components/FormComponents/FormCheckBox/FormCheckBox.js +0 -10
- package/dist/components/FormComponents/FormCheckBoxGroup/FormCheckBoxGroup.d.ts.map +0 -1
- package/dist/components/FormComponents/FormCheckBoxGroup/FormCheckBoxGroup.js +0 -23
- package/dist/components/FormComponents/FormErrorField/FormErrorField.d.ts.map +0 -1
- package/dist/components/FormComponents/FormErrorField/FormErrorField.js +0 -9
- package/dist/components/FormComponents/FormNumberField/FormNumberField.d.ts.map +0 -1
- package/dist/components/FormComponents/FormNumberField/FormNumberField.js +0 -49
- package/dist/components/FormComponents/FormNumberField/FormNumberFieldDecimal.d.ts.map +0 -1
- package/dist/components/FormComponents/FormNumberField/FormNumberFieldDecimal.js +0 -45
- package/dist/components/FormComponents/FormRadioGroup/FormRadioGroup.d.ts.map +0 -1
- package/dist/components/FormComponents/FormRadioGroup/FormRadioGroup.js +0 -26
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.d.ts.map +0 -1
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.js +0 -31
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.styles.d.ts.map +0 -1
- package/dist/components/FormComponents/FormTextAreaField/FormTextAreaField.styles.js +0 -35
- package/dist/components/FormComponents/FormTextField/FormTextField.d.ts.map +0 -1
- package/dist/components/FormComponents/FormTextField/FormTextField.js +0 -46
- package/dist/components/FormComponents/FormTextField/FormTextField.styles.d.ts.map +0 -1
- package/dist/components/FormComponents/FormTextField/FormTextField.styles.js +0 -22
- package/dist/components/FormComponents/HelperText/HelperText.d.ts.map +0 -1
- package/dist/components/FormComponents/HelperText/HelperText.js +0 -10
- package/dist/components/FormComponents/PasswordField/PasswordField.d.ts.map +0 -1
- package/dist/components/FormComponents/PasswordField/PasswordField.js +0 -49
- package/dist/components/FormComponents/RichTextEditor/RichTextEditor.d.ts.map +0 -1
- package/dist/components/FormComponents/RichTextEditor/RichTextEditorWrapper.d.ts.map +0 -1
- package/dist/components/FormComponents/RichTextEditor/jodit.index.d.ts.map +0 -1
- package/dist/components/FormComponents/RichTextEditor/jodit.index.js +0 -27
- package/dist/components/FormComponents/Select/MultiSelect.d.ts.map +0 -1
- package/dist/components/FormComponents/Select/MultiSelectv1.d.ts.map +0 -1
- package/dist/components/FormComponents/Select/SingleSelect.d.ts.map +0 -1
- package/dist/components/FormComponents/Select/SingleSelect.js +0 -51
- package/dist/components/FormComponents/Select/SingleSelectNonAutoComplete.d.ts.map +0 -1
- package/dist/components/FormComponents/Select/SingleSelectNonAutoComplete.js +0 -27
- package/dist/components/FormComponents/Select/SingleSelectSearchApi.d.ts.map +0 -1
- package/dist/components/FormComponents/TimePicker/TimePicker.d.ts.map +0 -1
- package/dist/components/FormComponents/TimePicker/TimePicker.js +0 -55
- package/dist/components/FormComponents/YearPickerField/YearPickerField.d.ts.map +0 -1
- package/dist/components/FormComponents/index.d.ts.map +0 -1
- package/dist/components/Global.styles.d.ts.map +0 -1
- package/dist/components/ModalField/ConfirmationDialog.d.ts.map +0 -1
- package/dist/components/ModalField/ConfirmationDialog.js +0 -48
- package/dist/components/ModalField/ModalField.d.ts.map +0 -1
- package/dist/components/SelectField/MultiSelectFieldComponent.d.ts.map +0 -1
- package/dist/components/SessionTimeOut/SessionTimeOut.d.ts.map +0 -1
- package/dist/components/TimePickerField/TimePickerField.d.ts.map +0 -1
- package/dist/components/index.d.ts +0 -8
- package/dist/components/index.d.ts.map +0 -1
- package/dist/index.css +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -16
- package/dist/lib/Constants/FormConstants.d.ts +0 -11
- package/dist/lib/Constants/FormConstants.d.ts.map +0 -1
- package/dist/lib/Constants/FormConstants.js +0 -54
- package/dist/lib/Constants/FunctionConstants.d.ts.map +0 -1
- package/dist/lib/Interface/FormInterface.d.ts.map +0 -1
- package/dist/lib/index.d.ts.map +0 -1
- package/dist/theme/index.d.ts.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/validation/schemas.d.ts.map +0 -1
- package/dist/validation/schemas.js +0 -60
|
@@ -4,52 +4,47 @@ const useFormValidatingContext = (formArray) => {
|
|
|
4
4
|
const initialValues = {};
|
|
5
5
|
const validationShape = {};
|
|
6
6
|
const renderCustomError = (field) => {
|
|
7
|
-
if (field.customValidation)
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
});
|
|
12
|
-
}
|
|
7
|
+
if (!field.customValidation)
|
|
8
|
+
return;
|
|
9
|
+
const base = validationShape[field.name] || Yup.mixed();
|
|
10
|
+
validationShape[field.name] = base.test('custom-check', field.customErrorMessage || 'Invalid value', (value) => (field.customValidation ? field.customValidation(value) : true));
|
|
13
11
|
};
|
|
14
12
|
formArray.forEach((field) => {
|
|
15
13
|
switch (field.inputType) {
|
|
16
|
-
case
|
|
17
|
-
initialValues[field.name] =
|
|
14
|
+
case 'text':
|
|
15
|
+
initialValues[field.name] = '';
|
|
18
16
|
if (field.required && field.errorMessage) {
|
|
19
|
-
validationShape[field.name] = Yup.string()
|
|
17
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
20
18
|
.typeError(field.errorMessage)
|
|
21
19
|
.required(field.errorMessage);
|
|
22
|
-
renderCustomError(field);
|
|
23
20
|
}
|
|
24
21
|
renderCustomError(field);
|
|
25
22
|
break;
|
|
26
|
-
case
|
|
27
|
-
initialValues[field.name] =
|
|
23
|
+
case 'rich-text-editor':
|
|
24
|
+
initialValues[field.name] = '';
|
|
28
25
|
if (field.required && field.errorMessage) {
|
|
29
|
-
validationShape[field.name] = Yup.string()
|
|
26
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
30
27
|
.typeError(field.errorMessage)
|
|
31
28
|
.required(field.errorMessage);
|
|
32
|
-
renderCustomError(field);
|
|
33
29
|
}
|
|
34
30
|
renderCustomError(field);
|
|
35
31
|
break;
|
|
36
|
-
case
|
|
37
|
-
initialValues[field.name] =
|
|
32
|
+
case 'password':
|
|
33
|
+
initialValues[field.name] = '';
|
|
38
34
|
if (field.required && field.errorMessage) {
|
|
39
|
-
validationShape[field.name] = Yup.string()
|
|
35
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
40
36
|
.typeError(field.errorMessage)
|
|
41
37
|
.required(field.errorMessage);
|
|
42
|
-
renderCustomError(field);
|
|
43
38
|
}
|
|
44
39
|
renderCustomError(field);
|
|
45
40
|
break;
|
|
46
|
-
case
|
|
47
|
-
initialValues[field.name] =
|
|
41
|
+
case 'email':
|
|
42
|
+
initialValues[field.name] = '';
|
|
48
43
|
if (field.required && field.errorMessage) {
|
|
49
44
|
validationShape[field.name] = Yup.string()
|
|
50
45
|
.typeError(`Please enter ${field.label}`)
|
|
51
46
|
.required(field.errorMessage)
|
|
52
|
-
.test(
|
|
47
|
+
.test('valid-email', `Please enter valid Email`, (value) => {
|
|
53
48
|
return /\@.*\..+/.test(value);
|
|
54
49
|
});
|
|
55
50
|
renderCustomError(field);
|
|
@@ -57,7 +52,7 @@ const useFormValidatingContext = (formArray) => {
|
|
|
57
52
|
else {
|
|
58
53
|
validationShape[field.name] = Yup.string()
|
|
59
54
|
.typeError(`Please enter ${field.label}`)
|
|
60
|
-
.test(
|
|
55
|
+
.test('valid-email', `Please enter valid Email`, (value) => {
|
|
61
56
|
// Custom validation to check for at least one period after '@'
|
|
62
57
|
return !value || /\@.*\..+/.test(value);
|
|
63
58
|
});
|
|
@@ -65,16 +60,16 @@ const useFormValidatingContext = (formArray) => {
|
|
|
65
60
|
}
|
|
66
61
|
renderCustomError(field);
|
|
67
62
|
break;
|
|
68
|
-
case
|
|
69
|
-
initialValues[field.name] =
|
|
63
|
+
case 'multiEmail':
|
|
64
|
+
initialValues[field.name] = '';
|
|
70
65
|
if (field.required && field.errorMessage) {
|
|
71
66
|
validationShape[field.name] = Yup.string()
|
|
72
67
|
.typeError(`Please enter ${field.label}`)
|
|
73
68
|
.required(field.errorMessage)
|
|
74
|
-
.test(
|
|
69
|
+
.test('valid-email', `Please enter valid Email`, (value) => {
|
|
75
70
|
if (!value)
|
|
76
71
|
return false;
|
|
77
|
-
const emails = value.split(
|
|
72
|
+
const emails = value.split(';');
|
|
78
73
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
79
74
|
return emails.every((email) => emailRegex.test(email.trim()));
|
|
80
75
|
});
|
|
@@ -83,13 +78,13 @@ const useFormValidatingContext = (formArray) => {
|
|
|
83
78
|
else {
|
|
84
79
|
validationShape[field.name] = Yup.string()
|
|
85
80
|
.typeError(`Please enter ${field.label}`)
|
|
86
|
-
.test(
|
|
81
|
+
.test('custom', `Please enter valid Email`, (value) => {
|
|
87
82
|
// Custom validation to check for at least one period after '@'
|
|
88
|
-
if (!value || value ===
|
|
83
|
+
if (!value || value === '') {
|
|
89
84
|
return true;
|
|
90
85
|
}
|
|
91
86
|
else {
|
|
92
|
-
const emails = value.split(
|
|
87
|
+
const emails = value.split(';');
|
|
93
88
|
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
94
89
|
return emails.every((email) => emailRegex.test(email.trim()));
|
|
95
90
|
}
|
|
@@ -98,60 +93,56 @@ const useFormValidatingContext = (formArray) => {
|
|
|
98
93
|
}
|
|
99
94
|
renderCustomError(field);
|
|
100
95
|
break;
|
|
101
|
-
case
|
|
96
|
+
case 'file':
|
|
102
97
|
initialValues[field.name] = null;
|
|
103
98
|
if (field.required && field.errorMessage) {
|
|
104
|
-
validationShape[field.name] = Yup.mixed()
|
|
105
|
-
.test(
|
|
106
|
-
return
|
|
107
|
-
(typeof value === "string" && value.trim() !== ""));
|
|
99
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.mixed())
|
|
100
|
+
.test('fileOrString', field?.errorMessage, (value) => {
|
|
101
|
+
return value instanceof File || (typeof value === 'string' && value.trim() !== '');
|
|
108
102
|
})
|
|
109
103
|
.required(field.errorMessage);
|
|
110
|
-
renderCustomError(field);
|
|
111
104
|
}
|
|
112
105
|
renderCustomError(field);
|
|
113
106
|
break;
|
|
114
|
-
case
|
|
107
|
+
case 'multifile':
|
|
115
108
|
initialValues[field.name] = null;
|
|
116
109
|
if (field.required && field.errorMessage) {
|
|
117
|
-
validationShape[field.name] = Yup.string()
|
|
118
|
-
.test(
|
|
110
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
111
|
+
.test('hasAtLeastOneFile', field.errorMessage, (value) => {
|
|
119
112
|
if (!value)
|
|
120
113
|
return false;
|
|
121
114
|
// Split by comma, trim, and filter out empty values
|
|
122
115
|
const files = value
|
|
123
|
-
.split(
|
|
116
|
+
.split(',')
|
|
124
117
|
.map((f) => f.trim())
|
|
125
|
-
.filter((f) => f !==
|
|
118
|
+
.filter((f) => f !== '');
|
|
126
119
|
return files.length > 0;
|
|
127
120
|
})
|
|
128
121
|
.required(field.errorMessage);
|
|
129
|
-
renderCustomError(field);
|
|
130
122
|
}
|
|
131
123
|
renderCustomError(field);
|
|
132
124
|
break;
|
|
133
|
-
case
|
|
125
|
+
case 'number':
|
|
134
126
|
initialValues[field.name] = null;
|
|
135
127
|
if (field.required && field.errorMessage) {
|
|
136
|
-
validationShape[field.name] = Yup.number()
|
|
128
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.number())
|
|
137
129
|
.nullable()
|
|
138
130
|
.typeError(field.errorMessage)
|
|
139
131
|
.required(field.errorMessage);
|
|
140
|
-
renderCustomError(field);
|
|
141
132
|
}
|
|
142
133
|
renderCustomError(field);
|
|
143
134
|
break;
|
|
144
|
-
case
|
|
135
|
+
case 'checkbox':
|
|
145
136
|
initialValues[field.name] = false;
|
|
146
137
|
break;
|
|
147
|
-
case
|
|
138
|
+
case 'pincode':
|
|
148
139
|
initialValues[field.name] = null;
|
|
149
140
|
if (field.required && field.errorMessage) {
|
|
150
141
|
validationShape[field.name] = Yup.number()
|
|
151
142
|
.nullable()
|
|
152
143
|
.typeError(`Please enter PinCode`)
|
|
153
144
|
.required(field.errorMessage)
|
|
154
|
-
.test(
|
|
145
|
+
.test('is-six-digits', `Please enter a 6-digit PinCode`, (value) => {
|
|
155
146
|
if (value) {
|
|
156
147
|
const stringValue = value.toString();
|
|
157
148
|
return stringValue.length === 6;
|
|
@@ -195,27 +186,26 @@ const useFormValidatingContext = (formArray) => {
|
|
|
195
186
|
// renderCustomError(field)
|
|
196
187
|
// }
|
|
197
188
|
// break;
|
|
198
|
-
case
|
|
189
|
+
case 'phoneNumber':
|
|
199
190
|
initialValues[field.name] = null;
|
|
200
191
|
if (field.required) {
|
|
201
|
-
validationShape[field.name] = Yup.number()
|
|
192
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.number())
|
|
202
193
|
.nullable()
|
|
203
194
|
.typeError(`Please enter Mobile Number`)
|
|
204
195
|
.required(field.errorMessage)
|
|
205
|
-
.test(
|
|
196
|
+
.test('is-two-digits', `Please enter a 10-digit Mobile Number`, (value) => {
|
|
206
197
|
if (value) {
|
|
207
198
|
const stringValue = value.toString();
|
|
208
199
|
return stringValue.length === 10;
|
|
209
200
|
}
|
|
210
201
|
return false;
|
|
211
202
|
});
|
|
212
|
-
renderCustomError(field);
|
|
213
203
|
}
|
|
214
204
|
else {
|
|
215
|
-
validationShape[field.name] = Yup.string()
|
|
205
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
216
206
|
.nullable()
|
|
217
207
|
.typeError(``)
|
|
218
|
-
.test(
|
|
208
|
+
.test('is-two-digits', `Please enter a 10-digit Mobile Number`, (value) => {
|
|
219
209
|
if (value) {
|
|
220
210
|
// Custom validation to check for at least one period after '@'
|
|
221
211
|
const stringValue = value.toString();
|
|
@@ -223,107 +213,103 @@ const useFormValidatingContext = (formArray) => {
|
|
|
223
213
|
}
|
|
224
214
|
return true; // Skip validation if no value is present
|
|
225
215
|
});
|
|
226
|
-
renderCustomError(field);
|
|
227
216
|
}
|
|
228
217
|
break;
|
|
229
|
-
case
|
|
230
|
-
|
|
218
|
+
case 'select':
|
|
219
|
+
case 'autocomplete-select': // alias for searchable select
|
|
220
|
+
initialValues[field.name] = '';
|
|
231
221
|
if (field.required && field.errorMessage) {
|
|
232
|
-
validationShape[field.name] = Yup.string()
|
|
222
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
233
223
|
.typeError(`Select ${field.label}`)
|
|
234
224
|
.required(field.errorMessage);
|
|
235
|
-
renderCustomError(field);
|
|
236
225
|
}
|
|
237
226
|
renderCustomError(field);
|
|
238
227
|
break;
|
|
239
|
-
case
|
|
240
|
-
|
|
241
|
-
initialValues[field.name] = "";
|
|
228
|
+
case 'basic-select': // alias for non-autocomplete select
|
|
229
|
+
initialValues[field.name] = '';
|
|
242
230
|
if (field.required && field.errorMessage) {
|
|
243
|
-
validationShape[field.name] = Yup.string()
|
|
231
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
244
232
|
.typeError(`Select ${field.label}`)
|
|
245
233
|
.required(field.errorMessage);
|
|
246
|
-
renderCustomError(field);
|
|
247
234
|
}
|
|
248
235
|
renderCustomError(field);
|
|
249
236
|
break;
|
|
250
|
-
case
|
|
237
|
+
case 'checkbox-group':
|
|
238
|
+
case 'radio-group':
|
|
239
|
+
initialValues[field.name] = '';
|
|
240
|
+
if (field.required && field.errorMessage) {
|
|
241
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
242
|
+
.typeError(`Select ${field.label}`)
|
|
243
|
+
.required(field.errorMessage);
|
|
244
|
+
}
|
|
245
|
+
renderCustomError(field);
|
|
246
|
+
break;
|
|
247
|
+
case 'multiselect':
|
|
251
248
|
initialValues[field.name] = null;
|
|
252
249
|
if (field.required && field.errorMessage) {
|
|
253
|
-
validationShape[field.name] = validationShape[field.name]
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
.required(field.errorMessage);
|
|
257
|
-
renderCustomError(field);
|
|
250
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
251
|
+
.typeError(`Select atleast one ${field.label}`)
|
|
252
|
+
.required(field.errorMessage);
|
|
258
253
|
}
|
|
259
254
|
renderCustomError(field);
|
|
260
255
|
break;
|
|
261
|
-
case
|
|
262
|
-
case
|
|
256
|
+
case 'datepicker':
|
|
257
|
+
case 'timepicker':
|
|
263
258
|
initialValues[field.name] = null;
|
|
264
259
|
if (field.required && field.errorMessage) {
|
|
265
|
-
validationShape[field.name] = validationShape[field.name]
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
.required(field.errorMessage);
|
|
269
|
-
renderCustomError(field);
|
|
260
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
261
|
+
.typeError(`Select ${field.label}`)
|
|
262
|
+
.required(field.errorMessage);
|
|
270
263
|
}
|
|
271
264
|
renderCustomError(field);
|
|
272
265
|
break;
|
|
273
|
-
case
|
|
266
|
+
case 'yearpicker':
|
|
274
267
|
initialValues[field.name] = null;
|
|
275
268
|
if (field.required && field.errorMessage) {
|
|
276
|
-
validationShape[field.name] = validationShape[field.name]
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
.required(field.errorMessage);
|
|
280
|
-
renderCustomError(field);
|
|
269
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
270
|
+
.typeError(`Select ${field.label}`)
|
|
271
|
+
.required(field.errorMessage);
|
|
281
272
|
}
|
|
282
273
|
renderCustomError(field);
|
|
283
274
|
break;
|
|
284
|
-
case
|
|
275
|
+
case 'monthpicker':
|
|
285
276
|
initialValues[field.name] = null;
|
|
286
277
|
if (field.required && field.errorMessage) {
|
|
287
|
-
validationShape[field.name] = validationShape[field.name]
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
.required(field.errorMessage);
|
|
291
|
-
renderCustomError(field);
|
|
278
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
279
|
+
.typeError(`Select ${field.label}`)
|
|
280
|
+
.required(field.errorMessage);
|
|
292
281
|
}
|
|
293
282
|
renderCustomError(field);
|
|
294
283
|
break;
|
|
295
|
-
case
|
|
284
|
+
case 'toggleSwitch':
|
|
296
285
|
initialValues[field.name] = true;
|
|
297
286
|
renderCustomError(field);
|
|
298
287
|
break;
|
|
299
|
-
case
|
|
288
|
+
case 'dateRangePicker':
|
|
300
289
|
const today = new Date();
|
|
301
|
-
const day = String(today.getDate()).padStart(2,
|
|
302
|
-
const month = String(today.getMonth() + 1).padStart(2,
|
|
290
|
+
const day = String(today.getDate()).padStart(2, '0');
|
|
291
|
+
const month = String(today.getMonth() + 1).padStart(2, '0'); // January is 0!
|
|
303
292
|
const year = today.getFullYear();
|
|
304
293
|
const formattedDate = `${day}/${month}/${year}`;
|
|
305
294
|
const threeMonthsAgo = new Date(today);
|
|
306
295
|
threeMonthsAgo.setMonth(today.getMonth() - (field.monthSpan ?? 3));
|
|
307
|
-
const dayBeforeThreeMonths = String(threeMonthsAgo.getDate()).padStart(2,
|
|
308
|
-
const monthBeforeThreeMonths = String(threeMonthsAgo.getMonth() + 1).padStart(2,
|
|
296
|
+
const dayBeforeThreeMonths = String(threeMonthsAgo.getDate()).padStart(2, '0');
|
|
297
|
+
const monthBeforeThreeMonths = String(threeMonthsAgo.getMonth() + 1).padStart(2, '0'); // January is 0!
|
|
309
298
|
const yearBeforeThreeMonths = threeMonthsAgo.getFullYear();
|
|
310
299
|
const formattedDateForThreeMonths = `${dayBeforeThreeMonths}/${monthBeforeThreeMonths}/${yearBeforeThreeMonths}`;
|
|
311
|
-
initialValues[
|
|
312
|
-
initialValues[
|
|
300
|
+
initialValues['FromDate'] = formattedDateForThreeMonths;
|
|
301
|
+
initialValues['ToDate'] = formattedDate;
|
|
313
302
|
if (field.required && field.errorMessage) {
|
|
314
|
-
validationShape[field.name] = validationShape[field.name]
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
.required(field.errorMessage);
|
|
318
|
-
renderCustomError(field);
|
|
303
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.string())
|
|
304
|
+
.typeError(`Select ${field.label}`)
|
|
305
|
+
.required(field.errorMessage);
|
|
319
306
|
}
|
|
320
307
|
renderCustomError(field);
|
|
321
308
|
break;
|
|
322
309
|
default:
|
|
323
310
|
initialValues[field.name] = null; // default value if inputType is not recognized
|
|
324
311
|
if (field.required && field.errorMessage) {
|
|
325
|
-
validationShape[field.name] = Yup.mixed().required(field.errorMessage);
|
|
326
|
-
renderCustomError(field);
|
|
312
|
+
validationShape[field.name] = (validationShape[field.name] || Yup.mixed()).required(field.errorMessage);
|
|
327
313
|
}
|
|
328
314
|
renderCustomError(field);
|
|
329
315
|
break;
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
declare const
|
|
2
|
-
export default
|
|
3
|
-
//# sourceMappingURL=FormContainer.d.ts.map
|
|
1
|
+
declare const _default: never;
|
|
2
|
+
export default _default;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import { FormRenderProps } from
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { FormRenderProps } from '../../utils';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Export the RenderForm component for use throughout the application
|
|
5
|
+
* This component is the central hub for rendering different form field types
|
|
6
|
+
* and is used by FormRenderWrapper and other form container components
|
|
7
|
+
*
|
|
8
|
+
* @see FormRenderWrapper
|
|
9
|
+
*/
|
|
10
|
+
declare const _default: React.MemoExoticComponent<(props: FormRenderProps) => import("react/jsx-runtime").JSX.Element>;
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import React__default, { lazy, Suspense } from 'react';
|
|
3
|
+
import FormCheckBox from '../FormComponents/FormCheckBox/FormCheckBox.esm.js';
|
|
4
|
+
import FormCheckBoxGroup from '../FormComponents/FormCheckBoxGroup/FormCheckBoxGroup.esm.js';
|
|
5
|
+
import FormNumberField from '../FormComponents/FormNumberField/FormNumberField.esm.js';
|
|
6
|
+
import FormNumberFieldDecimal from '../FormComponents/FormNumberField/FormNumberFieldDecimal.esm.js';
|
|
7
|
+
import FormRadioGroup from '../FormComponents/FormRadioGroup/FormRadioGroup.esm.js';
|
|
8
|
+
import FormTextAreaField from '../FormComponents/FormTextAreaField/FormTextAreaField.esm.js';
|
|
9
|
+
import FormTextField from '../FormComponents/FormTextField/FormTextField.esm.js';
|
|
10
|
+
import PasswordField from '../FormComponents/PasswordField/PasswordField.esm.js';
|
|
11
|
+
import SingleSelect from '../FormComponents/Select/SingleSelect.esm.js';
|
|
12
|
+
import SingleSelectNonAutoComplete from '../FormComponents/Select/SingleSelectNonAutoComplete.esm.js';
|
|
13
|
+
import FormActiveSwitch from './FormActiveSwitch.esm.js';
|
|
14
|
+
|
|
15
|
+
// Lazy-loaded heavy components
|
|
16
|
+
const RichTextEditorWrapper = lazy(() => import('../RichTextEditor/index.esm.js').then((m) => ({ default: m.RichTextEditorWrapper })));
|
|
17
|
+
const MultiSelectV1 = lazy(() => import('../FormComponents/Select/MultiSelectv1.esm.js'));
|
|
18
|
+
const FormRenderFileUpload = lazy(() => import('../FileUpload/index.esm.js').then((m) => ({ default: m.FormRenderFileUpload })));
|
|
19
|
+
const FormRenderMultiFileUpload = lazy(() => import('../FileUpload/index.esm.js').then((m) => ({ default: m.FormRenderMultiFileUpload })));
|
|
20
|
+
const DatepickerWrapperV2 = lazy(() => import('../DatePicker/index.esm.js').then((m) => ({ default: m.DatepickerWrapperV2 })));
|
|
21
|
+
const Monthpickerrender = lazy(() => import('../DatePicker/index.esm.js').then((m) => ({ default: m.Monthpickerrender })));
|
|
22
|
+
const TimePickerFieldWrapper = lazy(() => import('../TimePicker/index.esm.js').then((m) => ({ default: m.TimePicker })));
|
|
23
|
+
// Loading fallback component
|
|
24
|
+
const LoadingFallback = () => jsx("div", { style: { minHeight: '36px' }, children: "Loading..." });
|
|
25
|
+
/**
|
|
26
|
+
* RenderForm Component
|
|
27
|
+
*
|
|
28
|
+
* Main renderer function that decides which form field component to render
|
|
29
|
+
* based on the `inputType` defined in the form item configuration.
|
|
30
|
+
*
|
|
31
|
+
* This component acts as a factory/mapper that instantiates the appropriate
|
|
32
|
+
* form field component based on the inputType property. It centralizes the
|
|
33
|
+
* mapping logic between input types and their corresponding components.
|
|
34
|
+
*
|
|
35
|
+
* @component
|
|
36
|
+
* @param {FormRenderProps} props - Form rendering properties including item configuration,
|
|
37
|
+
* form control, errors, and other form state
|
|
38
|
+
* @returns {JSX.Element} The appropriate form field component based on inputType
|
|
39
|
+
*/
|
|
40
|
+
const RenderForm = (props) => {
|
|
41
|
+
/**
|
|
42
|
+
* Variant is an optional property that controls UI style differences
|
|
43
|
+
* Default is an empty string which will use the default styling
|
|
44
|
+
*/
|
|
45
|
+
const variant = props.variant || '';
|
|
46
|
+
/**
|
|
47
|
+
* Switch between different input types and render the corresponding component
|
|
48
|
+
* This is the core mapping logic that determines which component to render
|
|
49
|
+
* based on the inputType property of the form item
|
|
50
|
+
*/
|
|
51
|
+
switch (props.item?.inputType) {
|
|
52
|
+
/**
|
|
53
|
+
* Text input cases
|
|
54
|
+
* These cases handle standard text input, email input, and multi-email input
|
|
55
|
+
* All are rendered using the FormTextField component with appropriate validation
|
|
56
|
+
*/
|
|
57
|
+
case 'text':
|
|
58
|
+
case 'multiEmail':
|
|
59
|
+
case 'email':
|
|
60
|
+
return jsx(FormTextField, { props: props, variant: variant });
|
|
61
|
+
// Rich text editor
|
|
62
|
+
case 'rich-text-editor':
|
|
63
|
+
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(RichTextEditorWrapper, { props: props, variant: variant }) }));
|
|
64
|
+
// Password field
|
|
65
|
+
case 'password':
|
|
66
|
+
return jsx(PasswordField, { props: props, variant: variant });
|
|
67
|
+
// Dropdown select (auto-complete)
|
|
68
|
+
case 'select':
|
|
69
|
+
case 'autocomplete-select': // new alias
|
|
70
|
+
return jsx(SingleSelect, { props: props, variant: variant });
|
|
71
|
+
// Dropdown select (non auto-complete)
|
|
72
|
+
case 'select-v2':
|
|
73
|
+
case 'basic-select': // new alias
|
|
74
|
+
return jsx(SingleSelectNonAutoComplete, { props: props, variant: variant });
|
|
75
|
+
// Numeric inputs (integer, pincode, phone)
|
|
76
|
+
case 'number':
|
|
77
|
+
case 'pincode':
|
|
78
|
+
case 'phoneNumber':
|
|
79
|
+
return jsx(FormNumberField, { props: props, variant: variant });
|
|
80
|
+
// Decimal input
|
|
81
|
+
case 'decimal':
|
|
82
|
+
return jsx(FormNumberFieldDecimal, { props: props, variant: variant });
|
|
83
|
+
// Checkbox group (multiple options)
|
|
84
|
+
case 'checkbox-group':
|
|
85
|
+
return jsx(FormCheckBoxGroup, { props: props, variant: variant });
|
|
86
|
+
// Radio group (single option)
|
|
87
|
+
case 'radio-group':
|
|
88
|
+
return jsx(FormRadioGroup, { props: props, variant: variant });
|
|
89
|
+
// Date picker
|
|
90
|
+
case 'datepicker':
|
|
91
|
+
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(DatepickerWrapperV2, { props: props, variant: variant }) }));
|
|
92
|
+
// Time picker
|
|
93
|
+
case 'timepicker':
|
|
94
|
+
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(TimePickerFieldWrapper, { props: props, variant: variant }) }));
|
|
95
|
+
// Month picker
|
|
96
|
+
case 'monthpicker':
|
|
97
|
+
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(Monthpickerrender, { props: props, variant: variant }) }));
|
|
98
|
+
// Multi-select dropdown
|
|
99
|
+
case 'multiselect':
|
|
100
|
+
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(MultiSelectV1, { props: props, variant: variant }) }));
|
|
101
|
+
// Single file upload
|
|
102
|
+
case 'file':
|
|
103
|
+
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(FormRenderFileUpload, { props: props, variant: variant }) }));
|
|
104
|
+
// Multi file upload
|
|
105
|
+
case 'multifile':
|
|
106
|
+
return (jsx(Suspense, { fallback: jsx(LoadingFallback, {}), children: jsx(FormRenderMultiFileUpload, { props: props, variant: variant }) }));
|
|
107
|
+
// Single checkbox
|
|
108
|
+
case 'checkbox':
|
|
109
|
+
return jsx(FormCheckBox, { props: props, variant: variant });
|
|
110
|
+
// Multi-line text input
|
|
111
|
+
case 'textarea':
|
|
112
|
+
return jsx(FormTextAreaField, { props: props, variant: variant });
|
|
113
|
+
// Toggle switch (active/inactive)
|
|
114
|
+
case 'toggleSwitch':
|
|
115
|
+
return jsx(FormActiveSwitch, { props: props }, props.item.name);
|
|
116
|
+
// Default case: if input type is not found, return nothing
|
|
117
|
+
default:
|
|
118
|
+
return jsx(Fragment, {});
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Export the RenderForm component for use throughout the application
|
|
123
|
+
* This component is the central hub for rendering different form field types
|
|
124
|
+
* and is used by FormRenderWrapper and other form container components
|
|
125
|
+
*
|
|
126
|
+
* @see FormRenderWrapper
|
|
127
|
+
*/
|
|
128
|
+
var RenderForm$1 = React__default.memo(RenderForm);
|
|
129
|
+
|
|
130
|
+
export { RenderForm$1 as default };
|
|
@@ -1,9 +1,31 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { UseFormReturn } from
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { UseFormReturn } from 'react-hook-form';
|
|
3
|
+
import { FormSectionPropsItem, VariantProps } from '../../utils';
|
|
4
|
+
/**
|
|
5
|
+
* Interface for FormRenderWrapper component props
|
|
6
|
+
*
|
|
7
|
+
* @interface FormRenderWrapperProps
|
|
8
|
+
*/
|
|
3
9
|
export interface FormRenderWrapperProps {
|
|
10
|
+
/**
|
|
11
|
+
* Array of form section items to render
|
|
12
|
+
* Each item represents a form field with its configuration
|
|
13
|
+
*/
|
|
4
14
|
formArray: FormSectionPropsItem[];
|
|
15
|
+
/**
|
|
16
|
+
* Unique name identifier for the form
|
|
17
|
+
* Used for generating unique keys for form items
|
|
18
|
+
*/
|
|
5
19
|
name: string;
|
|
20
|
+
/**
|
|
21
|
+
* Number of columns to display form fields in
|
|
22
|
+
* Defaults to 3 if not specified
|
|
23
|
+
*/
|
|
6
24
|
numberOfColumns?: number;
|
|
25
|
+
/**
|
|
26
|
+
* React Hook Form's form control object
|
|
27
|
+
* Contains methods and state for form management
|
|
28
|
+
*/
|
|
7
29
|
form: UseFormReturn<{
|
|
8
30
|
[x: string]: string | number | boolean | null;
|
|
9
31
|
[x: number]: string | number | boolean | null;
|
|
@@ -11,9 +33,19 @@ export interface FormRenderWrapperProps {
|
|
|
11
33
|
[x: string]: string | number | boolean | null;
|
|
12
34
|
[x: number]: string | number | boolean | null;
|
|
13
35
|
}>;
|
|
36
|
+
/**
|
|
37
|
+
* UI variant style to apply to form fields
|
|
38
|
+
* Controls the visual appearance of form elements
|
|
39
|
+
*/
|
|
14
40
|
variant?: VariantProps;
|
|
41
|
+
/**
|
|
42
|
+
* Whether to show error borders on fields with validation errors
|
|
43
|
+
*/
|
|
15
44
|
fieldError?: boolean;
|
|
16
45
|
}
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
46
|
+
/**
|
|
47
|
+
* Export the FormRenderWrapper component for use in form containers
|
|
48
|
+
* This component is the main entry point for rendering form fields
|
|
49
|
+
*/
|
|
50
|
+
declare const _default: React.MemoExoticComponent<({ formArray, name, numberOfColumns, form, variant, fieldError, }: FormRenderWrapperProps) => import("react/jsx-runtime").JSX.Element>;
|
|
51
|
+
export default _default;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import React__default from 'react';
|
|
3
|
+
import { useFormState } from 'react-hook-form';
|
|
4
|
+
import { FormComponent, Formitem } from './Form.styles.esm.js';
|
|
5
|
+
import RenderForm from './FormRender.esm.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* FormRenderWrapper Component
|
|
9
|
+
*
|
|
10
|
+
* A container component that renders a collection of form fields based on configuration.
|
|
11
|
+
* Provides theming, layout, and form state management for the form fields.
|
|
12
|
+
*
|
|
13
|
+
* @component
|
|
14
|
+
* @param {FormRenderWrapperProps} props - The component props
|
|
15
|
+
*/
|
|
16
|
+
const FormRenderWrapper = ({ formArray, name = '', numberOfColumns = 3, form, variant = '', fieldError, }) => {
|
|
17
|
+
// Subscribe to formState to react to validation changes
|
|
18
|
+
const { errors } = useFormState({ control: form.control });
|
|
19
|
+
/**
|
|
20
|
+
* Renders the form with theme provider and layout container
|
|
21
|
+
* Maps through the form array and renders each item with appropriate configuration
|
|
22
|
+
*/
|
|
23
|
+
return (jsx(FormComponent, { container: true, margin: 'auto', children: formArray.map((item, i) => {
|
|
24
|
+
return (item.inputType && (jsx(Formitem, { container: true, sx: item.CustomProps, noOfColumn: item.numberOfColumns || numberOfColumns, children: item.inputType === 'custom' ? (item.FormElement || jsx(Fragment, {})) : (jsx(RenderForm, { item: item, register: form.register, control: form.control, errors: errors, getValues: form.getValues, clearErrors: form.clearErrors, setValue: form.setValue, variant: variant, fieldError: fieldError })) }, `${name}_${i}`)));
|
|
25
|
+
}) }));
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Export the FormRenderWrapper component for use in form containers
|
|
29
|
+
* This component is the main entry point for rendering form fields
|
|
30
|
+
*/
|
|
31
|
+
var FormRenderWrapper$1 = React__default.memo(FormRenderWrapper);
|
|
32
|
+
|
|
33
|
+
export { FormRenderWrapper$1 as default };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { default as FormActiveSwitch } from './FormActiveSwitch';
|
|
2
|
+
export { default as useFormValidatingContext } from './FormConstants';
|
|
3
|
+
export { default as FormContainer } from './FormContainer';
|
|
4
|
+
export { default as RenderForm } from './FormRenderWrapper';
|
|
5
|
+
export { default as FormRender } from './FormRender';
|
|
6
|
+
export * from './FormRenderConstants';
|