@data-driven-forms/react-form-renderer
Version:
React Form Renderer. Data Driven Forms converts JSON form definitions into fully functional React forms.
59 lines • 3.04 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));
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var get_1 = __importDefault(require("lodash/get"));
var prepare_component_props_1 = __importDefault(require("../prepare-component-props"));
var validator_functions_1 = require("../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 = (0, prepare_component_props_1.default)({
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: (0, get_1.default)(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), [(0, validator_functions_1.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;
};
exports.default = getValidates;
//# sourceMappingURL=get-validates.js.map