UNPKG

@imtf/rjsf-conditionals

Version:

Extension of @rjsf/core with conditional field support

42 lines (41 loc) 1.21 kB
import { toArray, findRelSchemaAndField, findRelUiSchema } from "../utils"; import { validateFields } from "./validateAction"; import PropTypes from "prop-types"; function doHide({ field, schema }, uiSchema) { 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 ({ field }) { return field; });