@data-driven-forms/react-form-renderer
Version:
React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.
94 lines (76 loc) • 2.84 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _get = _interopRequireDefault(require("lodash/get"));
var _prepareComponentProps = _interopRequireDefault(require("../prepare-component-props"));
var _validatorFunctions = require("../validators/validator-functions");
var getValidates = function getValidates(schema, _ref) {
var componentMapper = _ref.componentMapper,
actionMapper = _ref.actionMapper,
values = _ref.values;
var validations = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
if (Array.isArray(schema)) {
schema.map(function (field) {
return getValidates(field, {
componentMapper: componentMapper,
actionMapper: actionMapper,
values: values
}, validations);
});
} else {
if (schema.component) {
var validate;
var _prepareComponentProp = (0, _prepareComponentProps["default"])({
component: schema.component,
rest: schema,
componentMapper: componentMapper,
actionMapper: actionMapper
}),
componentProps = _prepareComponentProp.componentProps,
overrideProps = _prepareComponentProp.overrideProps,
mergedResolveProps = _prepareComponentProp.mergedResolveProps;
var resolveProps = mergedResolveProps || overrideProps.resolveProps || componentProps.resolveProps; // fake form state with only values
if (resolveProps) {
var _resolveProps = resolveProps(schema, {
input: {
value: (0, _get["default"])(values, schema.name)
},
meta: {}
}, {
getState: function getState() {
return {
values: values
};
}
}),
resolvePropsValidate = _resolveProps.validate;
validate = resolvePropsValidate;
}
validate = validate || overrideProps.validate || componentProps.validate;
if (schema.dataType) {
validate = [].concat((0, _toConsumableArray2["default"])(validate || []), [(0, _validatorFunctions.dataTypeValidator)(schema.dataType)()]);
}
if (validate) {
if (validations[schema.name]) {
validations[schema.name].push(validate);
} else {
validations[schema.name] = [validate];
}
}
}
if (schema.fields) {
getValidates(schema.fields, {
componentMapper: componentMapper,
actionMapper: actionMapper,
values: values
}, validations);
}
}
return validations;
};
var _default = getValidates;
exports["default"] = _default;