From: Arnaud Guéras Date: Wed, 20 Nov 2024 16:46:23 +0000 (+0100) Subject: fix mobile X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=ecaa8b93e1089fd8d04ec87761cbd68999d09e69;p=www-xenproject-org.git fix mobile Signed-off-by: Arnaud Guéras --- diff --git a/hugo.yaml b/hugo.yaml index de3106e..9f21fb2 100644 --- a/hugo.yaml +++ b/hugo.yaml @@ -29,6 +29,9 @@ build: writeStats: true processing: css: true + js: + targetPath: "js/main.js" + noHash: true css: includePaths: [] sourceMap: true diff --git a/hugo_stats.json b/hugo_stats.json index baf27eb..89937bf 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -172,7 +172,6 @@ "list-column--sublists", "list-no-style", "list-pages", - "m-t-md", "main", "media-block", "media-block--left", @@ -197,8 +196,6 @@ "mg-v-xxl", "mob-mg-v-xl", "mt-2", - "mt-md", - "mt-sm", "news-container", "next", "no-mt", @@ -211,7 +208,6 @@ "presentation-list", "prev", "rounded-corners", - "rounded-img", "row", "row-from-list", "search-container", diff --git a/themes/xen-project/assets/css/header/header-desktop.scss b/themes/xen-project/assets/css/header/header-desktop.scss index 14e253f..ba7f8c2 100644 --- a/themes/xen-project/assets/css/header/header-desktop.scss +++ b/themes/xen-project/assets/css/header/header-desktop.scss @@ -9,6 +9,10 @@ --header-font-size: 16px; padding: var(--header-padding); + a:focus { + outline: 1px solid #fff; + } + @include desktop { --gap: 40px; --header-font-size: 20px; @@ -98,7 +102,8 @@ padding: 0; position: relative; - &:hover ul { + &:hover ul, + &.active ul { visibility: visible; } } diff --git a/themes/xen-project/assets/css/socials.scss b/themes/xen-project/assets/css/socials.scss index b8ae317..fccfa7d 100644 --- a/themes/xen-project/assets/css/socials.scss +++ b/themes/xen-project/assets/css/socials.scss @@ -1,6 +1,6 @@ .socials { --socials-icon-background: var(--color-brand-fill); - --socials-icon-color: var(--color-action-on-fill); + --socials-icon-color: var(--color-text); --socials-icon-color-hover: var(--color-surface); display: flex; margin: 0; @@ -37,7 +37,8 @@ color: var(--socials-icon-color); } - a:hover { + a:hover, + a:focus { color: var(--socials-icon-color-hover); } diff --git a/themes/xen-project/assets/js/latest-news.js b/themes/xen-project/assets/js/latest-news.js index ef548bb..fb1e86a 100644 --- a/themes/xen-project/assets/js/latest-news.js +++ b/themes/xen-project/assets/js/latest-news.js @@ -5,7 +5,7 @@ id: "xenprojectblog", name: "xenproject blog", url: "/blog", - API_KEY: siteParams.blogapikey, + API_KEY: window.siteParams?.blogapikey, }, ]; diff --git a/themes/xen-project/assets/js/menu.js b/themes/xen-project/assets/js/menu.js index 5f8b6d4..7d29275 100644 --- a/themes/xen-project/assets/js/menu.js +++ b/themes/xen-project/assets/js/menu.js @@ -38,21 +38,49 @@ } }; }; - mobileMenu(); - const menu = document.querySelector(".header .menu"); - let hasTouchCapability, hasMouseCapability; - const menuFirstLevelEventHandler = (e) => { - hasTouchCapability = "ontouchstart" in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; - if (!hasTouchCapability) return; + const headerDesktopEvents = () => { + const menu = document.querySelector(".header .menu"); + if (!menu) return; + let hasTouchCapability, hasMouseCapability; + const menuFirstLevelEventHandler = (e) => { + hasTouchCapability = "ontouchstart" in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; + if (!hasTouchCapability) return; - const li = e.target.closest("li"); - if (e.target.matches("a") && li.parentElement === menu && e.target.target !== "_blank" && li.querySelector("ul")) { - e.preventDefault(); - } + const li = e.target.closest("li"); + if ( + e.target.matches("a") && + li.parentElement === menu && + e.target.target !== "_blank" && + li.querySelector("ul") + ) { + e.preventDefault(); + } + }; + + const menuKeyboardHandler = (e) => { + if (e.key === "Enter") { + const li = e.target.closest("li"); + if (li && li.parentElement === menu && li.querySelector("ul")) { + e.preventDefault(); + li.classList.toggle("active"); + } + } else if (e.key === "Escape") { + // Ferme tous les sous-menus ouverts + const activeMenus = menu.querySelectorAll("li.active"); + activeMenus.forEach((li) => li.classList.remove("active")); + } + }; + menu.addEventListener("click", menuFirstLevelEventHandler); + menu.addEventListener("keydown", menuKeyboardHandler); }; + const applyMenuEvents = () => { + headerDesktopEvents(); + mobileMenu(); + }; + window.applyMenuEvents = applyMenuEvents; document.addEventListener("DOMContentLoaded", () => { - menu.addEventListener("click", menuFirstLevelEventHandler); + applyMenuEvents(); }); })(); diff --git a/themes/xen-project/layouts/partials/js.html b/themes/xen-project/layouts/partials/js.html index 5d3e1a1..54ad487 100644 --- a/themes/xen-project/layouts/partials/js.html +++ b/themes/xen-project/layouts/partials/js.html @@ -5,14 +5,10 @@ {{- end }} {{- else }} - {{- $opts := dict "minify" true }} - {{- with . | js.Build $opts | fingerprint }} - - {{- end }} + {{- $opts := dict "minify" true "target" "es2015" "format" "iife" }} + {{- $js := . | js.Build $opts }} + {{- $js := $js | resources.ExecuteAsTemplate "js/main.js" . }} + {{- end }} {{- end }}