forked from p15670423/monkey
UI: AdvancedMultiSelect.js make option list depend on props
This commit is contained in:
parent
79afb9bc07
commit
cb1360f5af
|
@ -34,7 +34,6 @@ class AdvancedMultiSelect extends React.Component {
|
||||||
super(props);
|
super(props);
|
||||||
this.infoPaneRefString = props.schema.items.$ref;
|
this.infoPaneRefString = props.schema.items.$ref;
|
||||||
this.registry = props.registry;
|
this.registry = props.registry;
|
||||||
this.enumOptions = props.options.enumOptions.sort(this.compareOptions);
|
|
||||||
this.pluginNames = props.value.map(v => v.name);
|
this.pluginNames = props.value.map(v => v.name);
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
|
@ -50,6 +49,10 @@ class AdvancedMultiSelect extends React.Component {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getOptionList = () => {
|
||||||
|
return this.props.options.enumOptions.sort(this.compareOptions);
|
||||||
|
}
|
||||||
|
|
||||||
onChange = (strValues) => {
|
onChange = (strValues) => {
|
||||||
let newValues = [];
|
let newValues = [];
|
||||||
for (let j = 0; j < strValues.length; j++) {
|
for (let j = 0; j < strValues.length; j++) {
|
||||||
|
@ -88,7 +91,7 @@ class AdvancedMultiSelect extends React.Component {
|
||||||
if (checkboxState === MasterCheckboxState.ALL) {
|
if (checkboxState === MasterCheckboxState.ALL) {
|
||||||
var newValues = [];
|
var newValues = [];
|
||||||
} else {
|
} else {
|
||||||
newValues = this.enumOptions.map(({value}) => value);
|
newValues = this.getOptionList().map(({value}) => value);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.onChange(newValues);
|
this.onChange(newValues);
|
||||||
|
@ -124,7 +127,7 @@ class AdvancedMultiSelect extends React.Component {
|
||||||
return MasterCheckboxState.NONE;
|
return MasterCheckboxState.NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectValues.length !== this.enumOptions.length) {
|
if (selectValues.length !== this.getOptionList().length) {
|
||||||
return MasterCheckboxState.MIXED;
|
return MasterCheckboxState.MIXED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -152,6 +155,7 @@ class AdvancedMultiSelect extends React.Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
isSafe = (itemKey) => {
|
isSafe = (itemKey) => {
|
||||||
|
console.log(getFullDefinitionByKey(this.infoPaneRefString, this.registry, itemKey))
|
||||||
return getFullDefinitionByKey(this.infoPaneRefString, this.registry, itemKey).safe;
|
return getFullDefinitionByKey(this.infoPaneRefString, this.registry, itemKey).safe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,7 +205,7 @@ class AdvancedMultiSelect extends React.Component {
|
||||||
onPaneClick={this.setPaneInfo}
|
onPaneClick={this.setPaneInfo}
|
||||||
onCheckboxClick={this.onChildCheckboxClick}
|
onCheckboxClick={this.onChildCheckboxClick}
|
||||||
selectedValues={this.state.pluginNames}
|
selectedValues={this.state.pluginNames}
|
||||||
enumOptions={this.enumOptions}/>
|
enumOptions={this.getOptionList()}/>
|
||||||
|
|
||||||
<InfoPane title={this.state.infoPaneParams.title}
|
<InfoPane title={this.state.infoPaneParams.title}
|
||||||
body={this.state.infoPaneParams.content}
|
body={this.state.infoPaneParams.content}
|
||||||
|
|
Loading…
Reference in New Issue