diff --git a/src/pretix/static/pretixcontrol/js/ui/main.js b/src/pretix/static/pretixcontrol/js/ui/main.js
index 0e01da43f..39a89a79b 100644
--- a/src/pretix/static/pretixcontrol/js/ui/main.js
+++ b/src/pretix/static/pretixcontrol/js/ui/main.js
@@ -456,6 +456,24 @@ var form_handlers = function (el) {
dependency.on("change", update);
});
+ el.find("div.scrolling-choice:not(.no-search)").each(function () {
+ if ($(this).find("input[type=text]").length > 0) {
+ return;
+ }
+ var $menu = $("
").addClass("choice-options-menu");
+ var $inp_search = $("").addClass("form-control").attr("type", "text").attr("placeholder", gettext("Search query"));
+ $menu.append($inp_search);
+ $(this).prepend($menu);
+
+ $inp_search.on("keyup change", function (e) {
+ var term = $inp_search.val().toLowerCase();
+
+ $(this).closest(".scrolling-choice").find("div.radio").each(function () {
+ $(this).toggleClass("hidden", !$(this).text().toLowerCase().includes(term));
+ })
+ })
+ });
+
el.find("div.scrolling-multiple-choice").each(function () {
if ($(this).find(".choice-options-all").length > 0) {
return;
diff --git a/src/pretix/static/pretixcontrol/scss/_forms.scss b/src/pretix/static/pretixcontrol/scss/_forms.scss
index a8f8057c9..b881aacd4 100644
--- a/src/pretix/static/pretixcontrol/scss/_forms.scss
+++ b/src/pretix/static/pretixcontrol/scss/_forms.scss
@@ -433,6 +433,9 @@ div.scrolling-multiple-choice, div.scrolling-choice {
height: auto;
padding: 2px 6px;
}
+ .form-control:first-child {
+ margin: 0;
+ }
}
}
table td > .checkbox {