this.removeObject();
if (object.type === "note" || object.type === "changeset") {
- this._objectLoader = {
- abort: function () {}
- };
+ this._objectLoader = { abort: () => {} };
this._object = object;
this._objectLayer = L.featureGroup().addTo(this);
this.fire("overlayadd", { layer: this._objectLayer });
} else { // element handled by L.OSM.DataLayer
var map = this;
- this._objectLoader = $.ajax({
- url: OSM.apiUrl(object),
- dataType: "json",
- success: function (data) {
+ this._objectLoader = new AbortController();
+ fetch(OSM.apiUrl(object), {
+ headers: { accept: "application/json" },
+ signal: this._objectLoader.signal
+ })
+ .then(response => response.json())
+ .then(function (data) {
map._object = object;
map._objectLayer = new L.OSM.DataLayer(null, {
if (callback) callback(map._objectLayer.getBounds());
map.fire("overlayadd", { layer: map._objectLayer });
- }
- });
+ })
+ .catch(() => {});
}
},
},
setSidebarOverlaid: function (overlaid) {
- var sidebarWidth = 350;
+ var mediumDeviceWidth = window.getComputedStyle(document.documentElement).getPropertyValue("--bs-breakpoint-md");
+ var isMediumDevice = window.matchMedia(`(max-width: ${mediumDeviceWidth})`).matches;
+ var sidebarWidth = $("#sidebar").width();
+ var sidebarHeight = $("#sidebar").height();
if (overlaid && !$("#content").hasClass("overlay-sidebar")) {
$("#content").addClass("overlay-sidebar");
this.invalidateSize({ pan: false });
- if ($("html").attr("dir") !== "rtl") {
+ if (isMediumDevice) {
+ this.panBy([0, -sidebarHeight], { animate: false });
+ } else if ($("html").attr("dir") !== "rtl") {
this.panBy([-sidebarWidth, 0], { animate: false });
}
} else if (!overlaid && $("#content").hasClass("overlay-sidebar")) {
- if ($("html").attr("dir") !== "rtl") {
+ if (isMediumDevice) {
+ this.panBy([0, $("#map").height() / 2], { animate: false });
+ } else if ($("html").attr("dir") !== "rtl") {
this.panBy([sidebarWidth, 0], { animate: false });
}
$("#content").removeClass("overlay-sidebar");