redux-form
Version:
A higher order component decorator for forms using Redux and React
116 lines (102 loc) • 3.6 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports["default"] = createFieldProps;
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var processProps = function processProps(type, props, _value, deepEqual) {
var value = props.value;
if (type === 'checkbox') {
return (0, _extends2["default"])({}, props, {
checked: !!value
});
}
if (type === 'radio') {
return (0, _extends2["default"])({}, props, {
checked: deepEqual(value, _value),
value: _value
});
}
if (type === 'select-multiple') {
return (0, _extends2["default"])({}, props, {
value: value || []
});
}
if (type === 'file') {
return (0, _extends2["default"])({}, props, {
value: value || undefined
});
}
return props;
};
function createFieldProps(_ref2, name, _ref) {
var getIn = _ref2.getIn,
toJS = _ref2.toJS,
deepEqual = _ref2.deepEqual;
var asyncError = _ref.asyncError,
asyncValidating = _ref.asyncValidating,
onBlur = _ref.onBlur,
onChange = _ref.onChange,
onDrop = _ref.onDrop,
onDragStart = _ref.onDragStart,
dirty = _ref.dirty,
dispatch = _ref.dispatch,
onFocus = _ref.onFocus,
form = _ref.form,
format = _ref.format,
initial = _ref.initial,
parse = _ref.parse,
pristine = _ref.pristine,
props = _ref.props,
state = _ref.state,
submitError = _ref.submitError,
submitFailed = _ref.submitFailed,
submitting = _ref.submitting,
syncError = _ref.syncError,
syncWarning = _ref.syncWarning,
validate = _ref.validate,
value = _ref.value,
_value = _ref._value,
warn = _ref.warn,
custom = (0, _objectWithoutPropertiesLoose2["default"])(_ref, ["asyncError", "asyncValidating", "onBlur", "onChange", "onDrop", "onDragStart", "dirty", "dispatch", "onFocus", "form", "format", "initial", "parse", "pristine", "props", "state", "submitError", "submitFailed", "submitting", "syncError", "syncWarning", "validate", "value", "_value", "warn"]);
var error = syncError || asyncError || submitError;
var warning = syncWarning;
var formatFieldValue = function formatFieldValue(value, format) {
if (format === null) {
return value;
}
var defaultFormattedValue = value == null ? '' : value;
return format ? format(value, name) : defaultFormattedValue;
};
var formattedFieldValue = formatFieldValue(value, format);
return {
input: processProps(custom.type, {
name: name,
onBlur: onBlur,
onChange: onChange,
onDragStart: onDragStart,
onDrop: onDrop,
onFocus: onFocus,
value: formattedFieldValue
}, _value, deepEqual),
meta: (0, _extends2["default"])({}, toJS(state), {
active: !!(state && getIn(state, 'active')),
asyncValidating: asyncValidating,
autofilled: !!(state && getIn(state, 'autofilled')),
dirty: dirty,
dispatch: dispatch,
error: error,
form: form,
initial: initial,
warning: warning,
invalid: !!error,
pristine: pristine,
submitting: !!submitting,
submitFailed: !!submitFailed,
touched: !!(state && getIn(state, 'touched')),
valid: !error,
visited: !!(state && getIn(state, 'visited'))
}),
custom: (0, _extends2["default"])({}, custom, {}, props)
};
}