mirror of
https://github.com/google/blockly.git
synced 2026-01-07 17:10:11 +01:00
Feature: Add a dropdown options setter (#8833)
* Feature: Add a setOptions method to field_dropdown * add test for changing droopdown options * split out setOptions tests into their own test suite * Add additional tests * auto format files
This commit is contained in:
@@ -136,26 +136,11 @@ export class FieldDropdown extends Field<string> {
|
||||
// If we pass SKIP_SETUP, don't do *anything* with the menu generator.
|
||||
if (menuGenerator === Field.SKIP_SETUP) return;
|
||||
|
||||
if (Array.isArray(menuGenerator)) {
|
||||
this.validateOptions(menuGenerator);
|
||||
const trimmed = this.trimOptions(menuGenerator);
|
||||
this.menuGenerator_ = trimmed.options;
|
||||
this.prefixField = trimmed.prefix || null;
|
||||
this.suffixField = trimmed.suffix || null;
|
||||
} else {
|
||||
this.menuGenerator_ = menuGenerator;
|
||||
}
|
||||
|
||||
/**
|
||||
* The currently selected option. The field is initialized with the
|
||||
* first option selected.
|
||||
*/
|
||||
this.selectedOption = this.getOptions(false)[0];
|
||||
this.setOptions(menuGenerator);
|
||||
|
||||
if (config) {
|
||||
this.configure_(config);
|
||||
}
|
||||
this.setValue(this.selectedOption[1]);
|
||||
if (validator) {
|
||||
this.setValidator(validator);
|
||||
}
|
||||
@@ -414,6 +399,28 @@ export class FieldDropdown extends Field<string> {
|
||||
return this.generatedOptions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the options on this dropdown. This will reset the selected item to
|
||||
* the first item in the list.
|
||||
*
|
||||
* @param menuGenerator The array of options or a generator function.
|
||||
*/
|
||||
setOptions(menuGenerator: MenuGenerator) {
|
||||
if (Array.isArray(menuGenerator)) {
|
||||
this.validateOptions(menuGenerator);
|
||||
const trimmed = this.trimOptions(menuGenerator);
|
||||
this.menuGenerator_ = trimmed.options;
|
||||
this.prefixField = trimmed.prefix || null;
|
||||
this.suffixField = trimmed.suffix || null;
|
||||
} else {
|
||||
this.menuGenerator_ = menuGenerator;
|
||||
}
|
||||
// The currently selected option. The field is initialized with the
|
||||
// first option selected.
|
||||
this.selectedOption = this.getOptions(false)[0];
|
||||
this.setValue(this.selectedOption[1]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that the input value is a valid language-neutral option.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user