@data-driven-forms/react-form-renderer
Version:
React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.
54 lines • 2.71 kB
JavaScript
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
import get from 'lodash/get';
import prepareComponentProps from '../prepare-component-props';
import { dataTypeValidator } from '../validators/validator-functions';
var getValidates = function (field, _a, validations) {
var componentMapper = _a.componentMapper, actionMapper = _a.actionMapper, values = _a.values;
if (validations === void 0) { validations = {}; }
if (Array.isArray(field)) {
field.forEach(function (fieldItem) { return getValidates(fieldItem, { componentMapper: componentMapper, actionMapper: actionMapper, values: values }, validations); });
}
else {
if (field.component) {
var validate = void 0;
var _b = prepareComponentProps({
component: field.component,
rest: field,
componentMapper: componentMapper,
actionMapper: actionMapper,
}), componentProps = _b.componentProps, overrideProps = _b.overrideProps, mergedResolveProps = _b.mergedResolveProps;
var resolveProps = mergedResolveProps || overrideProps.resolveProps || componentProps.resolveProps;
// fake form state with only values
if (resolveProps) {
var resolvedProps = resolveProps(field, { input: { value: get(values, field.name) }, meta: {} }, { getState: function () { return ({ values: values }); } });
validate = resolvedProps === null || resolvedProps === void 0 ? void 0 : resolvedProps.validate;
}
validate = validate || overrideProps.validate || componentProps.validate;
if (field.dataType) {
validate = __spreadArray(__spreadArray([], (validate || []), true), [dataTypeValidator(field.dataType)[field.dataType]()], false);
}
if (validate) {
if (validations[field.name]) {
validations[field.name].push(validate);
}
else {
validations[field.name] = [validate];
}
}
}
if (field.fields) {
getValidates(field.fields, { componentMapper: componentMapper, actionMapper: actionMapper, values: values }, validations);
}
}
return validations;
};
export default getValidates;
//# sourceMappingURL=get-validates.js.map