]> xenbits.xensource.com Git - www-xenproject-org.git/commitdiff
fix mobile
authorArnaud Guéras <arnaudgs@gmail.com>
Wed, 20 Nov 2024 16:46:23 +0000 (17:46 +0100)
committerArnaud Guéras <arnaudgs@gmail.com>
Wed, 20 Nov 2024 16:46:23 +0000 (17:46 +0100)
Signed-off-by: Arnaud Guéras <arnaudgs@gmail.com>
hugo.yaml
hugo_stats.json
themes/xen-project/assets/css/header/header-desktop.scss
themes/xen-project/assets/css/socials.scss
themes/xen-project/assets/js/latest-news.js
themes/xen-project/assets/js/menu.js
themes/xen-project/layouts/partials/js.html

index de3106e8b64c108d2cb8371b780280c618bc88b5..9f21fb2dffeba8f31c60651045d7bef35888c86d 100644 (file)
--- 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
index baf27eb57f2725472a5da27d5ce5a7b58acd903a..89937bfcc50302364914c070e5a5a9f8e2365ff0 100644 (file)
       "list-column--sublists",
       "list-no-style",
       "list-pages",
-      "m-t-md",
       "main",
       "media-block",
       "media-block--left",
       "mg-v-xxl",
       "mob-mg-v-xl",
       "mt-2",
-      "mt-md",
-      "mt-sm",
       "news-container",
       "next",
       "no-mt",
       "presentation-list",
       "prev",
       "rounded-corners",
-      "rounded-img",
       "row",
       "row-from-list",
       "search-container",
index 14e253f415efb7c86ba1de38d723404b7bec357b..ba7f8c2a5892809940b308f216870ee8c5349686 100644 (file)
@@ -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;
         padding: 0;
         position: relative;
 
-        &:hover ul {
+        &:hover ul,
+        &.active ul {
           visibility: visible;
         }
       }
index b8ae3174ca46305982623105d4a99a00bc770c8c..fccfa7dc42a0904417fe5ff14d10e441b6328ed8 100644 (file)
@@ -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);
   }
 
index ef548bb38a09cf8bf9ac38387ddd5e7e154915a8..fb1e86a1487c3f0f032a59afc4012764cbb46d72 100644 (file)
@@ -5,7 +5,7 @@
       id: "xenprojectblog",
       name: "xenproject blog",
       url: "/blog",
-      API_KEY: siteParams.blogapikey,
+      API_KEY: window.siteParams?.blogapikey,
     },
   ];
 
index 5f8b6d493b1af37379f86a98c0884b9c31a5ec6d..7d292759dd4961325327a01a12f71062b3066c8d 100644 (file)
       }
     };
   };
-  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();
   });
 })();
index 5d3e1a14f443c59806df8f5bbda24c53870d8325..54ad48767087976613033f95f084479eb2105a3d 100644 (file)
@@ -5,14 +5,10 @@
       <script src="{{ .RelPermalink }}"></script>
     {{- end }}
   {{- else }}
-    {{- $opts := dict "minify" true }}
-    {{- with . | js.Build $opts | fingerprint }}
-      <script
-        src="{{ .RelPermalink }}"
-        integrity="{{- .Data.Integrity }}"
-        crossorigin="anonymous"
-      ></script>
-    {{- end }}
+    {{- $opts := dict "minify" true "target" "es2015" "format" "iife" }}
+    {{- $js := . | js.Build $opts }}
+    {{- $js := $js | resources.ExecuteAsTemplate "js/main.js" . }}
+    <script src="{{ $js.RelPermalink }}"></script>
   {{- end }}
 {{- end }}