UNPKG

react-formal

Version:

Classy HTML form management for React

114 lines (111 loc) 5.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.useMergedEventHandlers = useMergedEventHandlers; var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireWildcard(require("react")); var _useField = _interopRequireDefault(require("./useField")); var _notify = _interopRequireDefault(require("./utils/notify")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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); } 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; } function useMergedEventHandlers({ onBlur: onFieldBlur, onChange: onFieldChange }, { onBlur, onChange }) { return (0, _react.useMemo)(() => ({ onChange: (...args) => { (0, _notify.default)(onChange, args); (0, _notify.default)(onFieldChange, args); }, onBlur: (...args) => { (0, _notify.default)(onBlur, args); (0, _notify.default)(onFieldBlur, args); } }), [onFieldBlur, onFieldChange, onBlur, onChange]); } /** * When Field renders an Element, it injects a few props. * In the case none DOM elements it also injects `meta` */ /** * @alias Field * @memberof Form */ const _Field = /*#__PURE__*/_react.default.forwardRef((props, ref) => { let { children, type, as: asProp, injectMeta, name, mapFromValue, mapToValue, validates, validateOn, value, noValidate, errorClass, className, onChange, onBlur, exclusive = false } = props, rest = _objectWithoutPropertiesLoose(props, ["children", "type", "as", "injectMeta", "name", "mapFromValue", "mapToValue", "validates", "validateOn", "value", "noValidate", "errorClass", "className", "onChange", "onBlur", "exclusive"]); const hasRenderProp = typeof children === 'function'; const [field, meta] = (0, _useField.default)({ name, type, // XXX: opt out of inferred props for fn children as: asProp || hasRenderProp, mapFromValue, mapToValue, validates, validateOn, exclusive, noValidate, errorClass, className, onChange, onBlur, value }); let fieldProps = field; if (ref) fieldProps.ref = ref; if (typeof children === 'function') { return children(fieldProps, meta); } let Input = asProp || meta.nativeTagName; if (injectMeta != null ? injectMeta : typeof Input !== 'string') { fieldProps.meta = meta; } return /*#__PURE__*/_react.default.createElement(Input, _extends({}, rest, fieldProps, { type: meta.nativeType }), children); }); _Field.displayName = 'Field'; _Field.propTypes = { name: _propTypes.default.string.isRequired, as: _propTypes.default.oneOfType([_propTypes.default.elementType, _propTypes.default.string]), validateOn: _propTypes.default.oneOfType([_propTypes.default.shape({ change: _propTypes.default.bool, blur: _propTypes.default.bool }), _propTypes.default.oneOf(['change', 'blur']), _propTypes.default.func]), mapFromValue: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.string, _propTypes.default.object]), mapToValue: _propTypes.default.func, errorClass: _propTypes.default.string, validates: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.arrayOf(_propTypes.default.string)]), exclusive: _propTypes.default.bool, noValidate: _propTypes.default.bool, children: _propTypes.default.oneOfType([_propTypes.default.node, _propTypes.default.func]), injectMeta: _propTypes.default.bool }; var _default = _Field; exports.default = _default;