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();