UNPKG

@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
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