From: Anton Khorev Date: Tue, 28 May 2024 01:18:06 +0000 (+0300) Subject: Switch to/from compact nav by moving nav items X-Git-Tag: live~203^2~4 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/424316b41c155af251597ce4993accd819fe797a?ds=inline Switch to/from compact nav by moving nav items --- diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 2e13f6967..005ab6217 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -97,14 +97,40 @@ $(document).ready(function () { var windowWidth = $(window).width(); if (windowWidth < compactWidth) { - $("body").removeClass("compact-nav").addClass("small-nav"); + $("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 @@ -116,14 +142,12 @@ $(document).ready(function () { headerWidth += $(e).outerWidth(); }); - $("body").addClass("compact-nav"); + collapseSecondaryMenu(); $("header").children(":visible").each(function (i, e) { compactWidth += $(e).outerWidth(); }); - $("body").removeClass("compact-nav"); - $("header").removeClass("text-nowrap"); $("header nav.secondary > ul").removeClass("flex-nowrap"); diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index fc9af9803..d0524fcbc 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -191,15 +191,6 @@ nav.primary, nav.secondary { display: none; } -body.compact-nav { - #compact-secondary-nav { - display: inline-block; - } - .compact-hide { - display: none; - } -} - body.small-nav { #menu-icon { display: block; diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ff6dcd2ff..86a3d56cd 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -43,7 +43,7 @@ module ApplicationHelper end def header_nav_link_class(path) - ["nav-link", current_page?(path) ? "text-secondary-emphasis" : "text-secondary"] + ["nav-link", current_page?(path) ? "active text-secondary-emphasis" : "text-secondary"] end def application_data diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 45e23fc2b..926d623c0 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -30,56 +30,40 @@