UNPKG

rjsf-conditionals

Version:

Extension of @rjsf/core with conditional field support

40 lines (39 loc) 1.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = validateAction; exports.validateFields = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _utils = require("../utils"); var _utils2 = require("json-rules-engine-simplified/lib/utils"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const hasField = (field, schema) => { let separator = field.indexOf("."); if (separator === -1) { return schema.properties[field] !== undefined; } else { let parentField = field.substr(0, separator); let refSchema = (0, _utils2.extractRefSchema)(parentField, schema); return refSchema ? hasField(field.substr(separator + 1), refSchema) : false; } }; const validateFields = (action, fetchFields) => { if (!fetchFields) { (0, _utils.toError)("validateFields requires fetchFields function"); return; } return (params, schema) => { let relFields = (0, _utils.toArray)(fetchFields(params)); relFields.filter(field => !hasField(field, schema)).forEach(field => (0, _utils.toError)(`Field "${field}" is missing from schema on "${action}"`)); }; }; exports.validateFields = validateFields; function validateAction(action, params, schema, uiSchema) { if (action.propTypes !== undefined && action.propTypes !== null) { _propTypes.default.checkPropTypes(action.propTypes, params, "prop", action); } if (action.validate && typeof action.validate === "function") { action.validate(params, schema, uiSchema); } }