From 5c599ab05655d20a2dc0847781fe0311190424da Mon Sep 17 00:00:00 2001 From: Mira Weller Date: Tue, 25 Jun 2024 12:29:09 +0200 Subject: [PATCH] add back sort button disabled state management --- .../pretixcontrol/js/ui/dragndroplist.js | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/pretix/static/pretixcontrol/js/ui/dragndroplist.js b/src/pretix/static/pretixcontrol/js/ui/dragndroplist.js index 5bc03c90a..3c8249738 100644 --- a/src/pretix/static/pretixcontrol/js/ui/dragndroplist.js +++ b/src/pretix/static/pretixcontrol/js/ui/dragndroplist.js @@ -1,7 +1,27 @@ /*global $, Sortable*/ $(function () { + const allContainers = $("[data-dnd-url]"); + function updateAllSortButtonStates() { + allContainers.each(function() { updateSortButtonState($(this)); }); + } + function updateSortButtonState(container) { + var disabledUp = container.find(".sortable-up:disabled"), + firstUp = container.find(">tr[data-dnd-id] .sortable-up").first(); + if (disabledUp.length && disabledUp.get(0) !== firstUp.get(0)) { + disabledUp.prop("disabled", false); + firstUp.prop("disabled", true); + } + + var disabledDown = container.find(".sortable-down:disabled"), + lastDown = container.find(">tr[data-dnd-id] .sortable-down").last(); + if (disabledDown.length && disabledDown.get(0) !== lastDown.get(0)) { + disabledDown.prop("disabled", false); + lastDown.prop("disabled", true); + } + } + let didSort = false, lastClick = 0; - $("[data-dnd-url]").each(function(){ + allContainers.each(function(){ const container = $(this), url = container.data("dnd-url"), handle = $(''); @@ -19,6 +39,7 @@ $(function () { function maybeShowSortButtons() { if (Date.now() - lastClick < 3000) { $("[data-dnd-url] .sortable-up, [data-dnd-url] .sortable-down").removeClass("sr-only"); + updateAllSortButtonStates(); } lastClick = Date.now(); }