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