diff --git a/package/App.js b/package/App.js index 770fbb1..ddfbb86 100644 --- a/package/App.js +++ b/package/App.js @@ -274,9 +274,12 @@ class jsonSchema extends React.Component { return (
- + { + !this.props.Model.__controlHideElements.includes('import-json') && + + } this.changeType(`type`, e)} value={schema.type || 'object'} + disabled={this.props.Model.__controlLockRoot || this.props.Model.__controlReadonly} > {SCHEMA_TYPE.map((item, index) => { return ( @@ -428,7 +432,7 @@ class jsonSchema extends React.Component { )} @@ -439,15 +443,16 @@ class jsonSchema extends React.Component { placeholder={'description'} value={schema.description} onChange={e => this.changeValue(['description'], e.target.value)} + disabled={this.props.Model.__controlLockRoot || this.props.Model.__controlReadonly} /> - this.showAdv([], this.props.schema)}> + {!this.props.Model.__controlHideElements.includes('advanced-settings') && this.showAdv([], this.props.schema)}> - - {schema.type === 'object' ? ( + } + {schema.type === 'object' && !this.props.Model.__controlReadonly ? ( this.addChildField('properties')}> diff --git a/package/components/SchemaComponents/SchemaJson.js b/package/components/SchemaComponents/SchemaJson.js index 6fdf4b0..5cc60f6 100644 --- a/package/components/SchemaComponents/SchemaJson.js +++ b/package/components/SchemaComponents/SchemaJson.js @@ -337,7 +337,7 @@ class SchemaItem extends PureComponent { @@ -360,7 +361,8 @@ class SchemaItem extends PureComponent { className="type-select-style" onChange={this.handleChangeType} value={value.type} - > + disabled={this.context.Model.__controlReadonly} + > {SCHEMA_TYPE.map((item, index) => { return ( - )} + ))}
{mapping(prefixArray, value, showEdit, showAdv)}
diff --git a/package/index.js b/package/index.js index db3a00a..f7983b6 100644 --- a/package/index.js +++ b/package/index.js @@ -23,6 +23,23 @@ module.exports = (config = {})=>{ Model.__jsonSchemaMock = config.mock } + if(config.lockRoot) { + // 根节点属性不可修改 + Model.__controlLockRoot = config.lockRoot + } + if (config.readonly) { + // 整体只读 + Model.__controlReadonly = config.readonly + } + + // 支持: 'description-addon', 'advanced-settings', 'import-json' + if(config.hideElements) { + // 隐藏一些元素 + Model.__controlHideElements = config.hideElements + } else { + Model.__controlHideElements = [] + } + const store = Model.getStore();