diff --git a/scripts/pi-hole/js/groups-adlists.js b/scripts/pi-hole/js/groups-adlists.js index f16e1bc5..0c5bc604 100644 --- a/scripts/pi-hole/js/groups-adlists.js +++ b/scripts/pi-hole/js/groups-adlists.js @@ -89,7 +89,11 @@ function initTable() { comment.on("change", editAdlist); $("td:eq(3)", row).empty(); - $("td:eq(3)", row).append(''); + $("td:eq(3)", row).append( + '
' + ); var sel = $("#multiselect", row); // Add all known groups for (var i = 0; i < groups.length; i++) { @@ -108,7 +112,35 @@ function initTable() { // Select assigned groups sel.val(data.groups); // Initialize multiselect - sel.multiselect({ includeSelectAllOption: true }); + sel.multiselect({ + includeSelectAllOption: true, + buttonContainer: '', + maxHeight: 200, + onDropdownShown: function() { + var el = $("#container" + data.id); + var top = el[0].getBoundingClientRect().top; + var bottom = $(window).height() - top - el.height(); + if (bottom < 200) { + el.addClass("dropup"); + } + + if (bottom > 200) { + el.removeClass("dropup"); + } + + var offset = el.offset(); + $("body").append(el); + el.css("position", "absolute"); + el.css("top", offset.top + "px"); + el.css("left", offset.left + "px"); + }, + onDropdownHide: function() { + var el = $("#container" + data.id); + var home = $("#selectHome" + data.id); + home.append(el); + el.removeAttr("style"); + } + }); sel.on("change", editAdlist); var button = diff --git a/scripts/pi-hole/js/groups-clients.js b/scripts/pi-hole/js/groups-clients.js index 71e0e585..14d9323e 100644 --- a/scripts/pi-hole/js/groups-clients.js +++ b/scripts/pi-hole/js/groups-clients.js @@ -101,7 +101,11 @@ function initTable() { $("td:eq(0)", row).html(ip_name); $("td:eq(1)", row).empty(); - $("td:eq(1)", row).append(''); + $("td:eq(1)", row).append( + '' + ); var sel = $("#multiselect", row); // Add all known groups for (var i = 0; i < groups.length; i++) { @@ -120,7 +124,35 @@ function initTable() { // Select assigned groups sel.val(data.groups); // Initialize multiselect - sel.multiselect({ includeSelectAllOption: true }); + sel.multiselect({ + includeSelectAllOption: true, + buttonContainer: '', + maxHeight: 200, + onDropdownShown: function() { + var el = $("#container" + data.id); + var top = el[0].getBoundingClientRect().top; + var bottom = $(window).height() - top - el.height(); + if (bottom < 200) { + el.addClass("dropup"); + } + + if (bottom > 200) { + el.removeClass("dropup"); + } + + var offset = el.offset(); + $("body").append(el); + el.css("position", "absolute"); + el.css("top", offset.top + "px"); + el.css("left", offset.left + "px"); + }, + onDropdownHide: function() { + var el = $("#container" + data.id); + var home = $("#selectHome" + data.id); + home.append(el); + el.removeAttr("style"); + } + }); sel.on("change", editClient); var button = diff --git a/scripts/pi-hole/js/groups-domains.js b/scripts/pi-hole/js/groups-domains.js index 7bbf1ec3..e76168b9 100644 --- a/scripts/pi-hole/js/groups-domains.js +++ b/scripts/pi-hole/js/groups-domains.js @@ -133,7 +133,11 @@ function initTable() { // Show group assignment field only if in full domain management mode if (table.column(5).visible()) { $("td:eq(4)", row).empty(); - $("td:eq(4)", row).append(''); + $("td:eq(4)", row).append( + '' + ); var sel = $("#multiselect", row); // Add all known groups for (var i = 0; i < groups.length; i++) { @@ -152,7 +156,35 @@ function initTable() { // Select assigned groups sel.val(data.groups); // Initialize multiselect - sel.multiselect({ includeSelectAllOption: true }); + sel.multiselect({ + includeSelectAllOption: true, + buttonContainer: '', + maxHeight: 200, + onDropdownShown: function() { + var el = $("#container" + data.id); + var top = el[0].getBoundingClientRect().top; + var bottom = $(window).height() - top - el.height(); + if (bottom < 200) { + el.addClass("dropup"); + } + + if (bottom > 200) { + el.removeClass("dropup"); + } + + var offset = el.offset(); + $("body").append(el); + el.css("position", "absolute"); + el.css("top", offset.top + "px"); + el.css("left", offset.left + "px"); + }, + onDropdownHide: function() { + var el = $("#container" + data.id); + var home = $("#selectHome" + data.id); + home.append(el); + el.removeAttr("style"); + } + }); sel.on("change", editDomain); } diff --git a/style/pi-hole.css b/style/pi-hole.css index 8320bdc0..c53cb42e 100644 --- a/style/pi-hole.css +++ b/style/pi-hole.css @@ -260,4 +260,4 @@ code.breakall .pointer { cursor: pointer; -} +} \ No newline at end of file