redux-formo
Version:
An alternate forms framework for Redux+React.
57 lines (44 loc) • 1.76 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
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; };
exports.default = function (state, ownProps) {
var name = ownProps.name;
var getState = ownProps.getState;
var formState = getState(name, state);
//calculate state
var filtering = false;
var validating = false;
var valid = false;
var fieldNames = [];
if (formState.fields) {
valid = true;
Object.keys(formState.fields).forEach(function (fieldName) {
fieldNames.push(fieldName);
var field = formState.fields[fieldName] || {};
filtering = filtering || Boolean(field.filtering);
validating = validating || Boolean(field.validating);
valid = valid && Boolean(field.valid);
});
}
var props = _extends({
//rename some props
filterFn: ownProps.filter,
validateFn: ownProps.validate,
//merge the defaults
submitting: false,
submitted: false,
error: undefined }, formState, {
//merge the calculated state
filtering: filtering,
validating: validating,
valid: valid,
//returning a new array each time causes the form to always be re-rendered -> hence the Form.shouldComponentUpdate() hook
fields: fieldNames //FIXME: this can be removed when we move form filtering/validating/submitting to an action creator
});
//delete the field states with the field names so we don't update the form every time a field changes
//delete props.fields;
return props;
};
//# sourceMappingURL=mapStateToProps.js.map