class FieldSearchDropdown extends Blockly.FieldDropdown {
constructor(options, validator) {
super(options, validator);
this.sourceData = options.sourceData || [];
}
showEditor_() {
super.showEditor_();
const input = this.htmlInput_;
input.addEventListener('input', this.onInputChange_.bind(this));
}
onInputChange_(event) {
const input = event.target.value.toLowerCase();
const filteredOptions = this.sourceData.filter(option =>
option[0].toLowerCase().includes(input)
);
this.menuGenerator_ = filteredOptions;
this.dropdownCreate_();
}
}
// Register the custom field
if (!Blockly.registry.hasItem(Blockly.registry.Type.FIELD, 'field_search_dropdown')) {
Blockly.registry.register(Blockly.registry.Type.FIELD, 'field_search_dropdown', FieldSearchDropdown);
}
export { FieldSearchDropdown };