Skip to content

Commit 849e736

Browse files
Fix #103: Disabling readonly anyOf/oneOf fields (PR #104)
1 parent ffdcd5b commit 849e736

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/ui.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,7 @@ class OneOf extends React.Component {
834834

835835
let parentType = this.getParentType();
836836

837+
let isReadonly = false;
837838
let schema;
838839

839840
if (parentType === 'object') {
@@ -842,11 +843,14 @@ class OneOf extends React.Component {
842843
schema = {...this.props.nextArgs.schema[this.schemaName][index]};
843844
if (!schema.title)
844845
schema.title = this.props.nextArgs.schema.title;
846+
isReadonly = getKeyword(this.props.nextArgs.schema, 'readOnly', 'readonly', isReadonly);
845847
} else {
846848
schema = this.props.parentArgs.schema[this.schemaName][index];
849+
isReadonly = getKeyword(this.props.parentArgs.schema, 'readOnly', 'readonly', isReadonly);
847850
}
848851
} else if (parentType === 'array') {
849852
schema = this.props.parentArgs.schema.items[this.schemaName][index];
853+
isReadonly = getKeyword(this.props.parentArgs.schema, 'readOnly', 'readonly', isReadonly);
850854
} else {
851855
schema = {'type': 'string'};
852856
}
@@ -858,6 +862,9 @@ class OneOf extends React.Component {
858862
delete schema['$ref'];
859863
}
860864

865+
if (isReadonly)
866+
schema.readOnly = true;
867+
861868
return schema;
862869
}
863870

@@ -937,6 +944,7 @@ class OneOf extends React.Component {
937944
let selectedOption = this.findSelectedOption();
938945

939946
let schema = this.getSchema(selectedOption);
947+
let isReadonly = getKeyword(schema, 'readOnly', 'readonly');
940948
let type = getSchemaType(schema);
941949
let args = this.props.nextArgs ? this.props.nextArgs : this.props.parentArgs;
942950
let rowFunc;
@@ -975,6 +983,7 @@ class OneOf extends React.Component {
975983
onChange={(e) => this.handleOptionChange(e, selectedOption)}
976984
className="rjf-oneof-selector-input"
977985
label={selectorLabel}
986+
readOnly={isReadonly}
978987
/>
979988
</div>
980989

0 commit comments

Comments
 (0)