redux-form
Version:
A higher order component decorator for forms using Redux and React
137 lines (113 loc) • 4.47 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _noop2 = require('lodash/noop');
var _noop3 = _interopRequireDefault(_noop2);
var _extends = Object.assign || 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; };
var _createOnBlur = require('./events/createOnBlur');
var _createOnBlur2 = _interopRequireDefault(_createOnBlur);
var _createOnChange = require('./events/createOnChange');
var _createOnChange2 = _interopRequireDefault(_createOnChange);
var _createOnDragStart = require('./events/createOnDragStart');
var _createOnDragStart2 = _interopRequireDefault(_createOnDragStart);
var _createOnDrop = require('./events/createOnDrop');
var _createOnDrop2 = _interopRequireDefault(_createOnDrop);
var _createOnFocus = require('./events/createOnFocus');
var _createOnFocus2 = _interopRequireDefault(_createOnFocus);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
var processProps = function processProps(type, props, _value) {
var value = props.value;
if (type === 'checkbox') {
return _extends({}, props, {
checked: !!value
});
}
if (type === 'radio') {
return _extends({}, props, {
checked: value === _value,
value: _value
});
}
if (type === 'select-multiple') {
return _extends({}, props, {
value: value || []
});
}
if (type === 'file') {
return _extends({}, props, {
value: undefined
});
}
return props;
};
var createFieldProps = function createFieldProps(getIn, name, _ref) {
var asyncError = _ref.asyncError;
var asyncValidating = _ref.asyncValidating;
var blur = _ref.blur;
var change = _ref.change;
var dirty = _ref.dirty;
var dispatch = _ref.dispatch;
var focus = _ref.focus;
var format = _ref.format;
var normalize = _ref.normalize;
var parse = _ref.parse;
var pristine = _ref.pristine;
var props = _ref.props;
var state = _ref.state;
var submitError = _ref.submitError;
var submitting = _ref.submitting;
var value = _ref.value;
var _value = _ref._value;
var syncError = _ref.syncError;
var custom = _objectWithoutProperties(_ref, ['asyncError', 'asyncValidating', 'blur', 'change', 'dirty', 'dispatch', 'focus', 'format', 'normalize', 'parse', 'pristine', 'props', 'state', 'submitError', 'submitting', 'value', '_value', 'syncError']);
var asyncValidate = arguments.length <= 3 || arguments[3] === undefined ? _noop3.default : arguments[3];
var error = syncError || asyncError || submitError;
var boundNormalize = normalize && function (value) {
return normalize(name, value);
};
var boundChange = function boundChange(value) {
return dispatch(change(name, value));
};
var onChange = (0, _createOnChange2.default)(boundChange, {
normalize: boundNormalize,
parse: parse
});
var fieldValue = value == null ? '' : value;
return {
input: processProps(custom.type, {
name: name,
onBlur: (0, _createOnBlur2.default)(function (value) {
return dispatch(blur(name, value));
}, {
normalize: boundNormalize,
parse: parse,
after: asyncValidate.bind(null, name)
}),
onChange: onChange,
onDragStart: (0, _createOnDragStart2.default)(name, fieldValue),
onDrop: (0, _createOnDrop2.default)(name, boundChange),
onFocus: (0, _createOnFocus2.default)(name, function () {
return dispatch(focus(name));
}),
value: format ? format(fieldValue) : fieldValue
}, _value),
meta: _extends({}, state, {
active: !!(state && getIn(state, 'active')),
asyncValidating: asyncValidating,
autofilled: !!(state && getIn(state, 'autofilled')),
dirty: dirty,
dispatch: dispatch,
error: error,
invalid: !!error,
pristine: pristine,
submitting: !!submitting,
touched: !!(state && getIn(state, 'touched')),
valid: !error,
visited: !!(state && getIn(state, 'visited'))
}),
custom: _extends({}, custom, props)
};
};
exports.default = createFieldProps;