From 0cd1816c0c03ef9afb795ab457d35b7972d87e32 Mon Sep 17 00:00:00 2001 From: ezsh <ezsh.junk@gmail.com> Date: Sat, 22 Feb 2020 13:33:19 +0100 Subject: [PATCH] Add multiselect element to RA --- src/js/rulesAssistantOptions.js | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/js/rulesAssistantOptions.js b/src/js/rulesAssistantOptions.js index 9799022ae69..e892c47b231 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 { /** * -- GitLab