diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js index 9799022ae69c31845bcf36314ca3aa5bc62438c6..e892c47b231ff79df66cc4f13a601db9ddeee6db 100644 --- a/src/js/rulesAssistantOptions.js +++ b/src/js/rulesAssistantOptions.js @@ -475,6 +475,37 @@ window.rulesAssistantOptions = (function() { } } + /** + * Displays the <select> element with multiple choices + */ + class MultiListSelector extends ListSelector { + constructor(prefix, data = []) { + super(prefix, data, false); + } + + render(data, allowNullValue) { + const res = super.render(data, allowNullValue); + this.value.multiple = true; + return res; + } + + getData() { + const res = []; + for (const opt of this.value.selectedOptions) { + res.push(this.values_.get(opt.value)); + } + return res; + } + + setValue(what) { + what = what || []; + const vs = new Set(what); + for (const opt of this.value.options) { + opt.selected = vs.has(this.values_.get(opt.value)); + } + } + } + class RadioSelector extends ElementWithLabel { /** *