@danderson00/react-forms 0.0.41 → 0.0.42

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/input.js CHANGED
@@ -4,93 +4,70 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
8
7
  var _react = require("react");
9
-
10
8
  var _usePrevious = _interopRequireDefault(require("./usePrevious"));
11
-
12
9
  var _useUpdate = _interopRequireDefault(require("./useUpdate"));
13
-
14
10
  var _inputTypes = _interopRequireDefault(require("./inputTypes"));
15
-
16
11
  var _throttle2 = _interopRequireDefault(require("./throttle"));
17
-
18
12
  var _excluded = ["type", "value", "checked", "defaultValue", "numeric", "onSubmit", "registerFieldValidator", "setFieldValue", "getFieldValue", "getFieldValues", "submitOnChange", "submitOnBlur", "selectOnFocus", "throttle", "valid", "onValidated"];
19
-
20
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
21
-
22
14
  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; }
23
-
24
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; }
25
-
26
16
  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; }
27
-
28
17
  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; }
29
-
30
18
  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; }
31
-
32
19
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
33
-
34
20
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
35
-
36
21
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
37
-
38
22
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
39
-
40
23
  function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
41
-
42
24
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
43
-
44
25
  var nextElementId = function (id) {
45
26
  return function () {
46
27
  return "react-forms-".concat(++id);
47
28
  };
48
29
  }(0);
49
-
50
30
  var _default = function _default(render) {
51
31
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
52
32
  return function Input(props) {
53
33
  if (!props.name) throw new Error("You must provide a name prop to form components");
54
34
  if (!props.setFieldValue) throw new Error("Input components must be contained within a Form component");
55
-
56
35
  var _useState = (0, _react.useState)(false),
57
- _useState2 = _slicedToArray(_useState, 2),
58
- fieldValidated = _useState2[0],
59
- setFieldValidated = _useState2[1];
60
-
36
+ _useState2 = _slicedToArray(_useState, 2),
37
+ fieldValidated = _useState2[0],
38
+ setFieldValidated = _useState2[1];
61
39
  var _useState3 = (0, _react.useState)(false),
62
- _useState4 = _slicedToArray(_useState3, 2),
63
- error = _useState4[0],
64
- setError = _useState4[1];
65
-
40
+ _useState4 = _slicedToArray(_useState3, 2),
41
+ error = _useState4[0],
42
+ setError = _useState4[1];
66
43
  var _useState5 = (0, _react.useState)(props.id || nextElementId()),
67
- _useState6 = _slicedToArray(_useState5, 1),
68
- id = _useState6[0];
69
-
70
- var previousValueProp = (0, _usePrevious["default"])(props.value); // this is currently broken :-\
44
+ _useState6 = _slicedToArray(_useState5, 1),
45
+ id = _useState6[0];
46
+ var previousValueProp = (0, _usePrevious["default"])(props.value);
71
47
 
48
+ // this is currently broken :-\
72
49
  var _props$groups = props.groups,
73
- groups = _props$groups === void 0 ? [] : _props$groups,
74
- throttle = props.throttle,
75
- onSubmit = props.onSubmit;
50
+ groups = _props$groups === void 0 ? [] : _props$groups,
51
+ throttle = props.throttle,
52
+ onSubmit = props.onSubmit;
76
53
  var name = groups.map(function (group) {
77
54
  return group + '.';
78
55
  }) + props.name;
79
56
  var submitHandler = throttle && onSubmit ? (0, _throttle2["default"])(onSubmit, isNaN(throttle) ? 200 : throttle) : onSubmit;
80
57
  (0, _react.useEffect)(function () {
81
58
  var getFieldValue = props.getFieldValue,
82
- setFieldValue = props.setFieldValue,
83
- registerFieldValidator = props.registerFieldValidator;
84
-
59
+ setFieldValue = props.setFieldValue,
60
+ registerFieldValidator = props.registerFieldValidator;
85
61
  var _types = (0, _inputTypes["default"])(props, options),
86
- setInitialValue = _types.setInitialValue,
87
- applyValueTransforms = _types.applyValueTransforms; // don't override values that were set from passing a values prop to the form
88
-
62
+ setInitialValue = _types.setInitialValue,
63
+ applyValueTransforms = _types.applyValueTransforms;
89
64
 
65
+ // don't override values that were set from passing a values prop to the form
90
66
  if (getFieldValue(name) === undefined) {
91
67
  // TODO: change setter to a getter and return a private `UNSET` symbol to indicate not to call the field setter
92
68
  // this allows us to set the default value with useState above and not have an initial render cycle without the default value
93
69
  // BUT... to get the default value of a select list, we need to render it first? dilemma....
70
+
94
71
  setInitialValue({
95
72
  // pass a setter function - radio buttons do not always want to set a value!
96
73
  set: function set(value) {
@@ -99,52 +76,56 @@ var _default = function _default(render) {
99
76
  element: document.querySelector("#".concat(id))
100
77
  });
101
78
  }
79
+ registerFieldValidator(updateValidationState);
102
80
 
103
- registerFieldValidator(updateValidationState); // TODO: need to unregister in case of dynamic form elements
104
- }, []); // ensure form values are updated to reflect passed `value` prop
105
- // this probably introduces some redundancy with the onChange handler below
81
+ // TODO: need to unregister in case of dynamic form elements
82
+ }, []);
106
83
 
84
+ // ensure form values are updated to reflect passed `value` prop
85
+ // this probably introduces some redundancy with the onChange handler below
86
+ var type = props.type,
87
+ checked = props.checked,
88
+ value = props.value,
89
+ defaultValue = props.defaultValue,
90
+ setFieldValue = props.setFieldValue;
107
91
  (0, _useUpdate["default"])(function () {
108
- var value = props.value,
109
- setFieldValue = props.setFieldValue;
110
-
111
- var _types2 = (0, _inputTypes["default"])(props, options),
112
- applyValueTransforms = _types2.applyValueTransforms;
113
-
92
+ var _types2 = (0, _inputTypes["default"])({
93
+ type: type,
94
+ checked: checked,
95
+ value: value,
96
+ defaultValue: defaultValue,
97
+ setFieldValue: setFieldValue
98
+ }, options),
99
+ applyValueTransforms = _types2.applyValueTransforms;
114
100
  if (value !== previousValueProp) {
115
101
  setFieldValue(name, applyValueTransforms(value));
116
102
  }
117
- }, [props]); // TODO: refactor bubbling to prop pattern
103
+ }, [type, checked, value, defaultValue, setFieldValue]);
118
104
 
105
+ // TODO: refactor bubbling to prop pattern
119
106
  var onChange = function onChange() {
120
107
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
121
108
  args[_key] = arguments[_key];
122
109
  }
123
-
124
110
  var event = args[0];
125
111
  var setFieldValue = props.setFieldValue,
126
- onChange = props.onChange,
127
- submitOnChange = props.submitOnChange;
112
+ onChange = props.onChange,
113
+ submitOnChange = props.submitOnChange;
128
114
  var valueFromEvent = options.valueFromEvent;
129
-
130
115
  var _types3 = (0, _inputTypes["default"])(props, options),
131
- getOutputValue = _types3.getOutputValue,
132
- applyValueTransforms = _types3.applyValueTransforms;
133
-
116
+ getOutputValue = _types3.getOutputValue,
117
+ applyValueTransforms = _types3.applyValueTransforms;
134
118
  var elementValue = valueFromEvent ? valueFromEvent.apply(null, args) : getOutputValue({
135
119
  event: event
136
120
  });
137
121
  setFieldValue(name, applyValueTransforms(elementValue));
138
-
139
122
  if (event && event.target && event.target.checkValidity) {
140
123
  event.target.checkValidity();
141
124
  updateValidationState();
142
125
  }
143
-
144
126
  if (onChange) {
145
127
  onChange.apply(event.target, args);
146
128
  }
147
-
148
129
  if (submitOnChange && submitHandler) {
149
130
  // the setFieldValue above sets state on the Form component, used in the onSubmit handler
150
131
  // setting state requires an additional render cycle - we need to pass in the new value so it's set correctly
@@ -153,121 +134,99 @@ var _default = function _default(render) {
153
134
  });
154
135
  }
155
136
  };
156
-
157
137
  var onBlur = function onBlur() {
158
138
  var submitOnBlur = props.submitOnBlur,
159
- onSubmit = props.onSubmit,
160
- onBlur = props.onBlur;
161
-
139
+ onSubmit = props.onSubmit,
140
+ onBlur = props.onBlur;
162
141
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
163
142
  args[_key2] = arguments[_key2];
164
143
  }
165
-
166
144
  var event = args[0];
167
-
168
145
  if (submitOnBlur) {
169
146
  onSubmit();
170
147
  }
171
-
172
148
  if (onBlur) {
173
149
  onBlur.apply(event.target, args);
174
150
  }
175
151
  };
176
-
177
152
  var onFocus = function onFocus() {
178
153
  var selectOnFocus = props.selectOnFocus,
179
- onFocus = props.onFocus;
180
-
154
+ onFocus = props.onFocus;
181
155
  for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
182
156
  args[_key3] = arguments[_key3];
183
157
  }
184
-
185
158
  var event = args[0];
186
159
  var element = event.target;
187
-
188
160
  var selectText = function selectText() {
189
161
  element.selectionStart = 0;
190
162
  element.selectionEnd = element.value.length;
191
163
  };
192
-
193
164
  if (selectOnFocus) {
194
165
  selectText();
195
166
  setTimeout(selectText);
196
167
  }
197
-
198
168
  if (onFocus) {
199
169
  onFocus.apply(element, args);
200
170
  }
201
171
  };
202
-
203
172
  var onKeyDown = function onKeyDown() {
204
173
  var onKeyDown = props.onKeyDown;
205
-
206
174
  for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
207
175
  args[_key4] = arguments[_key4];
208
176
  }
209
-
210
177
  var event = args[0];
211
178
  var element = event.target;
212
-
213
179
  if (props.numeric && !/[0-9-]/.exec(event.key) && ![null, 0, 8, 9, 13, 27, 35, 36, 37, 39, 46].includes(event.keyCode)) {
214
180
  event.preventDefault();
215
181
  }
216
-
217
182
  if (onKeyDown) {
218
183
  onKeyDown.apply(element, args);
219
184
  }
220
185
  };
221
-
222
186
  var updateValidationState = function updateValidationState() {
223
- setFieldValidated(true); // this is a little hacky, but the simplest way I could think of to determine the
187
+ setFieldValidated(true);
188
+ // this is a little hacky, but the simplest way I could think of to determine the
224
189
  // validity of the actual input element. :invalid is also not supported by enzyme
225
-
226
190
  var invalid = Boolean(document.querySelector("#".concat(id, ":invalid")));
227
191
  setError(invalid);
228
192
  props.onValidated && props.onValidated(!invalid);
229
193
  };
230
- /* render */
231
-
232
194
 
195
+ /* render */
233
196
  {
234
197
  var passErrorProp = options.passErrorProp;
235
-
236
198
  var _types4 = (0, _inputTypes["default"])(props, options),
237
- getValueProps = _types4.getValueProps;
238
-
239
- var type = props.type,
240
- value = props.value,
241
- checked = props.checked,
242
- defaultValue = props.defaultValue,
243
- numeric = props.numeric,
244
- _onSubmit = props.onSubmit,
245
- registerFieldValidator = props.registerFieldValidator,
246
- setFieldValue = props.setFieldValue,
247
- getFieldValue = props.getFieldValue,
248
- getFieldValues = props.getFieldValues,
249
- submitOnChange = props.submitOnChange,
250
- submitOnBlur = props.submitOnBlur,
251
- selectOnFocus = props.selectOnFocus,
252
- _throttle = props.throttle,
253
- valid = props.valid,
254
- onValidated = props.onValidated,
255
- passThroughProps = _objectWithoutProperties(props, _excluded);
256
-
199
+ getValueProps = _types4.getValueProps;
200
+ var _type = props.type,
201
+ _value = props.value,
202
+ _checked = props.checked,
203
+ _defaultValue = props.defaultValue,
204
+ numeric = props.numeric,
205
+ _onSubmit = props.onSubmit,
206
+ registerFieldValidator = props.registerFieldValidator,
207
+ _setFieldValue = props.setFieldValue,
208
+ getFieldValue = props.getFieldValue,
209
+ getFieldValues = props.getFieldValues,
210
+ submitOnChange = props.submitOnChange,
211
+ submitOnBlur = props.submitOnBlur,
212
+ selectOnFocus = props.selectOnFocus,
213
+ _throttle = props.throttle,
214
+ valid = props.valid,
215
+ onValidated = props.onValidated,
216
+ passThroughProps = _objectWithoutProperties(props, _excluded);
257
217
  var valueProps = getValueProps({
258
218
  currentValue: getFieldValue(name)
259
219
  });
260
220
  var numericProps = numeric && {
261
221
  type: 'number'
262
222
  };
263
- var typeProps = type && {
264
- type: type
223
+ var typeProps = _type && {
224
+ type: _type
265
225
  };
266
226
  var errorProps = passErrorProp && {
267
227
  error: error
268
228
  };
269
229
  var className = (fieldValidated ? 'validated ' : '') + (props.className || '') || undefined;
270
-
271
230
  var finalProps = _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
272
231
  id: id,
273
232
  name: name,
@@ -278,11 +237,9 @@ var _default = function _default(render) {
278
237
  onBlur: onBlur,
279
238
  onKeyDown: onKeyDown
280
239
  });
281
-
282
240
  return render(finalProps);
283
241
  }
284
242
  };
285
243
  };
286
-
287
244
  exports["default"] = _default;
288
245
  //# sourceMappingURL=input.js.map
package/dist/input.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","names":["nextElementId","id","render","options","Input","props","name","Error","setFieldValue","useState","fieldValidated","setFieldValidated","error","setError","previousValueProp","usePrevious","value","groups","throttle","onSubmit","map","group","submitHandler","createThrottled","isNaN","useEffect","getFieldValue","registerFieldValidator","types","setInitialValue","applyValueTransforms","undefined","set","element","document","querySelector","updateValidationState","useUpdate","onChange","args","event","submitOnChange","valueFromEvent","getOutputValue","elementValue","apply","target","checkValidity","additionalValues","onBlur","submitOnBlur","onFocus","selectOnFocus","selectText","selectionStart","selectionEnd","length","setTimeout","onKeyDown","numeric","exec","key","includes","keyCode","preventDefault","invalid","Boolean","onValidated","passErrorProp","getValueProps","type","checked","defaultValue","getFieldValues","valid","passThroughProps","valueProps","currentValue","numericProps","typeProps","errorProps","className","finalProps"],"sources":["../src/input.js"],"sourcesContent":["import { useState, useEffect } from 'react'\nimport usePrevious from './usePrevious'\nimport useUpdate from './useUpdate'\nimport types from './inputTypes'\nimport createThrottled from './throttle'\n\nconst nextElementId = (id => () => `react-forms-${++id}`)(0)\n\nexport default (render, options = {}) => function Input(props) {\n if (!props.name) throw new Error(\"You must provide a name prop to form components\")\n if (!props.setFieldValue) throw new Error(\"Input components must be contained within a Form component\")\n\n const [fieldValidated, setFieldValidated] = useState(false)\n const [error, setError] = useState(false)\n const [id] = useState(props.id || nextElementId())\n const previousValueProp = usePrevious(props.value)\n\n // this is currently broken :-\\\n const { groups = [], throttle, onSubmit } = props\n const name = groups.map(group => group + '.') + props.name\n const submitHandler = (throttle && onSubmit) ? createThrottled(onSubmit, isNaN(throttle) ? 200 : throttle) : onSubmit\n\n useEffect(() => {\n const { getFieldValue, setFieldValue, registerFieldValidator } = props\n const { setInitialValue, applyValueTransforms } = types(props, options)\n\n // don't override values that were set from passing a values prop to the form\n if(getFieldValue(name) === undefined) {\n // TODO: change setter to a getter and return a private `UNSET` symbol to indicate not to call the field setter\n // this allows us to set the default value with useState above and not have an initial render cycle without the default value\n // BUT... to get the default value of a select list, we need to render it first? dilemma....\n\n setInitialValue({\n // pass a setter function - radio buttons do not always want to set a value!\n set: value => setFieldValue(name, applyValueTransforms(value)),\n element: document.querySelector(`#${id}`)\n })\n }\n registerFieldValidator(updateValidationState)\n\n // TODO: need to unregister in case of dynamic form elements\n }, [])\n\n // ensure form values are updated to reflect passed `value` prop\n // this probably introduces some redundancy with the onChange handler below\n useUpdate(() => {\n const { value, setFieldValue } = props\n const { applyValueTransforms } = types(props, options)\n\n if(value !== previousValueProp) {\n setFieldValue(name, applyValueTransforms(value))\n }\n }, [props])\n\n // TODO: refactor bubbling to prop pattern\n const onChange = (...args) => {\n const [event] = args\n const { setFieldValue, onChange, submitOnChange } = props\n const { valueFromEvent } = options\n const { getOutputValue, applyValueTransforms } = types(props, options)\n\n const elementValue = valueFromEvent\n ? valueFromEvent.apply(null, args)\n : getOutputValue({ event })\n\n setFieldValue(name, applyValueTransforms(elementValue))\n\n if(event && event.target && event.target.checkValidity) {\n event.target.checkValidity()\n updateValidationState()\n }\n\n if(onChange) {\n onChange.apply(event.target, args)\n }\n\n if(submitOnChange && submitHandler) {\n // the setFieldValue above sets state on the Form component, used in the onSubmit handler\n // setting state requires an additional render cycle - we need to pass in the new value so it's set correctly\n submitHandler(undefined, { additionalValues: { [name]: applyValueTransforms(elementValue) } })\n }\n }\n\n const onBlur = (...args) => {\n const { submitOnBlur, onSubmit, onBlur } = props\n const [event] = args\n\n if(submitOnBlur) {\n onSubmit()\n }\n if(onBlur) {\n onBlur.apply(event.target, args)\n }\n }\n\n const onFocus = (...args) => {\n const { selectOnFocus, onFocus } = props\n const [event] = args\n const element = event.target\n\n const selectText = () => {\n element.selectionStart = 0\n element.selectionEnd = element.value.length\n }\n\n if(selectOnFocus) {\n selectText()\n setTimeout(selectText)\n }\n if(onFocus) {\n onFocus.apply(element, args)\n }\n }\n\n const onKeyDown = (...args) => {\n const { onKeyDown } = props\n const [event] = args\n const element = event.target\n \n if(props.numeric && !/[0-9-]/.exec(event.key) && ![null, 0, 8, 9, 13, 27, 35, 36, 37, 39, 46].includes(event.keyCode)) {\n event.preventDefault()\n }\n\n if(onKeyDown) {\n onKeyDown.apply(element, args)\n }\n }\n\n const updateValidationState = () => {\n setFieldValidated(true)\n // this is a little hacky, but the simplest way I could think of to determine the\n // validity of the actual input element. :invalid is also not supported by enzyme\n const invalid = Boolean(document.querySelector(`#${id}:invalid`))\n setError(invalid)\n props.onValidated && props.onValidated(!invalid)\n }\n\n /* render */ {\n const { passErrorProp } = options\n const { getValueProps } = types(props, options)\n\n const {\n type, value, checked, defaultValue, numeric,\n onSubmit, registerFieldValidator, setFieldValue, getFieldValue, getFieldValues,\n submitOnChange, submitOnBlur, selectOnFocus, throttle, valid, onValidated,\n ...passThroughProps\n } = props\n const valueProps = getValueProps({ currentValue: getFieldValue(name) })\n const numericProps = (numeric && { type: 'number' })\n const typeProps = (type && { type })\n const errorProps = (passErrorProp && { error })\n const className = ((fieldValidated ? 'validated ' : '') + (props.className || '') || undefined)\n\n const finalProps = {\n id, name, className,\n ...passThroughProps, ...valueProps, ...numericProps, ...typeProps, ...errorProps,\n onChange, onFocus, onBlur, onKeyDown\n }\n\n return render(finalProps)\n }\n}"],"mappings":"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"}
1
+ {"version":3,"file":"input.js","names":["nextElementId","id","render","options","Input","props","name","Error","setFieldValue","useState","fieldValidated","setFieldValidated","error","setError","previousValueProp","usePrevious","value","groups","throttle","onSubmit","map","group","submitHandler","createThrottled","isNaN","useEffect","getFieldValue","registerFieldValidator","types","setInitialValue","applyValueTransforms","undefined","set","element","document","querySelector","updateValidationState","type","checked","defaultValue","useUpdate","onChange","args","event","submitOnChange","valueFromEvent","getOutputValue","elementValue","apply","target","checkValidity","additionalValues","onBlur","submitOnBlur","onFocus","selectOnFocus","selectText","selectionStart","selectionEnd","length","setTimeout","onKeyDown","numeric","exec","key","includes","keyCode","preventDefault","invalid","Boolean","onValidated","passErrorProp","getValueProps","getFieldValues","valid","passThroughProps","valueProps","currentValue","numericProps","typeProps","errorProps","className","finalProps"],"sources":["../src/input.js"],"sourcesContent":["import { useState, useEffect } from 'react'\nimport usePrevious from './usePrevious'\nimport useUpdate from './useUpdate'\nimport types from './inputTypes'\nimport createThrottled from './throttle'\n\nconst nextElementId = (id => () => `react-forms-${++id}`)(0)\n\nexport default (render, options = {}) => function Input(props) {\n if (!props.name) throw new Error(\"You must provide a name prop to form components\")\n if (!props.setFieldValue) throw new Error(\"Input components must be contained within a Form component\")\n\n const [fieldValidated, setFieldValidated] = useState(false)\n const [error, setError] = useState(false)\n const [id] = useState(props.id || nextElementId())\n const previousValueProp = usePrevious(props.value)\n\n // this is currently broken :-\\\n const { groups = [], throttle, onSubmit } = props\n const name = groups.map(group => group + '.') + props.name\n const submitHandler = (throttle && onSubmit) ? createThrottled(onSubmit, isNaN(throttle) ? 200 : throttle) : onSubmit\n\n useEffect(() => {\n const { getFieldValue, setFieldValue, registerFieldValidator } = props\n const { setInitialValue, applyValueTransforms } = types(props, options)\n\n // don't override values that were set from passing a values prop to the form\n if(getFieldValue(name) === undefined) {\n // TODO: change setter to a getter and return a private `UNSET` symbol to indicate not to call the field setter\n // this allows us to set the default value with useState above and not have an initial render cycle without the default value\n // BUT... to get the default value of a select list, we need to render it first? dilemma....\n\n setInitialValue({\n // pass a setter function - radio buttons do not always want to set a value!\n set: value => setFieldValue(name, applyValueTransforms(value)),\n element: document.querySelector(`#${id}`)\n })\n }\n registerFieldValidator(updateValidationState)\n\n // TODO: need to unregister in case of dynamic form elements\n }, [])\n\n // ensure form values are updated to reflect passed `value` prop\n // this probably introduces some redundancy with the onChange handler below\n const { type, checked, value, defaultValue, setFieldValue } = props\n useUpdate(() => {\n const { applyValueTransforms } = types({ type, checked, value, defaultValue, setFieldValue }, options)\n\n if(value !== previousValueProp) {\n setFieldValue(name, applyValueTransforms(value))\n }\n }, [type, checked, value, defaultValue, setFieldValue])\n\n // TODO: refactor bubbling to prop pattern\n const onChange = (...args) => {\n const [event] = args\n const { setFieldValue, onChange, submitOnChange } = props\n const { valueFromEvent } = options\n const { getOutputValue, applyValueTransforms } = types(props, options)\n\n const elementValue = valueFromEvent\n ? valueFromEvent.apply(null, args)\n : getOutputValue({ event })\n\n setFieldValue(name, applyValueTransforms(elementValue))\n\n if(event && event.target && event.target.checkValidity) {\n event.target.checkValidity()\n updateValidationState()\n }\n\n if(onChange) {\n onChange.apply(event.target, args)\n }\n\n if(submitOnChange && submitHandler) {\n // the setFieldValue above sets state on the Form component, used in the onSubmit handler\n // setting state requires an additional render cycle - we need to pass in the new value so it's set correctly\n submitHandler(undefined, { additionalValues: { [name]: applyValueTransforms(elementValue) } })\n }\n }\n\n const onBlur = (...args) => {\n const { submitOnBlur, onSubmit, onBlur } = props\n const [event] = args\n\n if(submitOnBlur) {\n onSubmit()\n }\n if(onBlur) {\n onBlur.apply(event.target, args)\n }\n }\n\n const onFocus = (...args) => {\n const { selectOnFocus, onFocus } = props\n const [event] = args\n const element = event.target\n\n const selectText = () => {\n element.selectionStart = 0\n element.selectionEnd = element.value.length\n }\n\n if(selectOnFocus) {\n selectText()\n setTimeout(selectText)\n }\n if(onFocus) {\n onFocus.apply(element, args)\n }\n }\n\n const onKeyDown = (...args) => {\n const { onKeyDown } = props\n const [event] = args\n const element = event.target\n \n if(props.numeric && !/[0-9-]/.exec(event.key) && ![null, 0, 8, 9, 13, 27, 35, 36, 37, 39, 46].includes(event.keyCode)) {\n event.preventDefault()\n }\n\n if(onKeyDown) {\n onKeyDown.apply(element, args)\n }\n }\n\n const updateValidationState = () => {\n setFieldValidated(true)\n // this is a little hacky, but the simplest way I could think of to determine the\n // validity of the actual input element. :invalid is also not supported by enzyme\n const invalid = Boolean(document.querySelector(`#${id}:invalid`))\n setError(invalid)\n props.onValidated && props.onValidated(!invalid)\n }\n\n /* render */ {\n const { passErrorProp } = options\n const { getValueProps } = types(props, options)\n\n const {\n type, value, checked, defaultValue, numeric,\n onSubmit, registerFieldValidator, setFieldValue, getFieldValue, getFieldValues,\n submitOnChange, submitOnBlur, selectOnFocus, throttle, valid, onValidated,\n ...passThroughProps\n } = props\n const valueProps = getValueProps({ currentValue: getFieldValue(name) })\n const numericProps = (numeric && { type: 'number' })\n const typeProps = (type && { type })\n const errorProps = (passErrorProp && { error })\n const className = ((fieldValidated ? 'validated ' : '') + (props.className || '') || undefined)\n\n const finalProps = {\n id, name, className,\n ...passThroughProps, ...valueProps, ...numericProps, ...typeProps, ...errorProps,\n onChange, onFocus, onBlur, onKeyDown\n }\n\n return render(finalProps)\n }\n}"],"mappings":"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"}
@@ -4,31 +4,23 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
8
7
  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; }
9
-
10
8
  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; }
11
-
12
9
  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; }
13
-
14
10
  var resolveValue = function resolveValue(value, args) {
15
11
  return typeof value === 'function' ? value.apply(null, args) : value;
16
12
  };
17
-
18
13
  var _default = function _default(props, options) {
19
14
  var type = props.type,
20
- checked = props.checked,
21
- value = props.value,
22
- defaultValue = props.defaultValue;
23
-
15
+ checked = props.checked,
16
+ value = props.value,
17
+ defaultValue = props.defaultValue;
24
18
  var applyValueTransforms = function applyValueTransforms(value) {
25
19
  return (props.type === 'number' || props.numeric) && !isNaN(+value) && value !== '' ? +value : value;
26
20
  };
27
-
28
21
  var defaultType = {
29
22
  setInitialValue: function setInitialValue(_ref) {
30
23
  var set = _ref.set;
31
-
32
24
  if (value !== undefined) {
33
25
  set(value);
34
26
  } else if (defaultValue !== undefined) {
@@ -41,7 +33,6 @@ var _default = function _default(props, options) {
41
33
  },
42
34
  getOutputValue: function getOutputValue(_ref2) {
43
35
  var event = _ref2.event;
44
-
45
36
  if (event.target && event.target.value !== undefined) {
46
37
  return event.target.value;
47
38
  } else if (event.value !== undefined) {
@@ -57,11 +48,9 @@ var _default = function _default(props, options) {
57
48
  };
58
49
  }
59
50
  };
60
-
61
51
  var checkboxValue = function checkboxValue(checked, value) {
62
52
  return value === undefined ? Boolean(checked) : checked ? value : undefined;
63
53
  };
64
-
65
54
  var types = {
66
55
  text: defaultType,
67
56
  radio: {
@@ -98,17 +87,18 @@ var _default = function _default(props, options) {
98
87
  select: _objectSpread(_objectSpread({}, defaultType), {}, {
99
88
  setInitialValue: function setInitialValue(_ref9) {
100
89
  var set = _ref9.set,
101
- element = _ref9.element;
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?
90
+ element = _ref9.element;
91
+ set(value || defaultValue || props.options && props.options.length > 0 && props.options[0] ||
92
+ // this probably should come out - is it the right behavior for all browsers? it's here to keep 1 unit test happy?
103
93
  element && element.value || '' // this *should* work in all browsers (except jsdom)...
104
94
  );
105
95
  }
106
96
  })
107
97
  };
98
+
108
99
  return _objectSpread(_objectSpread({}, types[options.type || type] || types.text), {}, {
109
100
  applyValueTransforms: applyValueTransforms
110
101
  });
111
102
  };
112
-
113
103
  exports["default"] = _default;
114
104
  //# sourceMappingURL=inputTypes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inputTypes.js","names":["resolveValue","value","args","apply","props","options","type","checked","defaultValue","applyValueTransforms","numeric","isNaN","defaultType","setInitialValue","set","undefined","getOutputValue","event","target","Error","getValueProps","currentValue","checkboxValue","Boolean","types","text","radio","checkbox","select","element","length"],"sources":["../src/inputTypes.js"],"sourcesContent":["const resolveValue = (value, args) => typeof value === 'function' ? value.apply(null, args) : value\n\nexport default (props, options) => {\n const { type, checked, value, defaultValue } = props\n\n const applyValueTransforms = value => ((props.type === 'number' || props.numeric) && !isNaN(+value) && value !== '') ? +value : value\n\n const defaultType = {\n setInitialValue: ({ set }) => {\n if(value !== undefined) {\n set(value)\n } else if (defaultValue !== undefined) {\n set(defaultValue)\n } else if (options.defaultValue !== undefined) {\n set(resolveValue(options.defaultValue, [props]))\n } else {\n set(undefined)\n }\n },\n getOutputValue: ({ event }) => {\n if (event.target && event.target.value !== undefined) {\n return event.target.value\n } else if (event.value !== undefined) {\n return event.value\n } else {\n throw new Error(\"Unable to determine input value from event\")\n }\n },\n getValueProps: ({ currentValue }) => ({\n value: currentValue === undefined ? '' : currentValue\n })\n }\n\n const checkboxValue = (checked, value) => (value === undefined\n ? Boolean(checked)\n : checked ? value : undefined\n )\n\n const types = {\n text: defaultType,\n radio: {\n setInitialValue: ({ set }) => checked && set(value),\n getOutputValue: () => value,\n getValueProps: ({ currentValue }) => ({ checked: applyValueTransforms(value) === currentValue })\n },\n checkbox: {\n setInitialValue: ({ set }) => set(checkboxValue(checked, value)),\n getOutputValue: ({ event }) => checkboxValue(event.target.checked, value),\n getValueProps: ({ currentValue }) => ({ checked: Boolean(currentValue) })\n },\n select: {\n ...defaultType,\n setInitialValue: ({ set, element }) => {\n set(value || defaultValue ||\n (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?\n element && element.value || '' // this *should* work in all browsers (except jsdom)...\n )\n }\n }\n }\n\n return { ...(types[options.type || type] || types.text), applyValueTransforms }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"inputTypes.js","names":["resolveValue","value","args","apply","props","options","type","checked","defaultValue","applyValueTransforms","numeric","isNaN","defaultType","setInitialValue","set","undefined","getOutputValue","event","target","Error","getValueProps","currentValue","checkboxValue","Boolean","types","text","radio","checkbox","select","element","length"],"sources":["../src/inputTypes.js"],"sourcesContent":["const resolveValue = (value, args) => typeof value === 'function' ? value.apply(null, args) : value\n\nexport default (props, options) => {\n const { type, checked, value, defaultValue } = props\n\n const applyValueTransforms = value => ((props.type === 'number' || props.numeric) && !isNaN(+value) && value !== '') ? +value : value\n\n const defaultType = {\n setInitialValue: ({ set }) => {\n if(value !== undefined) {\n set(value)\n } else if (defaultValue !== undefined) {\n set(defaultValue)\n } else if (options.defaultValue !== undefined) {\n set(resolveValue(options.defaultValue, [props]))\n } else {\n set(undefined)\n }\n },\n getOutputValue: ({ event }) => {\n if (event.target && event.target.value !== undefined) {\n return event.target.value\n } else if (event.value !== undefined) {\n return event.value\n } else {\n throw new Error(\"Unable to determine input value from event\")\n }\n },\n getValueProps: ({ currentValue }) => ({\n value: currentValue === undefined ? '' : currentValue\n })\n }\n\n const checkboxValue = (checked, value) => (value === undefined\n ? Boolean(checked)\n : checked ? value : undefined\n )\n\n const types = {\n text: defaultType,\n radio: {\n setInitialValue: ({ set }) => checked && set(value),\n getOutputValue: () => value,\n getValueProps: ({ currentValue }) => ({ checked: applyValueTransforms(value) === currentValue })\n },\n checkbox: {\n setInitialValue: ({ set }) => set(checkboxValue(checked, value)),\n getOutputValue: ({ event }) => checkboxValue(event.target.checked, value),\n getValueProps: ({ currentValue }) => ({ checked: Boolean(currentValue) })\n },\n select: {\n ...defaultType,\n setInitialValue: ({ set, element }) => {\n set(value || defaultValue ||\n (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?\n element && element.value || '' // this *should* work in all browsers (except jsdom)...\n )\n }\n }\n }\n\n return { ...(types[options.type || type] || types.text), applyValueTransforms }\n}\n"],"mappings":"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"}
package/dist/styles.js CHANGED
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  var _injectCss = _interopRequireDefault(require("./injectCss"));
4
-
5
4
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
6
-
7
5
  (0, _injectCss["default"])('react-forms-styles', "\n.react-forms {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.react-forms-row {\n flex-direction: row;\n align-items: flex-start;\n}\n\n.react-forms-error {\n color: #f44336;\n}\n");
8
6
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":["injectCss"],"sources":["../src/styles.js"],"sourcesContent":["import injectCss from './injectCss'\n\ninjectCss('react-forms-styles', `\n.react-forms {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.react-forms-row {\n flex-direction: row;\n align-items: flex-start;\n}\n\n.react-forms-error {\n color: #f44336;\n}\n`)\n\n\n"],"mappings":";;AAAA;;;;AAEA,IAAAA,qBAAA,EAAU,oBAAV"}
1
+ {"version":3,"file":"styles.js","names":["injectCss"],"sources":["../src/styles.js"],"sourcesContent":["import injectCss from './injectCss'\n\ninjectCss('react-forms-styles', `\n.react-forms {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.react-forms-row {\n flex-direction: row;\n align-items: flex-start;\n}\n\n.react-forms-error {\n color: #f44336;\n}\n`)\n\n\n"],"mappings":";;AAAA;AAAmC;AAEnC,IAAAA,qBAAS,EAAC,oBAAoB,8NAe5B"}