diff --git a/packages/react-schema-editor/src/components/FieldEditor.tsx b/packages/react-schema-editor/src/components/FieldEditor.tsx index b04f6a74664..3c678f19b7e 100644 --- a/packages/react-schema-editor/src/components/FieldEditor.tsx +++ b/packages/react-schema-editor/src/components/FieldEditor.tsx @@ -18,7 +18,8 @@ import { getInputType, getPropertyValue, getExpressionValue, - getRuleMessage + getRuleMessage, + fieldTypeDisabled } from '../utils/fieldEditorHelpers' import { InputTypes, ComponentPropsTypes } from '../utils/types' import './FieldEditor.css' @@ -434,6 +435,7 @@ const FieldEditor: React.FC = ({ type: value }) }} + disabled={fieldTypeDisabled(schema)} > {_.map(fieldTypeData.options, ({ label, value }) => ( diff --git a/packages/react-schema-editor/src/utils/fieldEditorHelpers.ts b/packages/react-schema-editor/src/utils/fieldEditorHelpers.ts index bd1a1570c3a..e83feb9d649 100644 --- a/packages/react-schema-editor/src/utils/fieldEditorHelpers.ts +++ b/packages/react-schema-editor/src/utils/fieldEditorHelpers.ts @@ -135,6 +135,7 @@ export const getExpressionValue = value => { } return value } + export const getInputType = value => { if (typeof value === 'object' || isExpression(value)) { return InputTypes.TEXT_AREA @@ -148,3 +149,13 @@ export const getInputType = value => { return InputTypes.CHECKBOX } } + +export const fieldTypeDisabled = schema => { + if (schema.type === 'object' && !_.isEmpty(schema.properties)) { + return true + } + if (schema.type === 'array' && !_.isEmpty(schema.items)) { + return true + } + return false +}