X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/46cd3a1114d975a1791c16e5930c9ed7f8367d36..c8757cf1d00836a34e8aa3e1244b3a0694914dc2:/app/assets/javascripts/application.js?ds=sidebyside diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index e8662e5cf..c6d7c4fe3 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -48,11 +48,9 @@ window.updateLinks = function (loc, zoom, layers, object) { const queryArgs = new URLSearchParams(link.search), editlink = $(link).hasClass("editlink"); - queryArgs.delete("node"); - queryArgs.delete("way"); - queryArgs.delete("relation"); - queryArgs.delete("changeset"); - queryArgs.delete("note"); + for (const arg of ["node", "way", "relation", "changeset", "note"]) { + queryArgs.delete(arg); + } if (object && editlink) { queryArgs.set(object.type, object.id); @@ -92,21 +90,47 @@ $(document).ready(function () { // See https://turbo.hotwired.dev/reference/drive#turbo.session.drive Turbo.session.drive = false; - var headerWidth = 0, - compactWidth = 0; + let headerWidth = 0; + const breakpointWidth = 768; function updateHeader() { var windowWidth = $(window).width(); - if (windowWidth < compactWidth) { - $("body").removeClass("compact-nav").addClass("small-nav"); + if (windowWidth < breakpointWidth) { + $("body").addClass("small-nav"); + expandSecondaryMenu(); } else if (windowWidth < headerWidth) { - $("body").addClass("compact-nav").removeClass("small-nav"); + $("body").removeClass("small-nav"); + collapseSecondaryMenu(); } else { - $("body").removeClass("compact-nav").removeClass("small-nav"); + $("body").removeClass("small-nav"); + expandSecondaryMenu(); } } + function expandSecondaryMenu() { + $("#compact-secondary-nav > ul").find("li").children("a") + .removeClass("dropdown-item") + .addClass("nav-link") + .addClass(function () { + return $(this).hasClass("active") ? "text-secondary-emphasis" : "text-secondary"; + }); + $("#compact-secondary-nav > ul").find("li") + .addClass("nav-item") + .prependTo("header nav.secondary > ul"); + $("#compact-secondary-nav").hide(); + } + + function collapseSecondaryMenu() { + $("header nav.secondary > ul").find("li:not(#compact-secondary-nav)").children("a") + .addClass("dropdown-item") + .removeClass("nav-link text-secondary text-secondary-emphasis"); + $("header nav.secondary > ul").find("li:not(#compact-secondary-nav)") + .removeClass("nav-item") + .prependTo("#compact-secondary-nav > ul"); + $("#compact-secondary-nav").show(); + } + /* * Chrome 60 and later seem to fire the "ready" callback * before the DOM is fully ready causing us to measure the @@ -115,17 +139,9 @@ $(document).ready(function () { */ setTimeout(function () { $("header").children(":visible").each(function (i, e) { - headerWidth = headerWidth + $(e).outerWidth(); + headerWidth += $(e).outerWidth(); }); - $("body").addClass("compact-nav"); - - $("header").children(":visible").each(function (i, e) { - compactWidth = compactWidth + $(e).outerWidth(); - }); - - $("body").removeClass("compact-nav"); - $("header").removeClass("text-nowrap"); $("header nav.secondary > ul").removeClass("flex-nowrap");