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 {
 		/**
 		 *