envoc-form 4.0.1-1 → 4.0.1-11
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 +2 -2
- package/es/AddressInput/AddressInput.d.ts +5 -5
- package/es/ConfirmBaseForm/ConfirmBaseForm.d.ts +3 -1
- package/es/ConfirmBaseForm/ConfirmBaseForm.js +3 -2
- package/es/ConfirmDeleteForm/ConfirmDeleteForm.js +2 -1
- package/es/DatePicker/DatePickerGroup.d.ts +3 -2
- package/es/DatePicker/DatePickerGroup.js +27 -5
- package/es/DatePicker/StringDateOnlyPickerGroup.d.ts +5 -0
- package/es/DatePicker/{DateOnlyDatePickerGroup.js → StringDateOnlyPickerGroup.js} +7 -6
- package/es/DatePicker/StringDatePickerGroup.d.ts +1 -1
- package/es/Field/Field.d.ts +3 -3
- package/es/Field/Field.js +9 -4
- package/es/FieldArray/FieldArray.d.ts +2 -2
- package/es/FieldArray/FieldArray.js +10 -7
- package/es/File/FileGroup.d.ts +1 -1
- package/es/File/FileGroup.js +5 -3
- package/es/File/FileList.d.ts +2 -2
- package/es/File/FileList.js +2 -1
- package/es/Form/Form.d.ts +8 -3
- package/es/Form/Form.js +32 -3
- package/es/Form/FormBasedPreventNavigation.js +31 -14
- package/es/FormActions.js +5 -1
- package/es/FormDefaults.d.ts +3 -0
- package/es/FormDefaults.js +1 -0
- package/es/Group.d.ts +2 -1
- package/es/Group.js +8 -5
- package/es/Input/IconInputGroup.d.ts +1 -1
- package/es/Input/IconInputGroup.js +3 -1
- package/es/Input/InputGroup.d.ts +3 -3
- package/es/Input/InputGroup.js +3 -2
- package/es/Input/MoneyInputGroup.d.ts +1 -1
- package/es/Input/MoneyInputGroup.js +2 -1
- package/es/Input/NumberInputGroup.d.ts +1 -1
- package/es/Input/NumberInputGroup.js +2 -1
- package/es/Input/StringInputGroup.d.ts +1 -1
- package/es/Input/StringInputGroup.js +3 -1
- package/es/Normalization/normalizers.d.ts +2 -2
- package/es/Select/BooleanSelectGroup.d.ts +1 -1
- package/es/Select/NumberSelectGroup.d.ts +2 -2
- package/es/Select/SelectGroup.d.ts +2 -2
- package/es/Select/SelectGroup.js +8 -3
- package/es/StandardFormActions.js +2 -1
- package/es/SubmitFormButton.d.ts +1 -1
- package/es/SubmitFormButton.js +4 -2
- package/es/TextArea/TextAreaGroup.d.ts +1 -1
- package/es/TextArea/TextAreaGroup.js +4 -2
- package/es/Validation/validators.d.ts +8 -8
- package/es/Validation/validators.js +3 -0
- package/es/__Tests__/FormTestBase.d.ts +3 -3
- package/es/__Tests__/FormTestBase.js +1 -1
- package/es/index.d.ts +8 -6
- package/es/index.js +4 -1
- package/lib/AddressInput/AddressInput.d.ts +5 -5
- package/lib/ConfirmBaseForm/ConfirmBaseForm.d.ts +3 -1
- package/lib/ConfirmBaseForm/ConfirmBaseForm.js +3 -2
- package/lib/ConfirmDeleteForm/ConfirmDeleteForm.js +2 -1
- package/lib/DatePicker/DatePickerGroup.d.ts +3 -2
- package/lib/DatePicker/DatePickerGroup.js +28 -4
- package/lib/DatePicker/StringDateOnlyPickerGroup.d.ts +5 -0
- package/lib/DatePicker/{DateOnlyDatePickerGroup.js → StringDateOnlyPickerGroup.js} +8 -7
- package/lib/DatePicker/StringDatePickerGroup.d.ts +1 -1
- package/lib/Field/Field.d.ts +3 -3
- package/lib/Field/Field.js +9 -4
- package/lib/FieldArray/FieldArray.d.ts +2 -2
- package/lib/FieldArray/FieldArray.js +10 -7
- package/lib/File/FileGroup.d.ts +1 -1
- package/lib/File/FileGroup.js +5 -3
- package/lib/File/FileList.d.ts +2 -2
- package/lib/File/FileList.js +2 -1
- package/lib/Form/Form.d.ts +8 -3
- package/lib/Form/Form.js +32 -3
- package/lib/Form/FormBasedPreventNavigation.js +31 -14
- package/lib/FormActions.js +5 -1
- package/lib/FormDefaults.d.ts +3 -0
- package/lib/FormDefaults.js +4 -0
- package/lib/Group.d.ts +2 -1
- package/lib/Group.js +8 -5
- package/lib/Input/IconInputGroup.d.ts +1 -1
- package/lib/Input/IconInputGroup.js +3 -1
- package/lib/Input/InputGroup.d.ts +3 -3
- package/lib/Input/InputGroup.js +3 -2
- package/lib/Input/MoneyInputGroup.d.ts +1 -1
- package/lib/Input/MoneyInputGroup.js +2 -1
- package/lib/Input/NumberInputGroup.d.ts +1 -1
- package/lib/Input/NumberInputGroup.js +2 -1
- package/lib/Input/StringInputGroup.d.ts +1 -1
- package/lib/Input/StringInputGroup.js +3 -1
- package/lib/Normalization/normalizers.d.ts +2 -2
- package/lib/Select/BooleanSelectGroup.d.ts +1 -1
- package/lib/Select/NumberSelectGroup.d.ts +2 -2
- package/lib/Select/SelectGroup.d.ts +2 -2
- package/lib/Select/SelectGroup.js +8 -3
- package/lib/StandardFormActions.js +2 -1
- package/lib/SubmitFormButton.d.ts +1 -1
- package/lib/SubmitFormButton.js +4 -2
- package/lib/TextArea/TextAreaGroup.d.ts +1 -1
- package/lib/TextArea/TextAreaGroup.js +4 -2
- package/lib/Validation/validators.d.ts +8 -8
- package/lib/Validation/validators.js +3 -0
- package/lib/__Tests__/FormTestBase.d.ts +3 -3
- package/lib/__Tests__/FormTestBase.js +2 -2
- package/lib/index.d.ts +8 -6
- package/lib/index.js +8 -3
- package/package.json +4 -2
- package/src/AddressInput/AddressInput.tsx +5 -5
- package/src/AddressInput/__snapshots__/AddressInput.test.tsx.snap +15 -10
- package/src/ConfirmBaseForm/ConfirmBaseForm.tsx +13 -3
- package/src/ConfirmBaseForm/__snapshots__/ConfirmBaseForm.test.tsx.snap +3 -3
- package/src/ConfirmDeleteForm/ConfirmDeleteForm.tsx +8 -1
- package/src/ConfirmDeleteForm/__snapshots__/ConfirmDeleteForm.test.tsx.snap +2 -2
- package/src/DatePicker/DatePicker.test.tsx +3 -3
- package/src/DatePicker/DatePickerGroup.tsx +45 -8
- package/src/DatePicker/StringDateOnlyPickerGroup.tsx +23 -0
- package/src/DatePicker/StringDatePickerGroup.tsx +1 -1
- package/src/DatePicker/__snapshots__/DatePicker.test.tsx.snap +3 -2
- package/src/Field/Field.tsx +22 -7
- package/src/FieldArray/FieldArray.tsx +25 -13
- package/src/File/FileGroup.tsx +15 -3
- package/src/File/FileList.tsx +5 -3
- package/src/File/__snapshots__/FileGroup.test.tsx.snap +5 -3
- package/src/Form/Form.tsx +56 -4
- package/src/Form/FormBasedPreventNavigation.tsx +34 -18
- package/src/Form/__snapshots__/Form.test.tsx.snap +1 -0
- package/src/FormActions.tsx +8 -2
- package/src/FormDefaults.ts +1 -0
- package/src/Group.tsx +21 -6
- package/src/Input/IconInputGroup.tsx +7 -4
- package/src/Input/InputGroup.tsx +18 -5
- package/src/Input/MoneyInputGroup.tsx +6 -2
- package/src/Input/NumberInputGroup.tsx +6 -2
- package/src/Input/StringInputGroup.tsx +7 -3
- package/src/Input/__Tests__/__snapshots__/IconInputGroup.test.tsx.snap +4 -2
- package/src/Input/__Tests__/__snapshots__/MoneyInputGroup.test.tsx.snap +4 -2
- package/src/Input/__Tests__/__snapshots__/NumberInputGroup.test.tsx.snap +4 -2
- package/src/Input/__Tests__/__snapshots__/StringInputGroup.test.tsx.snap +4 -2
- package/src/Normalization/normalizers.ts +2 -2
- package/src/Select/BooleanSelectGroup.tsx +1 -1
- package/src/Select/NumberSelectGroup.tsx +2 -2
- package/src/Select/SelectGroup.tsx +16 -4
- package/src/Select/__tests__/__snapshots__/BooleanSelectGroup.test.tsx.snap +3 -2
- package/src/Select/__tests__/__snapshots__/NumberSelectGroup.test.tsx.snap +6 -4
- package/src/Select/__tests__/__snapshots__/StringSelectGroup.test.tsx.snap +6 -4
- package/src/StandardFormActions.tsx +4 -1
- package/src/SubmitFormButton.tsx +9 -2
- package/src/TextArea/TextAreaGroup.tsx +13 -4
- package/src/Validation/validators.ts +16 -12
- package/src/__Tests__/FormTestBase.tsx +4 -4
- package/src/__Tests__/__snapshots__/StandardFormActions.test.tsx.snap +4 -2
- package/src/__Tests__/__snapshots__/SubmitFormButton.test.tsx.snap +3 -1
- package/src/index.ts +11 -10
- package/es/DatePicker/DateOnlyDatePickerGroup.d.ts +0 -10
- package/lib/DatePicker/DateOnlyDatePickerGroup.d.ts +0 -10
- package/src/DatePicker/DateOnlyDatePickerGroup.tsx +0 -24
package/lib/Field/Field.js
CHANGED
@@ -29,22 +29,27 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
29
29
|
var react_1 = __importDefault(require("react"));
|
30
30
|
var FieldNameContext_1 = require("./FieldNameContext");
|
31
31
|
var useStandardField_1 = __importDefault(require("./useStandardField"));
|
32
|
+
var validators_1 = require("../Validation/validators");
|
32
33
|
/**
|
33
34
|
* Renders whatever Component is passed - injecting the formik values needed to finish wiring up that individual field.
|
34
35
|
* Should no Component be used then the default will be provided by the default lookup based on typeof(TForm[TProp])
|
35
36
|
*/
|
36
37
|
function Field(_a, ref) {
|
37
|
-
var name = _a.name, Component = _a.Component, id = _a.id,
|
38
|
+
var name = _a.name, Component = _a.Component, id = _a.id, disabled = _a.disabled, validate = _a.validate, normalize = _a.normalize, rest = __rest(_a, ["name", "Component", "id", "disabled", "validate", "normalize"]);
|
38
39
|
var _b = (0, useStandardField_1.default)({
|
39
40
|
name: String(name),
|
40
41
|
id: id,
|
41
|
-
normalize: normalize,
|
42
|
-
validate: validate,
|
43
42
|
disabled: disabled,
|
43
|
+
validate: validate,
|
44
|
+
normalize: normalize,
|
44
45
|
}), input = _b[0], meta = _b[1];
|
46
|
+
var isRequired = (rest === null || rest === void 0 ? void 0 : rest.required) !== undefined
|
47
|
+
? rest.required
|
48
|
+
: validate === validators_1.required ||
|
49
|
+
(Array.isArray(validate) && validate.includes(validators_1.required));
|
45
50
|
// a bit of a hack so JSX is happy with us
|
46
51
|
var Wrapped = Component;
|
47
|
-
return ((0, jsx_runtime_1.jsx)(FieldNameContext_1.FieldNameContext.Provider, __assign({ value: input.name }, { children: (0, jsx_runtime_1.jsx)(Wrapped, __assign({}, rest, { ref: ref, id: id, input: input, meta: meta })) })));
|
52
|
+
return ((0, jsx_runtime_1.jsx)(FieldNameContext_1.FieldNameContext.Provider, __assign({ value: input.name }, { children: (0, jsx_runtime_1.jsx)(Wrapped, __assign({}, rest, { ref: ref, id: input.id, input: input, meta: meta, required: isRequired, disabled: disabled })) })));
|
48
53
|
}
|
49
54
|
// hack to get forwarded refs to work
|
50
55
|
var FieldWithRef = react_1.default.forwardRef(Field);
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import { ElementType } from 'react';
|
2
2
|
import { FieldProps } from '../Field/Field';
|
3
3
|
import { ValidationFunction } from '../Validation/ValidationFunction';
|
4
|
-
export declare type FieldArrayProps<TForm extends object, TProp extends keyof TForm> = TForm[TProp] extends Array<any> | undefined ? {
|
4
|
+
export declare type FieldArrayProps<TForm extends object, TProp extends keyof TForm> = TForm[TProp] extends Array<any> | undefined | null ? {
|
5
5
|
name: TProp;
|
6
6
|
label?: string;
|
7
7
|
disabled?: boolean;
|
8
8
|
validate?: ValidationFunction<TForm[TProp]> | ValidationFunction<TForm[TProp]>[];
|
9
9
|
children: (formBuilder: ArrayFormBuilderProp<TForm[TProp]>) => JSX.Element;
|
10
10
|
} : never;
|
11
|
-
export declare type ArrayFormBuilderProp<TValue extends Array<any> | undefined> = TValue extends Array<infer TForm> | undefined ? TForm extends object ? {
|
11
|
+
export declare type ArrayFormBuilderProp<TValue extends Array<any> | undefined | null> = TValue extends Array<infer TForm> | undefined | null ? TForm extends object ? {
|
12
12
|
Field: <TProp extends keyof TForm, TRenderComponent extends ElementType>(props: FieldProps<TForm, TProp, TRenderComponent>) => JSX.Element;
|
13
13
|
FieldArray: <TProp extends keyof TForm>(props: FieldArrayProps<TForm, TProp>) => JSX.Element;
|
14
14
|
} : never : never;
|
@@ -39,26 +39,29 @@ var classnames_1 = __importDefault(require("classnames"));
|
|
39
39
|
var Field_1 = __importDefault(require("../Field/Field"));
|
40
40
|
var FieldNameContext_1 = require("../Field/FieldNameContext");
|
41
41
|
var useStandardField_1 = __importDefault(require("../Field/useStandardField"));
|
42
|
+
var FormDefaults_1 = require("../FormDefaults");
|
42
43
|
function FieldArray(_a) {
|
44
|
+
var _b;
|
43
45
|
var name = _a.name, label = _a.label, validate = _a.validate, disabled = _a.disabled, children = _a.children, rest = __rest(_a, ["name", "label", "validate", "disabled", "children"]);
|
44
|
-
var
|
46
|
+
var input = (0, useStandardField_1.default)({
|
45
47
|
name: String(name),
|
46
48
|
validate: validate,
|
47
49
|
disabled: disabled,
|
48
|
-
})
|
50
|
+
})[0];
|
49
51
|
var values = !input.value
|
50
52
|
? []
|
51
53
|
: Array.isArray(input.value)
|
52
54
|
? input.value
|
53
55
|
: [];
|
54
|
-
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className:
|
56
|
+
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: FormDefaults_1.FormDefaults.cssClassPrefix + 'field-array' }, { children: [(0, jsx_runtime_1.jsxs)("div", __assign({ className: FormDefaults_1.FormDefaults.cssClassPrefix + 'field-array-header' }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ className: FormDefaults_1.FormDefaults.cssClassPrefix + 'field-array-title' }, { children: label })), (0, jsx_runtime_1.jsx)("button", __assign({ className: (0, classnames_1.default)(FormDefaults_1.FormDefaults.cssClassPrefix + 'add-array-item-button', (_b = {}, _b[FormDefaults_1.FormDefaults.cssClassPrefix + 'disabled'] = disabled, _b)), title: "Add Item", type: "button", onClick: addItem }, { children: "+" }))] })), (0, jsx_runtime_1.jsx)("div", __assign({ className: FormDefaults_1.FormDefaults.cssClassPrefix + 'field-array-body' }, { children: values.map(function (value, index) {
|
57
|
+
var _a, _b;
|
55
58
|
var itemName = "".concat(input.name, "[").concat(index, "]");
|
56
|
-
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: (0, classnames_1.default)('field-array-item', {
|
57
|
-
removed
|
58
|
-
|
59
|
+
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: (0, classnames_1.default)(FormDefaults_1.FormDefaults.cssClassPrefix + 'field-array-item', (_a = {},
|
60
|
+
_a[FormDefaults_1.FormDefaults.cssClassPrefix + 'removed'] = value.isDeleted,
|
61
|
+
_a)), role: "listitem" }, { children: [(0, jsx_runtime_1.jsx)(FieldNameContext_1.FieldNameContext.Provider, __assign({ value: itemName }, { children: children({
|
59
62
|
Field: Field_1.default,
|
60
63
|
FieldArray: FieldArray,
|
61
|
-
}) })), (0, jsx_runtime_1.jsx)("button", __assign({ className: (0, classnames_1.default)('remove-array-item-button', { disabled
|
64
|
+
}) })), (0, jsx_runtime_1.jsx)("button", __assign({ className: (0, classnames_1.default)(FormDefaults_1.FormDefaults.cssClassPrefix + 'remove-array-item-button', (_b = {}, _b[FormDefaults_1.FormDefaults.cssClassPrefix + 'disabled'] = disabled, _b)), type: "button", title: "Remove Item", onClick: function () { return removeItem(value); } }, { children: "-" }))] }), (value && value['form-input-array-key']) ||
|
62
65
|
(value && value['id']) ||
|
63
66
|
itemName));
|
64
67
|
}) }))] })));
|
package/lib/File/FileGroup.d.ts
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { InjectedFieldProps } from '../Field/InjectedFieldProps';
|
3
3
|
import { GroupProps } from '../Group';
|
4
|
-
export interface FileGroupProps extends InjectedFieldProps<any | undefined>, Omit<GroupProps, keyof InjectedFieldProps<any> | 'children'>, Omit<React.HTMLProps<HTMLInputElement>, keyof InjectedFieldProps<any> | 'children' | 'className' | 'label'> {
|
4
|
+
export interface FileGroupProps extends InjectedFieldProps<any | undefined | null>, Omit<GroupProps, keyof InjectedFieldProps<any> | 'children'>, Omit<React.HTMLProps<HTMLInputElement>, keyof InjectedFieldProps<any> | 'children' | 'className' | 'label'> {
|
5
5
|
multiple?: boolean | undefined;
|
6
6
|
}
|
7
7
|
declare const FileGroupWithRef: React.ComponentType<FileGroupProps>;
|
package/lib/File/FileGroup.js
CHANGED
@@ -29,10 +29,12 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
29
29
|
var react_1 = __importDefault(require("react"));
|
30
30
|
var classnames_1 = __importDefault(require("classnames"));
|
31
31
|
var FileList_1 = __importDefault(require("./FileList"));
|
32
|
+
var FormDefaults_1 = require("../FormDefaults");
|
32
33
|
var Group_1 = __importDefault(require("../Group"));
|
33
34
|
function FileGroup(_a, ref) {
|
34
|
-
var
|
35
|
-
|
35
|
+
var _b;
|
36
|
+
var input = _a.input, meta = _a.meta, label = _a.label, helpText = _a.helpText, className = _a.className, required = _a.required, disabled = _a.disabled, multiple = _a.multiple, rest = __rest(_a, ["input", "meta", "label", "helpText", "className", "required", "disabled", "multiple"]);
|
37
|
+
return ((0, jsx_runtime_1.jsxs)(Group_1.default, __assign({ input: input, meta: meta, label: label, helpText: helpText, className: (0, classnames_1.default)(className, (_b = {}, _b[FormDefaults_1.FormDefaults.cssClassPrefix + 'multiple'] = multiple, _b), FormDefaults_1.FormDefaults.cssClassPrefix + 'file-group'), required: required, disabled: disabled }, { children: [(0, jsx_runtime_1.jsx)("input", __assign({}, input, rest, { multiple: multiple, onChange: function (e) {
|
36
38
|
var _a, _b;
|
37
39
|
if (!((_b = (_a = e === null || e === void 0 ? void 0 : e.target) === null || _a === void 0 ? void 0 : _a.files) === null || _b === void 0 ? void 0 : _b.length)) {
|
38
40
|
input.onChange(undefined);
|
@@ -49,7 +51,7 @@ function FileGroup(_a, ref) {
|
|
49
51
|
input.onChange(files);
|
50
52
|
}
|
51
53
|
}
|
52
|
-
}, value: undefined, ref: ref, type: "file", className: (0, classnames_1.default)(className, 'file-group') })), (0, jsx_runtime_1.jsx)(FileList_1.default, { files: input.value })] })));
|
54
|
+
}, value: undefined, ref: ref, type: "file", className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'file-group') })), (0, jsx_runtime_1.jsx)(FileList_1.default, { files: input.value })] })));
|
53
55
|
}
|
54
56
|
var FileGroupWithRef = react_1.default.forwardRef(FileGroup);
|
55
57
|
exports.default = FileGroupWithRef;
|
package/lib/File/FileList.d.ts
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/// <reference types="react" />
|
2
2
|
export interface FileListProps {
|
3
|
-
files?: File | File[] | undefined;
|
4
|
-
rejectedFiles?: File | File[] | undefined;
|
3
|
+
files?: File | File[] | undefined | null;
|
4
|
+
rejectedFiles?: File | File[] | undefined | null;
|
5
5
|
}
|
6
6
|
export default function FileList({ files, rejectedFiles }: FileListProps): JSX.Element;
|
package/lib/File/FileList.js
CHANGED
@@ -12,9 +12,10 @@ var __assign = (this && this.__assign) || function () {
|
|
12
12
|
};
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
14
14
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
15
|
+
var FormDefaults_1 = require("../FormDefaults");
|
15
16
|
function FileList(_a) {
|
16
17
|
var files = _a.files, rejectedFiles = _a.rejectedFiles;
|
17
|
-
return ((0, jsx_runtime_1.jsx)("div", __assign({ className:
|
18
|
+
return ((0, jsx_runtime_1.jsx)("div", __assign({ className: FormDefaults_1.FormDefaults.cssClassPrefix + 'file-list' }, { children: !files ? null : Array.isArray(files) ? (files.map(function (x, i) { return (0, jsx_runtime_1.jsx)(File, { file: x }, i); })) : ((0, jsx_runtime_1.jsx)(File, { file: files })) })));
|
18
19
|
}
|
19
20
|
exports.default = FileList;
|
20
21
|
function File(_a) {
|
package/lib/Form/Form.d.ts
CHANGED
@@ -7,15 +7,20 @@ export declare type FormBuilderProp<TForm extends object> = {
|
|
7
7
|
Field: <TProp extends keyof TForm, TRenderComponent extends ElementType>(props: FieldProps<TForm, TProp, TRenderComponent>) => JSX.Element;
|
8
8
|
FieldArray: <TProp extends keyof TForm>(props: FieldArrayProps<TForm, TProp>) => JSX.Element;
|
9
9
|
};
|
10
|
-
export interface
|
10
|
+
export interface FullFormProps<TForm extends object> {
|
11
11
|
children: (formBuilder: FormBuilderProp<TForm>) => JSX.Element;
|
12
|
-
onSubmit: (formValues:
|
12
|
+
onSubmit: (formValues: TForm, formikBag: FormikHelpers<TForm>) => Promise<ValidatedApiResult>;
|
13
|
+
onFormDataSubmit: (formValues: FormData, formikBag: FormikHelpers<TForm>) => Promise<ValidatedApiResult>;
|
13
14
|
className?: string;
|
14
15
|
style?: CSSProperties;
|
15
16
|
ignoreLostChanges?: boolean;
|
16
17
|
initialValues?: TForm;
|
17
18
|
}
|
18
|
-
declare
|
19
|
+
declare type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
|
20
|
+
[K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;
|
21
|
+
}[Keys];
|
22
|
+
export declare type FormProps<TForm extends object> = RequireAtLeastOne<FullFormProps<TForm>, 'onSubmit' | 'onFormDataSubmit'>;
|
23
|
+
declare function Form<TForm extends object>({ children, className, style, ignoreLostChanges, onSubmit, onFormDataSubmit, initialValues, ...props }: FormProps<TForm>): JSX.Element;
|
19
24
|
declare namespace Form {
|
20
25
|
var DisplayFormState: () => JSX.Element;
|
21
26
|
}
|
package/lib/Form/Form.js
CHANGED
@@ -27,16 +27,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
28
28
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
29
29
|
var react_1 = require("react");
|
30
|
+
var classnames_1 = __importDefault(require("classnames"));
|
30
31
|
var formik_1 = require("formik");
|
31
32
|
var FocusError_1 = __importDefault(require("./FocusError"));
|
32
33
|
var FormBasedPreventNavigation_1 = __importDefault(require("./FormBasedPreventNavigation"));
|
33
34
|
var ServerErrorContext_1 = require("./ServerErrorContext");
|
34
35
|
var Field_1 = __importDefault(require("../Field/Field"));
|
35
36
|
var FieldArray_1 = __importDefault(require("../FieldArray/FieldArray"));
|
37
|
+
var FormDefaults_1 = require("../FormDefaults");
|
36
38
|
var objectContainsNonSerializableProperty_1 = __importDefault(require("../utils/objectContainsNonSerializableProperty"));
|
37
39
|
var objectToFormData_1 = __importDefault(require("../utils/objectToFormData"));
|
38
40
|
function Form(_a) {
|
39
|
-
var children = _a.children, className = _a.className, style = _a.style, ignoreLostChanges = _a.ignoreLostChanges, onSubmit = _a.onSubmit, initialValues = _a.initialValues, props = __rest(_a, ["children", "className", "style", "ignoreLostChanges", "onSubmit", "initialValues"]);
|
41
|
+
var children = _a.children, className = _a.className, style = _a.style, ignoreLostChanges = _a.ignoreLostChanges, onSubmit = _a.onSubmit, onFormDataSubmit = _a.onFormDataSubmit, initialValues = _a.initialValues, props = __rest(_a, ["children", "className", "style", "ignoreLostChanges", "onSubmit", "onFormDataSubmit", "initialValues"]);
|
40
42
|
// formik resets all error on each blur (with our settings)
|
41
43
|
// this means that ALL errors from the server disappear when any one field is blurred
|
42
44
|
// So, we have to store server errors ourselves
|
@@ -56,13 +58,14 @@ function Form(_a) {
|
|
56
58
|
_a)));
|
57
59
|
},
|
58
60
|
}); }, [serverErrors]);
|
59
|
-
return ((0, jsx_runtime_1.jsx)(formik_1.Formik, __assign({ validateOnChange: false, validateOnBlur: true, validateOnMount: false, initialValues: initialValues || {}, onSubmit: handleSubmit }, props, { children: (0, jsx_runtime_1.jsx)(ServerErrorContext_1.ServerErrorContext.Provider, __assign({ value: serverErrorContextValue }, { children: (0, jsx_runtime_1.jsxs)(formik_1.Form, __assign({ className: className, style: style }, { children: [(0, jsx_runtime_1.jsx)(FocusError_1.default, { serverErrors: serverErrorContextValue }), (0, jsx_runtime_1.jsx)(FormBasedPreventNavigation_1.default, { ignoreLostChanges: ignoreLostChanges }), children({
|
61
|
+
return ((0, jsx_runtime_1.jsx)(formik_1.Formik, __assign({ validateOnChange: false, validateOnBlur: true, validateOnMount: false, initialValues: initialValues || {}, onSubmit: handleSubmit }, props, { children: (0, jsx_runtime_1.jsx)(ServerErrorContext_1.ServerErrorContext.Provider, __assign({ value: serverErrorContextValue }, { children: (0, jsx_runtime_1.jsxs)(formik_1.Form, __assign({ className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'form'), style: style }, { children: [(0, jsx_runtime_1.jsx)(FocusError_1.default, { serverErrors: serverErrorContextValue }), (0, jsx_runtime_1.jsx)(FormBasedPreventNavigation_1.default, { ignoreLostChanges: ignoreLostChanges }), children({
|
60
62
|
// hack for ref forwarding
|
61
63
|
Field: Field_1.default,
|
62
64
|
FieldArray: FieldArray_1.default,
|
63
65
|
})] })) })) })));
|
64
66
|
function handleSubmit(values, formikBag) {
|
65
67
|
var formData = undefined;
|
68
|
+
var submitFunc;
|
66
69
|
if ((0, objectContainsNonSerializableProperty_1.default)(values)) {
|
67
70
|
formData = (0, objectToFormData_1.default)(values, {
|
68
71
|
indices: true,
|
@@ -70,8 +73,34 @@ function Form(_a) {
|
|
70
73
|
allowEmptyArrays: true,
|
71
74
|
noFileListBrackets: true,
|
72
75
|
});
|
76
|
+
if (onFormDataSubmit === undefined) {
|
77
|
+
throw new Error('No onFormDataSubmit supplied for non-serializable properties.');
|
78
|
+
}
|
79
|
+
submitFunc = function () {
|
80
|
+
return onFormDataSubmit(formData !== null && formData !== void 0 ? formData : new FormData(), formikBag);
|
81
|
+
};
|
82
|
+
}
|
83
|
+
else {
|
84
|
+
if (onSubmit === undefined) {
|
85
|
+
formData = (0, objectToFormData_1.default)(values, {
|
86
|
+
indices: true,
|
87
|
+
dotNotation: true,
|
88
|
+
allowEmptyArrays: true,
|
89
|
+
noFileListBrackets: true,
|
90
|
+
});
|
91
|
+
if (onFormDataSubmit === undefined) {
|
92
|
+
// This error should never occur, as this case is covered by RequireAtLeastOne type safety
|
93
|
+
throw new Error('No onFormDataSubmit supplied for non-serializable properties.');
|
94
|
+
}
|
95
|
+
submitFunc = function () {
|
96
|
+
return onFormDataSubmit(formData !== null && formData !== void 0 ? formData : new FormData(), formikBag);
|
97
|
+
};
|
98
|
+
}
|
99
|
+
else {
|
100
|
+
submitFunc = function () { return onSubmit(values, formikBag); };
|
101
|
+
}
|
73
102
|
}
|
74
|
-
return
|
103
|
+
return submitFunc()
|
75
104
|
.then(function (response) {
|
76
105
|
return response;
|
77
106
|
})
|
@@ -24,26 +24,43 @@ function FormBasedPreventNavigation(_a) {
|
|
24
24
|
if (!preventNavigate) {
|
25
25
|
return;
|
26
26
|
}
|
27
|
+
var unblock = function () { };
|
28
|
+
var push = navigator.push;
|
27
29
|
// TODO: https://reactrouter.com/docs/en/v6/upgrading/v5#prompt-is-not-currently-supported
|
28
30
|
// this is a workaround until we get native support for prompt on navigate
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
}
|
33
|
-
};
|
34
|
-
var unblock = navigator.block(function (tx) {
|
35
|
-
var autoUnblockingTx = __assign(__assign({}, tx), { retry: function () {
|
36
|
-
// Automatically unblock the transition so it can play all the way
|
37
|
-
// through before retrying it. TODO: Figure out how to re-enable
|
38
|
-
// this block if the transition is cancelled for some reason.
|
39
|
-
unblock();
|
31
|
+
if (navigator.block) {
|
32
|
+
var blocker_1 = function (tx) {
|
33
|
+
if (window.confirm(promptMessage)) {
|
40
34
|
tx.retry();
|
41
|
-
}
|
42
|
-
|
43
|
-
|
35
|
+
}
|
36
|
+
};
|
37
|
+
unblock = navigator.block(function (tx) {
|
38
|
+
var autoUnblockingTx = __assign(__assign({}, tx), { retry: function () {
|
39
|
+
// Automatically unblock the transition so it can play all the way
|
40
|
+
// through before retrying it. TODO: Figure out how to re-enable
|
41
|
+
// this block if the transition is cancelled for some reason.
|
42
|
+
unblock();
|
43
|
+
tx.retry();
|
44
|
+
} });
|
45
|
+
blocker_1(autoUnblockingTx);
|
46
|
+
});
|
47
|
+
}
|
48
|
+
else {
|
49
|
+
//https://gist.github.com/MarksCode/64e438c82b0b2a1161e01c88ca0d0355
|
50
|
+
navigator.push = function () {
|
51
|
+
var args = [];
|
52
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
53
|
+
args[_i] = arguments[_i];
|
54
|
+
}
|
55
|
+
if (window.confirm(promptMessage)) {
|
56
|
+
push.apply(void 0, args);
|
57
|
+
}
|
58
|
+
};
|
59
|
+
}
|
44
60
|
window.addEventListener('beforeunload', beforeUnload);
|
45
61
|
return function () {
|
46
62
|
unblock();
|
63
|
+
navigator.push = push;
|
47
64
|
window.removeEventListener('beforeunload', beforeUnload);
|
48
65
|
};
|
49
66
|
function beforeUnload(e) {
|
package/lib/FormActions.js
CHANGED
@@ -15,12 +15,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
15
|
};
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
18
|
+
var FormDefaults_1 = require("./FormDefaults");
|
18
19
|
var formik_1 = require("formik");
|
19
20
|
var SubmitFormButton_1 = __importDefault(require("./SubmitFormButton"));
|
20
21
|
function FormActions(_a) {
|
21
22
|
var allowPristineSubmit = _a.allowPristineSubmit, handleCancel = _a.handleCancel, disabled = _a.disabled;
|
22
23
|
var isSubmitting = (0, formik_1.useFormikContext)().isSubmitting;
|
23
|
-
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(SubmitFormButton_1.default, { className:
|
24
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(SubmitFormButton_1.default, { className: FormDefaults_1.FormDefaults.cssClassPrefix + 'form-actions', allowPristineSubmit: allowPristineSubmit, disabled: disabled }), (0, jsx_runtime_1.jsx)("button", __assign({ type: "button", className: FormDefaults_1.FormDefaults.cssClassPrefix +
|
25
|
+
'form-actions ' +
|
26
|
+
FormDefaults_1.FormDefaults.cssClassPrefix +
|
27
|
+
'cancel-form-button', disabled: isSubmitting || disabled, onClick: handleCancel || goBack }, { children: "Cancel" }))] }));
|
24
28
|
function goBack() {
|
25
29
|
window.history.back();
|
26
30
|
}
|
package/lib/Group.d.ts
CHANGED
@@ -8,6 +8,7 @@ export interface GroupProps extends InjectedFieldProps<any> {
|
|
8
8
|
/** simple helper text after the input*/
|
9
9
|
helpText?: string | React.ReactNode;
|
10
10
|
disabled?: boolean;
|
11
|
+
required?: boolean;
|
11
12
|
}
|
12
13
|
/** contains standard field bits like a label, helper text, error scroll target, validation message container, etc */
|
13
|
-
export default function Group({ className, children, label, helpText, meta, input, disabled, }: GroupProps): JSX.Element;
|
14
|
+
export default function Group({ className, children, label, helpText, meta, input, disabled, required, }: GroupProps): JSX.Element;
|
package/lib/Group.js
CHANGED
@@ -16,13 +16,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
17
17
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
18
18
|
var classnames_1 = __importDefault(require("classnames"));
|
19
|
+
var FormDefaults_1 = require("./FormDefaults");
|
19
20
|
var FieldErrorScrollTarget_1 = __importDefault(require("./Field/FieldErrorScrollTarget"));
|
20
21
|
/** contains standard field bits like a label, helper text, error scroll target, validation message container, etc */
|
21
22
|
function Group(_a) {
|
22
|
-
var
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
23
|
+
var _b;
|
24
|
+
var className = _a.className, children = _a.children, label = _a.label, helpText = _a.helpText, meta = _a.meta, input = _a.input, disabled = _a.disabled, required = _a.required;
|
25
|
+
return ((0, jsx_runtime_1.jsxs)("div", __assign({ className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'group', (_b = {},
|
26
|
+
_b[FormDefaults_1.FormDefaults.cssClassPrefix + 'invalid'] = meta.error,
|
27
|
+
_b[FormDefaults_1.FormDefaults.cssClassPrefix + 'disabled'] = disabled,
|
28
|
+
_b[FormDefaults_1.FormDefaults.cssClassPrefix + 'required'] = required,
|
29
|
+
_b)) }, { children: [(0, jsx_runtime_1.jsx)(FieldErrorScrollTarget_1.default, {}), meta.warning && ((0, jsx_runtime_1.jsx)("div", __assign({ className: FormDefaults_1.FormDefaults.cssClassPrefix + 'warning' }, { children: meta.warning }))), (0, jsx_runtime_1.jsx)("label", __assign({ htmlFor: input.id }, { children: label })), children, meta.error && ((0, jsx_runtime_1.jsx)("div", __assign({ className: FormDefaults_1.FormDefaults.cssClassPrefix + 'error' }, { children: meta.error }))), helpText && ((0, jsx_runtime_1.jsx)("div", __assign({ className: FormDefaults_1.FormDefaults.cssClassPrefix + 'help' }, { children: helpText })))] })));
|
27
30
|
}
|
28
31
|
exports.default = Group;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { InputGroupProps } from './InputGroup';
|
3
|
-
export interface IconInputGroupProps extends Omit<InputGroupProps<string | undefined>, 'onChange' | 'type' | 'value'> {
|
3
|
+
export interface IconInputGroupProps extends Omit<InputGroupProps<string | undefined | null>, 'onChange' | 'type' | 'value'> {
|
4
4
|
type?: 'color' | 'email' | 'search' | 'tel' | 'text' | 'url';
|
5
5
|
icon: React.ReactNode;
|
6
6
|
helpText?: string;
|
@@ -29,10 +29,12 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
29
29
|
var react_1 = __importDefault(require("react"));
|
30
30
|
var classnames_1 = __importDefault(require("classnames"));
|
31
31
|
var InputGroup_1 = __importDefault(require("./InputGroup"));
|
32
|
+
var FormDefaults_1 = require("../FormDefaults");
|
32
33
|
function IconInputGroup(_a, ref) {
|
34
|
+
var _b;
|
33
35
|
var icon = _a.icon, className = _a.className, rest = __rest(_a, ["icon", "className"]);
|
34
36
|
var input = rest.input;
|
35
|
-
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(InputGroup_1.default, __assign({ icon: icon, ref: ref, className: (0, classnames_1.default)(className, 'icon-input-group'), value: input.value
|
37
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(InputGroup_1.default, __assign({ icon: icon, ref: ref, className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'icon-input-group'), value: (_b = input.value) !== null && _b !== void 0 ? _b : '', onChange: function (e) {
|
36
38
|
if (!e.target.value) {
|
37
39
|
input.onChange(undefined);
|
38
40
|
}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import React, { ChangeEventHandler, LegacyRef } from 'react';
|
2
2
|
import { InjectedFieldProps } from '../Field/InjectedFieldProps';
|
3
3
|
import { GroupProps } from '../Group';
|
4
|
-
export interface InputGroupProps<TValue> extends InjectedFieldProps<TValue>, Omit<React.HTMLProps<HTMLInputElement>, keyof InjectedFieldProps<any> | 'children' | 'className' | 'label'>, Omit<GroupProps, keyof InjectedFieldProps<any> | 'children'> {
|
4
|
+
export interface InputGroupProps<TValue> extends InjectedFieldProps<TValue>, Omit<React.HTMLProps<HTMLInputElement>, keyof InjectedFieldProps<any> | 'children' | 'className' | 'label' | 'value'>, Omit<GroupProps, keyof InjectedFieldProps<any> | 'children'> {
|
5
5
|
onChange: ChangeEventHandler<HTMLInputElement>;
|
6
|
-
value: string | number;
|
6
|
+
value: string | number | null | undefined;
|
7
7
|
icon?: React.ReactNode;
|
8
8
|
}
|
9
9
|
/** generic controlled <input/> wrapped by a Group */
|
10
|
-
declare function InputGroup<TValue>({ input, meta, label, helpText, className, disabled, onChange, value, icon, ...rest }: InputGroupProps<TValue>, ref: LegacyRef<HTMLInputElement>): JSX.Element;
|
10
|
+
declare function InputGroup<TValue>({ input, meta, label, helpText, className, required, disabled, onChange, value, icon, ...rest }: InputGroupProps<TValue>, ref: LegacyRef<HTMLInputElement>): JSX.Element;
|
11
11
|
declare const InputGroupWithRef: typeof InputGroup;
|
12
12
|
export default InputGroupWithRef;
|
package/lib/Input/InputGroup.js
CHANGED
@@ -28,11 +28,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
29
29
|
var react_1 = __importDefault(require("react"));
|
30
30
|
var classnames_1 = __importDefault(require("classnames"));
|
31
|
+
var FormDefaults_1 = require("../FormDefaults");
|
31
32
|
var Group_1 = __importDefault(require("../Group"));
|
32
33
|
/** generic controlled <input/> wrapped by a Group */
|
33
34
|
function InputGroup(_a, ref) {
|
34
|
-
var input = _a.input, meta = _a.meta, label = _a.label, helpText = _a.helpText, className = _a.className, disabled = _a.disabled, onChange = _a.onChange, value = _a.value, icon = _a.icon, rest = __rest(_a, ["input", "meta", "label", "helpText", "className", "disabled", "onChange", "value", "icon"]);
|
35
|
-
return ((0, jsx_runtime_1.jsxs)(Group_1.default, __assign({ input: input, meta: meta, disabled: disabled, label: label, helpText: helpText, className: (0, classnames_1.default)(className, 'input-group') }, { children: [icon, (0, jsx_runtime_1.jsx)("input", __assign({}, input, rest, { value: value, onChange: onChange, ref: ref, className: (0, classnames_1.default)(className, 'input-group') }))] })));
|
35
|
+
var input = _a.input, meta = _a.meta, label = _a.label, helpText = _a.helpText, className = _a.className, required = _a.required, disabled = _a.disabled, onChange = _a.onChange, value = _a.value, icon = _a.icon, rest = __rest(_a, ["input", "meta", "label", "helpText", "className", "required", "disabled", "onChange", "value", "icon"]);
|
36
|
+
return ((0, jsx_runtime_1.jsxs)(Group_1.default, __assign({ input: input, meta: meta, required: required, disabled: disabled, label: label, helpText: helpText, className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'input-group') }, { children: [icon, (0, jsx_runtime_1.jsx)("input", __assign({}, input, rest, { value: value !== null && value !== void 0 ? value : '', onChange: onChange, ref: ref, className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'input-group') }))] })));
|
36
37
|
}
|
37
38
|
var InputGroupWithRef = react_1.default.forwardRef(InputGroup);
|
38
39
|
exports.default = InputGroupWithRef;
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { InputGroupProps } from './InputGroup';
|
3
|
-
export interface MoneyInputGroupProps extends Omit<InputGroupProps<number | undefined>, 'onChange' | 'type' | 'value'> {
|
3
|
+
export interface MoneyInputGroupProps extends Omit<InputGroupProps<number | undefined | null>, 'onChange' | 'type' | 'value'> {
|
4
4
|
parseFunc?: typeof parseInt | typeof parseFloat;
|
5
5
|
}
|
6
6
|
declare const MoneyInputGroupWithRef: React.FunctionComponent<MoneyInputGroupProps>;
|
@@ -29,11 +29,12 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
29
29
|
var react_1 = __importDefault(require("react"));
|
30
30
|
var classnames_1 = __importDefault(require("classnames"));
|
31
31
|
var InputGroup_1 = __importDefault(require("./InputGroup"));
|
32
|
+
var FormDefaults_1 = require("../FormDefaults");
|
32
33
|
function MoneyInputGroup(_a, ref) {
|
33
34
|
var parseFunc = _a.parseFunc, className = _a.className, rest = __rest(_a, ["parseFunc", "className"]);
|
34
35
|
var effectiveParse = parseFunc !== null && parseFunc !== void 0 ? parseFunc : parseFloat;
|
35
36
|
var input = rest.input;
|
36
|
-
return ((0, jsx_runtime_1.jsx)(InputGroup_1.default, __assign({ ref: ref, step: 0.01, min: 0 }, rest, { type: "number", className: (0, classnames_1.default)(className, 'money-group'), value: input.value || '', onChange: function (e) {
|
37
|
+
return ((0, jsx_runtime_1.jsx)(InputGroup_1.default, __assign({ ref: ref, step: 0.01, min: 0 }, rest, { type: "number", className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'money-group'), value: input.value || '', onChange: function (e) {
|
37
38
|
if (!e.target.value) {
|
38
39
|
input.onChange(undefined);
|
39
40
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { InputGroupProps } from './InputGroup';
|
3
|
-
export interface NumberInputGroupProps extends Omit<InputGroupProps<number | undefined>, 'onChange' | 'type' | 'value'> {
|
3
|
+
export interface NumberInputGroupProps extends Omit<InputGroupProps<number | undefined | null>, 'onChange' | 'type' | 'value'> {
|
4
4
|
parseFunc?: typeof parseInt | typeof parseFloat;
|
5
5
|
}
|
6
6
|
declare const NumberInputGroupWithRef: React.ComponentType<NumberInputGroupProps>;
|
@@ -29,11 +29,12 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
29
29
|
var react_1 = __importDefault(require("react"));
|
30
30
|
var classnames_1 = __importDefault(require("classnames"));
|
31
31
|
var InputGroup_1 = __importDefault(require("./InputGroup"));
|
32
|
+
var FormDefaults_1 = require("../FormDefaults");
|
32
33
|
function NumberInputGroup(_a, ref) {
|
33
34
|
var parseFunc = _a.parseFunc, className = _a.className, rest = __rest(_a, ["parseFunc", "className"]);
|
34
35
|
var effectiveParse = parseFunc !== null && parseFunc !== void 0 ? parseFunc : parseFloat;
|
35
36
|
var input = rest.input;
|
36
|
-
return ((0, jsx_runtime_1.jsx)(InputGroup_1.default, __assign({ ref: ref }, rest, { type: "number", className: (0, classnames_1.default)(className, 'number-group'), value: input.value || '', onChange: function (e) {
|
37
|
+
return ((0, jsx_runtime_1.jsx)(InputGroup_1.default, __assign({ ref: ref }, rest, { type: "number", className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'number-group'), value: input.value || '', onChange: function (e) {
|
37
38
|
if (!e.target.value) {
|
38
39
|
input.onChange(undefined);
|
39
40
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import React from 'react';
|
2
2
|
import { InputGroupProps } from './InputGroup';
|
3
|
-
export interface StringInputGroupProps extends Omit<InputGroupProps<string | undefined>, 'onChange' | 'type' | 'value'> {
|
3
|
+
export interface StringInputGroupProps extends Omit<InputGroupProps<string | undefined | null>, 'onChange' | 'type' | 'value'> {
|
4
4
|
type?: 'color' | 'email' | 'search' | 'tel' | 'text' | 'url' | 'password' | 'textarea';
|
5
5
|
}
|
6
6
|
declare const StringInputGroupWithRef: React.ComponentType<StringInputGroupProps>;
|
@@ -29,10 +29,12 @@ var jsx_runtime_1 = require("react/jsx-runtime");
|
|
29
29
|
var react_1 = __importDefault(require("react"));
|
30
30
|
var classnames_1 = __importDefault(require("classnames"));
|
31
31
|
var InputGroup_1 = __importDefault(require("./InputGroup"));
|
32
|
+
var FormDefaults_1 = require("../FormDefaults");
|
32
33
|
function StringInputGroup(_a, ref) {
|
34
|
+
var _b;
|
33
35
|
var className = _a.className, rest = __rest(_a, ["className"]);
|
34
36
|
var input = rest.input;
|
35
|
-
return ((0, jsx_runtime_1.jsx)(InputGroup_1.default, __assign({ ref: ref }, rest, { className: (0, classnames_1.default)(className, 'string-group'), value: input.value
|
37
|
+
return ((0, jsx_runtime_1.jsx)(InputGroup_1.default, __assign({ ref: ref }, rest, { className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'string-group'), value: (_b = input.value) !== null && _b !== void 0 ? _b : '', onChange: function (e) {
|
36
38
|
if (!e.target.value) {
|
37
39
|
input.onChange(undefined);
|
38
40
|
}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const phoneNumber: (value: string | undefined) => string | undefined;
|
2
|
-
export declare const zipCode: (value: string | undefined) => string | undefined;
|
1
|
+
export declare const phoneNumber: (value: string | undefined | null) => string | undefined;
|
2
|
+
export declare const zipCode: (value: string | undefined | null) => string | undefined;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/// <reference types="react" />
|
2
2
|
import { SelectOption } from './SelectGroup';
|
3
3
|
import { SelectGroupPropsHelper } from './SelectGroupPropsHelper';
|
4
|
-
export interface BooleanSelectGroupProps extends Omit<SelectGroupPropsHelper<boolean>, 'options'> {
|
4
|
+
export interface BooleanSelectGroupProps extends Omit<SelectGroupPropsHelper<boolean | undefined | null>, 'options'> {
|
5
5
|
options?: SelectOption<boolean>[];
|
6
6
|
}
|
7
7
|
export declare function BooleanSelectGroup(props: BooleanSelectGroupProps): JSX.Element;
|
@@ -1,8 +1,8 @@
|
|
1
1
|
/// <reference types="react" />
|
2
2
|
import { SelectGroupPropsHelper } from './SelectGroupPropsHelper';
|
3
|
-
export interface MultiNumberSelectGroupProps extends SelectGroupPropsHelper<number[]> {
|
3
|
+
export interface MultiNumberSelectGroupProps extends SelectGroupPropsHelper<number[] | undefined | null> {
|
4
4
|
}
|
5
5
|
export declare function MultiNumberSelectGroup(props: MultiNumberSelectGroupProps): JSX.Element;
|
6
|
-
export interface SingleNumberSelectGroupProps extends SelectGroupPropsHelper<number> {
|
6
|
+
export interface SingleNumberSelectGroupProps extends SelectGroupPropsHelper<number | undefined | null> {
|
7
7
|
}
|
8
8
|
export declare function SingleNumberSelectGroup(props: SingleNumberSelectGroupProps): JSX.Element;
|
@@ -13,10 +13,10 @@ interface OptionsUseServiceResult<TValue> {
|
|
13
13
|
resp?: Partial<SelectOption<TValue>>[] | OptionsApiResult<TValue> | null;
|
14
14
|
error?: any;
|
15
15
|
}
|
16
|
-
export interface SelectGroupProps<TValue> extends InjectedFieldProps<TValue | undefined>, Omit<GroupProps, 'input' | 'meta' | 'children'> {
|
16
|
+
export interface SelectGroupProps<TValue> extends InjectedFieldProps<TValue | undefined | null>, Omit<GroupProps, 'input' | 'meta' | 'children'> {
|
17
17
|
options: SelectOption<TValue>[] | OptionsUseServiceResult<TValue>;
|
18
18
|
multiple: TValue extends Array<any> ? true : false;
|
19
19
|
placeholder?: string;
|
20
20
|
}
|
21
|
-
export default function SelectGroup<TValue>({ input, meta, className, options, multiple, placeholder, ...rest }: SelectGroupProps<TValue>): JSX.Element;
|
21
|
+
export default function SelectGroup<TValue>({ input, meta, className, required, disabled, options, multiple, placeholder, ...rest }: SelectGroupProps<TValue>): JSX.Element;
|
22
22
|
export {};
|
@@ -28,10 +28,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
28
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
29
29
|
var react_select_1 = __importDefault(require("react-select"));
|
30
30
|
var classnames_1 = __importDefault(require("classnames"));
|
31
|
+
var FormDefaults_1 = require("../FormDefaults");
|
31
32
|
var Group_1 = __importDefault(require("../Group"));
|
32
33
|
// TODO: we could also name this "ReactSelectGroup" or similar but the types are strongly defined now so kept the names consistent
|
33
34
|
function SelectGroup(_a) {
|
34
|
-
var
|
35
|
+
var _b;
|
36
|
+
var input = _a.input, meta = _a.meta, className = _a.className, required = _a.required, disabled = _a.disabled, options = _a.options, multiple = _a.multiple, placeholder = _a.placeholder, rest = __rest(_a, ["input", "meta", "className", "required", "disabled", "options", "multiple", "placeholder"]);
|
35
37
|
var effectiveOptions = !options
|
36
38
|
? []
|
37
39
|
: Array.isArray(options)
|
@@ -45,14 +47,17 @@ function SelectGroup(_a) {
|
|
45
47
|
? options.resp
|
46
48
|
: [];
|
47
49
|
var isLoading = (options && 'loading' in options && options.loading) || false;
|
48
|
-
return ((0, jsx_runtime_1.jsx)(Group_1.default, __assign({}, rest, { input: input, meta: meta,
|
50
|
+
return ((0, jsx_runtime_1.jsx)(Group_1.default, __assign({}, rest, { input: input, meta: meta, required: required, disabled: disabled, className: (0, classnames_1.default)(className, (_b = {},
|
51
|
+
_b[FormDefaults_1.FormDefaults.cssClassPrefix + 'multiple'] = multiple,
|
52
|
+
_b[FormDefaults_1.FormDefaults.cssClassPrefix + 'loading'] = isLoading,
|
53
|
+
_b), FormDefaults_1.FormDefaults.cssClassPrefix + 'select-group') }, { children: (0, jsx_runtime_1.jsx)(react_select_1.default, { inputId: input.id, isMulti: multiple, isDisabled: disabled, options: effectiveOptions, onBlur: input.onBlur, value: getValue(), onChange: function (e) {
|
49
54
|
if (multiple === true) {
|
50
55
|
input.onChange(e === null || e === void 0 ? void 0 : e.map(function (x) { return x.value; }));
|
51
56
|
}
|
52
57
|
else {
|
53
58
|
input.onChange(e === null || e === void 0 ? void 0 : e.value);
|
54
59
|
}
|
55
|
-
}, getOptionLabel: function (option) { var _a; return (_a = option === null || option === void 0 ? void 0 : option.label) !== null && _a !== void 0 ? _a : ''; }, className: (0, classnames_1.default)(className, 'select-group'), classNamePrefix: "react-select", menuPortalTarget: document.body, menuPlacement: "auto", placeholder: placeholder }) })));
|
60
|
+
}, getOptionLabel: function (option) { var _a; return (_a = option === null || option === void 0 ? void 0 : option.label) !== null && _a !== void 0 ? _a : ''; }, className: (0, classnames_1.default)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'select-group'), classNamePrefix: "react-select", menuPortalTarget: document.body, menuPlacement: "auto", placeholder: placeholder }) })));
|
56
61
|
function getValue() {
|
57
62
|
if (multiple) {
|
58
63
|
return effectiveOptions.filter(function (o) {
|