UNPKG

@imtf/rjsf-conditionals

Version:

Extension of @rjsf/core with conditional field support

44 lines (43 loc) 1.26 kB
import { toArray, findRelSchemaAndField, findRelUiSchema } from "../utils"; import { validateFields } from "./validateAction"; import PropTypes from "prop-types"; function doHide(_ref, uiSchema) { let { field, schema } = _ref; let requiredIndex = schema.required ? schema.required.indexOf(field) : -1; if (requiredIndex !== -1) { schema.required.splice(requiredIndex, 1); } delete schema.properties[field]; delete uiSchema[field]; let fieldIndex = (uiSchema["ui:order"] ? uiSchema["ui:order"] : []).indexOf(field); if (fieldIndex !== -1) { uiSchema["ui:order"].splice(fieldIndex, 1); } } /** * Hide specified field both from uiSchema and schema * * @param field * @param schema * @param uiSchema * @returns {{schema: *, uiSchema: *}} */ export default function hide(params, schema, uiSchema, formData) { const { field } = params; let fieldArr = toArray(field); fieldArr.forEach(field => doHide(findRelSchemaAndField(field, schema), findRelUiSchema(field, uiSchema), formData)); } hide.propTypes = { field: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).isRequired }; hide.validate = validateFields("hide", function (_ref2) { let { field } = _ref2; return field; });