X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/5bd59e19368d8761a7dbaa5db0e8833174c11f36..ec73d70659686a51f5f4b6b737c9dea1daff8325:/app/assets/javascripts/leaflet.sidebar.js diff --git a/app/assets/javascripts/leaflet.sidebar.js b/app/assets/javascripts/leaflet.sidebar.js index bb046f99a..910da53f2 100644 --- a/app/assets/javascripts/leaflet.sidebar.js +++ b/app/assets/javascripts/leaflet.sidebar.js @@ -1,9 +1,9 @@ L.OSM.sidebar = function (selector) { - var control = {}, - sidebar = $(selector), - current = $(), - currentButton = $(), - map; + const control = {}, + sidebar = $(selector); + let current = $(), + currentButton = $(), + map; control.addTo = function (_) { map = _; @@ -17,6 +17,10 @@ L.OSM.sidebar = function (selector) { }; control.togglePane = function (pane, button) { + const mediumDeviceWidth = window.getComputedStyle(document.documentElement).getPropertyValue("--bs-breakpoint-md"); + const isMediumDevice = window.matchMedia(`(max-width: ${mediumDeviceWidth})`).matches; + const paneWidth = 250; + current .hide() .trigger("hide"); @@ -26,11 +30,23 @@ L.OSM.sidebar = function (selector) { if (current === pane) { $(sidebar).hide(); + $("#content").addClass("overlay-right-sidebar"); current = currentButton = $(); + if (isMediumDevice) { + map.panBy([0, -$("#map").height() / 2], { animate: false }); + } else if ($("html").attr("dir") === "rtl") { + map.panBy([-paneWidth, 0], { animate: false }); + } } else { $(sidebar).show(); + $("#content").removeClass("overlay-right-sidebar"); current = pane; currentButton = button || $(); + if (isMediumDevice) { + map.panBy([0, $("#map").height()], { animate: false }); + } else if ($("html").attr("dir") === "rtl") { + map.panBy([paneWidth, 0], { animate: false }); + } } map.invalidateSize({ pan: false, animate: false });