envoc-form 3.3.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 -25
- 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 -262
- 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 -101
- 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 -3
- 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 -4
- package/es/Form/index.js +0 -5
- package/es/FormGroup.js +0 -22
- package/es/FormGroupWrapper.js +0 -22
- package/es/FormInput/FormInput.js +0 -212
- 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/MoneyFormattedInput/MoneyFormattedInput.js +0 -106
- package/es/MoneyFormattedInput/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 -162
- 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 -23
- 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 -31
- package/lib/Form/index.js +0 -39
- package/lib/FormGroup.js +0 -33
- package/lib/FormGroupWrapper.js +0 -37
- package/lib/FormInput/FormInput.js +0 -236
- 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/MoneyFormattedInput/MoneyFormattedInput.js +0 -126
- package/lib/MoneyFormattedInput/index.js +0 -15
- 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 -187
- 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 -3
- 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 -5
- 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 -11
- package/src/FormGroup.js +0 -30
- package/src/FormGroupWrapper.js +0 -28
- package/src/FormInput/FormInput.js +0 -148
- 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/MoneyFormattedInput/MoneyFormattedInput.js +0 -115
- package/src/MoneyFormattedInput/index.js +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 -155
- 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 -70
- 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
@@ -0,0 +1,197 @@
|
|
1
|
+
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
+
|
3
|
+
exports[`MultiStringSelectGroup has matching snapshot 1`] = `
|
4
|
+
<DocumentFragment>
|
5
|
+
<form
|
6
|
+
action="#"
|
7
|
+
>
|
8
|
+
<div
|
9
|
+
class="multiple select-group group"
|
10
|
+
>
|
11
|
+
<div
|
12
|
+
id="favoritecolors-error-scroll-target"
|
13
|
+
style="display: none;"
|
14
|
+
/>
|
15
|
+
<label
|
16
|
+
for="favoriteColors"
|
17
|
+
>
|
18
|
+
Favorite Color
|
19
|
+
</label>
|
20
|
+
<div
|
21
|
+
class="select-group css-b62m3t-container"
|
22
|
+
>
|
23
|
+
<span
|
24
|
+
class="css-1f43avz-a11yText-A11yText"
|
25
|
+
id="react-select-5-live-region"
|
26
|
+
/>
|
27
|
+
<span
|
28
|
+
aria-atomic="false"
|
29
|
+
aria-live="polite"
|
30
|
+
aria-relevant="additions text"
|
31
|
+
class="css-1f43avz-a11yText-A11yText"
|
32
|
+
/>
|
33
|
+
<div
|
34
|
+
class="react-select__control css-1s2u09g-control"
|
35
|
+
>
|
36
|
+
<div
|
37
|
+
class="react-select__value-container react-select__value-container--is-multi css-dlobye-Component"
|
38
|
+
>
|
39
|
+
<div
|
40
|
+
class="react-select__placeholder css-14el2xx-placeholder"
|
41
|
+
id="react-select-5-placeholder"
|
42
|
+
>
|
43
|
+
Select...
|
44
|
+
</div>
|
45
|
+
<div
|
46
|
+
class="react-select__input-container css-1u4kn00-Component"
|
47
|
+
data-value=""
|
48
|
+
>
|
49
|
+
<input
|
50
|
+
aria-autocomplete="list"
|
51
|
+
aria-controls="react-select-5-listbox"
|
52
|
+
aria-describedby="react-select-5-placeholder"
|
53
|
+
aria-expanded="false"
|
54
|
+
aria-haspopup="true"
|
55
|
+
aria-owns="react-select-5-listbox"
|
56
|
+
autocapitalize="none"
|
57
|
+
autocomplete="off"
|
58
|
+
autocorrect="off"
|
59
|
+
class="react-select__input"
|
60
|
+
id="favoriteColors"
|
61
|
+
role="combobox"
|
62
|
+
spellcheck="false"
|
63
|
+
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
64
|
+
tabindex="0"
|
65
|
+
type="text"
|
66
|
+
value=""
|
67
|
+
/>
|
68
|
+
</div>
|
69
|
+
</div>
|
70
|
+
<div
|
71
|
+
class="react-select__indicators css-ny0e4k-Component"
|
72
|
+
>
|
73
|
+
<span
|
74
|
+
class="react-select__indicator-separator css-1okebmr-indicatorSeparator"
|
75
|
+
/>
|
76
|
+
<div
|
77
|
+
aria-hidden="true"
|
78
|
+
class="react-select__indicator react-select__dropdown-indicator css-tlfecz-indicatorContainer"
|
79
|
+
>
|
80
|
+
<svg
|
81
|
+
aria-hidden="true"
|
82
|
+
class="css-tj5bde-Svg"
|
83
|
+
focusable="false"
|
84
|
+
height="20"
|
85
|
+
viewBox="0 0 20 20"
|
86
|
+
width="20"
|
87
|
+
>
|
88
|
+
<path
|
89
|
+
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
90
|
+
/>
|
91
|
+
</svg>
|
92
|
+
</div>
|
93
|
+
</div>
|
94
|
+
</div>
|
95
|
+
</div>
|
96
|
+
</div>
|
97
|
+
</form>
|
98
|
+
</DocumentFragment>
|
99
|
+
`;
|
100
|
+
|
101
|
+
exports[`SingleStringSelectGroup has matching snapshot 1`] = `
|
102
|
+
<DocumentFragment>
|
103
|
+
<form
|
104
|
+
action="#"
|
105
|
+
>
|
106
|
+
<div
|
107
|
+
class="select-group group"
|
108
|
+
>
|
109
|
+
<div
|
110
|
+
id="favoritecolor-error-scroll-target"
|
111
|
+
style="display: none;"
|
112
|
+
/>
|
113
|
+
<label
|
114
|
+
for="favoriteColor"
|
115
|
+
>
|
116
|
+
Favorite Color
|
117
|
+
</label>
|
118
|
+
<div
|
119
|
+
class="select-group css-b62m3t-container"
|
120
|
+
>
|
121
|
+
<span
|
122
|
+
class="css-1f43avz-a11yText-A11yText"
|
123
|
+
id="react-select-3-live-region"
|
124
|
+
/>
|
125
|
+
<span
|
126
|
+
aria-atomic="false"
|
127
|
+
aria-live="polite"
|
128
|
+
aria-relevant="additions text"
|
129
|
+
class="css-1f43avz-a11yText-A11yText"
|
130
|
+
/>
|
131
|
+
<div
|
132
|
+
class="react-select__control css-1s2u09g-control"
|
133
|
+
>
|
134
|
+
<div
|
135
|
+
class="react-select__value-container css-dlobye-Component"
|
136
|
+
>
|
137
|
+
<div
|
138
|
+
class="react-select__placeholder css-14el2xx-placeholder"
|
139
|
+
id="react-select-3-placeholder"
|
140
|
+
>
|
141
|
+
Select...
|
142
|
+
</div>
|
143
|
+
<div
|
144
|
+
class="react-select__input-container css-1u4kn00-Component"
|
145
|
+
data-value=""
|
146
|
+
>
|
147
|
+
<input
|
148
|
+
aria-autocomplete="list"
|
149
|
+
aria-controls="react-select-3-listbox"
|
150
|
+
aria-describedby="react-select-3-placeholder"
|
151
|
+
aria-expanded="false"
|
152
|
+
aria-haspopup="true"
|
153
|
+
aria-owns="react-select-3-listbox"
|
154
|
+
autocapitalize="none"
|
155
|
+
autocomplete="off"
|
156
|
+
autocorrect="off"
|
157
|
+
class="react-select__input"
|
158
|
+
id="favoriteColor"
|
159
|
+
role="combobox"
|
160
|
+
spellcheck="false"
|
161
|
+
style="opacity: 1; width: 100%; grid-area: 1 / 2; min-width: 2px; border: 0px; margin: 0px; outline: 0; padding: 0px;"
|
162
|
+
tabindex="0"
|
163
|
+
type="text"
|
164
|
+
value=""
|
165
|
+
/>
|
166
|
+
</div>
|
167
|
+
</div>
|
168
|
+
<div
|
169
|
+
class="react-select__indicators css-ny0e4k-Component"
|
170
|
+
>
|
171
|
+
<span
|
172
|
+
class="react-select__indicator-separator css-1okebmr-indicatorSeparator"
|
173
|
+
/>
|
174
|
+
<div
|
175
|
+
aria-hidden="true"
|
176
|
+
class="react-select__indicator react-select__dropdown-indicator css-tlfecz-indicatorContainer"
|
177
|
+
>
|
178
|
+
<svg
|
179
|
+
aria-hidden="true"
|
180
|
+
class="css-tj5bde-Svg"
|
181
|
+
focusable="false"
|
182
|
+
height="20"
|
183
|
+
viewBox="0 0 20 20"
|
184
|
+
width="20"
|
185
|
+
>
|
186
|
+
<path
|
187
|
+
d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
|
188
|
+
/>
|
189
|
+
</svg>
|
190
|
+
</div>
|
191
|
+
</div>
|
192
|
+
</div>
|
193
|
+
</div>
|
194
|
+
</div>
|
195
|
+
</form>
|
196
|
+
</DocumentFragment>
|
197
|
+
`;
|
@@ -1,24 +1,30 @@
|
|
1
|
-
import
|
2
|
-
import
|
1
|
+
import { MouseEventHandler } from 'react';
|
2
|
+
import classNames from 'classnames';
|
3
3
|
import { useFormikContext } from 'formik';
|
4
4
|
import SubmitFormButton from './SubmitFormButton';
|
5
5
|
|
6
|
+
export interface StandardFormActionsProps {
|
7
|
+
allowPristineSubmit?: boolean;
|
8
|
+
handleCancel?: MouseEventHandler<HTMLButtonElement>;
|
9
|
+
}
|
10
|
+
|
6
11
|
export default function StandardFormActions({
|
7
12
|
allowPristineSubmit,
|
8
13
|
handleCancel,
|
9
|
-
}) {
|
14
|
+
}: StandardFormActionsProps) {
|
10
15
|
const { isSubmitting } = useFormikContext();
|
16
|
+
|
11
17
|
return (
|
12
18
|
<>
|
13
19
|
<SubmitFormButton allowPristineSubmit={allowPristineSubmit} />
|
14
20
|
|
15
|
-
<
|
21
|
+
<button
|
22
|
+
className={classNames('standard-form-actions-cancel-button')}
|
16
23
|
type="button"
|
17
|
-
color="link"
|
18
24
|
disabled={isSubmitting}
|
19
25
|
onClick={handleCancel || goBack}>
|
20
26
|
Cancel
|
21
|
-
</
|
27
|
+
</button>
|
22
28
|
</>
|
23
29
|
);
|
24
30
|
function goBack() {
|
@@ -0,0 +1,44 @@
|
|
1
|
+
import React, { LegacyRef } from 'react';
|
2
|
+
import classNames from 'classnames';
|
3
|
+
import { useFormikContext } from 'formik';
|
4
|
+
|
5
|
+
export interface SubmitFormButtonProps
|
6
|
+
extends Omit<React.HTMLProps<HTMLButtonElement>, 'type'> {
|
7
|
+
allowPristineSubmit?: boolean;
|
8
|
+
children?: React.ReactNode;
|
9
|
+
}
|
10
|
+
function SubmitFormButton(
|
11
|
+
{
|
12
|
+
allowPristineSubmit,
|
13
|
+
children,
|
14
|
+
disabled,
|
15
|
+
title,
|
16
|
+
className,
|
17
|
+
...props
|
18
|
+
}: SubmitFormButtonProps,
|
19
|
+
ref: LegacyRef<HTMLButtonElement>
|
20
|
+
) {
|
21
|
+
const { isSubmitting, dirty } = useFormikContext();
|
22
|
+
const preventSubmit = (!dirty && !allowPristineSubmit) || isSubmitting;
|
23
|
+
return (
|
24
|
+
<button
|
25
|
+
{...props}
|
26
|
+
ref={ref}
|
27
|
+
type="submit"
|
28
|
+
disabled={preventSubmit || disabled}
|
29
|
+
title={
|
30
|
+
title || isSubmitting
|
31
|
+
? 'Loading, please wait...'
|
32
|
+
: preventSubmit
|
33
|
+
? "You haven't made any changes"
|
34
|
+
: ''
|
35
|
+
}
|
36
|
+
className={classNames('submit-form-button', className)}>
|
37
|
+
{children || 'Submit'}
|
38
|
+
</button>
|
39
|
+
);
|
40
|
+
}
|
41
|
+
|
42
|
+
export default React.forwardRef(
|
43
|
+
SubmitFormButton
|
44
|
+
) as React.ComponentType<SubmitFormButtonProps>;
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { ValidationError } from './ValidationError';
|
2
|
+
|
3
|
+
// TODO: this means that all template projects MUST have this API shape - thoughts?
|
4
|
+
/** The root result from a typical envoc API call when forms are returned */
|
5
|
+
export interface ValidatedApiResult {
|
6
|
+
validationFailures?: ValidationError[];
|
7
|
+
hasErrors?: boolean;
|
8
|
+
}
|
@@ -2,12 +2,12 @@ import { integer, length, maxLength, maxValue, minValue } from './validators';
|
|
2
2
|
|
3
3
|
describe('integer validator', () => {
|
4
4
|
it('accepts an integer', () => {
|
5
|
-
const returned = integer(123);
|
5
|
+
const returned = integer('123');
|
6
6
|
expect(returned).toBe(undefined);
|
7
7
|
});
|
8
8
|
|
9
9
|
it("doesn't accept a float", () => {
|
10
|
-
const returned = integer(123.5569);
|
10
|
+
const returned = integer('123.5569');
|
11
11
|
expect(returned).toBe('Must be a whole number');
|
12
12
|
});
|
13
13
|
});
|
@@ -65,8 +65,10 @@ describe('minValue validator', () => {
|
|
65
65
|
describe('maxLength validator', () => {
|
66
66
|
it('fails for invalid value', () => {
|
67
67
|
const maxLength10 = maxLength(10);
|
68
|
-
const
|
69
|
-
|
68
|
+
const stringTooLong = maxLength10('012345678910');
|
69
|
+
const numberTooLong = maxLength10(1234567890123);
|
70
|
+
expect(stringTooLong).toBe('Maximum length 10 exceeded');
|
71
|
+
expect(numberTooLong).toBe('Maximum length 10 exceeded');
|
70
72
|
});
|
71
73
|
|
72
74
|
it('succeeds for valid value', () => {
|
@@ -0,0 +1,92 @@
|
|
1
|
+
import { ValidationFunction } from './ValidationFunction';
|
2
|
+
|
3
|
+
export const required = (value: any) =>
|
4
|
+
Array.isArray(value)
|
5
|
+
? value.length > 0
|
6
|
+
? undefined
|
7
|
+
: 'Required'
|
8
|
+
: value || value === false || value === 0
|
9
|
+
? undefined
|
10
|
+
: 'Required';
|
11
|
+
|
12
|
+
//asserts that the value is a certain number of characters. numbers are coerced to a string
|
13
|
+
export const length = (len: number) => (value: string | number | undefined) => {
|
14
|
+
const hasError = getLengthOfValue(value) !== len;
|
15
|
+
return !hasError ? undefined : `Length must be ${len}`;
|
16
|
+
};
|
17
|
+
|
18
|
+
export const integer = (val: string | undefined) => {
|
19
|
+
if (!val) {
|
20
|
+
return undefined;
|
21
|
+
}
|
22
|
+
if (!Number.isInteger(parseFloat(val))) {
|
23
|
+
return 'Must be a whole number';
|
24
|
+
}
|
25
|
+
};
|
26
|
+
|
27
|
+
export const maxLength =
|
28
|
+
(len: number) => (value: string | number | undefined) => {
|
29
|
+
const hasError = getLengthOfValue(value) > len;
|
30
|
+
return !hasError ? undefined : `Maximum length ${len} exceeded`;
|
31
|
+
};
|
32
|
+
|
33
|
+
export const maxCount =
|
34
|
+
(count: number) => (value: { isDeleted?: boolean }[] | undefined) => {
|
35
|
+
const hasError =
|
36
|
+
!!value && value.filter((x) => !x.isDeleted).length > count;
|
37
|
+
return !hasError ? undefined : `Should not have more than ${count}`;
|
38
|
+
};
|
39
|
+
|
40
|
+
export const minCount =
|
41
|
+
(count: number) => (value: { isDeleted?: boolean }[] | undefined) => {
|
42
|
+
const hasError = !value || value.filter((x) => !x.isDeleted).length < count;
|
43
|
+
return !hasError ? undefined : `Should have at least ${count}`;
|
44
|
+
};
|
45
|
+
|
46
|
+
export const maxValue = (max: number) => (value: number | undefined) => {
|
47
|
+
const hasError = !!value && value > max;
|
48
|
+
return !hasError ? undefined : `Maximum value ${max} exceeded`;
|
49
|
+
};
|
50
|
+
|
51
|
+
export const minValue = (min: number) => (value: number | undefined) => {
|
52
|
+
const hasError = !value || value < min;
|
53
|
+
return !hasError ? undefined : `Minimum value ${min} not met`;
|
54
|
+
};
|
55
|
+
|
56
|
+
export const zipCode = (value: string | undefined) => {
|
57
|
+
return value && !/^[0-9]{5}(?:-[0-9]{4})?$/.test(value)
|
58
|
+
? 'Invalid ZIP Code'
|
59
|
+
: undefined;
|
60
|
+
};
|
61
|
+
|
62
|
+
//one of the validators provided must be true
|
63
|
+
export const any =
|
64
|
+
<TValue>(validatorList: ValidationFunction<TValue>[]) =>
|
65
|
+
(value: TValue) => {
|
66
|
+
if (validatorList.length === 0 || !value) {
|
67
|
+
return;
|
68
|
+
}
|
69
|
+
|
70
|
+
return validatorList.reduce(
|
71
|
+
(isAnyTrue, x) => (isAnyTrue ? isAnyTrue : x(value)),
|
72
|
+
undefined as string | undefined
|
73
|
+
);
|
74
|
+
};
|
75
|
+
|
76
|
+
function getLengthOfValue(value: string | number | undefined) {
|
77
|
+
switch (typeof value) {
|
78
|
+
case 'undefined':
|
79
|
+
return 0;
|
80
|
+
case 'string':
|
81
|
+
return value.length;
|
82
|
+
case 'number':
|
83
|
+
// TODO: this seems iffy to me - what if the actual visible value is a fixed length or some special format (e.g. with commas?)
|
84
|
+
return value.toString().length;
|
85
|
+
default:
|
86
|
+
assertUnreachable(value);
|
87
|
+
return 0;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
function assertUnreachable(x: never) {
|
91
|
+
return null;
|
92
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import '@testing-library/jest-dom/extend-expect';
|
2
|
+
import { HashRouter } from 'react-router-dom';
|
3
|
+
import { ValidatedApiResult } from 'Validation/ValidatedApiResult';
|
4
|
+
import { DateOnly, Form, FormBuilderProp } from '../../src';
|
5
|
+
|
6
|
+
interface FormTestBaseProps<TForm extends object> {
|
7
|
+
children: (formBuilder: FormBuilderProp<TForm>) => JSX.Element;
|
8
|
+
initialValues?: TForm;
|
9
|
+
}
|
10
|
+
|
11
|
+
export default function FormTestBase<TForm extends PersonDto>({
|
12
|
+
children,
|
13
|
+
initialValues,
|
14
|
+
}: FormTestBaseProps<TForm>) {
|
15
|
+
return (
|
16
|
+
<HashRouter>
|
17
|
+
<Form onSubmit={onSubmit} initialValues={initialValues}>
|
18
|
+
{children}
|
19
|
+
</Form>
|
20
|
+
</HashRouter>
|
21
|
+
);
|
22
|
+
|
23
|
+
async function onSubmit(
|
24
|
+
data: PersonDto | FormData
|
25
|
+
): Promise<ValidatedApiResult> {
|
26
|
+
const isFormData = data instanceof FormData;
|
27
|
+
const result = await fetch('/api/submit', {
|
28
|
+
body: isFormData ? data : JSON.stringify(data),
|
29
|
+
method: 'POST',
|
30
|
+
headers: {
|
31
|
+
'Content-Type': isFormData ? 'multipart/form-data' : 'application/json',
|
32
|
+
'X-Show-Errors': `Errors go here`,
|
33
|
+
},
|
34
|
+
});
|
35
|
+
|
36
|
+
const apiResult = await (result.json() as Promise<ValidatedApiResult>);
|
37
|
+
|
38
|
+
if (!apiResult.hasErrors) {
|
39
|
+
alert('submitted');
|
40
|
+
}
|
41
|
+
|
42
|
+
return apiResult;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
interface PersonDto {
|
47
|
+
name?: string | undefined;
|
48
|
+
nameWithIcon?: string | undefined;
|
49
|
+
numberOfArms?: number;
|
50
|
+
phoneNumber?: string;
|
51
|
+
yearlySalaryUSD?: number;
|
52
|
+
isCool?: boolean;
|
53
|
+
gradDate?: DateOnly;
|
54
|
+
favoriteDate?: DateOnly;
|
55
|
+
favoriteNumber?: number;
|
56
|
+
favoriteColor?: string;
|
57
|
+
favoriteColors?: string[];
|
58
|
+
favoriteNames?: string[];
|
59
|
+
allowLogin?: boolean;
|
60
|
+
userRoles?: number[];
|
61
|
+
profileImage?: any;
|
62
|
+
favoritePictures?: any[];
|
63
|
+
}
|
@@ -5,18 +5,12 @@ import StandardFormActions from '../StandardFormActions';
|
|
5
5
|
|
6
6
|
describe('StandardFormActions', () => {
|
7
7
|
it('renders without crashing', () => {
|
8
|
-
render(
|
9
|
-
<FormTestBase>
|
10
|
-
<StandardFormActions />
|
11
|
-
</FormTestBase>
|
12
|
-
);
|
8
|
+
render(<FormTestBase>{() => <StandardFormActions />}</FormTestBase>);
|
13
9
|
});
|
14
10
|
|
15
11
|
it('has matching snapshot', () => {
|
16
12
|
const renderResult = render(
|
17
|
-
<FormTestBase>
|
18
|
-
<StandardFormActions />
|
19
|
-
</FormTestBase>
|
13
|
+
<FormTestBase>{() => <StandardFormActions />}</FormTestBase>
|
20
14
|
);
|
21
15
|
expect(renderResult.asFragment()).toMatchSnapshot();
|
22
16
|
});
|
@@ -5,18 +5,12 @@ import SubmitFormButton from '../SubmitFormButton';
|
|
5
5
|
|
6
6
|
describe('SubmitFormButton', () => {
|
7
7
|
it('renders without crashing', () => {
|
8
|
-
render(
|
9
|
-
<FormTestBase>
|
10
|
-
<SubmitFormButton />
|
11
|
-
</FormTestBase>
|
12
|
-
);
|
8
|
+
render(<FormTestBase>{() => <SubmitFormButton />}</FormTestBase>);
|
13
9
|
});
|
14
10
|
|
15
11
|
it('has matching snapshot', () => {
|
16
12
|
const renderResult = render(
|
17
|
-
<FormTestBase>
|
18
|
-
<SubmitFormButton />
|
19
|
-
</FormTestBase>
|
13
|
+
<FormTestBase>{() => <SubmitFormButton />}</FormTestBase>
|
20
14
|
);
|
21
15
|
expect(renderResult.asFragment()).toMatchSnapshot();
|
22
16
|
});
|
@@ -6,7 +6,7 @@ exports[`StandardFormActions has matching snapshot 1`] = `
|
|
6
6
|
action="#"
|
7
7
|
>
|
8
8
|
<button
|
9
|
-
class="
|
9
|
+
class="submit-form-button"
|
10
10
|
disabled=""
|
11
11
|
title="You haven't made any changes"
|
12
12
|
type="submit"
|
@@ -15,7 +15,7 @@ exports[`StandardFormActions has matching snapshot 1`] = `
|
|
15
15
|
</button>
|
16
16
|
|
17
17
|
<button
|
18
|
-
class="
|
18
|
+
class="standard-form-actions-cancel-button"
|
19
19
|
type="button"
|
20
20
|
>
|
21
21
|
Cancel
|
package/src/index.ts
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
// Address
|
2
|
+
export { default as AddressInput } from './AddressInput/AddressInput';
|
3
|
+
export type { AddressInputProps } from './AddressInput/AddressInput';
|
4
|
+
|
5
|
+
// Button
|
6
|
+
export { default as SubmitFormButton } from './SubmitFormButton';
|
7
|
+
export type { SubmitFormButtonProps } from './SubmitFormButton';
|
8
|
+
|
9
|
+
// ConfirmBaseForm
|
10
|
+
export { default as ConfirmBaseForm } from './ConfirmBaseForm/ConfirmBaseForm';
|
11
|
+
export type { ConfirmBaseFormProps } from './ConfirmBaseForm/ConfirmBaseForm';
|
12
|
+
|
13
|
+
// ConfirmDeleteForm
|
14
|
+
export { default as ConfirmDeleteForm } from './ConfirmDeleteForm/ConfirmDeleteForm';
|
15
|
+
export type { ConfirmDeleteFormProps } from './ConfirmDeleteForm/ConfirmDeleteForm';
|
16
|
+
|
17
|
+
// Date
|
18
|
+
export { default as DatePickerInput } from './DatePickerInput/DatePickerInput';
|
19
|
+
export type { DatePickerInputProps, DateOnly } from './DatePickerInput/DatePickerInput';
|
20
|
+
|
21
|
+
// Field
|
22
|
+
export { default as Field } from './Field/Field';
|
23
|
+
export type { FieldProps } from './Field/Field';
|
24
|
+
|
25
|
+
export { default as FieldErrorScrollTarget } from './Field/FieldErrorScrollTarget';
|
26
|
+
|
27
|
+
export { FieldNameContext } from './Field/FieldNameContext';
|
28
|
+
|
29
|
+
export type { InjectedFieldProps } from './Field/InjectedFieldProps';
|
30
|
+
|
31
|
+
export { default as useStandardField } from './Field/useStandardField';
|
32
|
+
export type { useStandardFieldProps } from './Field/useStandardField';
|
33
|
+
|
34
|
+
// Field Array
|
35
|
+
export { default as FieldArray } from './FieldArray/FieldArray';
|
36
|
+
export type {
|
37
|
+
FieldArrayProps,
|
38
|
+
ArrayFormBuilderProp,
|
39
|
+
} from './FieldArray/FieldArray';
|
40
|
+
|
41
|
+
// File
|
42
|
+
export { default as FileGroup } from './File/FileGroup';
|
43
|
+
export type { FileGroupProps } from './File/FileGroup';
|
44
|
+
|
45
|
+
// Form
|
46
|
+
export { default as Form } from './Form/Form';
|
47
|
+
export type { FormBuilderProp, FormProps } from './Form/Form';
|
48
|
+
export { ServerErrorContext } from './Form/ServerErrorContext';
|
49
|
+
export type {
|
50
|
+
ServerErrorContextProps,
|
51
|
+
ServerErrors,
|
52
|
+
} from './Form/ServerErrorContext';
|
53
|
+
|
54
|
+
export { default as FormActions } from './FormActions';
|
55
|
+
export type { FormActionsProps as FormActionsProps } from './FormActions';
|
56
|
+
|
57
|
+
// Input
|
58
|
+
export { default as Group } from './Group';
|
59
|
+
export type { GroupProps as GroupProps } from './Group';
|
60
|
+
|
61
|
+
export { default as IconInputGroup } from './Input/IconInputGroup';
|
62
|
+
export type { IconInputGroupProps } from './Input/IconInputGroup';
|
63
|
+
|
64
|
+
export { default as InputGroup } from './Input/InputGroup';
|
65
|
+
export type { InputGroupProps } from './Input/InputGroup';
|
66
|
+
|
67
|
+
export { default as MoneyInputGroup } from './Input/MoneyInputGroup';
|
68
|
+
export type { MoneyInputGroupProps } from './Input/MoneyInputGroup';
|
69
|
+
|
70
|
+
export { default as NumberInputGroup } from './Input/NumberInputGroup';
|
71
|
+
export type { NumberInputGroupProps } from './Input/NumberInputGroup';
|
72
|
+
|
73
|
+
export { default as StringInputGroup } from './Input/StringInputGroup';
|
74
|
+
export type { StringInputGroupProps } from './Input/StringInputGroup';
|
75
|
+
|
76
|
+
// Normalization
|
77
|
+
export type { NormalizationFunction } from './Normalization/NormalizationFunction';
|
78
|
+
export * as normalizers from './Normalization/normalizers';
|
79
|
+
|
80
|
+
// Select
|
81
|
+
export { default as SelectGroup } from './Select/SelectGroup';
|
82
|
+
export type { SelectGroupProps } from './Select/SelectGroup';
|
83
|
+
|
84
|
+
export { BooleanSelectGroup } from './Select/BooleanSelectGroup';
|
85
|
+
export type { BooleanSelectGroupProps } from './Select/BooleanSelectGroup';
|
86
|
+
|
87
|
+
export {
|
88
|
+
MultiNumberSelectGroup,
|
89
|
+
SingleNumberSelectGroup,
|
90
|
+
} from './Select/NumberSelectGroup';
|
91
|
+
export type { MultiNumberSelectGroupProps, SingleNumberSelectGroupProps } from './Select/NumberSelectGroup';
|
92
|
+
|
93
|
+
export {
|
94
|
+
MultiStringSelectGroup,
|
95
|
+
SingleStringSelectGroup,
|
96
|
+
} from './Select/StringSelectGroup';
|
97
|
+
export type { MultiStringSelectGroupProps, SingleStringSelectGroupProps } from './Select/StringSelectGroup';
|
98
|
+
|
99
|
+
// Utils
|
100
|
+
export { default as objectContainsNonSerializableProperty } from './utils/objectContainsNonSerializableProperty';
|
101
|
+
|
102
|
+
export { default as serialize } from './utils/objectToFormData';
|
103
|
+
export type { ObjectToFormDataCfgProps } from './utils/objectToFormData';
|
104
|
+
|
105
|
+
export * from './utils/typeChecks';
|
106
|
+
|
107
|
+
// Validation
|
108
|
+
export type { ValidatedApiResult } from './Validation/ValidatedApiResult';
|
109
|
+
|
110
|
+
export type { ValidationError } from './Validation/ValidationError';
|
111
|
+
|
112
|
+
export type { ValidationFunction } from './Validation/ValidationFunction';
|
113
|
+
|
114
|
+
export * as validators from './Validation/validators';
|
@@ -0,0 +1 @@
|
|
1
|
+
/// <reference types="react-scripts" />
|