@danderson00/react-forms 0.0.27 → 0.0.28
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/dist/Form.js +2 -1
- package/dist/Group.js +44 -0
- package/dist/fields.js +1 -1
- package/dist/index.js +5 -1
- package/dist/input.js +10 -9
- package/dist/inputTypes.js +1 -1
- package/package.json +4 -4
- package/src/Form.js +3 -2
- package/src/Group.js +15 -0
- package/src/index.js +2 -0
- package/src/input.js +6 -5
- package/src/inputTypes.js +1 -1
package/dist/Form.js
CHANGED
|
@@ -41,7 +41,7 @@ function _objectWithoutProperties(source, excluded) { if (source == null) return
|
|
|
41
41
|
|
|
42
42
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
43
43
|
|
|
44
|
-
var
|
|
44
|
+
var Form = function Form(ContextProvider) {
|
|
45
45
|
var additionalContext = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
46
46
|
var ErrorMessage = arguments.length > 2 ? arguments[2] : undefined;
|
|
47
47
|
return function (_ref) {
|
|
@@ -194,4 +194,5 @@ var _default = function _default(ContextProvider) {
|
|
|
194
194
|
};
|
|
195
195
|
};
|
|
196
196
|
|
|
197
|
+
var _default = Form;
|
|
197
198
|
exports["default"] = _default;
|
package/dist/Group.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
|
|
10
|
+
var _excluded = ["name"],
|
|
11
|
+
_excluded2 = ["groups"];
|
|
12
|
+
|
|
13
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
14
|
+
|
|
15
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16
|
+
|
|
17
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
18
|
+
|
|
19
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
20
|
+
|
|
21
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
22
|
+
|
|
23
|
+
var Group = function Group(formContext) {
|
|
24
|
+
return function (_ref) {
|
|
25
|
+
var name = _ref.name,
|
|
26
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
27
|
+
|
|
28
|
+
if (!name) throw new Error("You must provide a name prop to form components");
|
|
29
|
+
|
|
30
|
+
var _useContext = (0, _react.useContext)(formContext),
|
|
31
|
+
_useContext$groups = _useContext.groups,
|
|
32
|
+
groups = _useContext$groups === void 0 ? [] : _useContext$groups,
|
|
33
|
+
context = _objectWithoutProperties(_useContext, _excluded2);
|
|
34
|
+
|
|
35
|
+
return /*#__PURE__*/(0, _react.createElement)(formContext.Provider, _objectSpread(_objectSpread({}, props), {}, {
|
|
36
|
+
value: _objectSpread(_objectSpread({}, context), {}, {
|
|
37
|
+
groups: groups.concat(name)
|
|
38
|
+
})
|
|
39
|
+
}));
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
var _default = Group;
|
|
44
|
+
exports["default"] = _default;
|
package/dist/fields.js
CHANGED
|
@@ -14,7 +14,7 @@ var _excluded = ["label", "className"],
|
|
|
14
14
|
|
|
15
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
16
16
|
|
|
17
|
-
function _extends() { _extends = Object.assign
|
|
17
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
18
18
|
|
|
19
19
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
20
20
|
|
package/dist/index.js
CHANGED
|
@@ -10,12 +10,14 @@ Object.defineProperty(exports, "FormProvider", {
|
|
|
10
10
|
return _Form["default"];
|
|
11
11
|
}
|
|
12
12
|
});
|
|
13
|
-
exports.wrapSubmit = exports.wrapInput = exports.useFormValues = exports.createRawConsumer = exports.context = exports.Textarea = exports.Submit = exports.Select = exports.Input = void 0;
|
|
13
|
+
exports.wrapSubmit = exports.wrapInput = exports.useFormValues = exports.createRawConsumer = exports.context = exports.Textarea = exports.Submit = exports.Select = exports.Input = exports.Group = void 0;
|
|
14
14
|
|
|
15
15
|
var _react = require("react");
|
|
16
16
|
|
|
17
17
|
var _Form = _interopRequireDefault(require("./Form"));
|
|
18
18
|
|
|
19
|
+
var _Group = _interopRequireDefault(require("./Group"));
|
|
20
|
+
|
|
19
21
|
var _ErrorMessage = _interopRequireDefault(require("./ErrorMessage"));
|
|
20
22
|
|
|
21
23
|
var _submit = _interopRequireDefault(require("./submit"));
|
|
@@ -71,6 +73,8 @@ var createRawConsumer = function createRawConsumer(ConsumerComponent) {
|
|
|
71
73
|
exports.createRawConsumer = createRawConsumer;
|
|
72
74
|
var Form = (0, _Form["default"])(context.Provider, {}, _ErrorMessage["default"]);
|
|
73
75
|
exports.Form = Form;
|
|
76
|
+
var Group = (0, _Group["default"])(context);
|
|
77
|
+
exports.Group = Group;
|
|
74
78
|
var Submit = createConsumer((0, _submit["default"])(function (props) {
|
|
75
79
|
return /*#__PURE__*/(0, _react.createElement)('button', props);
|
|
76
80
|
}));
|
package/dist/input.js
CHANGED
|
@@ -15,7 +15,7 @@ var _inputTypes = _interopRequireDefault(require("./inputTypes"));
|
|
|
15
15
|
|
|
16
16
|
var _throttle2 = _interopRequireDefault(require("./throttle"));
|
|
17
17
|
|
|
18
|
-
var _excluded = ["type", "
|
|
18
|
+
var _excluded = ["type", "value", "checked", "defaultValue", "numeric", "onSubmit", "registerFieldValidator", "setFieldValue", "getFieldValue", "getFieldValues", "submitOnChange", "submitOnBlur", "selectOnFocus", "throttle", "valid"];
|
|
19
19
|
|
|
20
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
21
21
|
|
|
@@ -69,12 +69,16 @@ var _default = function _default(render) {
|
|
|
69
69
|
|
|
70
70
|
var previousValueProp = (0, _usePrevious["default"])(props.value); // this is currently broken :-\
|
|
71
71
|
|
|
72
|
-
var
|
|
72
|
+
var _props$groups = props.groups,
|
|
73
|
+
groups = _props$groups === void 0 ? [] : _props$groups,
|
|
74
|
+
throttle = props.throttle,
|
|
73
75
|
onSubmit = props.onSubmit;
|
|
76
|
+
var name = groups.map(function (group) {
|
|
77
|
+
return group + '.';
|
|
78
|
+
}) + props.name;
|
|
74
79
|
var submitHandler = throttle && onSubmit ? (0, _throttle2["default"])(onSubmit, isNaN(throttle) ? 200 : throttle) : onSubmit;
|
|
75
80
|
(0, _react.useEffect)(function () {
|
|
76
|
-
var
|
|
77
|
-
getFieldValue = props.getFieldValue,
|
|
81
|
+
var getFieldValue = props.getFieldValue,
|
|
78
82
|
setFieldValue = props.setFieldValue,
|
|
79
83
|
registerFieldValidator = props.registerFieldValidator;
|
|
80
84
|
|
|
@@ -101,8 +105,7 @@ var _default = function _default(render) {
|
|
|
101
105
|
// this probably introduces some redundancy with the onChange handler below
|
|
102
106
|
|
|
103
107
|
(0, _useUpdate["default"])(function () {
|
|
104
|
-
var
|
|
105
|
-
value = props.value,
|
|
108
|
+
var value = props.value,
|
|
106
109
|
setFieldValue = props.setFieldValue;
|
|
107
110
|
|
|
108
111
|
var _types2 = (0, _inputTypes["default"])(props, options),
|
|
@@ -119,8 +122,7 @@ var _default = function _default(render) {
|
|
|
119
122
|
}
|
|
120
123
|
|
|
121
124
|
var event = args[0];
|
|
122
|
-
var
|
|
123
|
-
setFieldValue = props.setFieldValue,
|
|
125
|
+
var setFieldValue = props.setFieldValue,
|
|
124
126
|
onChange = props.onChange,
|
|
125
127
|
submitOnChange = props.submitOnChange;
|
|
126
128
|
var valueFromEvent = options.valueFromEvent;
|
|
@@ -231,7 +233,6 @@ var _default = function _default(render) {
|
|
|
231
233
|
getValueProps = _types4.getValueProps;
|
|
232
234
|
|
|
233
235
|
var type = props.type,
|
|
234
|
-
name = props.name,
|
|
235
236
|
value = props.value,
|
|
236
237
|
checked = props.checked,
|
|
237
238
|
defaultValue = props.defaultValue,
|
package/dist/inputTypes.js
CHANGED
|
@@ -100,7 +100,7 @@ var _default = function _default(props, options) {
|
|
|
100
100
|
var set = _ref9.set,
|
|
101
101
|
element = _ref9.element;
|
|
102
102
|
set(value || defaultValue || props.options && props.options.length > 0 && props.options[0] || // this probably should come out - is it the right behavior for all browsers? it's here to keep 1 unit test happy?
|
|
103
|
-
element && element.value // this *should* work in all browsers (except jsdom)...
|
|
103
|
+
element && element.value || '' // this *should* work in all browsers (except jsdom)...
|
|
104
104
|
);
|
|
105
105
|
}
|
|
106
106
|
})
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@danderson00/react-forms",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.28",
|
|
4
4
|
"description": "Ultra simple, stateless, validated forms for use in React function components",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "src/index.js",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"object-path-immutable": "^4.1.1"
|
|
14
14
|
},
|
|
15
15
|
"peerDependencies": {
|
|
16
|
-
"react": "
|
|
16
|
+
"react": "*"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@babel/cli": "^7.4.4",
|
|
@@ -24,8 +24,8 @@
|
|
|
24
24
|
"babel-jest": "26.6.0",
|
|
25
25
|
"enzyme": "^3.9.0",
|
|
26
26
|
"jest": "26.6.0",
|
|
27
|
-
"react": "^17.0.
|
|
28
|
-
"react-dom": "^17.0.
|
|
27
|
+
"react": "^17.0.2",
|
|
28
|
+
"react-dom": "^17.0.2"
|
|
29
29
|
},
|
|
30
30
|
"jest": {
|
|
31
31
|
"moduleNameMapper": {
|
package/src/Form.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createElement, createRef, useEffect, useReducer, useState } from 'react'
|
|
2
2
|
import { get, set } from 'object-path-immutable'
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const Form = (ContextProvider, additionalContext = {}, ErrorMessage) => (
|
|
5
5
|
({ resetOnSubmit, row, gap, ...props }) => {
|
|
6
6
|
const [fieldValues, setFieldValues] = useState(props.values || {})
|
|
7
7
|
const [fieldValidators, registerFieldValidator] = useReducer((validators, validator) => [...validators, validator], [])
|
|
@@ -115,4 +115,5 @@ export default (ContextProvider, additionalContext = {}, ErrorMessage) => (
|
|
|
115
115
|
})
|
|
116
116
|
)
|
|
117
117
|
}
|
|
118
|
-
)
|
|
118
|
+
)
|
|
119
|
+
export default Form
|
package/src/Group.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createElement, useContext } from 'react'
|
|
2
|
+
|
|
3
|
+
const Group = formContext => ({ name, ...props }) => {
|
|
4
|
+
if (!name) throw new Error("You must provide a name prop to form components")
|
|
5
|
+
const { groups = [], ...context } = useContext(formContext)
|
|
6
|
+
|
|
7
|
+
return createElement(formContext.Provider, {
|
|
8
|
+
...props,
|
|
9
|
+
value: {
|
|
10
|
+
...context,
|
|
11
|
+
groups: groups.concat(name)
|
|
12
|
+
}
|
|
13
|
+
})
|
|
14
|
+
}
|
|
15
|
+
export default Group
|
package/src/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createContext, createElement } from 'react'
|
|
2
2
|
import FormProvider from './Form'
|
|
3
|
+
import GroupProvider from './Group'
|
|
3
4
|
import ErrorMessage from './ErrorMessage'
|
|
4
5
|
import submit from './submit'
|
|
5
6
|
import input from './input'
|
|
@@ -23,6 +24,7 @@ export const createRawConsumer = ConsumerComponent => (
|
|
|
23
24
|
)
|
|
24
25
|
|
|
25
26
|
export const Form = FormProvider(context.Provider, {}, ErrorMessage)
|
|
27
|
+
export const Group = GroupProvider(context)
|
|
26
28
|
export const Submit = createConsumer(submit(props => createElement('button', props)))
|
|
27
29
|
|
|
28
30
|
export const Input = createConsumer(input(props => createElement('input', props)))
|
package/src/input.js
CHANGED
|
@@ -16,11 +16,12 @@ export default (render, options = {}) => function Input(props) {
|
|
|
16
16
|
const previousValueProp = usePrevious(props.value)
|
|
17
17
|
|
|
18
18
|
// this is currently broken :-\
|
|
19
|
-
const {
|
|
19
|
+
const { groups = [], throttle, onSubmit } = props
|
|
20
|
+
const name = groups.map(group => group + '.') + props.name
|
|
20
21
|
const submitHandler = (throttle && onSubmit) ? createThrottled(onSubmit, isNaN(throttle) ? 200 : throttle) : onSubmit
|
|
21
22
|
|
|
22
23
|
useEffect(() => {
|
|
23
|
-
const {
|
|
24
|
+
const { getFieldValue, setFieldValue, registerFieldValidator } = props
|
|
24
25
|
const { setInitialValue, applyValueTransforms } = types(props, options)
|
|
25
26
|
|
|
26
27
|
// don't override values that were set from passing a values prop to the form
|
|
@@ -43,7 +44,7 @@ export default (render, options = {}) => function Input(props) {
|
|
|
43
44
|
// ensure form values are updated to reflect passed `value` prop
|
|
44
45
|
// this probably introduces some redundancy with the onChange handler below
|
|
45
46
|
useUpdate(() => {
|
|
46
|
-
const {
|
|
47
|
+
const { value, setFieldValue } = props
|
|
47
48
|
const { applyValueTransforms } = types(props, options)
|
|
48
49
|
|
|
49
50
|
if(value !== previousValueProp) {
|
|
@@ -54,7 +55,7 @@ export default (render, options = {}) => function Input(props) {
|
|
|
54
55
|
// TODO: refactor bubbling to prop pattern
|
|
55
56
|
const onChange = (...args) => {
|
|
56
57
|
const [event] = args
|
|
57
|
-
const {
|
|
58
|
+
const { setFieldValue, onChange, submitOnChange } = props
|
|
58
59
|
const { valueFromEvent } = options
|
|
59
60
|
const { getOutputValue, applyValueTransforms } = types(props, options)
|
|
60
61
|
|
|
@@ -138,7 +139,7 @@ export default (render, options = {}) => function Input(props) {
|
|
|
138
139
|
const { getValueProps } = types(props, options)
|
|
139
140
|
|
|
140
141
|
const {
|
|
141
|
-
type,
|
|
142
|
+
type, value, checked, defaultValue, numeric,
|
|
142
143
|
onSubmit, registerFieldValidator, setFieldValue, getFieldValue, getFieldValues,
|
|
143
144
|
submitOnChange, submitOnBlur, selectOnFocus, throttle, valid,
|
|
144
145
|
...passThroughProps
|
package/src/inputTypes.js
CHANGED
|
@@ -53,7 +53,7 @@ export default (props, options) => {
|
|
|
53
53
|
setInitialValue: ({ set, element }) => {
|
|
54
54
|
set(value || defaultValue ||
|
|
55
55
|
(props.options && props.options.length > 0 && props.options[0]) || // this probably should come out - is it the right behavior for all browsers? it's here to keep 1 unit test happy?
|
|
56
|
-
element && element.value // this *should* work in all browsers (except jsdom)...
|
|
56
|
+
element && element.value || '' // this *should* work in all browsers (except jsdom)...
|
|
57
57
|
)
|
|
58
58
|
}
|
|
59
59
|
}
|