envoc-form 5.0.5 → 5.0.7
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 +7 -7
- package/es/ConfirmBaseForm/ConfirmBaseForm.js +2 -2
- package/es/DatePicker/DatePickerGroup.js +2 -2
- package/es/Field/Field.d.ts +2 -1
- package/es/Field/Field.js +14 -6
- package/es/FieldArray/FieldArray.js +4 -4
- package/es/File/FileGroup.js +3 -3
- package/es/Form/Form.js +2 -2
- package/es/Group.js +3 -3
- package/es/Input/CheckboxGroup.js +3 -3
- package/es/Input/CheckboxInputGroup.js +2 -2
- package/es/Input/IconInputGroup.js +2 -2
- package/es/Input/InputGroup.js +2 -2
- package/es/Input/MoneyInputGroup.js +2 -2
- package/es/Input/NumberInputGroup.js +2 -2
- package/es/Input/PhoneNumberInputGroup.js +2 -2
- package/es/Input/StringInputGroup.js +2 -2
- package/es/Select/SelectGroup.js +3 -3
- package/es/StandardFormActions.js +3 -3
- package/es/SubmitFormButton.js +2 -2
- package/es/TextArea/TextAreaGroup.js +2 -2
- package/lib/ConfirmBaseForm/ConfirmBaseForm.js +2 -5
- package/lib/DatePicker/DatePickerGroup.js +2 -2
- package/lib/Field/Field.d.ts +2 -1
- package/lib/Field/Field.js +14 -6
- package/lib/FieldArray/FieldArray.js +4 -4
- package/lib/File/FileGroup.js +3 -3
- package/lib/Form/Form.js +2 -2
- package/lib/Group.js +3 -3
- package/lib/Input/CheckboxGroup.js +3 -3
- package/lib/Input/CheckboxInputGroup.js +2 -2
- package/lib/Input/IconInputGroup.js +2 -2
- package/lib/Input/InputGroup.js +2 -2
- package/lib/Input/MoneyInputGroup.js +2 -2
- package/lib/Input/NumberInputGroup.js +2 -2
- package/lib/Input/PhoneNumberInputGroup.js +2 -2
- package/lib/Input/StringInputGroup.js +2 -2
- package/lib/Select/SelectGroup.js +3 -3
- package/lib/StandardFormActions.js +3 -3
- package/lib/SubmitFormButton.js +2 -2
- package/lib/TextArea/TextAreaGroup.js +2 -2
- package/package.json +4 -4
- package/src/ConfirmBaseForm/ConfirmBaseForm.tsx +3 -3
- package/src/DatePicker/DatePickerGroup.tsx +3 -9
- package/src/Field/Field.tsx +21 -7
- package/src/FieldArray/FieldArray.tsx +4 -4
- package/src/File/FileGroup.tsx +3 -6
- package/src/Form/Form.tsx +2 -5
- package/src/Group.tsx +3 -3
- package/src/Input/CheckboxGroup.tsx +3 -3
- package/src/Input/CheckboxInputGroup.tsx +3 -3
- package/src/Input/IconInputGroup.tsx +2 -2
- package/src/Input/InputGroup.tsx +3 -9
- package/src/Input/MoneyInputGroup.tsx +2 -5
- package/src/Input/NumberInputGroup.tsx +2 -5
- package/src/Input/PhoneNumberInputGroup.tsx +2 -2
- package/src/Input/StringInputGroup.tsx +2 -5
- package/src/Select/SelectGroup.tsx +3 -3
- package/src/StandardFormActions.tsx +3 -3
- package/src/SubmitFormButton.tsx +2 -2
- package/src/TextArea/TextAreaGroup.tsx +3 -3
package/README.md
CHANGED
@@ -3981,7 +3981,7 @@ ___
|
|
3981
3981
|
|
3982
3982
|
### FieldProps
|
3983
3983
|
|
3984
|
-
Ƭ **FieldProps**<`TForm`, `TProp`, `TRenderComponent`\>: { `Component`: [`RenderComponent`](#rendercomponent)<`TForm`[`TProp`], `TRenderComponent`\> ; `disabled?`: `boolean` ; `id?`: `string` ; `name`: `TProp` ; `normalize?`: [`NormalizationFunction`](#interfacesnormalizationfunctionmd)<`TForm`[`TProp`]\> ; `validate?`: [`ValidationFunction`](#interfacesvalidationfunctionmd)<`TForm`[`TProp`]\> \| [`ValidationFunction`](#interfacesvalidationfunctionmd)<`TForm`[`TProp`]\>[] } & `Omit`<[`RenderComponentProps`](#rendercomponentprops)<`TForm`[`TProp`], `TRenderComponent`\>, keyof [`InjectedFieldProps`](#interfacesinjectedfieldpropsmd)<`TForm`[`TProp`]\>\>
|
3984
|
+
Ƭ **FieldProps**<`TForm`, `TProp`, `TRenderComponent`\>: { `Component`: [`RenderComponent`](#rendercomponent)<`TForm`[`TProp`], `TRenderComponent`\> ; `disabled?`: `boolean` ; `id?`: `string` ; `name`: `TProp` ; `normalize?`: [`NormalizationFunction`](#interfacesnormalizationfunctionmd)<`TForm`[`TProp`]\> ; `required?`: `boolean` ; `validate?`: [`ValidationFunction`](#interfacesvalidationfunctionmd)<`TForm`[`TProp`]\> \| [`ValidationFunction`](#interfacesvalidationfunctionmd)<`TForm`[`TProp`]\>[] } & `Omit`<[`RenderComponentProps`](#rendercomponentprops)<`TForm`[`TProp`], `TRenderComponent`\>, keyof [`InjectedFieldProps`](#interfacesinjectedfieldpropsmd)<`TForm`[`TProp`]\>\>
|
3985
3985
|
|
3986
3986
|
A specific Field instance to be rendered by the given TRenderComponent or by whatever default is reasonable
|
3987
3987
|
|
@@ -4125,7 +4125,7 @@ File upload input group.
|
|
4125
4125
|
|
4126
4126
|
#### Defined in
|
4127
4127
|
|
4128
|
-
packages/envoc-form/src/File/FileGroup.tsx:
|
4128
|
+
packages/envoc-form/src/File/FileGroup.tsx:78
|
4129
4129
|
|
4130
4130
|
___
|
4131
4131
|
|
@@ -4167,7 +4167,7 @@ Standard number input group. By default allows for float values.
|
|
4167
4167
|
|
4168
4168
|
#### Defined in
|
4169
4169
|
|
4170
|
-
packages/envoc-form/src/Input/NumberInputGroup.tsx:
|
4170
|
+
packages/envoc-form/src/Input/NumberInputGroup.tsx:41
|
4171
4171
|
|
4172
4172
|
___
|
4173
4173
|
|
@@ -4210,7 +4210,7 @@ Standard string input group.
|
|
4210
4210
|
|
4211
4211
|
#### Defined in
|
4212
4212
|
|
4213
|
-
packages/envoc-form/src/Input/StringInputGroup.tsx:
|
4213
|
+
packages/envoc-form/src/Input/StringInputGroup.tsx:46
|
4214
4214
|
|
4215
4215
|
___
|
4216
4216
|
|
@@ -4384,7 +4384,7 @@ Should no Component be used then the default will be provided by the default loo
|
|
4384
4384
|
|
4385
4385
|
#### Defined in
|
4386
4386
|
|
4387
|
-
packages/envoc-form/src/Field/Field.tsx:
|
4387
|
+
packages/envoc-form/src/Field/Field.tsx:61
|
4388
4388
|
|
4389
4389
|
___
|
4390
4390
|
|
@@ -4813,7 +4813,7 @@ ___
|
|
4813
4813
|
|
4814
4814
|
#### Defined in
|
4815
4815
|
|
4816
|
-
packages/envoc-form/src/DatePicker/DatePickerGroup.tsx:
|
4816
|
+
packages/envoc-form/src/DatePicker/DatePickerGroup.tsx:100
|
4817
4817
|
|
4818
4818
|
___
|
4819
4819
|
|
@@ -5077,7 +5077,7 @@ packages/envoc-form/src/Field/useStandardField.ts:24
|
|
5077
5077
|
|
5078
5078
|
##### Defined in
|
5079
5079
|
|
5080
|
-
packages/envoc-form/src/Form/Form.tsx:
|
5080
|
+
packages/envoc-form/src/Form/Form.tsx:211
|
5081
5081
|
|
5082
5082
|
|
5083
5083
|
<a name="modulesnormalizersmd"></a>
|
@@ -21,7 +21,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
21
21
|
return t;
|
22
22
|
};
|
23
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
24
|
-
import
|
24
|
+
import { clsx } from 'clsx';
|
25
25
|
import { useAxiosRequest } from 'envoc-request';
|
26
26
|
import { FormDefaults } from '../FormDefaults';
|
27
27
|
// TODO: ask about how we should use 'children'
|
@@ -35,7 +35,7 @@ export default function ConfirmBaseForm(_a) {
|
|
35
35
|
var handleCancel = _a.handleCancel, request = _a.request, style = _a.style, title = _a.title, confirmButtonText = _a.confirmButtonText, confirmButtonClass = _a.confirmButtonClass, children = _a.children, props = __rest(_a, ["handleCancel", "request", "style", "title", "confirmButtonText", "confirmButtonClass", "children"]);
|
36
36
|
var webRequest = useAxiosRequest(Object.assign({}, request, { autoExecute: false }));
|
37
37
|
var onCancel = handleCancel !== null && handleCancel !== void 0 ? handleCancel : goBack;
|
38
|
-
return (_jsxs("div", __assign({ style: __assign({ textAlign: 'center' }, style) }, props, { children: [_jsx("h3", { children: title }), children, _jsx("button", { className:
|
38
|
+
return (_jsxs("div", __assign({ style: __assign({ textAlign: 'center' }, style) }, props, { children: [_jsx("h3", { children: title }), children, _jsx("button", { className: clsx(confirmButtonClass !== null && confirmButtonClass !== void 0 ? confirmButtonClass : FormDefaults.cssClassPrefix + 'confirm-base-form-confirm-button'), type: "button", onClick: webRequest.submitRequest, children: confirmButtonText !== null && confirmButtonText !== void 0 ? confirmButtonText : 'Confirm' }), _jsx("button", { className: clsx(FormDefaults.cssClassPrefix + 'confirm-base-form-cancel-button'), type: "button", onClick: onCancel, children: "Cancel" })] })));
|
39
39
|
function goBack() {
|
40
40
|
window.history.back();
|
41
41
|
}
|
@@ -23,7 +23,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
24
24
|
import { useEffect, useState } from 'react';
|
25
25
|
import DatePicker from 'react-date-picker/dist/entry.nostyle';
|
26
|
-
import
|
26
|
+
import { clsx } from 'clsx';
|
27
27
|
import parseISO from 'date-fns/parseISO';
|
28
28
|
import { FormDefaults } from '../FormDefaults';
|
29
29
|
import Group from '../Group';
|
@@ -48,7 +48,7 @@ export default function DatePickerGroup(_a) {
|
|
48
48
|
}
|
49
49
|
}
|
50
50
|
}, [setDisplayDate, input.value]);
|
51
|
-
return (_jsx(Group, { input: input, meta: meta, label: label, helpText: helpText, className:
|
51
|
+
return (_jsx(Group, { input: input, meta: meta, label: label, helpText: helpText, className: clsx(className, FormDefaults.cssClassPrefix + 'date-picker'), required: required, disabled: disabled, children: _jsx(DatePicker, __assign({}, rest, { className: clsx(FormDefaults.cssClassPrefix + 'date-picker', className), value: displayDate, onChange: handleChange })) }));
|
52
52
|
function handleChange(e) {
|
53
53
|
var onChange = input.onChange;
|
54
54
|
if (onChange === null) {
|
package/es/Field/Field.d.ts
CHANGED
@@ -18,11 +18,12 @@ export type FieldProps<TForm extends object, TProp extends keyof TForm, TRenderC
|
|
18
18
|
validate?: ValidationFunction<TForm[TProp]> | ValidationFunction<TForm[TProp]>[];
|
19
19
|
/** Function to modify the field value without making the form dirty. (e.g. phone number) */
|
20
20
|
normalize?: NormalizationFunction<TForm[TProp]>;
|
21
|
+
required?: boolean;
|
21
22
|
} & Omit<RenderComponentProps<TForm[TProp], TRenderComponent>, keyof InjectedFieldProps<TForm[TProp]>>;
|
22
23
|
/**
|
23
24
|
* Renders whatever Component is passed - injecting the formik values needed to finish wiring up that individual field.
|
24
25
|
* Should no Component be used then the default will be provided by the default lookup based on typeof(TForm[TProp])
|
25
26
|
*/
|
26
|
-
declare function Field<TForm extends object, TProp extends keyof TForm, TRenderComponent extends ElementType>({ name, Component, id, disabled, validate, normalize, ...rest }: FieldProps<TForm, TProp, TRenderComponent>, ref: LegacyRef<any>): import("react/jsx-runtime").JSX.Element;
|
27
|
+
declare function Field<TForm extends object, TProp extends keyof TForm, TRenderComponent extends ElementType>({ name, Component, id, disabled, validate, normalize, required, ...rest }: FieldProps<TForm, TProp, TRenderComponent>, ref: LegacyRef<any>): import("react/jsx-runtime").JSX.Element;
|
27
28
|
declare const _default: typeof Field;
|
28
29
|
export default _default;
|
package/es/Field/Field.js
CHANGED
@@ -30,18 +30,26 @@ import { required as requiredValidator } from '../Validation/validators';
|
|
30
30
|
* Should no Component be used then the default will be provided by the default lookup based on typeof(TForm[TProp])
|
31
31
|
*/
|
32
32
|
function Field(_a, ref) {
|
33
|
-
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"]);
|
33
|
+
var name = _a.name, Component = _a.Component, id = _a.id, disabled = _a.disabled, validate = _a.validate, normalize = _a.normalize, required = _a.required, rest = __rest(_a, ["name", "Component", "id", "disabled", "validate", "normalize", "required"]);
|
34
|
+
// enforces that validate is an array and adds the required validator if required prop is true
|
35
|
+
var validateArray = Array.isArray(validate)
|
36
|
+
? validate
|
37
|
+
: validate !== undefined
|
38
|
+
? [validate]
|
39
|
+
: [];
|
40
|
+
var validateWithRequired = required
|
41
|
+
? validateArray
|
42
|
+
.filter(function (x) { return x !== requiredValidator; })
|
43
|
+
.concat([requiredValidator])
|
44
|
+
: validateArray;
|
45
|
+
var isRequired = required || validateWithRequired.includes(requiredValidator);
|
34
46
|
var _b = useStandardFormInput({
|
35
47
|
name: String(name),
|
36
48
|
id: id,
|
37
49
|
disabled: disabled,
|
38
|
-
validate:
|
50
|
+
validate: validateWithRequired,
|
39
51
|
normalize: normalize,
|
40
52
|
}), input = _b[0], meta = _b[1];
|
41
|
-
var isRequired = (rest === null || rest === void 0 ? void 0 : rest.required) !== undefined
|
42
|
-
? rest.required
|
43
|
-
: validate === requiredValidator ||
|
44
|
-
(Array.isArray(validate) && validate.includes(requiredValidator));
|
45
53
|
// a bit of a hack so JSX is happy with us
|
46
54
|
var Wrapped = Component;
|
47
55
|
return (_jsx(FieldNameContext.Provider, { value: input.name, children: _jsx(Wrapped, __assign({}, rest, { ref: ref, id: input.id, input: input, meta: meta, required: isRequired, disabled: disabled })) }));
|
@@ -19,7 +19,7 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
19
|
return to.concat(ar || Array.prototype.slice.call(from));
|
20
20
|
};
|
21
21
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
22
|
-
import
|
22
|
+
import { clsx } from 'clsx';
|
23
23
|
import Field from '../Field/Field';
|
24
24
|
import { FieldNameContext } from '../Field/FieldNameContext';
|
25
25
|
import useStandardFormInput from '../Field/useStandardField';
|
@@ -42,15 +42,15 @@ export default function FieldArray(_a) {
|
|
42
42
|
: Array.isArray(input.value)
|
43
43
|
? input.value
|
44
44
|
: [];
|
45
|
-
return (_jsxs("div", { className: FormDefaults.cssClassPrefix + 'field-array', children: [_jsxs("div", { className: FormDefaults.cssClassPrefix + 'field-array-header', children: [_jsx("div", { className: FormDefaults.cssClassPrefix + 'field-array-title', children: label }), _jsx("button", { className:
|
45
|
+
return (_jsxs("div", { className: FormDefaults.cssClassPrefix + 'field-array', children: [_jsxs("div", { className: FormDefaults.cssClassPrefix + 'field-array-header', children: [_jsx("div", { className: FormDefaults.cssClassPrefix + 'field-array-title', children: label }), _jsx("button", { className: clsx(FormDefaults.cssClassPrefix + 'add-array-item-button', (_b = {}, _b[FormDefaults.cssClassPrefix + 'disabled'] = disabled, _b)), title: "Add Item", type: "button", onClick: addItem, children: "+" })] }), _jsx("div", { className: FormDefaults.cssClassPrefix + 'field-array-body', children: values.map(function (value, index) {
|
46
46
|
var _a, _b;
|
47
47
|
var itemName = "".concat(input.name, "[").concat(index, "]");
|
48
|
-
return (_jsxs("div", { className:
|
48
|
+
return (_jsxs("div", { className: clsx(FormDefaults.cssClassPrefix + 'field-array-item', (_a = {},
|
49
49
|
_a[FormDefaults.cssClassPrefix + 'removed'] = value.isDeleted,
|
50
50
|
_a)), role: "listitem", children: [_jsx(FieldNameContext.Provider, { value: itemName, children: children({
|
51
51
|
Field: Field,
|
52
52
|
FieldArray: FieldArray,
|
53
|
-
}) }), _jsx("button", { className:
|
53
|
+
}) }), _jsx("button", { className: clsx(FormDefaults.cssClassPrefix + 'remove-array-item-button', (_b = {}, _b[FormDefaults.cssClassPrefix + 'disabled'] = disabled, _b)), type: "button", title: "Remove Item", onClick: function () { return removeItem(value); }, children: "-" })] }, (value && value['form-input-array-key']) ||
|
54
54
|
(value && value['id']) ||
|
55
55
|
itemName));
|
56
56
|
}) })] }));
|
package/es/File/FileGroup.js
CHANGED
@@ -22,14 +22,14 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import FileList from './FileList';
|
27
27
|
import { FormDefaults } from '../FormDefaults';
|
28
28
|
import Group from '../Group';
|
29
29
|
function FileGroup(_a, ref) {
|
30
30
|
var _b;
|
31
31
|
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"]);
|
32
|
-
return (_jsxs(Group, { input: input, meta: meta, label: label, helpText: helpText, className:
|
32
|
+
return (_jsxs(Group, { input: input, meta: meta, label: label, helpText: helpText, className: clsx(className, (_b = {}, _b[FormDefaults.cssClassPrefix + 'multiple'] = multiple, _b), FormDefaults.cssClassPrefix + 'file-group'), required: required, disabled: disabled, children: [_jsx("input", __assign({}, input, rest, { multiple: multiple, onChange: function (e) {
|
33
33
|
var _a, _b;
|
34
34
|
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)) {
|
35
35
|
input.onChange(undefined);
|
@@ -46,7 +46,7 @@ function FileGroup(_a, ref) {
|
|
46
46
|
input.onChange(files);
|
47
47
|
}
|
48
48
|
}
|
49
|
-
}, value: undefined, ref: ref, type: "file", className:
|
49
|
+
}, value: undefined, ref: ref, type: "file", className: clsx(className, FormDefaults.cssClassPrefix + 'file-group') })), _jsx(FileList, { files: input.value })] }));
|
50
50
|
}
|
51
51
|
/** File upload input group. */
|
52
52
|
var FileGroupWithRef = React.forwardRef(FileGroup);
|
package/es/Form/Form.js
CHANGED
@@ -22,7 +22,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
24
24
|
import { useContext, useMemo, useState, } from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import { Form as FormikFormWrapper, Formik, useFormikContext, } from 'formik';
|
27
27
|
import FocusError from './FocusError';
|
28
28
|
import FormBasedPreventNavigation from './FormBasedPreventNavigation';
|
@@ -54,7 +54,7 @@ export default function Form(_a) {
|
|
54
54
|
_a)));
|
55
55
|
},
|
56
56
|
}); }, [serverErrors]);
|
57
|
-
return (_jsx(Formik, __assign({ validateOnChange: false, validateOnBlur: true, validateOnMount: false, initialValues: initialValues || {}, onSubmit: handleSubmit }, props, { children: _jsx(ServerErrorContext.Provider, { value: serverErrorContextValue, children: _jsxs(FormikFormWrapper, { className:
|
57
|
+
return (_jsx(Formik, __assign({ validateOnChange: false, validateOnBlur: true, validateOnMount: false, initialValues: initialValues || {}, onSubmit: handleSubmit }, props, { children: _jsx(ServerErrorContext.Provider, { value: serverErrorContextValue, children: _jsxs(FormikFormWrapper, { className: clsx(className, FormDefaults.cssClassPrefix + 'form'), style: style, children: [_jsx(FocusError, { serverErrors: serverErrorContextValue }), _jsx(FormBasedPreventNavigation, { ignoreLostChanges: ignoreLostChanges }), children({
|
58
58
|
// hack for ref forwarding
|
59
59
|
Field: Field,
|
60
60
|
FieldArray: FieldArray,
|
package/es/Group.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
-
import
|
3
|
-
import { FormDefaults } from './FormDefaults';
|
2
|
+
import { clsx } from 'clsx';
|
4
3
|
import FieldErrorScrollTarget from './Field/FieldErrorScrollTarget';
|
4
|
+
import { FormDefaults } from './FormDefaults';
|
5
5
|
/** Contains standard field bits like a label, helper text, error scroll target, validation message container, etc. */
|
6
6
|
export default function Group(_a) {
|
7
7
|
var _b;
|
8
8
|
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;
|
9
|
-
return (_jsxs("div", { className:
|
9
|
+
return (_jsxs("div", { className: clsx(className, FormDefaults.cssClassPrefix + 'group', (_b = {},
|
10
10
|
_b[FormDefaults.cssClassPrefix + 'invalid'] = meta.error,
|
11
11
|
_b[FormDefaults.cssClassPrefix + 'disabled'] = disabled,
|
12
12
|
_b[FormDefaults.cssClassPrefix + 'required'] = required,
|
@@ -1,12 +1,12 @@
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
-
import
|
3
|
-
import { FormDefaults } from '../FormDefaults';
|
2
|
+
import { clsx } from 'clsx';
|
4
3
|
import FieldErrorScrollTarget from '../Field/FieldErrorScrollTarget';
|
4
|
+
import { FormDefaults } from '../FormDefaults';
|
5
5
|
/** Contains standard field bits like a label, helper text, error scroll target, validation message container, etc. */
|
6
6
|
export default function CheckboxGroup(_a) {
|
7
7
|
var _b;
|
8
8
|
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, labelOnLeft = _a.labelOnLeft;
|
9
|
-
return (_jsxs("div", { className:
|
9
|
+
return (_jsxs("div", { className: clsx(className, FormDefaults.cssClassPrefix + 'group', (_b = {},
|
10
10
|
_b[FormDefaults.cssClassPrefix + 'invalid'] = meta.error,
|
11
11
|
_b[FormDefaults.cssClassPrefix + 'disabled'] = disabled,
|
12
12
|
_b[FormDefaults.cssClassPrefix + 'required'] = required,
|
@@ -22,12 +22,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import CheckboxGroup from './CheckboxGroup';
|
27
27
|
import { FormDefaults } from '../FormDefaults';
|
28
28
|
function CheckboxInputGroup(_a, ref) {
|
29
29
|
var input = _a.input, meta = _a.meta, disabled = _a.disabled, label = _a.label, required = _a.required, helpText = _a.helpText, className = _a.className, labelOnLeft = _a.labelOnLeft, rest = __rest(_a, ["input", "meta", "disabled", "label", "required", "helpText", "className", "labelOnLeft"]);
|
30
|
-
return (_jsx(CheckboxGroup, { input: input, meta: meta, disabled: disabled, required: required, label: label, helpText: helpText, labelOnLeft: labelOnLeft, className:
|
30
|
+
return (_jsx(CheckboxGroup, { input: input, meta: meta, disabled: disabled, required: required, label: label, helpText: helpText, labelOnLeft: labelOnLeft, className: clsx(className, FormDefaults.cssClassPrefix + 'checkbox-group', { 'label-on-left': labelOnLeft }, { 'label-on-right': !labelOnLeft }), children: _jsx("input", __assign({}, rest, { type: "checkbox", "aria-invalid": !!meta.error, "aria-errormessage": !!meta.error ? "".concat(input.name, "-error") : undefined, className: clsx(className, FormDefaults.cssClassPrefix + 'checkbox-group'), checked: input.value === true, onChange: function (e) {
|
31
31
|
input.onChange(e.target.checked);
|
32
32
|
}, disabled: disabled, required: required, onBlur: input.onBlur, id: input.id, name: input.name, ref: ref })) }));
|
33
33
|
}
|
@@ -22,14 +22,14 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import InputGroupWithRef from './InputGroup';
|
27
27
|
import { FormDefaults } from '../FormDefaults';
|
28
28
|
function IconInputGroup(_a, ref) {
|
29
29
|
var _b;
|
30
30
|
var icon = _a.icon, className = _a.className, rest = __rest(_a, ["icon", "className"]);
|
31
31
|
var input = rest.input;
|
32
|
-
return (_jsx(_Fragment, { children: _jsx(InputGroupWithRef, __assign({ icon: icon, ref: ref, className:
|
32
|
+
return (_jsx(_Fragment, { children: _jsx(InputGroupWithRef, __assign({ icon: icon, ref: ref, className: clsx(className, FormDefaults.cssClassPrefix + 'icon-input-group'), value: (_b = input.value) !== null && _b !== void 0 ? _b : '', onChange: function (e) {
|
33
33
|
if (!e.target.value) {
|
34
34
|
input.onChange(undefined);
|
35
35
|
}
|
package/es/Input/InputGroup.js
CHANGED
@@ -22,12 +22,12 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import { FormDefaults } from '../FormDefaults';
|
27
27
|
import Group from '../Group';
|
28
28
|
function InputGroup(_a, ref) {
|
29
29
|
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"]);
|
30
|
-
return (_jsxs(Group, { input: input, meta: meta, required: required, disabled: disabled, label: label, helpText: helpText, className:
|
30
|
+
return (_jsxs(Group, { input: input, meta: meta, required: required, disabled: disabled, label: label, helpText: helpText, className: clsx(className, FormDefaults.cssClassPrefix + 'input-group'), children: [icon, _jsx("input", __assign({}, input, rest, { "aria-invalid": !!meta.error, "aria-errormessage": !!meta.error ? "".concat(input.name, "-error") : undefined, value: value !== null && value !== void 0 ? value : '', onChange: onChange, ref: ref, className: clsx(className, FormDefaults.cssClassPrefix + 'input-group') }))] }));
|
31
31
|
}
|
32
32
|
/** Generic controlled `<input/>` wrapped by a `<Group/>` */
|
33
33
|
var InputGroupWithRef = React.forwardRef(InputGroup);
|
@@ -22,14 +22,14 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import InputGroup from './InputGroup';
|
27
27
|
import { FormDefaults } from '../FormDefaults';
|
28
28
|
function MoneyInputGroup(_a, ref) {
|
29
29
|
var parseFunc = _a.parseFunc, className = _a.className, rest = __rest(_a, ["parseFunc", "className"]);
|
30
30
|
var effectiveParse = parseFunc !== null && parseFunc !== void 0 ? parseFunc : parseFloat;
|
31
31
|
var input = rest.input;
|
32
|
-
return (_jsx(InputGroup, __assign({ ref: ref, step: 0.01, min: 0 }, rest, { type: "number", className:
|
32
|
+
return (_jsx(InputGroup, __assign({ ref: ref, step: 0.01, min: 0 }, rest, { type: "number", className: clsx(className, FormDefaults.cssClassPrefix + 'money-group'), value: input.value || '', onChange: function (e) {
|
33
33
|
if (!e.target.value) {
|
34
34
|
input.onChange(undefined);
|
35
35
|
}
|
@@ -22,14 +22,14 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import InputGroup from './InputGroup';
|
27
27
|
import { FormDefaults } from '../FormDefaults';
|
28
28
|
function NumberInputGroup(_a, ref) {
|
29
29
|
var parseFunc = _a.parseFunc, className = _a.className, rest = __rest(_a, ["parseFunc", "className"]);
|
30
30
|
var effectiveParse = parseFunc !== null && parseFunc !== void 0 ? parseFunc : parseFloat;
|
31
31
|
var input = rest.input;
|
32
|
-
return (_jsx(InputGroup, __assign({ ref: ref }, rest, { type: "number", className:
|
32
|
+
return (_jsx(InputGroup, __assign({ ref: ref }, rest, { type: "number", className: clsx(className, FormDefaults.cssClassPrefix + 'number-group'), value: input.value || '', onChange: function (e) {
|
33
33
|
if (!e.target.value) {
|
34
34
|
input.onChange(undefined);
|
35
35
|
}
|
@@ -22,7 +22,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import InputGroup from './InputGroup';
|
27
27
|
import { FormDefaults } from '../FormDefaults';
|
28
28
|
import { phoneNumber } from '../Normalization/normalizers';
|
@@ -30,7 +30,7 @@ function PhoneNumberInputGroup(_a, ref) {
|
|
30
30
|
var _b;
|
31
31
|
var className = _a.className, rest = __rest(_a, ["className"]);
|
32
32
|
var input = rest.input;
|
33
|
-
return (_jsx(InputGroup, __assign({ ref: ref, autoComplete: "tel-national" }, rest, { type: "text", className:
|
33
|
+
return (_jsx(InputGroup, __assign({ ref: ref, autoComplete: "tel-national" }, rest, { type: "text", className: clsx(className, FormDefaults.cssClassPrefix + 'phone-number-group'), value: (_b = input.value) !== null && _b !== void 0 ? _b : '', onChange: function (e) {
|
34
34
|
if (!e.target.value) {
|
35
35
|
input.onChange(undefined);
|
36
36
|
}
|
@@ -22,14 +22,14 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import InputGroup from './InputGroup';
|
27
27
|
import { FormDefaults } from '../FormDefaults';
|
28
28
|
function StringInputGroup(_a, ref) {
|
29
29
|
var _b;
|
30
30
|
var className = _a.className, rest = __rest(_a, ["className"]);
|
31
31
|
var input = rest.input;
|
32
|
-
return (_jsx(InputGroup, __assign({ ref: ref }, rest, { className:
|
32
|
+
return (_jsx(InputGroup, __assign({ ref: ref }, rest, { className: clsx(className, FormDefaults.cssClassPrefix + 'string-group'), value: (_b = input.value) !== null && _b !== void 0 ? _b : '', onChange: function (e) {
|
33
33
|
if (!e.target.value) {
|
34
34
|
input.onChange(undefined);
|
35
35
|
}
|
package/es/Select/SelectGroup.js
CHANGED
@@ -22,7 +22,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
24
24
|
import { default as ReactSelect } from 'react-select';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import { FormDefaults } from '../FormDefaults';
|
27
27
|
import Group from '../Group';
|
28
28
|
// TODO: we could also name this "ReactSelectGroup" or similar but the types are strongly defined now so kept the names consistent
|
@@ -43,7 +43,7 @@ export default function SelectGroup(_a) {
|
|
43
43
|
? options.resp
|
44
44
|
: [];
|
45
45
|
var isLoading = (options && 'loading' in options && options.loading) || false;
|
46
|
-
return (_jsx(Group, __assign({}, rest, { input: input, meta: meta, required: required, disabled: disabled, className:
|
46
|
+
return (_jsx(Group, __assign({}, rest, { input: input, meta: meta, required: required, disabled: disabled, className: clsx(className, (_b = {},
|
47
47
|
_b[FormDefaults.cssClassPrefix + 'multiple'] = multiple,
|
48
48
|
_b[FormDefaults.cssClassPrefix + 'loading'] = isLoading,
|
49
49
|
_b), FormDefaults.cssClassPrefix + 'select-group'), children: _jsx(ReactSelect, { inputId: input.id, isMulti: multiple, isDisabled: disabled, options: effectiveOptions, onBlur: input.onBlur, value: getValue(), onChange: function (e) {
|
@@ -53,7 +53,7 @@ export default function SelectGroup(_a) {
|
|
53
53
|
else {
|
54
54
|
input.onChange(e === null || e === void 0 ? void 0 : e.value);
|
55
55
|
}
|
56
|
-
}, getOptionLabel: function (option) { var _a; return (_a = option === null || option === void 0 ? void 0 : option.label) !== null && _a !== void 0 ? _a : ''; }, className:
|
56
|
+
}, getOptionLabel: function (option) { var _a; return (_a = option === null || option === void 0 ? void 0 : option.label) !== null && _a !== void 0 ? _a : ''; }, className: clsx(className, FormDefaults.cssClassPrefix + 'select-group'), classNamePrefix: "react-select", menuPortalTarget: document.body, menuPlacement: "auto", placeholder: placeholder }) })));
|
57
57
|
function getValue() {
|
58
58
|
if (multiple) {
|
59
59
|
return effectiveOptions.filter(function (o) {
|
@@ -1,13 +1,13 @@
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
2
|
-
import
|
2
|
+
import { clsx } from 'clsx';
|
3
3
|
import { useFormikContext } from 'formik';
|
4
|
-
import SubmitFormButton from './SubmitFormButton';
|
5
4
|
import { FormDefaults } from './FormDefaults';
|
5
|
+
import SubmitFormButton from './SubmitFormButton';
|
6
6
|
/** Standard submit and cancel buttons. */
|
7
7
|
export default function StandardFormActions(_a) {
|
8
8
|
var allowPristineSubmit = _a.allowPristineSubmit, handleCancel = _a.handleCancel;
|
9
9
|
var isSubmitting = useFormikContext().isSubmitting;
|
10
|
-
return (_jsxs(_Fragment, { children: [_jsx(SubmitFormButton, { allowPristineSubmit: allowPristineSubmit }), "\u00A0", _jsx("button", { className:
|
10
|
+
return (_jsxs(_Fragment, { children: [_jsx(SubmitFormButton, { allowPristineSubmit: allowPristineSubmit }), "\u00A0", _jsx("button", { className: clsx(FormDefaults.cssClassPrefix + 'standard-form-actions-cancel-button'), type: "button", disabled: isSubmitting, onClick: handleCancel || goBack, children: "Cancel" })] }));
|
11
11
|
function goBack() {
|
12
12
|
window.history.back();
|
13
13
|
}
|
package/es/SubmitFormButton.js
CHANGED
@@ -22,7 +22,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import { useFormikContext } from 'formik';
|
27
27
|
import { FormDefaults } from './FormDefaults';
|
28
28
|
function SubmitFormButton(_a, ref) {
|
@@ -34,7 +34,7 @@ function SubmitFormButton(_a, ref) {
|
|
34
34
|
? 'Loading, please wait...'
|
35
35
|
: preventSubmit
|
36
36
|
? "You haven't made any changes"
|
37
|
-
: '', className:
|
37
|
+
: '', className: clsx(FormDefaults.cssClassPrefix + 'submit-form-button', className), children: children || 'Submit' })));
|
38
38
|
}
|
39
39
|
/** Generic submit button for forms. */
|
40
40
|
export default React.forwardRef(SubmitFormButton);
|
@@ -22,13 +22,13 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
22
22
|
};
|
23
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
24
24
|
import React from 'react';
|
25
|
-
import
|
25
|
+
import { clsx } from 'clsx';
|
26
26
|
import { FormDefaults } from '../FormDefaults';
|
27
27
|
import Group from '../Group';
|
28
28
|
function TextAreaGroup(_a, ref) {
|
29
29
|
var _b;
|
30
30
|
var input = _a.input, meta = _a.meta, label = _a.label, helpText = _a.helpText, className = _a.className, required = _a.required, disabled = _a.disabled, icon = _a.icon, rest = __rest(_a, ["input", "meta", "label", "helpText", "className", "required", "disabled", "icon"]);
|
31
|
-
return (_jsxs(Group, { input: input, meta: meta, required: required, disabled: disabled, label: label, helpText: helpText, className:
|
31
|
+
return (_jsxs(Group, { input: input, meta: meta, required: required, disabled: disabled, label: label, helpText: helpText, className: clsx(className, FormDefaults.cssClassPrefix + 'text-area-group'), children: [icon, _jsx("textarea", __assign({}, input, rest, { value: (_b = input.value) !== null && _b !== void 0 ? _b : '', onChange: function (val) { return input.onChange(val.target.value); }, ref: ref, className: clsx(className, FormDefaults.cssClassPrefix + 'text-area-group') }))] }));
|
32
32
|
}
|
33
33
|
/** Generic controlled `<textarea/>` wrapped by a `<Group/>` */
|
34
34
|
var TextAreaGroupWithRef = React.forwardRef(TextAreaGroup);
|
@@ -21,12 +21,9 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
21
21
|
}
|
22
22
|
return t;
|
23
23
|
};
|
24
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
25
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
26
|
-
};
|
27
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
28
25
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
29
|
-
var
|
26
|
+
var clsx_1 = require("clsx");
|
30
27
|
var envoc_request_1 = require("envoc-request");
|
31
28
|
var FormDefaults_1 = require("../FormDefaults");
|
32
29
|
// TODO: ask about how we should use 'children'
|
@@ -40,7 +37,7 @@ function ConfirmBaseForm(_a) {
|
|
40
37
|
var handleCancel = _a.handleCancel, request = _a.request, style = _a.style, title = _a.title, confirmButtonText = _a.confirmButtonText, confirmButtonClass = _a.confirmButtonClass, children = _a.children, props = __rest(_a, ["handleCancel", "request", "style", "title", "confirmButtonText", "confirmButtonClass", "children"]);
|
41
38
|
var webRequest = (0, envoc_request_1.useAxiosRequest)(Object.assign({}, request, { autoExecute: false }));
|
42
39
|
var onCancel = handleCancel !== null && handleCancel !== void 0 ? handleCancel : goBack;
|
43
|
-
return ((0, jsx_runtime_1.jsxs)("div", __assign({ style: __assign({ textAlign: 'center' }, style) }, props, { children: [(0, jsx_runtime_1.jsx)("h3", { children: title }), children, (0, jsx_runtime_1.jsx)("button", { className: (0,
|
40
|
+
return ((0, jsx_runtime_1.jsxs)("div", __assign({ style: __assign({ textAlign: 'center' }, style) }, props, { children: [(0, jsx_runtime_1.jsx)("h3", { children: title }), children, (0, jsx_runtime_1.jsx)("button", { className: (0, clsx_1.clsx)(confirmButtonClass !== null && confirmButtonClass !== void 0 ? confirmButtonClass : FormDefaults_1.FormDefaults.cssClassPrefix + 'confirm-base-form-confirm-button'), type: "button", onClick: webRequest.submitRequest, children: confirmButtonText !== null && confirmButtonText !== void 0 ? confirmButtonText : 'Confirm' }), (0, jsx_runtime_1.jsx)("button", { className: (0, clsx_1.clsx)(FormDefaults_1.FormDefaults.cssClassPrefix + 'confirm-base-form-cancel-button'), type: "button", onClick: onCancel, children: "Cancel" })] })));
|
44
41
|
function goBack() {
|
45
42
|
window.history.back();
|
46
43
|
}
|
@@ -29,7 +29,7 @@ exports.convertToTimeZoneInsensitiveISOString = void 0;
|
|
29
29
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
30
30
|
var react_1 = require("react");
|
31
31
|
var entry_nostyle_1 = __importDefault(require("react-date-picker/dist/entry.nostyle"));
|
32
|
-
var
|
32
|
+
var clsx_1 = require("clsx");
|
33
33
|
var parseISO_1 = __importDefault(require("date-fns/parseISO"));
|
34
34
|
var FormDefaults_1 = require("../FormDefaults");
|
35
35
|
var Group_1 = __importDefault(require("../Group"));
|
@@ -54,7 +54,7 @@ function DatePickerGroup(_a) {
|
|
54
54
|
}
|
55
55
|
}
|
56
56
|
}, [setDisplayDate, input.value]);
|
57
|
-
return ((0, jsx_runtime_1.jsx)(Group_1.default, { input: input, meta: meta, label: label, helpText: helpText, className: (0,
|
57
|
+
return ((0, jsx_runtime_1.jsx)(Group_1.default, { input: input, meta: meta, label: label, helpText: helpText, className: (0, clsx_1.clsx)(className, FormDefaults_1.FormDefaults.cssClassPrefix + 'date-picker'), required: required, disabled: disabled, children: (0, jsx_runtime_1.jsx)(entry_nostyle_1.default, __assign({}, rest, { className: (0, clsx_1.clsx)(FormDefaults_1.FormDefaults.cssClassPrefix + 'date-picker', className), value: displayDate, onChange: handleChange })) }));
|
58
58
|
function handleChange(e) {
|
59
59
|
var onChange = input.onChange;
|
60
60
|
if (onChange === null) {
|
package/lib/Field/Field.d.ts
CHANGED
@@ -18,11 +18,12 @@ export type FieldProps<TForm extends object, TProp extends keyof TForm, TRenderC
|
|
18
18
|
validate?: ValidationFunction<TForm[TProp]> | ValidationFunction<TForm[TProp]>[];
|
19
19
|
/** Function to modify the field value without making the form dirty. (e.g. phone number) */
|
20
20
|
normalize?: NormalizationFunction<TForm[TProp]>;
|
21
|
+
required?: boolean;
|
21
22
|
} & Omit<RenderComponentProps<TForm[TProp], TRenderComponent>, keyof InjectedFieldProps<TForm[TProp]>>;
|
22
23
|
/**
|
23
24
|
* Renders whatever Component is passed - injecting the formik values needed to finish wiring up that individual field.
|
24
25
|
* Should no Component be used then the default will be provided by the default lookup based on typeof(TForm[TProp])
|
25
26
|
*/
|
26
|
-
declare function Field<TForm extends object, TProp extends keyof TForm, TRenderComponent extends ElementType>({ name, Component, id, disabled, validate, normalize, ...rest }: FieldProps<TForm, TProp, TRenderComponent>, ref: LegacyRef<any>): import("react/jsx-runtime").JSX.Element;
|
27
|
+
declare function Field<TForm extends object, TProp extends keyof TForm, TRenderComponent extends ElementType>({ name, Component, id, disabled, validate, normalize, required, ...rest }: FieldProps<TForm, TProp, TRenderComponent>, ref: LegacyRef<any>): import("react/jsx-runtime").JSX.Element;
|
27
28
|
declare const _default: typeof Field;
|
28
29
|
export default _default;
|
package/lib/Field/Field.js
CHANGED
@@ -35,18 +35,26 @@ var validators_1 = require("../Validation/validators");
|
|
35
35
|
* Should no Component be used then the default will be provided by the default lookup based on typeof(TForm[TProp])
|
36
36
|
*/
|
37
37
|
function Field(_a, ref) {
|
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
|
+
var name = _a.name, Component = _a.Component, id = _a.id, disabled = _a.disabled, validate = _a.validate, normalize = _a.normalize, required = _a.required, rest = __rest(_a, ["name", "Component", "id", "disabled", "validate", "normalize", "required"]);
|
39
|
+
// enforces that validate is an array and adds the required validator if required prop is true
|
40
|
+
var validateArray = Array.isArray(validate)
|
41
|
+
? validate
|
42
|
+
: validate !== undefined
|
43
|
+
? [validate]
|
44
|
+
: [];
|
45
|
+
var validateWithRequired = required
|
46
|
+
? validateArray
|
47
|
+
.filter(function (x) { return x !== validators_1.required; })
|
48
|
+
.concat([validators_1.required])
|
49
|
+
: validateArray;
|
50
|
+
var isRequired = required || validateWithRequired.includes(validators_1.required);
|
39
51
|
var _b = (0, useStandardField_1.default)({
|
40
52
|
name: String(name),
|
41
53
|
id: id,
|
42
54
|
disabled: disabled,
|
43
|
-
validate:
|
55
|
+
validate: validateWithRequired,
|
44
56
|
normalize: normalize,
|
45
57
|
}), 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));
|
50
58
|
// a bit of a hack so JSX is happy with us
|
51
59
|
var Wrapped = Component;
|
52
60
|
return ((0, jsx_runtime_1.jsx)(FieldNameContext_1.FieldNameContext.Provider, { 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 })) }));
|