UNPKG

react-jsonschema-form-validation

Version:
112 lines (97 loc) 3.79 kB
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck"; import _createClass from "@babel/runtime/helpers/esm/createClass"; import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn"; import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf"; import _inherits from "@babel/runtime/helpers/esm/inherits"; import classnames from 'classnames'; import memoize from 'memoize-one'; import React, { PureComponent } from 'react'; import { withFormContext } from '../Form/Context'; var Field = /*#__PURE__*/ function (_PureComponent) { _inherits(Field, _PureComponent); function Field() { var _getPrototypeOf2; var _this; _classCallCheck(this, Field); for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } _this = _possibleConstructorReturn(this, (_getPrototypeOf2 = _getPrototypeOf(Field)).call.apply(_getPrototypeOf2, [this].concat(args))); _this.memoGetClassnames = memoize(function (className, isInvalid, isSubmitted, isTouched) { return classnames('Jfv_Field', className, { isInvalid: isInvalid, isSubmitted: isSubmitted, isTouched: isTouched }); }); _this.memoGetOnBlurHandler = memoize(function (touch, name, onBlur) { return function (event) { touch(name); if (onBlur) onBlur(event); }; }); _this.memoGetOnChangeHandler = memoize(function (onChange, handleFieldChange) { return function (event) { if (onChange) { // Pass Form.handleFieldChange handler as extra parameter to the onChange handler onChange(event, handleFieldChange); return; } handleFieldChange(event); }; }); _this.getClassnames = function (form) { var _this$props = _this.props, className = _this$props.className, name = _this$props.name; var isFieldInvalid = form.isFieldInvalid, isFieldTouched = form.isFieldTouched, isSubmitted = form.isSubmitted; return _this.memoGetClassnames(className, isFieldInvalid(name), isSubmitted, isFieldTouched(name)); }; return _this; } _createClass(Field, [{ key: "render", value: function render() { var _this2 = this; var _this$props2 = this.props, children = _this$props2.children, className = _this$props2.className, Component = _this$props2.component, onBlur = _this$props2.onBlur, onChange = _this$props2.onChange, name = _this$props2.name, forwardedRef = _this$props2.forwardedRef, props = _objectWithoutProperties(_this$props2, ["children", "className", "component", "onBlur", "onChange", "name", "forwardedRef"]); return withFormContext(function (form) { return React.createElement(Component, Object.assign({ className: _this2.getClassnames(form), name: name, onBlur: _this2.memoGetOnBlurHandler(form.touch, name, onBlur), onChange: _this2.memoGetOnChangeHandler(onChange, form.handleFieldChange), ref: forwardedRef // eslint-disable-next-line react/jsx-props-no-spreading }, props), children); }); } }]); return Field; }(PureComponent); Field.defaultProps = { children: null, className: '', component: 'input', forwardedRef: null, onBlur: null, onChange: null }; export default React.forwardRef(function (props, ref) { return (// eslint-disable-next-line react/jsx-props-no-spreading React.createElement(Field, Object.assign({}, props, { forwardedRef: ref })) ); });