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 {