envoc-form 3.1.0 → 4.0.1-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -1
- package/dist/css/envoc-form-styles.css +0 -113
- package/dist/css/envoc-form-styles.css.map +1 -1
- package/es/AddressInput/AddressInput.d.ts +15 -0
- package/es/AddressInput/AddressInput.js +21 -97
- package/es/AddressInput/UsStates.d.ts +3 -0
- package/es/AddressInput/UsStates.js +53 -152
- package/es/ConfirmBaseForm/ConfirmBaseForm.d.ts +10 -0
- package/es/ConfirmBaseForm/ConfirmBaseForm.js +35 -43
- package/es/ConfirmDeleteForm/ConfirmDeleteForm.d.ts +11 -0
- package/es/ConfirmDeleteForm/ConfirmDeleteForm.js +54 -40
- package/es/DatePickerInput/DatePickerInput.d.ts +14 -0
- package/es/DatePickerInput/DatePickerInput.js +63 -95
- package/es/Field/CustomFieldInputProps.d.ts +7 -0
- package/es/Field/CustomFieldInputProps.js +1 -0
- package/es/Field/CustomFieldMetaProps.d.ts +4 -0
- package/es/Field/CustomFieldMetaProps.js +1 -0
- package/es/Field/Field.d.ts +22 -0
- package/es/Field/Field.js +46 -0
- package/es/Field/FieldErrorScrollTarget.d.ts +2 -0
- package/es/Field/FieldErrorScrollTarget.js +11 -0
- package/es/Field/FieldNameContext.d.ts +3 -0
- package/es/Field/FieldNameContext.js +3 -0
- package/es/Field/FieldSection.d.ts +7 -0
- package/es/Field/FieldSection.js +20 -0
- package/es/Field/InjectedFieldProps.d.ts +7 -0
- package/es/Field/InjectedFieldProps.js +1 -0
- package/es/Field/useStandardField.d.ts +15 -0
- package/es/Field/useStandardField.js +93 -0
- package/es/FieldArray/FieldArray.d.ts +15 -0
- package/es/FieldArray/FieldArray.js +80 -0
- package/es/File/FileGroup.d.ts +8 -0
- package/es/File/FileGroup.js +50 -0
- package/es/File/FileList.d.ts +6 -0
- package/es/File/FileList.js +20 -0
- package/es/File/humanFileSize.d.ts +1 -0
- package/es/File/humanFileSize.js +6 -0
- package/es/Form/FocusError.d.ts +5 -0
- package/es/Form/FocusError.js +41 -53
- package/es/Form/Form.d.ts +22 -0
- package/es/Form/Form.js +111 -125
- package/es/Form/FormBasedPreventNavigation.d.ts +5 -0
- package/es/Form/FormBasedPreventNavigation.js +53 -30
- package/es/Form/ServerErrorContext.d.ts +10 -0
- package/es/Form/ServerErrorContext.js +8 -6
- package/es/FormActions.d.ts +7 -0
- package/es/FormActions.js +22 -0
- package/es/Group.d.ts +13 -0
- package/es/Group.js +22 -0
- package/es/Input/IconInputGroup.d.ts +9 -0
- package/es/Input/IconInputGroup.js +40 -0
- package/es/Input/InputGroup.d.ts +12 -0
- package/es/Input/InputGroup.js +33 -0
- package/es/Input/MoneyInputGroup.d.ts +7 -0
- package/es/Input/MoneyInputGroup.js +41 -0
- package/es/Input/NumberInputGroup.d.ts +7 -0
- package/es/Input/NumberInputGroup.js +41 -0
- package/es/Input/StringInputGroup.d.ts +7 -0
- package/es/Input/StringInputGroup.js +40 -0
- package/es/Normalization/NormalizationFunction.d.ts +4 -0
- package/es/Normalization/NormalizationFunction.js +1 -0
- package/es/Normalization/normalizers.d.ts +2 -0
- package/es/Normalization/normalizers.js +30 -0
- package/es/Select/BooleanSelectGroup.d.ts +7 -0
- package/es/Select/BooleanSelectGroup.js +27 -0
- package/es/Select/NumberSelectGroup.d.ts +8 -0
- package/es/Select/NumberSelectGroup.js +19 -0
- package/es/Select/SelectGroup.d.ts +22 -0
- package/es/Select/SelectGroup.js +59 -0
- package/es/Select/SelectGroupPropsHelper.d.ts +3 -0
- package/es/Select/SelectGroupPropsHelper.js +1 -0
- package/es/Select/StringSelectGroup.d.ts +8 -0
- package/es/Select/StringSelectGroup.js +19 -0
- package/es/StandardFormActions.d.ts +6 -0
- package/es/StandardFormActions.js +23 -24
- package/es/SubmitFormButton.d.ts +7 -0
- package/es/SubmitFormButton.js +37 -23
- package/es/Validation/ValidatedApiResult.d.ts +6 -0
- package/es/Validation/ValidatedApiResult.js +1 -0
- package/es/Validation/ValidationError.d.ts +5 -0
- package/es/Validation/ValidationError.js +1 -0
- package/es/Validation/ValidationFunction.d.ts +4 -0
- package/es/Validation/ValidationFunction.js +1 -0
- package/es/Validation/validators.d.ts +15 -0
- package/es/Validation/validators.js +73 -0
- package/es/__Tests__/FormTestBase.d.ts +27 -0
- package/es/__Tests__/FormTestBase.js +83 -12
- package/{src/__Tests__/index.js → es/__Tests__/index.d.ts} +0 -0
- package/es/__Tests__/index.js +2 -2
- package/es/index.d.ts +57 -0
- package/es/index.js +41 -20
- package/es/utils/objectContainsNonSerializableProperty.d.ts +1 -0
- package/es/utils/objectContainsNonSerializableProperty.js +14 -16
- package/es/utils/objectToFormData.d.ts +10 -0
- package/es/utils/objectToFormData.js +77 -65
- package/es/utils/typeChecks.d.ts +8 -0
- package/es/utils/typeChecks.js +18 -25
- package/lib/AddressInput/AddressInput.d.ts +15 -0
- package/lib/AddressInput/AddressInput.js +27 -123
- package/lib/AddressInput/UsStates.d.ts +3 -0
- package/lib/AddressInput/UsStates.js +55 -159
- package/lib/ConfirmBaseForm/ConfirmBaseForm.d.ts +10 -0
- package/lib/ConfirmBaseForm/ConfirmBaseForm.js +41 -57
- package/lib/ConfirmDeleteForm/ConfirmDeleteForm.d.ts +11 -0
- package/lib/ConfirmDeleteForm/ConfirmDeleteForm.js +60 -56
- package/lib/DatePickerInput/DatePickerInput.d.ts +14 -0
- package/lib/DatePickerInput/DatePickerInput.js +69 -113
- package/lib/Field/CustomFieldInputProps.d.ts +7 -0
- package/lib/Field/CustomFieldInputProps.js +2 -0
- package/lib/Field/CustomFieldMetaProps.d.ts +4 -0
- package/lib/Field/CustomFieldMetaProps.js +2 -0
- package/lib/Field/Field.d.ts +22 -0
- package/lib/Field/Field.js +51 -0
- package/lib/Field/FieldErrorScrollTarget.d.ts +2 -0
- package/lib/Field/FieldErrorScrollTarget.js +14 -0
- package/lib/Field/FieldNameContext.d.ts +3 -0
- package/lib/Field/FieldNameContext.js +9 -0
- package/lib/Field/FieldSection.d.ts +7 -0
- package/lib/Field/FieldSection.js +23 -0
- package/lib/Field/InjectedFieldProps.d.ts +7 -0
- package/lib/Field/InjectedFieldProps.js +2 -0
- package/lib/Field/useStandardField.d.ts +15 -0
- package/lib/Field/useStandardField.js +96 -0
- package/lib/FieldArray/FieldArray.d.ts +15 -0
- package/lib/FieldArray/FieldArray.js +86 -0
- package/lib/File/FileGroup.d.ts +8 -0
- package/lib/File/FileGroup.js +55 -0
- package/lib/File/FileList.d.ts +6 -0
- package/lib/File/FileList.js +23 -0
- package/lib/File/humanFileSize.d.ts +1 -0
- package/lib/File/humanFileSize.js +10 -0
- package/lib/Form/FocusError.d.ts +5 -0
- package/lib/Form/FocusError.js +47 -66
- package/lib/Form/Form.d.ts +22 -0
- package/lib/Form/Form.js +117 -153
- package/lib/Form/FormBasedPreventNavigation.d.ts +5 -0
- package/lib/Form/FormBasedPreventNavigation.js +56 -39
- package/lib/Form/ServerErrorContext.d.ts +10 -0
- package/lib/Form/ServerErrorContext.js +14 -18
- package/lib/FormActions.d.ts +7 -0
- package/lib/FormActions.js +28 -0
- package/lib/Group.d.ts +13 -0
- package/lib/Group.js +28 -0
- package/lib/Input/IconInputGroup.d.ts +9 -0
- package/lib/Input/IconInputGroup.js +45 -0
- package/lib/Input/InputGroup.d.ts +12 -0
- package/lib/Input/InputGroup.js +38 -0
- package/lib/Input/MoneyInputGroup.d.ts +7 -0
- package/lib/Input/MoneyInputGroup.js +46 -0
- package/lib/Input/NumberInputGroup.d.ts +7 -0
- package/lib/Input/NumberInputGroup.js +46 -0
- package/lib/Input/StringInputGroup.d.ts +7 -0
- package/lib/Input/StringInputGroup.js +45 -0
- package/lib/Normalization/NormalizationFunction.d.ts +4 -0
- package/lib/Normalization/NormalizationFunction.js +2 -0
- package/lib/Normalization/normalizers.d.ts +2 -0
- package/lib/Normalization/normalizers.js +35 -0
- package/lib/Select/BooleanSelectGroup.d.ts +7 -0
- package/lib/Select/BooleanSelectGroup.js +34 -0
- package/lib/Select/NumberSelectGroup.d.ts +8 -0
- package/lib/Select/NumberSelectGroup.js +27 -0
- package/lib/Select/SelectGroup.d.ts +22 -0
- package/lib/Select/SelectGroup.js +65 -0
- package/lib/Select/SelectGroupPropsHelper.d.ts +3 -0
- package/lib/Select/SelectGroupPropsHelper.js +2 -0
- package/lib/Select/StringSelectGroup.d.ts +8 -0
- package/lib/Select/StringSelectGroup.js +27 -0
- package/lib/StandardFormActions.d.ts +6 -0
- package/lib/StandardFormActions.js +29 -37
- package/lib/SubmitFormButton.d.ts +7 -0
- package/lib/SubmitFormButton.js +42 -38
- package/lib/Validation/ValidatedApiResult.d.ts +6 -0
- package/lib/Validation/ValidatedApiResult.js +2 -0
- package/lib/Validation/ValidationError.d.ts +5 -0
- package/lib/Validation/ValidationError.js +2 -0
- package/lib/Validation/ValidationFunction.d.ts +4 -0
- package/lib/Validation/ValidationFunction.js +2 -0
- package/lib/Validation/validators.d.ts +15 -0
- package/lib/Validation/validators.js +86 -0
- package/lib/__Tests__/FormTestBase.d.ts +27 -0
- package/lib/__Tests__/FormTestBase.js +86 -25
- package/lib/__Tests__/index.d.ts +2 -0
- package/lib/__Tests__/index.js +8 -15
- package/lib/index.d.ts +57 -0
- package/lib/index.js +101 -174
- package/lib/utils/objectContainsNonSerializableProperty.d.ts +1 -0
- package/lib/utils/objectContainsNonSerializableProperty.js +17 -24
- package/lib/utils/objectToFormData.d.ts +10 -0
- package/lib/utils/objectToFormData.js +79 -73
- package/lib/utils/typeChecks.d.ts +8 -0
- package/lib/utils/typeChecks.js +29 -58
- package/package.json +106 -100
- package/src/AddressInput/{AddesssInput.test.js → AddressInput.test.tsx} +7 -3
- package/src/AddressInput/AddressInput.tsx +72 -0
- package/src/AddressInput/{UsStates.js → UsStates.ts} +3 -1
- package/src/AddressInput/__snapshots__/AddressInput.test.tsx.snap +175 -0
- package/src/ConfirmBaseForm/ConfirmBaseForm.test.tsx +24 -0
- package/src/ConfirmBaseForm/ConfirmBaseForm.tsx +50 -0
- package/src/ConfirmBaseForm/__snapshots__/{ConfirmBaseForm.test.js.snap → ConfirmBaseForm.test.tsx.snap} +2 -2
- package/src/ConfirmDeleteForm/{ConfirmDeleteForm.test.js → ConfirmDeleteForm.test.tsx} +3 -3
- package/src/ConfirmDeleteForm/ConfirmDeleteForm.tsx +67 -0
- package/src/ConfirmDeleteForm/__snapshots__/{ConfirmDeleteForm.test.js.snap → ConfirmDeleteForm.test.tsx.snap} +2 -2
- package/src/DatePickerInput/DatePickerInput.test.tsx +48 -0
- package/src/DatePickerInput/DatePickerInput.tsx +85 -0
- package/src/DatePickerInput/__snapshots__/DatePickerInput.test.tsx.snap +151 -0
- package/src/Field/CustomFieldInputProps.ts +10 -0
- package/src/Field/CustomFieldMetaProps.ts +5 -0
- package/src/Field/Field.tsx +90 -0
- package/src/Field/FieldErrorScrollTarget.tsx +11 -0
- package/src/Field/FieldNameContext.ts +6 -0
- package/src/Field/FieldSection.tsx +18 -0
- package/src/Field/InjectedFieldProps.ts +8 -0
- package/src/Field/useStandardField.ts +121 -0
- package/src/FieldArray/FieldArray.tsx +133 -0
- package/src/File/FileGroup.test.tsx +35 -0
- package/src/File/FileGroup.tsx +71 -0
- package/src/File/FileList.tsx +19 -0
- package/src/File/__snapshots__/FileGroup.test.tsx.snap +32 -0
- package/src/File/humanFileSize.ts +8 -0
- package/src/Form/{FocusError.js → FocusError.tsx} +10 -6
- package/src/Form/Form.test.tsx +14 -0
- package/src/Form/{Form.js → Form.tsx} +71 -31
- package/src/Form/FormBasedPreventNavigation.tsx +74 -0
- package/src/Form/ServerErrorContext.ts +17 -0
- package/src/Form/__snapshots__/{Form.test.js.snap → Form.test.tsx.snap} +1 -1
- package/src/FormActions.tsx +34 -0
- package/src/Group.tsx +43 -0
- package/src/Input/IconInputGroup.tsx +48 -0
- package/src/Input/InputGroup.tsx +57 -0
- package/src/Input/MoneyInputGroup.tsx +44 -0
- package/src/Input/NumberInputGroup.tsx +42 -0
- package/src/Input/StringInputGroup.tsx +40 -0
- package/src/Input/__Tests__/IconInputGroup.test.tsx +35 -0
- package/src/Input/__Tests__/MoneyInputGroup.test.tsx +37 -0
- package/src/Input/__Tests__/NumberInputGroup.test.tsx +35 -0
- package/src/Input/__Tests__/StringInputGroup.test.tsx +27 -0
- package/src/Input/__Tests__/__snapshots__/IconInputGroup.test.tsx.snap +29 -0
- package/src/Input/__Tests__/__snapshots__/MoneyInputGroup.test.tsx.snap +31 -0
- package/src/Input/__Tests__/__snapshots__/NumberInputGroup.test.tsx.snap +29 -0
- package/src/Input/__Tests__/__snapshots__/StringInputGroup.test.tsx.snap +28 -0
- package/src/Normalization/NormalizationFunction.ts +4 -0
- package/src/{normalizers.js → Normalization/normalizers.ts} +5 -5
- package/src/Select/BooleanSelectGroup.tsx +27 -0
- package/src/Select/NumberSelectGroup.tsx +14 -0
- package/src/Select/SelectGroup.tsx +106 -0
- package/src/Select/SelectGroupPropsHelper.ts +4 -0
- package/src/Select/StringSelectGroup.tsx +14 -0
- package/src/Select/__tests__/BooleanSelectGroup.test.tsx +35 -0
- package/src/Select/__tests__/NumberSelectGroup.test.tsx +87 -0
- package/src/Select/__tests__/StringSelectGroup.test.tsx +89 -0
- package/src/Select/__tests__/__snapshots__/BooleanSelectGroup.test.tsx.snap +99 -0
- package/src/Select/__tests__/__snapshots__/NumberSelectGroup.test.tsx.snap +197 -0
- package/src/Select/__tests__/__snapshots__/StringSelectGroup.test.tsx.snap +197 -0
- package/src/{StandardFormActions.js → StandardFormActions.tsx} +12 -6
- package/src/SubmitFormButton.tsx +44 -0
- package/src/Validation/ValidatedApiResult.ts +8 -0
- package/src/Validation/ValidationError.ts +6 -0
- package/src/Validation/ValidationFunction.ts +4 -0
- package/src/{validators/validators.test.js → Validation/validators.test.tsx} +6 -4
- package/src/Validation/validators.ts +92 -0
- package/src/__Tests__/FormTestBase.tsx +63 -0
- package/src/__Tests__/{StandardFormActions.test.js → StandardFormActions.test.tsx} +2 -8
- package/src/__Tests__/{SubmitFormButton.test.js → SubmitFormButton.test.tsx} +2 -8
- package/src/__Tests__/__snapshots__/{StandardFormActions.test.js.snap → StandardFormActions.test.tsx.snap} +2 -2
- package/src/__Tests__/__snapshots__/{SubmitFormButton.test.js.snap → SubmitFormButton.test.tsx.snap} +1 -1
- package/src/__Tests__/index.ts +3 -0
- package/src/index.ts +114 -0
- package/src/react-app-env.d.ts +1 -0
- package/src/styles.scss +0 -7
- package/src/utils/{objectContainsNonSerializableProperty.test.js → objectContainsNonSerializableProperty.test.tsx} +0 -0
- package/src/utils/{objectContainsNonSerializableProperty.js → objectContainsNonSerializableProperty.ts} +4 -2
- package/src/utils/{objectToFormData.test.js → objectToFormData.test.tsx} +0 -0
- package/src/utils/{objectToFormData.js → objectToFormData.ts} +29 -13
- package/src/utils/typeChecks.ts +18 -0
- package/es/AddressInput/index.js +0 -2
- package/es/BoolInput/BoolInput.js +0 -10
- package/es/BoolInput/InlineBoolInput.js +0 -10
- package/es/BoolInput/boolOptions.js +0 -8
- package/es/BoolInput/index.js +0 -3
- package/es/ConfirmBaseForm/index.js +0 -2
- package/es/ConfirmDeleteForm/index.js +0 -2
- package/es/DatePickerInput/index.js +0 -2
- package/es/ErrorScrollTarget.js +0 -10
- package/es/FileInput/DefaultFileList.js +0 -36
- package/es/FileInput/DropzoneFileInput.js +0 -58
- package/es/FileInput/FileInput.js +0 -62
- package/es/FileInput/index.js +0 -3
- package/es/Form/index.js +0 -3
- package/es/FormGroup.js +0 -22
- package/es/FormGroupWrapper.js +0 -22
- package/es/FormInput/FormInput.js +0 -206
- package/es/FormInput/index.js +0 -2
- package/es/FormInputArray/FormInputArray.js +0 -225
- package/es/FormInputArray/index.js +0 -2
- package/es/FormSection.js +0 -11
- package/es/IconInput.js +0 -33
- package/es/InlineFormInput/InlineFormInput.js +0 -8
- package/es/InlineFormInput/index.js +0 -2
- package/es/MoneyInput/InlineMoneyInput.js +0 -7
- package/es/MoneyInput/MoneyInput.js +0 -7
- package/es/MoneyInput/index.js +0 -3
- package/es/MoneyInput/moneyInputProps.js +0 -13
- package/es/NestedFormFieldContext.js +0 -4
- package/es/ReactSelectField/ReactSelectField.js +0 -128
- package/es/ReactSelectField/index.js +0 -2
- package/es/normalizers.js +0 -39
- package/es/selectors.js +0 -6
- package/es/useStandardFormInput.js +0 -119
- package/es/utils/index.js +0 -3
- package/es/validators/index.js +0 -2
- package/es/validators/validators.js +0 -94
- package/lib/AddressInput/index.js +0 -13
- package/lib/BoolInput/BoolInput.js +0 -23
- package/lib/BoolInput/InlineBoolInput.js +0 -23
- package/lib/BoolInput/boolOptions.js +0 -15
- package/lib/BoolInput/index.js +0 -23
- package/lib/ConfirmBaseForm/index.js +0 -13
- package/lib/ConfirmDeleteForm/index.js +0 -13
- package/lib/DatePickerInput/index.js +0 -13
- package/lib/ErrorScrollTarget.js +0 -20
- package/lib/FileInput/DefaultFileList.js +0 -47
- package/lib/FileInput/DropzoneFileInput.js +0 -75
- package/lib/FileInput/FileInput.js +0 -82
- package/lib/FileInput/index.js +0 -23
- package/lib/Form/index.js +0 -23
- package/lib/FormGroup.js +0 -33
- package/lib/FormGroupWrapper.js +0 -37
- package/lib/FormInput/FormInput.js +0 -229
- package/lib/FormInput/index.js +0 -13
- package/lib/FormInputArray/FormInputArray.js +0 -248
- package/lib/FormInputArray/index.js +0 -13
- package/lib/FormSection.js +0 -28
- package/lib/IconInput.js +0 -51
- package/lib/InlineFormInput/InlineFormInput.js +0 -20
- package/lib/InlineFormInput/index.js +0 -13
- package/lib/MoneyInput/InlineMoneyInput.js +0 -20
- package/lib/MoneyInput/MoneyInput.js +0 -20
- package/lib/MoneyInput/index.js +0 -23
- package/lib/MoneyInput/moneyInputProps.js +0 -26
- package/lib/NestedFormFieldContext.js +0 -16
- package/lib/ReactSelectField/ReactSelectField.js +0 -152
- package/lib/ReactSelectField/index.js +0 -31
- package/lib/normalizers.js +0 -51
- package/lib/selectors.js +0 -18
- package/lib/useStandardFormInput.js +0 -135
- package/lib/utils/index.js +0 -23
- package/lib/validators/index.js +0 -17
- package/lib/validators/validators.js +0 -130
- package/src/AddressInput/AddressInput.js +0 -73
- package/src/AddressInput/__snapshots__/AddesssInput.test.js.snap +0 -207
- package/src/AddressInput/index.js +0 -2
- package/src/BoolInput/BoolInput.js +0 -7
- package/src/BoolInput/BoolInput.test.js +0 -23
- package/src/BoolInput/InlineBoolInput.js +0 -7
- package/src/BoolInput/__snapshots__/BoolInput.test.js.snap +0 -89
- package/src/BoolInput/boolOptions.js +0 -6
- package/src/BoolInput/index.js +0 -4
- package/src/ConfirmBaseForm/ConfirmBaseForm.js +0 -37
- package/src/ConfirmBaseForm/ConfirmBaseForm.test.js +0 -14
- package/src/ConfirmBaseForm/index.js +0 -2
- package/src/ConfirmDeleteForm/ConfirmDeleteForm.js +0 -39
- package/src/ConfirmDeleteForm/index.js +0 -2
- package/src/DatePickerInput/DatePickerInput.js +0 -49
- package/src/DatePickerInput/DatePickerInput.test.js +0 -74
- package/src/DatePickerInput/__snapshots__/DatePickerInput.test.js.snap +0 -134
- package/src/DatePickerInput/date-picker-input.scss +0 -42
- package/src/DatePickerInput/index.js +0 -3
- package/src/ErrorScrollTarget.js +0 -6
- package/src/FileInput/DefaultFileList.js +0 -39
- package/src/FileInput/DropzoneFileInput.js +0 -56
- package/src/FileInput/DropzoneFileInput.test.js +0 -24
- package/src/FileInput/FileInput.js +0 -77
- package/src/FileInput/FileInput.test.js +0 -24
- package/src/FileInput/__snapshots__/DropzoneFileInput.test.js.snap +0 -57
- package/src/FileInput/__snapshots__/FileInput.test.js.snap +0 -58
- package/src/FileInput/file-input.scss +0 -58
- package/src/FileInput/index.js +0 -4
- package/src/Form/Form.test.js +0 -23
- package/src/Form/FormBasedPreventNavigation.js +0 -25
- package/src/Form/ServerErrorContext.js +0 -7
- package/src/Form/index.js +0 -3
- package/src/FormGroup.js +0 -30
- package/src/FormGroupWrapper.js +0 -28
- package/src/FormInput/FormInput.js +0 -145
- package/src/FormInput/FormInput.test.js +0 -66
- package/src/FormInput/__snapshots__/FormInput.test.js.snap +0 -323
- package/src/FormInput/form-input.scss +0 -9
- package/src/FormInput/index.js +0 -2
- package/src/FormInputArray/FormInputArray.js +0 -224
- package/src/FormInputArray/FormInputArray.test.js +0 -108
- package/src/FormInputArray/__snapshots__/FormInputArray.test.js.snap +0 -52
- package/src/FormInputArray/form-input-array.scss +0 -13
- package/src/FormInputArray/index.js +0 -2
- package/src/FormSection.js +0 -13
- package/src/IconInput.js +0 -31
- package/src/InlineFormInput/InlineFormInput.js +0 -6
- package/src/InlineFormInput/InlineFormInput.test.js +0 -23
- package/src/InlineFormInput/__snapshots__/InlineFormInput.test.js.snap +0 -26
- package/src/InlineFormInput/index.js +0 -3
- package/src/InlineFormInput/inline-form-input.scss +0 -3
- package/src/MoneyInput/InlineMoneyInput.js +0 -7
- package/src/MoneyInput/MoneyInput.js +0 -7
- package/src/MoneyInput/MoneyInputs.test.js +0 -43
- package/src/MoneyInput/__snapshots__/MoneyInputs.test.js.snap +0 -81
- package/src/MoneyInput/index.js +0 -4
- package/src/MoneyInput/money-input.scss +0 -3
- package/src/MoneyInput/moneyInputProps.js +0 -12
- package/src/NestedFormFieldContext.js +0 -6
- package/src/ReactSelectField/ReactSelectField.js +0 -122
- package/src/ReactSelectField/index.js +0 -6
- package/src/ReactSelectField/react-select-field.scss +0 -5
- package/src/SubmitFormButton.js +0 -28
- package/src/__Tests__/FormTestBase.js +0 -14
- package/src/__Tests__/IconInput.test.js +0 -23
- package/src/__Tests__/__snapshots__/IconInput.test.js.snap +0 -38
- package/src/index.js +0 -45
- package/src/selectors.js +0 -3
- package/src/useStandardFormInput.js +0 -118
- package/src/utils/index.js +0 -3
- package/src/utils/typeChecks.js +0 -18
- package/src/validators/index.js +0 -2
- package/src/validators/validators.js +0 -93
@@ -1,24 +1,17 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
return
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
return objectContainsNonSerializableProperty(value[1]);
|
19
|
-
}
|
20
|
-
}
|
21
|
-
|
22
|
-
return false;
|
23
|
-
});
|
24
|
-
}
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
var typeChecks_1 = require("./typeChecks");
|
4
|
+
function objectContainsNonSerializableProperty(object) {
|
5
|
+
return Object.entries(object).some(function (value) {
|
6
|
+
if (value) {
|
7
|
+
if ((0, typeChecks_1.isBlob)(value[1]) || (0, typeChecks_1.isFile)(value[1])) {
|
8
|
+
return true;
|
9
|
+
}
|
10
|
+
if ((0, typeChecks_1.isObject)(value[1])) {
|
11
|
+
return objectContainsNonSerializableProperty(value[1]);
|
12
|
+
}
|
13
|
+
}
|
14
|
+
return false;
|
15
|
+
});
|
16
|
+
}
|
17
|
+
exports.default = objectContainsNonSerializableProperty;
|
@@ -0,0 +1,10 @@
|
|
1
|
+
export interface ObjectToFormDataCfgProps {
|
2
|
+
indices: boolean;
|
3
|
+
dotNotation: boolean;
|
4
|
+
allowEmptyArrays: boolean;
|
5
|
+
noFileListBrackets: boolean;
|
6
|
+
nullsAsUndefineds?: boolean;
|
7
|
+
booleansAsIntegers?: boolean;
|
8
|
+
}
|
9
|
+
declare const serialize: (obj: any, cfg: ObjectToFormDataCfgProps, fd?: FormData | undefined, pre?: string | undefined) => FormData;
|
10
|
+
export default serialize;
|
@@ -1,73 +1,79 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
if (
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
// Original: https://github.com/therealparmesh/object-to-formdata/blob/master/src/index.js
|
4
|
+
// With Multiple Form File Fix: https://github.com/therealparmesh/object-to-formdata/pull/94/files
|
5
|
+
var typeChecks_1 = require("./typeChecks");
|
6
|
+
// 'pre' is not provided until this function recursively calls itself when 'obj' is an array or object
|
7
|
+
var serialize = function (obj, cfg, fd, pre) {
|
8
|
+
cfg = cfg || {};
|
9
|
+
cfg.indices = (0, typeChecks_1.isUndefined)(cfg.indices) ? false : cfg.indices;
|
10
|
+
cfg.nullsAsUndefineds = (0, typeChecks_1.isUndefined)(cfg.nullsAsUndefineds)
|
11
|
+
? false
|
12
|
+
: cfg.nullsAsUndefineds;
|
13
|
+
cfg.booleansAsIntegers = (0, typeChecks_1.isUndefined)(cfg.booleansAsIntegers)
|
14
|
+
? false
|
15
|
+
: cfg.booleansAsIntegers;
|
16
|
+
cfg.allowEmptyArrays = (0, typeChecks_1.isUndefined)(cfg.allowEmptyArrays)
|
17
|
+
? false
|
18
|
+
: cfg.allowEmptyArrays;
|
19
|
+
//reverse of normal because we want a different default
|
20
|
+
cfg.dotNotation = (0, typeChecks_1.isUndefined)(cfg.dotNotation) ? true : cfg.dotNotation;
|
21
|
+
fd = fd || new FormData();
|
22
|
+
if ((0, typeChecks_1.isUndefined)(obj)) {
|
23
|
+
return fd;
|
24
|
+
}
|
25
|
+
else if ((0, typeChecks_1.isNull)(obj) && !!pre) {
|
26
|
+
if (!cfg.nullsAsUndefineds) {
|
27
|
+
fd.append(pre, '');
|
28
|
+
}
|
29
|
+
}
|
30
|
+
else if ((0, typeChecks_1.isBoolean)(obj) && !!pre) {
|
31
|
+
if (cfg.booleansAsIntegers) {
|
32
|
+
fd.append(pre, obj ? '1' : '0');
|
33
|
+
}
|
34
|
+
else {
|
35
|
+
fd.append(pre, obj);
|
36
|
+
}
|
37
|
+
}
|
38
|
+
else if ((0, typeChecks_1.isDate)(obj) && !!pre) {
|
39
|
+
fd.append(pre, obj.toISOString());
|
40
|
+
}
|
41
|
+
else if ((0, typeChecks_1.isArray)(obj)) {
|
42
|
+
if (obj.length) {
|
43
|
+
obj.forEach(function (value, index) {
|
44
|
+
var key;
|
45
|
+
if (cfg.noFileListBrackets && (0, typeChecks_1.isFile)(value)) {
|
46
|
+
key = pre;
|
47
|
+
}
|
48
|
+
else {
|
49
|
+
key = pre + '[' + (cfg.indices ? index : '') + ']';
|
50
|
+
}
|
51
|
+
serialize(value, cfg, fd, key);
|
52
|
+
});
|
53
|
+
}
|
54
|
+
else if (cfg.allowEmptyArrays) {
|
55
|
+
fd.append(pre + '[]', '');
|
56
|
+
}
|
57
|
+
}
|
58
|
+
else if ((0, typeChecks_1.isObject)(obj) && !(0, typeChecks_1.isFile)(obj) && !(0, typeChecks_1.isBlob)(obj)) {
|
59
|
+
Object.keys(obj).forEach(function (prop) {
|
60
|
+
var value = obj[prop];
|
61
|
+
if ((0, typeChecks_1.isArray)(value)) {
|
62
|
+
while (prop.length > 2 && prop.lastIndexOf('[]') === prop.length - 2) {
|
63
|
+
prop = prop.substring(0, prop.length - 2);
|
64
|
+
}
|
65
|
+
}
|
66
|
+
var key = pre
|
67
|
+
? cfg.dotNotation
|
68
|
+
? pre + '.' + prop
|
69
|
+
: pre + '[' + prop + ']'
|
70
|
+
: prop;
|
71
|
+
serialize(value, cfg, fd, key);
|
72
|
+
});
|
73
|
+
}
|
74
|
+
else if (!!pre) {
|
75
|
+
fd.append(pre, obj);
|
76
|
+
}
|
77
|
+
return fd;
|
78
|
+
};
|
79
|
+
exports.default = serialize;
|
@@ -0,0 +1,8 @@
|
|
1
|
+
export declare const isUndefined: (value: any) => boolean;
|
2
|
+
export declare const isNull: (value: any) => boolean;
|
3
|
+
export declare const isBoolean: (value: any) => boolean;
|
4
|
+
export declare const isObject: (value: any) => boolean;
|
5
|
+
export declare const isArray: (value: any) => boolean;
|
6
|
+
export declare const isDate: (value: any) => boolean;
|
7
|
+
export declare const isBlob: (value: any) => any;
|
8
|
+
export declare const isFile: (value: any) => any;
|
package/lib/utils/typeChecks.js
CHANGED
@@ -1,58 +1,29 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
var
|
11
|
-
|
12
|
-
var
|
13
|
-
|
14
|
-
};
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
exports.
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
var isObject = function isObject(value) {
|
31
|
-
return value === Object(value);
|
32
|
-
};
|
33
|
-
|
34
|
-
exports.isObject = isObject;
|
35
|
-
|
36
|
-
var isArray = function isArray(value) {
|
37
|
-
return Array.isArray(value);
|
38
|
-
};
|
39
|
-
|
40
|
-
exports.isArray = isArray;
|
41
|
-
|
42
|
-
var isDate = function isDate(value) {
|
43
|
-
return value instanceof Date;
|
44
|
-
};
|
45
|
-
|
46
|
-
exports.isDate = isDate;
|
47
|
-
|
48
|
-
var isBlob = function isBlob(value) {
|
49
|
-
return value && typeof value.size === 'number' && typeof value.type === 'string' && typeof value.slice === 'function';
|
50
|
-
};
|
51
|
-
|
52
|
-
exports.isBlob = isBlob;
|
53
|
-
|
54
|
-
var isFile = function isFile(value) {
|
55
|
-
return isBlob(value) && typeof value.name === 'string' && ((0, _typeof2["default"])(value.lastModifiedDate) === 'object' || typeof value.lastModified === 'number');
|
56
|
-
};
|
57
|
-
|
58
|
-
exports.isFile = isFile;
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.isFile = exports.isBlob = exports.isDate = exports.isArray = exports.isObject = exports.isBoolean = exports.isNull = exports.isUndefined = void 0;
|
4
|
+
var isUndefined = function (value) { return value === undefined; };
|
5
|
+
exports.isUndefined = isUndefined;
|
6
|
+
var isNull = function (value) { return value === null; };
|
7
|
+
exports.isNull = isNull;
|
8
|
+
var isBoolean = function (value) { return typeof value === 'boolean'; };
|
9
|
+
exports.isBoolean = isBoolean;
|
10
|
+
var isObject = function (value) { return value === Object(value); };
|
11
|
+
exports.isObject = isObject;
|
12
|
+
var isArray = function (value) { return Array.isArray(value); };
|
13
|
+
exports.isArray = isArray;
|
14
|
+
var isDate = function (value) { return value instanceof Date; };
|
15
|
+
exports.isDate = isDate;
|
16
|
+
var isBlob = function (value) {
|
17
|
+
return value &&
|
18
|
+
typeof value.size === 'number' &&
|
19
|
+
typeof value.type === 'string' &&
|
20
|
+
typeof value.slice === 'function';
|
21
|
+
};
|
22
|
+
exports.isBlob = isBlob;
|
23
|
+
var isFile = function (value) {
|
24
|
+
return (0, exports.isBlob)(value) &&
|
25
|
+
typeof value.name === 'string' &&
|
26
|
+
(typeof value.lastModifiedDate === 'object' ||
|
27
|
+
typeof value.lastModified === 'number');
|
28
|
+
};
|
29
|
+
exports.isFile = isFile;
|
package/package.json
CHANGED
@@ -1,100 +1,106 @@
|
|
1
|
-
{
|
2
|
-
"name": "envoc-form",
|
3
|
-
"version": "
|
4
|
-
"description": "Envoc form components",
|
5
|
-
"keywords": [
|
6
|
-
"react-component",
|
7
|
-
"react",
|
8
|
-
"forms",
|
9
|
-
"components",
|
10
|
-
"envoc"
|
11
|
-
],
|
12
|
-
"homepage": "",
|
13
|
-
"repository": "",
|
14
|
-
"license": "MIT",
|
15
|
-
"author": "Envoc Developers",
|
16
|
-
"sideEffects": false,
|
17
|
-
"main": "lib/index.js",
|
18
|
-
"module": "es/index.js",
|
19
|
-
"files": [
|
20
|
-
"dist",
|
21
|
-
"src",
|
22
|
-
"lib",
|
23
|
-
"es"
|
24
|
-
],
|
25
|
-
"
|
26
|
-
"
|
27
|
-
"
|
28
|
-
"
|
29
|
-
"
|
30
|
-
"
|
31
|
-
"
|
32
|
-
"
|
33
|
-
"
|
34
|
-
"
|
35
|
-
|
36
|
-
|
37
|
-
"
|
38
|
-
"
|
39
|
-
"
|
40
|
-
"
|
41
|
-
"
|
42
|
-
"
|
43
|
-
"
|
44
|
-
|
45
|
-
|
46
|
-
"
|
47
|
-
"
|
48
|
-
"
|
49
|
-
"
|
50
|
-
"
|
51
|
-
"
|
52
|
-
"
|
53
|
-
"@
|
54
|
-
"
|
55
|
-
"
|
56
|
-
|
57
|
-
|
58
|
-
"
|
59
|
-
"
|
60
|
-
"
|
61
|
-
"
|
62
|
-
"react": "^
|
63
|
-
"
|
64
|
-
"react
|
65
|
-
"
|
66
|
-
"
|
67
|
-
"
|
68
|
-
"
|
69
|
-
"
|
70
|
-
"
|
71
|
-
"
|
72
|
-
"webpack-
|
73
|
-
"
|
74
|
-
"
|
75
|
-
|
76
|
-
|
77
|
-
"
|
78
|
-
"
|
79
|
-
"react": "
|
80
|
-
"react-dom": "
|
81
|
-
"react-
|
82
|
-
|
83
|
-
|
84
|
-
"
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
"
|
90
|
-
"
|
91
|
-
"
|
92
|
-
"
|
93
|
-
|
94
|
-
|
95
|
-
"
|
96
|
-
"
|
97
|
-
"
|
98
|
-
|
99
|
-
|
100
|
-
}
|
1
|
+
{
|
2
|
+
"name": "envoc-form",
|
3
|
+
"version": "4.0.1-0",
|
4
|
+
"description": "Envoc form components",
|
5
|
+
"keywords": [
|
6
|
+
"react-component",
|
7
|
+
"react",
|
8
|
+
"forms",
|
9
|
+
"components",
|
10
|
+
"envoc"
|
11
|
+
],
|
12
|
+
"homepage": "",
|
13
|
+
"repository": "",
|
14
|
+
"license": "MIT",
|
15
|
+
"author": "Envoc Developers",
|
16
|
+
"sideEffects": false,
|
17
|
+
"main": "lib/index.js",
|
18
|
+
"module": "es/index.js",
|
19
|
+
"files": [
|
20
|
+
"dist",
|
21
|
+
"src",
|
22
|
+
"lib",
|
23
|
+
"es"
|
24
|
+
],
|
25
|
+
"scripts": {
|
26
|
+
"build": "yarn verify-imports && yarn build:esm && yarn build:cjs && yarn build:css",
|
27
|
+
"rebuild": "rimraf ./{dist,es,lib} && yarn build",
|
28
|
+
"build:esm": "cross-env BABEL_ENV=esm-dir tsc -p tsconfig.esm.json",
|
29
|
+
"build:css": "sass src/styles.scss dist/css/envoc-form-styles.css",
|
30
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
31
|
+
"verify-imports": "node ../../scripts/check-for-scss-imports.js envoc-form",
|
32
|
+
"start": "webpack serve --config ./webpack.demo.config.js",
|
33
|
+
"test": "cross-env SKIP_PREFLIGHT_CHECK=true react-scripts test --watchAll=false",
|
34
|
+
"coverage": "yarn test --verbose --reporters=default --reporters=jest-junit --coverage --coverageReporters=cobertura"
|
35
|
+
},
|
36
|
+
"dependencies": {
|
37
|
+
"axios": "^0.21.1",
|
38
|
+
"classnames": "^2.3.1",
|
39
|
+
"date-fns": "^2.22.1",
|
40
|
+
"envoc-request": "^4.0.1-0",
|
41
|
+
"lru-cache": "^6.0.0",
|
42
|
+
"prop-types": "^15.7.2",
|
43
|
+
"react-date-picker": "^8.2.0",
|
44
|
+
"react-dropzone": "^11.3.4",
|
45
|
+
"react-router": "^6.2.1",
|
46
|
+
"react-select": "^5.2.2",
|
47
|
+
"react-textarea-autosize": "^8.3.3",
|
48
|
+
"react-toastify": "^7.0.4",
|
49
|
+
"reactstrap": "^8.9.0",
|
50
|
+
"history": "^5.2.0",
|
51
|
+
"smoothscroll-polyfill": "^0.4.4",
|
52
|
+
"uuid": "^8.3.2",
|
53
|
+
"@fortawesome/react-fontawesome": "~0.1.16",
|
54
|
+
"@fortawesome/free-solid-svg-icons": "~5.15.4",
|
55
|
+
"@fortawesome/fontawesome-svg-core": "~1.2.36"
|
56
|
+
},
|
57
|
+
"devDependencies": {
|
58
|
+
"@babel/cli": "^7.14.5",
|
59
|
+
"@babel/core": "^7.14.6",
|
60
|
+
"@babel/plugin-transform-runtime": "^7.14.5",
|
61
|
+
"@babel/preset-env": "^7.14.7",
|
62
|
+
"@babel/preset-react": "^7.14.5",
|
63
|
+
"@testing-library/jest-dom": "^5.14.1",
|
64
|
+
"@testing-library/react": "^11.2.5",
|
65
|
+
"@testing-library/user-event": "^12.7.1",
|
66
|
+
"@types/jest": "^26.0.24",
|
67
|
+
"@types/react": "^16.9.56",
|
68
|
+
"@types/smoothscroll-polyfill": "^0.3.1",
|
69
|
+
"@types/uuid": "^8.3.2",
|
70
|
+
"babel-loader": "^8.2.2",
|
71
|
+
"bootstrap": "^4.6.0",
|
72
|
+
"clean-webpack-plugin": "^3.0.0",
|
73
|
+
"cross-env": "7.0.3",
|
74
|
+
"css-loader": "^5.0.2",
|
75
|
+
"html-webpack-plugin": "^5.3.2",
|
76
|
+
"identity-obj-proxy": "^3.0.0",
|
77
|
+
"jest-junit": "~12.2.0",
|
78
|
+
"react": "^17.0.1",
|
79
|
+
"react-dom": "^17.0.1",
|
80
|
+
"react-router-dom": "^6.2.1",
|
81
|
+
"react-scripts": "^4.0.3",
|
82
|
+
"rimraf": "~3.0.2",
|
83
|
+
"sass": "^1.35.2",
|
84
|
+
"sass-loader": "^11.0.1",
|
85
|
+
"style-loader": "^2.0.0",
|
86
|
+
"webpack": "^5.45.0",
|
87
|
+
"webpack-cli": "^4.7.2",
|
88
|
+
"webpack-dev-server": "^3.11.2",
|
89
|
+
"ts-loader": "^9.2.8",
|
90
|
+
"typescript": "^4.6.3",
|
91
|
+
"typedoc-plugin-markdown": "~3.10.3",
|
92
|
+
"typedoc": "~0.21.4"
|
93
|
+
},
|
94
|
+
"peerDependencies": {
|
95
|
+
"@babel/runtime": "^7.14.6",
|
96
|
+
"formik": "^2.2.9",
|
97
|
+
"react": ">=16.8.0",
|
98
|
+
"react-dom": ">=16.8.0",
|
99
|
+
"react-router-dom": "^6.2.1"
|
100
|
+
},
|
101
|
+
"jest": {
|
102
|
+
"transformIgnorePatterns": [
|
103
|
+
"^.+\\.module\\.(css|sass|scss)$"
|
104
|
+
]
|
105
|
+
}
|
106
|
+
}
|
@@ -1,13 +1,15 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { render } from '@testing-library/react';
|
3
|
-
import { FormTestBase } from '../__Tests__';
|
4
3
|
import AddressInput from './AddressInput';
|
4
|
+
import FormTestBase from '../__Tests__/FormTestBase';
|
5
5
|
|
6
6
|
describe('AddressInput', () => {
|
7
7
|
it('renders without crashing', () => {
|
8
8
|
render(
|
9
9
|
<FormTestBase>
|
10
|
-
|
10
|
+
{({ Field }) => (
|
11
|
+
<AddressInput fieldBuilder={{ Field }} name="normalAddressInput" />
|
12
|
+
)}
|
11
13
|
</FormTestBase>
|
12
14
|
);
|
13
15
|
});
|
@@ -15,7 +17,9 @@ describe('AddressInput', () => {
|
|
15
17
|
it('has matching snapshot', () => {
|
16
18
|
const renderResult = render(
|
17
19
|
<FormTestBase>
|
18
|
-
|
20
|
+
{({ Field }) => (
|
21
|
+
<AddressInput fieldBuilder={{ Field }} name="normalAddressInput" />
|
22
|
+
)}
|
19
23
|
</FormTestBase>
|
20
24
|
);
|
21
25
|
expect(renderResult.asFragment()).toMatchSnapshot();
|
@@ -0,0 +1,72 @@
|
|
1
|
+
import UsStates from './UsStates';
|
2
|
+
import { SingleStringSelectGroup, StringInputGroup } from '../';
|
3
|
+
import FieldSection from '../Field/FieldSection';
|
4
|
+
import { FormBuilderProp } from '../Form/Form';
|
5
|
+
import { zipCode as zipCodeNormalizer } from '../Normalization/normalizers';
|
6
|
+
import {
|
7
|
+
required,
|
8
|
+
zipCode as zipCodeValidator,
|
9
|
+
} from '../Validation/validators';
|
10
|
+
|
11
|
+
// TODO: find a permanent home for these interfaces
|
12
|
+
// TODO: but also, maybe they are comfortable here?
|
13
|
+
export interface AddressInputProps {
|
14
|
+
fieldBuilder: Pick<FormBuilderProp<AddressDto>, 'Field'>;
|
15
|
+
name: string;
|
16
|
+
}
|
17
|
+
|
18
|
+
interface AddressDto {
|
19
|
+
address1?: string;
|
20
|
+
address2?: string;
|
21
|
+
zipCode?: string;
|
22
|
+
city?: string;
|
23
|
+
state?: string;
|
24
|
+
}
|
25
|
+
|
26
|
+
export default function AddressInput({
|
27
|
+
fieldBuilder: { Field },
|
28
|
+
name,
|
29
|
+
}: AddressInputProps) {
|
30
|
+
return (
|
31
|
+
<>
|
32
|
+
<FieldSection name={name}>
|
33
|
+
<Field
|
34
|
+
name="address1"
|
35
|
+
placeholder="Address, Line 1"
|
36
|
+
label="Address 1"
|
37
|
+
Component={StringInputGroup}
|
38
|
+
validate={required}
|
39
|
+
/>
|
40
|
+
<Field
|
41
|
+
name="address2"
|
42
|
+
placeholder="Address, Line 2"
|
43
|
+
label="Address 2"
|
44
|
+
Component={StringInputGroup}
|
45
|
+
/>
|
46
|
+
<Field
|
47
|
+
name="city"
|
48
|
+
placeholder="City"
|
49
|
+
label="City"
|
50
|
+
Component={StringInputGroup}
|
51
|
+
validate={required}
|
52
|
+
/>
|
53
|
+
<Field
|
54
|
+
name="state"
|
55
|
+
placeholder="State"
|
56
|
+
label="State"
|
57
|
+
Component={SingleStringSelectGroup}
|
58
|
+
options={UsStates}
|
59
|
+
validate={required}
|
60
|
+
/>
|
61
|
+
<Field
|
62
|
+
name="zipCode"
|
63
|
+
placeholder="Zip"
|
64
|
+
label="Zip"
|
65
|
+
Component={StringInputGroup}
|
66
|
+
normalize={zipCodeNormalizer}
|
67
|
+
validate={[required, zipCodeValidator]}
|
68
|
+
/>
|
69
|
+
</FieldSection>
|
70
|
+
</>
|
71
|
+
);
|
72
|
+
}
|