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
@@ -1,52 +0,0 @@
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
-
|
3
|
-
exports[`FormInputArray has matching snapshot 1`] = `
|
4
|
-
<DocumentFragment>
|
5
|
-
<form
|
6
|
-
action="#"
|
7
|
-
>
|
8
|
-
<div
|
9
|
-
class="field-array-card card"
|
10
|
-
>
|
11
|
-
<div
|
12
|
-
class="card-header card-action-header d-flex align-items-baseline"
|
13
|
-
>
|
14
|
-
<strong
|
15
|
-
class="mr-auto"
|
16
|
-
>
|
17
|
-
Names
|
18
|
-
</strong>
|
19
|
-
<div
|
20
|
-
class="card-action-header-actions"
|
21
|
-
>
|
22
|
-
<button
|
23
|
-
class="add-array-item btn btn-link"
|
24
|
-
title="Add an additional item"
|
25
|
-
type="button"
|
26
|
-
>
|
27
|
-
<svg
|
28
|
-
aria-hidden="true"
|
29
|
-
class="svg-inline--fa fa-plus fa-w-14 "
|
30
|
-
data-icon="plus"
|
31
|
-
data-prefix="fas"
|
32
|
-
focusable="false"
|
33
|
-
role="img"
|
34
|
-
viewBox="0 0 448 512"
|
35
|
-
xmlns="http://www.w3.org/2000/svg"
|
36
|
-
>
|
37
|
-
<path
|
38
|
-
d="M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z"
|
39
|
-
fill="currentColor"
|
40
|
-
/>
|
41
|
-
</svg>
|
42
|
-
Add New
|
43
|
-
</button>
|
44
|
-
</div>
|
45
|
-
</div>
|
46
|
-
<div
|
47
|
-
class="card-body"
|
48
|
-
/>
|
49
|
-
</div>
|
50
|
-
</form>
|
51
|
-
</DocumentFragment>
|
52
|
-
`;
|
package/src/FormSection.js
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
import React, { useContext } from 'react';
|
2
|
-
import NestedFormFieldContext from './NestedFormFieldContext';
|
3
|
-
|
4
|
-
export default function FormSection({ children, name }) {
|
5
|
-
const parentContext = useContext(NestedFormFieldContext);
|
6
|
-
const effectiveValue = parentContext ? `${parentContext}.${name}` : name;
|
7
|
-
|
8
|
-
return (
|
9
|
-
<NestedFormFieldContext.Provider value={effectiveValue}>
|
10
|
-
{children}
|
11
|
-
</NestedFormFieldContext.Provider>
|
12
|
-
);
|
13
|
-
}
|
package/src/IconInput.js
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import PropTypes from 'prop-types';
|
3
|
-
import {
|
4
|
-
InputGroup,
|
5
|
-
InputGroupAddon,
|
6
|
-
InputGroupText,
|
7
|
-
Input as BootstrapInput,
|
8
|
-
FormFeedback,
|
9
|
-
} from 'reactstrap';
|
10
|
-
import useStandardFormInput from './useStandardFormInput';
|
11
|
-
|
12
|
-
export default function IconInput({ className, icon, helpText, ...props }) {
|
13
|
-
const [input, meta] = useStandardFormInput(props);
|
14
|
-
return (
|
15
|
-
<InputGroup className={className}>
|
16
|
-
<InputGroupAddon addonType="prepend">
|
17
|
-
<InputGroupText>
|
18
|
-
<i className={icon} />
|
19
|
-
</InputGroupText>
|
20
|
-
</InputGroupAddon>
|
21
|
-
<BootstrapInput invalid={!!meta.error} {...input} />
|
22
|
-
{meta.error && <FormFeedback>{meta.error}</FormFeedback>}
|
23
|
-
{helpText && <FormFeedback>{helpText}</FormFeedback>}
|
24
|
-
</InputGroup>
|
25
|
-
);
|
26
|
-
}
|
27
|
-
|
28
|
-
IconInput.propTypes = {
|
29
|
-
icon: PropTypes.string,
|
30
|
-
className: PropTypes.string,
|
31
|
-
};
|
@@ -1,23 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { render } from '@testing-library/react';
|
3
|
-
import { FormTestBase } from '../__Tests__';
|
4
|
-
import InlineFormInput from './InlineFormInput';
|
5
|
-
|
6
|
-
describe('MoneyInput', () => {
|
7
|
-
it('renders without crashing', () => {
|
8
|
-
render(
|
9
|
-
<FormTestBase>
|
10
|
-
<InlineFormInput name="test" />
|
11
|
-
</FormTestBase>
|
12
|
-
);
|
13
|
-
});
|
14
|
-
|
15
|
-
it('has matching snapshot', () => {
|
16
|
-
const renderResult = render(
|
17
|
-
<FormTestBase>
|
18
|
-
<InlineFormInput name="test" />
|
19
|
-
</FormTestBase>
|
20
|
-
);
|
21
|
-
expect(renderResult.asFragment()).toMatchSnapshot();
|
22
|
-
});
|
23
|
-
});
|
@@ -1,26 +0,0 @@
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
-
|
3
|
-
exports[`MoneyInput has matching snapshot 1`] = `
|
4
|
-
<DocumentFragment>
|
5
|
-
<form
|
6
|
-
action="#"
|
7
|
-
>
|
8
|
-
<div
|
9
|
-
class="inline-form-input col form-group"
|
10
|
-
>
|
11
|
-
<div
|
12
|
-
id="test-error-scroll-target"
|
13
|
-
style="display: none;"
|
14
|
-
/>
|
15
|
-
<input
|
16
|
-
aria-invalid="false"
|
17
|
-
class="inline-form-input col form-control"
|
18
|
-
id="test"
|
19
|
-
name="test"
|
20
|
-
type="text"
|
21
|
-
value=""
|
22
|
-
/>
|
23
|
-
</div>
|
24
|
-
</form>
|
25
|
-
</DocumentFragment>
|
26
|
-
`;
|
@@ -1,115 +0,0 @@
|
|
1
|
-
import React, { useEffect, useMemo, useState } from 'react';
|
2
|
-
import { useField } from 'formik';
|
3
|
-
import debounce from 'lodash/debounce';
|
4
|
-
import classNames from 'classnames';
|
5
|
-
|
6
|
-
// Money input that will format the value to always have commas, a single decimal, and
|
7
|
-
// exactly two digits after the decimal. This happens after a delay (using debounce).
|
8
|
-
export default function MoneyFormattedInput({
|
9
|
-
name,
|
10
|
-
onBlur,
|
11
|
-
onChange,
|
12
|
-
classname,
|
13
|
-
disabled = false,
|
14
|
-
debounceTimer = 1500,
|
15
|
-
meta,
|
16
|
-
}) {
|
17
|
-
// The displayed state and formik state are two seperate values that we handle
|
18
|
-
const [inputValue, setInputValue] = useState('');
|
19
|
-
const [{ value: formikValue }] = useField(name);
|
20
|
-
|
21
|
-
const handleChangeDebounce = useMemo(() => {
|
22
|
-
return debounce(debouncedUpdateInput, debounceTimer);
|
23
|
-
|
24
|
-
function debouncedUpdateInput(value) {
|
25
|
-
var result = formatToCurrency(value);
|
26
|
-
|
27
|
-
setInputValue(result ?? '');
|
28
|
-
|
29
|
-
// sets value in formik
|
30
|
-
onChange(result ?? '');
|
31
|
-
onBlur();
|
32
|
-
}
|
33
|
-
}, [onBlur, onChange]);
|
34
|
-
|
35
|
-
// Format first render
|
36
|
-
useEffect(() => {
|
37
|
-
var formattedFormikValue = formatToCurrency(formikValue);
|
38
|
-
setInputValue(formattedFormikValue ?? '');
|
39
|
-
}, [formikValue]);
|
40
|
-
|
41
|
-
function handleChange(e) {
|
42
|
-
const onlyNumbersDecimalComma = e.target.value
|
43
|
-
.toString()
|
44
|
-
.replace(/[^.,0-9]/g, '');
|
45
|
-
|
46
|
-
setInputValue(onlyNumbersDecimalComma);
|
47
|
-
handleChangeDebounce(onlyNumbersDecimalComma);
|
48
|
-
}
|
49
|
-
|
50
|
-
return (
|
51
|
-
<>
|
52
|
-
<div className="input-group">
|
53
|
-
<div className="input-group-prepend">
|
54
|
-
<span className="input-group-text">$</span>
|
55
|
-
</div>
|
56
|
-
<input
|
57
|
-
name={name}
|
58
|
-
type="text"
|
59
|
-
value={inputValue}
|
60
|
-
onChange={handleChange}
|
61
|
-
onBlur={onBlur}
|
62
|
-
disabled={disabled}
|
63
|
-
className={classNames(
|
64
|
-
classname,
|
65
|
-
meta.error === 'Required' ? 'is-invalid' : '',
|
66
|
-
'react-select-input money-input form-control'
|
67
|
-
)}
|
68
|
-
/>
|
69
|
-
</div>
|
70
|
-
</>
|
71
|
-
);
|
72
|
-
}
|
73
|
-
|
74
|
-
function formatToCurrency(value) {
|
75
|
-
if (value === null || value === undefined) {
|
76
|
-
return null;
|
77
|
-
}
|
78
|
-
|
79
|
-
// 'value' is sometimes a number on first render
|
80
|
-
const onlyNumbersDecimal = value.toString().replace(/[^.0-9]/g, '');
|
81
|
-
|
82
|
-
if (!onlyNumbersDecimal) {
|
83
|
-
return null;
|
84
|
-
}
|
85
|
-
|
86
|
-
var result = new Intl.NumberFormat('en-US', {
|
87
|
-
style: 'decimal',
|
88
|
-
minimumSignificantDigits: 2,
|
89
|
-
minimumFractionDigits: 2,
|
90
|
-
}).format(parseFloat(onlyNumbersDecimal));
|
91
|
-
|
92
|
-
result = formatTwoDecimalPlaces(result);
|
93
|
-
return result;
|
94
|
-
}
|
95
|
-
|
96
|
-
function formatTwoDecimalPlaces(value) {
|
97
|
-
const decimalIndex = value.indexOf('.');
|
98
|
-
|
99
|
-
// If the string doesn't contain a decimal OR
|
100
|
-
// the string contains a single '.' with nothing to the right of the decimal -> append '.00'
|
101
|
-
// Reason: parseFloat will remove '.00' from whole numbers (ex. 350.00 -> 350)
|
102
|
-
if (!value.includes('.')) {
|
103
|
-
return value.concat('.00');
|
104
|
-
}
|
105
|
-
// If 2 or more characters to the right of the decimal
|
106
|
-
else if (!!value.charAt(decimalIndex + 2)) {
|
107
|
-
return value.substring(0, decimalIndex + 3);
|
108
|
-
}
|
109
|
-
// If only 1 character to the right of the decimal
|
110
|
-
else if (!!value.charAt(decimalIndex + 1)) {
|
111
|
-
return value.substring(0, decimalIndex + 2).concat('0');
|
112
|
-
}
|
113
|
-
|
114
|
-
return value;
|
115
|
-
}
|
@@ -1,43 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { render } from '@testing-library/react';
|
3
|
-
import { FormTestBase } from '../__Tests__';
|
4
|
-
import MoneyInput from './MoneyInput';
|
5
|
-
import InlineMoneyInput from './InlineMoneyInput';
|
6
|
-
|
7
|
-
describe('MoneyInput', () => {
|
8
|
-
it('renders without crashing', () => {
|
9
|
-
render(
|
10
|
-
<FormTestBase>
|
11
|
-
<MoneyInput name="moneytest" />
|
12
|
-
</FormTestBase>
|
13
|
-
);
|
14
|
-
});
|
15
|
-
|
16
|
-
it('has matching snapshot', () => {
|
17
|
-
const renderResult = render(
|
18
|
-
<FormTestBase>
|
19
|
-
<MoneyInput name="moneytest" />
|
20
|
-
</FormTestBase>
|
21
|
-
);
|
22
|
-
expect(renderResult.asFragment()).toMatchSnapshot();
|
23
|
-
});
|
24
|
-
});
|
25
|
-
|
26
|
-
describe('InlineMoneyInput', () => {
|
27
|
-
it('renders without crashing', () => {
|
28
|
-
render(
|
29
|
-
<FormTestBase>
|
30
|
-
<InlineMoneyInput name="moneytest" />
|
31
|
-
</FormTestBase>
|
32
|
-
);
|
33
|
-
});
|
34
|
-
|
35
|
-
it('has matching snapshot', () => {
|
36
|
-
const renderResult = render(
|
37
|
-
<FormTestBase>
|
38
|
-
<InlineMoneyInput name="moneytest" />
|
39
|
-
</FormTestBase>
|
40
|
-
);
|
41
|
-
expect(renderResult.asFragment()).toMatchSnapshot();
|
42
|
-
});
|
43
|
-
});
|
@@ -1,81 +0,0 @@
|
|
1
|
-
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
2
|
-
|
3
|
-
exports[`InlineMoneyInput has matching snapshot 1`] = `
|
4
|
-
<DocumentFragment>
|
5
|
-
<form
|
6
|
-
action="#"
|
7
|
-
>
|
8
|
-
<div
|
9
|
-
class="money-input form-group"
|
10
|
-
>
|
11
|
-
<div
|
12
|
-
id="moneytest-error-scroll-target"
|
13
|
-
style="display: none;"
|
14
|
-
/>
|
15
|
-
<div
|
16
|
-
class="input-group"
|
17
|
-
>
|
18
|
-
<div
|
19
|
-
class="input-group-prepend"
|
20
|
-
>
|
21
|
-
<span
|
22
|
-
class="input-group-text"
|
23
|
-
>
|
24
|
-
$
|
25
|
-
</span>
|
26
|
-
</div>
|
27
|
-
<input
|
28
|
-
aria-invalid="false"
|
29
|
-
class="money-input form-control"
|
30
|
-
id="moneytest"
|
31
|
-
min="0"
|
32
|
-
name="moneytest"
|
33
|
-
step="0.01"
|
34
|
-
type="number"
|
35
|
-
value=""
|
36
|
-
/>
|
37
|
-
</div>
|
38
|
-
</div>
|
39
|
-
</form>
|
40
|
-
</DocumentFragment>
|
41
|
-
`;
|
42
|
-
|
43
|
-
exports[`MoneyInput has matching snapshot 1`] = `
|
44
|
-
<DocumentFragment>
|
45
|
-
<form
|
46
|
-
action="#"
|
47
|
-
>
|
48
|
-
<div
|
49
|
-
class="money-input form-group"
|
50
|
-
>
|
51
|
-
<div
|
52
|
-
id="moneytest-error-scroll-target"
|
53
|
-
style="display: none;"
|
54
|
-
/>
|
55
|
-
<div
|
56
|
-
class="input-group"
|
57
|
-
>
|
58
|
-
<div
|
59
|
-
class="input-group-prepend"
|
60
|
-
>
|
61
|
-
<span
|
62
|
-
class="input-group-text"
|
63
|
-
>
|
64
|
-
$
|
65
|
-
</span>
|
66
|
-
</div>
|
67
|
-
<input
|
68
|
-
aria-invalid="false"
|
69
|
-
class="money-input form-control"
|
70
|
-
id="moneytest"
|
71
|
-
min="0"
|
72
|
-
name="moneytest"
|
73
|
-
step="0.01"
|
74
|
-
type="number"
|
75
|
-
value=""
|
76
|
-
/>
|
77
|
-
</div>
|
78
|
-
</div>
|
79
|
-
</form>
|
80
|
-
</DocumentFragment>
|
81
|
-
`;
|
package/src/MoneyInput/index.js
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { InputGroupAddon } from 'reactstrap';
|
3
|
-
|
4
|
-
const MoneyPrepend = <InputGroupAddon addonType="prepend">$</InputGroupAddon>;
|
5
|
-
const moneyInputProps = {
|
6
|
-
type: 'number',
|
7
|
-
step: '0.01',
|
8
|
-
min: '0',
|
9
|
-
prepend: MoneyPrepend,
|
10
|
-
className: 'money-input',
|
11
|
-
};
|
12
|
-
export default moneyInputProps;
|
@@ -1,155 +0,0 @@
|
|
1
|
-
import classNames from 'classnames';
|
2
|
-
import React, { useEffect, useRef } from 'react';
|
3
|
-
import { default as ReactSelect } from 'react-select';
|
4
|
-
|
5
|
-
export const overrideTheme = (theme) => {
|
6
|
-
return {
|
7
|
-
...theme,
|
8
|
-
borderRadius: 0,
|
9
|
-
spacing: Object.assign(
|
10
|
-
{},
|
11
|
-
{ ...theme.spacing },
|
12
|
-
{ baseUnit: 2, controlHeight: 35 }
|
13
|
-
),
|
14
|
-
};
|
15
|
-
};
|
16
|
-
|
17
|
-
const red = '#f86c6b';
|
18
|
-
const inputBorderColor = '#c2cfd6';
|
19
|
-
const inputBorderColorFocused = '#8ad4ee';
|
20
|
-
const inputBoxShadowFocused = '0 0 0 0.2rem rgba(32, 168, 216, 0.25)';
|
21
|
-
const placeholderColor = '#9ca3af';
|
22
|
-
const disabledSingleValueColor = '#4b5563';
|
23
|
-
|
24
|
-
export const customStyles = {
|
25
|
-
control: (provided, { isFocused, selectProps }) => {
|
26
|
-
return {
|
27
|
-
...provided,
|
28
|
-
paddingLeft: '7px',
|
29
|
-
'&:hover': {
|
30
|
-
borderColor: isFocused ? inputBorderColorFocused : inputBorderColor,
|
31
|
-
},
|
32
|
-
borderColor: selectProps.hasErrors
|
33
|
-
? red
|
34
|
-
: isFocused
|
35
|
-
? inputBorderColorFocused
|
36
|
-
: inputBorderColor,
|
37
|
-
boxShadow: isFocused ? inputBoxShadowFocused : '',
|
38
|
-
};
|
39
|
-
},
|
40
|
-
menu: (provided) => ({ ...provided, zIndex: 3 }),
|
41
|
-
singleValue: (provided, state) => {
|
42
|
-
const color = state.isDisabled ? disabledSingleValueColor : '';
|
43
|
-
return { ...provided, color };
|
44
|
-
},
|
45
|
-
placeholder: (defaultStyles) => {
|
46
|
-
return { ...defaultStyles, color: placeholderColor };
|
47
|
-
},
|
48
|
-
};
|
49
|
-
|
50
|
-
// internal to forms use only
|
51
|
-
export default function ReactSelectInput({
|
52
|
-
className,
|
53
|
-
meta,
|
54
|
-
disabled,
|
55
|
-
onSelected,
|
56
|
-
onChange,
|
57
|
-
onBlur,
|
58
|
-
value,
|
59
|
-
options,
|
60
|
-
defaultValue,
|
61
|
-
defaultIndex,
|
62
|
-
...props
|
63
|
-
}) {
|
64
|
-
const selectedItems = getSelectedItems();
|
65
|
-
const onSelectedRef = useRef(onSelected);
|
66
|
-
onSelectedRef.current = onSelected;
|
67
|
-
|
68
|
-
useEffect(() => {
|
69
|
-
onSelectedRef.current && onSelectedRef.current(selectedItems);
|
70
|
-
}, [selectedItems]);
|
71
|
-
|
72
|
-
const onBlurRef = useRef(onBlur);
|
73
|
-
onBlurRef.current = onBlur;
|
74
|
-
const { touched } = meta;
|
75
|
-
|
76
|
-
useEffect(() => {
|
77
|
-
if (!touched) return;
|
78
|
-
|
79
|
-
// without the timer set to 0, if the empty option is selected the required message doesn't appear until clicked away from the select input
|
80
|
-
const timerRef = setTimeout(() => {
|
81
|
-
onBlurRef.current && onBlurRef.current();
|
82
|
-
}, 0);
|
83
|
-
|
84
|
-
return () => {
|
85
|
-
clearTimeout(timerRef);
|
86
|
-
};
|
87
|
-
}, [value, touched]);
|
88
|
-
|
89
|
-
const classes = classNames(className, 'react-select-input', {
|
90
|
-
'is-invalid': !!meta.error,
|
91
|
-
disabled: disabled,
|
92
|
-
});
|
93
|
-
|
94
|
-
return (
|
95
|
-
<ReactSelect
|
96
|
-
{...props}
|
97
|
-
options={options}
|
98
|
-
isDisabled={disabled}
|
99
|
-
hasErrors={meta.error}
|
100
|
-
getOptionLabel={(option) => option.label}
|
101
|
-
getOptionValue={getOptionValue}
|
102
|
-
value={selectedItems}
|
103
|
-
onChange={handleChange}
|
104
|
-
onBlur={() => onBlur()}
|
105
|
-
className={classes}
|
106
|
-
theme={overrideTheme}
|
107
|
-
styles={customStyles}
|
108
|
-
menuPortalTarget={document.body}
|
109
|
-
menuPlacement="auto"
|
110
|
-
/>
|
111
|
-
);
|
112
|
-
|
113
|
-
function getOptionValue(option) {
|
114
|
-
if (typeof props.getOptionValue === 'function') {
|
115
|
-
return props.getOptionValue(option);
|
116
|
-
} else {
|
117
|
-
return option.value;
|
118
|
-
}
|
119
|
-
}
|
120
|
-
|
121
|
-
function getSelectedItems() {
|
122
|
-
if (defaultValue !== undefined && value === '') {
|
123
|
-
value = defaultValue;
|
124
|
-
onChange(defaultValue);
|
125
|
-
}
|
126
|
-
if (defaultIndex !== undefined && value === '') {
|
127
|
-
const item = options[defaultIndex];
|
128
|
-
onChange(getOptionValue(item));
|
129
|
-
return item;
|
130
|
-
}
|
131
|
-
|
132
|
-
const valueIsArray = Array.isArray(value);
|
133
|
-
const matches = options.filter((x) => {
|
134
|
-
if (valueIsArray) {
|
135
|
-
return value.includes(getOptionValue(x));
|
136
|
-
} else {
|
137
|
-
return value === getOptionValue(x);
|
138
|
-
}
|
139
|
-
});
|
140
|
-
if (matches.length < 1) {
|
141
|
-
return null;
|
142
|
-
}
|
143
|
-
return matches;
|
144
|
-
}
|
145
|
-
|
146
|
-
function handleChange(e) {
|
147
|
-
if (e == null) {
|
148
|
-
onChange(null);
|
149
|
-
} else if (Array.isArray(e)) {
|
150
|
-
onChange(e.map((x) => x.value));
|
151
|
-
} else {
|
152
|
-
onChange(e.value);
|
153
|
-
}
|
154
|
-
}
|
155
|
-
}
|
package/src/SubmitFormButton.js
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
import React from 'react';
|
2
|
-
import { Button } from 'reactstrap';
|
3
|
-
import { useFormikContext } from 'formik';
|
4
|
-
|
5
|
-
export default function SubmitFormButton({
|
6
|
-
allowPristineSubmit,
|
7
|
-
children,
|
8
|
-
...props
|
9
|
-
}) {
|
10
|
-
const { isSubmitting, dirty } = useFormikContext();
|
11
|
-
const preventSubmit = (!dirty && !allowPristineSubmit) || isSubmitting;
|
12
|
-
return (
|
13
|
-
<Button
|
14
|
-
type="submit"
|
15
|
-
color="primary"
|
16
|
-
disabled={preventSubmit}
|
17
|
-
title={
|
18
|
-
isSubmitting
|
19
|
-
? 'Loading, please wait...'
|
20
|
-
: preventSubmit
|
21
|
-
? "You haven't made any changes"
|
22
|
-
: ''
|
23
|
-
}
|
24
|
-
{...props}>
|
25
|
-
{children || 'Submit'}
|
26
|
-
</Button>
|
27
|
-
);
|
28
|
-
}
|