From 2ea4dc7e78f1db42d8c37e00e5931dad654d342e Mon Sep 17 00:00:00 2001
From: Tuukka Turu <tuukka.turu@druid.fi>
Date: Thu, 4 Mar 2021 16:21:48 +0200
Subject: [PATCH] Initial mobile things

---
 src/components.d.ts                           |  2 +-
 src/components/icon/readme.md                 |  2 +-
 .../hy-menu-main-group.scss                   | 20 +++++++
 .../hy-menu-main-group/hy-menu-main-group.tsx | 56 ++++++++++++++++---
 .../hy-menu-main-group/readme.md              |  4 +-
 src/components/site-header/readme.md          |  2 +-
 src/components/site-header/site-header.scss   |  6 ++
 src/components/site-header/site-header.tsx    |  5 +-
 8 files changed, 80 insertions(+), 17 deletions(-)
 rename src/components/{ => navigation}/hy-menu-main-group/hy-menu-main-group.scss (83%)
 rename src/components/{ => navigation}/hy-menu-main-group/hy-menu-main-group.tsx (55%)
 rename src/components/{ => navigation}/hy-menu-main-group/readme.md (91%)

diff --git a/src/components.d.ts b/src/components.d.ts
index af51b3b7..14784e38 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -53,7 +53,7 @@ import {CtaLinkValue} from './components/hy-link-list/hy-link-list';
 import {AdditionalInfo, RelatedLink} from './components/hy-list-item/hy-list-item';
 import {MenuLanguage} from './components/navigation/menu-language/menu-language';
 import {ComponentLabels} from './components/site-header/site-header';
-import {MainMenu} from './components/hy-menu-main-group/hy-menu-main-group';
+import {MainMenu} from './components/navigation/hy-menu-main-group/hy-menu-main-group';
 import {ProcessFlowBoxValue} from './components/process/process';
 import {ShortcutLinkValue} from './components/hy-shortcuts/hy-shortcuts';
 import {DesktopLinks as DesktopLinks1} from './components/site-header/site-header';
diff --git a/src/components/icon/readme.md b/src/components/icon/readme.md
index e5c795da..325bab04 100644
--- a/src/components/icon/readme.md
+++ b/src/components/icon/readme.md
@@ -38,7 +38,7 @@
 - [hy-menu-item-sidebar](../navigation/menu-item-sidebar)
 - [hy-menu-language](../navigation/menu-language)
 - [hy-menu-level-container](../navigation/menu-level-container)
-- [hy-menu-main-group](../hy-menu-main-group)
+- [hy-menu-main-group](../navigation/hy-menu-main-group)
 - [hy-menu-mobile-breadcrumb](../navigation/menu-mobile-breadcrumb)
 - [hy-menu-sidebar](../navigation/menu-sidebar)
 - [hy-pager-item](../pagination/hy-pager-item)
diff --git a/src/components/hy-menu-main-group/hy-menu-main-group.scss b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss
similarity index 83%
rename from src/components/hy-menu-main-group/hy-menu-main-group.scss
rename to src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss
index 0704a154..ffc87fc3 100644
--- a/src/components/hy-menu-main-group/hy-menu-main-group.scss
+++ b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss
@@ -90,3 +90,23 @@
     }
   }
 }
+
+:host(.menu--main-group--mobile) {
+  align-items: center;
+  display: flex;
+  flex-flow: row;
+  margin-left: 28px;
+
+  @include breakpoint($narrow) {
+    margin-left: 32px;
+  }
+  @include breakpoint($wide) {
+    margin-left: 40px;
+  }
+}
+
+.menu--main-group__mobile-toggle {
+  border: none;
+  background: transparent;
+  padding: 15px 28px 15px 15px;
+}
diff --git a/src/components/hy-menu-main-group/hy-menu-main-group.tsx b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx
similarity index 55%
rename from src/components/hy-menu-main-group/hy-menu-main-group.tsx
rename to src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx
index 0147243d..9cb9f162 100644
--- a/src/components/hy-menu-main-group/hy-menu-main-group.tsx
+++ b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx
@@ -30,16 +30,20 @@ export class HyMenuMainGroup {
 
     if (this.isMenuOpen) {
       let hyTopHeader = this.el.closest('.hy-site-header__content-top') as HTMLElement;
-      let mainMenuToggle = event.target.shadowRoot.querySelector('.menu--main-group__toggle') as HTMLElement;
-      let mainMenuDropdown = event.target.shadowRoot.querySelector('.menu--main-group__dropdown') as HTMLElement;
-      let mainMenuList = event.target.shadowRoot.querySelector('.list') as HTMLElement;
 
-      if (hyTopHeader && mainMenuDropdown && mainMenuList && mainMenuToggle) {
-        let rectHeader = hyTopHeader.getBoundingClientRect();
-        let rectMenuToggle = mainMenuToggle.getBoundingClientRect();
-        mainMenuDropdown.style.top = `${rectHeader.height}px`;
+      if (hyTopHeader && hyTopHeader.hasAttribute('is-mobile')) {
+        console.log('do mobile stuff');
+      } else {
+        let mainMenuToggle = event.target.shadowRoot.querySelector('.menu--main-group__toggle') as HTMLElement;
+        let mainMenuDropdown = event.target.shadowRoot.querySelector('.menu--main-group__dropdown') as HTMLElement;
+        let mainMenuList = event.target.shadowRoot.querySelector('.list') as HTMLElement;
+        if (mainMenuDropdown && mainMenuList && mainMenuToggle) {
+          let rectHeader = hyTopHeader.getBoundingClientRect();
+          let rectMenuToggle = mainMenuToggle.getBoundingClientRect();
+          mainMenuDropdown.style.top = `${rectHeader.height}px`;
 
-        mainMenuList.style.left = `${rectMenuToggle.left}px`;
+          mainMenuList.style.left = `${rectMenuToggle.left}px`;
+        }
       }
     }
 
@@ -54,7 +58,41 @@ export class HyMenuMainGroup {
     const white = 'var(--grayscale-white)';
 
     return this.isMobile ? (
-      <div>Mobile Main Menu in Groups</div>
+      <Host
+        class={{
+          'menu--main-group--mobile': true,
+          'menu--main-group--mobile__is-open': this.isMenuOpen,
+        }}
+      >
+        <button
+          class={{
+            'menu--main-group__mobile-toggle': true,
+            'is-open': this.isMenuOpen,
+          }}
+        >
+          <hy-icon icon={'hy-icon-slim-hamburger-menu'} size={20} fill={white} />
+        </button>
+        <nav
+          role="navigation"
+          class={{
+            'menu--main-group__dropdown--mobile': true,
+            'is-open': this.isMenuOpen,
+          }}
+        >
+          <div class="list">
+            {this._dataMainMenu.map((item) => {
+              return (
+                <a href={item.url} class={{'menu-main-link': true}}>
+                  <span class="heading-icon">
+                    <hy-icon icon={'hy-icon-caret-right'} size={10} fill={white} />
+                  </span>
+                  <span class={'menu--main-group__label'}>{item.label}</span>
+                </a>
+              );
+            })}
+          </div>
+        </nav>
+      </Host>
     ) : (
       <Host
         class={{
diff --git a/src/components/hy-menu-main-group/readme.md b/src/components/navigation/hy-menu-main-group/readme.md
similarity index 91%
rename from src/components/hy-menu-main-group/readme.md
rename to src/components/navigation/hy-menu-main-group/readme.md
index b3a61124..5211b414 100644
--- a/src/components/hy-menu-main-group/readme.md
+++ b/src/components/navigation/hy-menu-main-group/readme.md
@@ -13,11 +13,11 @@
 
 ### Used by
 
-- [hy-site-header](../site-header)
+- [hy-site-header](../../site-header)
 
 ### Depends on
 
-- [hy-icon](../icon)
+- [hy-icon](../../icon)
 
 ### Graph
 
diff --git a/src/components/site-header/readme.md b/src/components/site-header/readme.md
index e17f9cc8..1c9f53a4 100644
--- a/src/components/site-header/readme.md
+++ b/src/components/site-header/readme.md
@@ -36,7 +36,7 @@
 ### Depends on
 
 - [hy-site-logo](site-logo)
-- [hy-menu-main-group](../hy-menu-main-group)
+- [hy-menu-main-group](../navigation/hy-menu-main-group)
 - [hy-menu-language](../navigation/menu-language)
 - [hy-site-search](site-search)
 - [hy-icon](../icon)
diff --git a/src/components/site-header/site-header.scss b/src/components/site-header/site-header.scss
index 26a7e6e4..b19990f7 100644
--- a/src/components/site-header/site-header.scss
+++ b/src/components/site-header/site-header.scss
@@ -92,6 +92,12 @@
     bottom: 0;
     left: 0;
   }
+
+  .menu--secondary--group {
+    display: flex;
+    justify-content: center;
+    align-items: center;
+  }
 }
 
 .hy-site-header__logo-container {
diff --git a/src/components/site-header/site-header.tsx b/src/components/site-header/site-header.tsx
index e4e26ab7..a4bf9ff3 100644
--- a/src/components/site-header/site-header.tsx
+++ b/src/components/site-header/site-header.tsx
@@ -444,13 +444,11 @@ export class SiteHeader {
           <header class={classAttributes.join(' ')}>
             <div class={{'hy-backdrop': true, 'is-active': this.isMenuOpen}} />
             {this.isGroup && (
-              <div class="hy-site-header__content-top">
+              <div class="hy-site-header__content-top" is-mobile={true}>
                 <div class={'hy-site-header__logo-container group '}>
                   <hy-site-logo size={logoSizeGroup} color={logoColorGroup} url={this.siteUrl} label={this.siteLabel} />
                 </div>
 
-                <hy-menu-main-group is-mobile={true} data-main-menu={this.dataMainMenuLinks} />
-
                 <div class={'menu--secondary menu--secondary--group'}>
                   <hy-site-search
                     class={'menu--secondary__item group'}
@@ -462,6 +460,7 @@ export class SiteHeader {
                     search-labels={this.dataSiteSearchLabels}
                     search-tools={this.dataSearchTools}
                   />
+                  <hy-menu-main-group is-mobile={true} data-main-menu={this.dataMainMenuLinks} />
                 </div>
               </div>
             )}
-- 
GitLab