From 57553e54bfc8ec379ed4b5ea27c324f22e9901bf Mon Sep 17 00:00:00 2001
From: ebremner <ebremner@uwaterloo.ca>
Date: Mon, 23 Dec 2019 14:30:56 -0500
Subject: [PATCH] ISTWCMS-3380: adding horiztonal navigation (not completed)

---
 .../03-layouts/navigation/_navigation.scss    | 171 ++++++++++++++++++
 .../03-layouts/navigation/navigation.twig     |  37 +++-
 .../03-layouts/navigation/navigation.yml      | 123 +++++++++++++
 .../site-container/site-container.twig        |   3 +
 .../site-container/site-container.yml         |  89 ++++++++-
 source/_patterns/04-components/menu/menu.twig |  33 +++-
 source/images/icons/dots.png                  | Bin 0 -> 215 bytes
 source/images/icons/home.png                  | Bin 0 -> 322 bytes
 8 files changed, 449 insertions(+), 7 deletions(-)
 create mode 100644 source/_patterns/03-layouts/navigation/_navigation.scss
 create mode 100644 source/images/icons/dots.png
 create mode 100644 source/images/icons/home.png

diff --git a/source/_patterns/03-layouts/navigation/_navigation.scss b/source/_patterns/03-layouts/navigation/_navigation.scss
new file mode 100644
index 00000000..89bbcf8b
--- /dev/null
+++ b/source/_patterns/03-layouts/navigation/_navigation.scss
@@ -0,0 +1,171 @@
+.has-submenu:hover {
+  .menu__subnav {
+    display: block;
+  }
+}
+
+.uw-main-nav {
+  background-color: #000;
+  display: block;
+  width: 100%;
+
+  .menu--main .menu__subnav .menu__link:hover {
+    background-color: $uw-black;
+    color: $uw-gold;
+  }
+
+  &__wrapper {
+    display: grid;
+    grid-template-columns: 24px auto 30px;
+    margin-left: auto;
+    margin-right: auto;
+    max-width: 63rem;
+  }
+
+  &__home {
+    background: url('../../source/images/icons/home.png') 0 50% no-repeat;
+    grid-column: 1 / 2;
+  }
+
+  &__links {
+    grid-template-columns: 2 / 3;
+    padding: 0 1rem;
+
+    a {
+      color: $uw-white;
+
+      &:hover {
+        color: $uw-gold;
+      }
+    }
+
+    .menu--main {
+      display: flex;
+      flex-wrap: nowrap;
+
+      > .menu__item {
+        > .menu__link {
+          padding: 1rem 0;
+        }
+      }
+
+      .menu__item {
+        flex: 1;
+        text-align: center;
+      }
+
+      .menu__link {
+        padding: 1rem 0;
+      }
+
+      .menu__subnav {
+        background-color: $uw-black;
+        position: inherit;
+
+        &--outside-wrapper {
+          background-color: transparent;
+          left: 0;
+          position: fixed;
+          width: 100%
+        }
+
+        &--inside-wrapper {
+          background-color: $uw-black;
+          margin-left: auto;
+          margin-right: auto;
+          max-width: 63rem;
+        }
+
+        .menu__subnav:hover {
+          display: block;
+        }
+
+        .menu__link {
+          text-align: left;
+          width: 100%;
+        }
+
+        .has-children {
+          .menu__subnav li {
+            padding-left: 1.5rem;
+          }
+        }
+      }
+    }
+
+    .has-submenu > .menu__subnav {
+      background: transparent;
+      margin: 0 -1000em; /* trick from css-tricks comments */
+      padding: 0 1000em; /* trick from css-tricks comments */
+      z-index: 10000;
+    }
+
+    .has-submenu {
+      > a::after {
+        border: solid $uw-white;
+        border-width: 0 3px 3px 0;
+        content: '';
+        display: inline-block;
+        padding: 3px;
+        -webkit-transform: rotate(45deg) translateY(-5px);
+        transform: rotate(45deg) translateY(-5px);
+      }
+    }
+  }
+
+  &__more {
+    background: url('../../source/images/icons/dots.png') 0 50% no-repeat;
+    background-position: center;
+    grid-column: 3 / 4;
+    position: relative;
+
+    &:hover {
+      .menu--main-more {
+        display: block;
+      }
+    }
+
+    .menu--main-more {
+      background: transparent;
+      display: none;
+      margin: 0 -1000em; /* trick from css-tricks comments */
+      padding: 0 1000em; /* trick from css-tricks comments */
+      z-index: 10000;
+    }
+
+    .menu__subnav {
+
+      &--outside-wrapper {
+        background-color: transparent;
+        left: 0;
+        position: fixed;
+        width: 100%;
+        z-index: 10000;
+      }
+
+      &--inside-wrapper {
+        background-color: $uw-black;
+        margin-left: auto;
+        margin-right: auto;
+        margin-top: 3rem;
+        max-width: 63rem;
+        padding: 1rem;
+
+        li {
+          padding: 1rem 0;
+        }
+
+        a {
+          color: $uw-white;
+          height: 100%;
+          text-decoration: none;
+          width: 100%;
+
+          &:hover {
+            color: $uw-gold;
+          }
+        }
+      }
+    }
+  }
+}
diff --git a/source/_patterns/03-layouts/navigation/navigation.twig b/source/_patterns/03-layouts/navigation/navigation.twig
index 7c9083e8..cfdc77ca 100644
--- a/source/_patterns/03-layouts/navigation/navigation.twig
+++ b/source/_patterns/03-layouts/navigation/navigation.twig
@@ -1,6 +1,33 @@
-<nav class="uw-main-navigation">
-  {% include '@components/menu/menu.twig' with {
-    'menu_name': 'main',
-    'items': items
-  } %}
+<nav class="uw-main-nav">
+  <div class="uw-main-nav__wrapper">
+    <div class="uw-main-nav__home">
+      <a href="/home" class="uw-site-home__link">
+        <span class="off-screen">Home</span>
+      </a>
+    </div>
+    <div class="uw-main-nav__links">
+      {% if items|length > 5 %}
+        {% set main_links = items|slice(1, 5) %}
+      {% else %}
+        {% set main_links = items %}
+      {% endif %}
+      {% include '@components/menu/menu.twig' with {
+        'menu_name': 'main',
+        'items': main_links
+      } %}
+    </div>
+    {% if items|length > 5 %}
+      <div class="uw-main-nav__more">
+        <ul class="menu menu--main-more">
+          <li class="menu__item has-submenu">
+            {% set more_links = items|slice(6, item.length) %}
+            {% include '@components/menu/menu.twig' with {
+              'menu_name': 'main-more',
+              'items': more_links
+            } %}
+          </li>
+        </ul>
+      </div>
+    {% endif %}
+  </div>
 </nav>
\ No newline at end of file
diff --git a/source/_patterns/03-layouts/navigation/navigation.yml b/source/_patterns/03-layouts/navigation/navigation.yml
index fe21bd3f..13197b22 100644
--- a/source/_patterns/03-layouts/navigation/navigation.yml
+++ b/source/_patterns/03-layouts/navigation/navigation.yml
@@ -28,7 +28,130 @@ items:
             attributes:
               class: ''
         in_active_trail: false
+        submenu:
+          - text: 'Link #1-2-1'
+            url: 'https://uwaterloo.ca/'
+            original_link:
+              options:
+                attributes:
+                  class: ''
+            in_active_trail: false
+          - text: 'Link #1-2-2'
+            url: 'https://uwaterloo.ca/'
+            original_link:
+              options:
+                attributes:
+              class: ''
+            in_active_trail: false
+          - text: 'Link #1-2-3'
+            url: 'https://uwaterloo.ca/'
+            original_link:
+              options:
+                attributes:
+                  class: ''
+            in_active_trail: false
+      - text: 'Link #1-3'
+        url: '/front'
+        original_link:
+          options:
+            attributes:
+              class: ''
+        in_active_trail: false
   - text: 'Link #2'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+  - text: 'Link #3'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+  - text: 'Link #4'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+    submenu:
+    - text: 'Link #4-1'
+      url: '/front'
+      original_link:
+        options:
+          attributes:
+            class: ''
+      in_active_trail: false
+    - text: 'Link #4-2'
+      url: '/front'
+      original_link:
+        options:
+          attributes:
+            class: ''
+      in_active_trail: false
+  - text: 'Link #5'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+  - text: 'Link #6'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+    options:
+      attributes:
+        class: ''
+    in_active_trail: false
+    submenu:
+      - text: 'Link #6-1'
+        url: 'https://uwaterloo.ca/'
+        original_link:
+          options:
+            attributes:
+              class: ''
+        in_active_trail: false
+      - text: 'Link #6-2'
+        url: 'https://uwaterloo.ca/'
+        original_link:
+          options:
+            attributes:
+              class: ''
+        in_active_trail: false
+        submenu:
+          - text: 'Link #6-2-1'
+            url: 'https://uwaterloo.ca/'
+            original_link:
+              options:
+                attributes:
+                  class: ''
+            in_active_trail: false
+          - text: 'Link #6-2-2'
+            url: 'https://uwaterloo.ca/'
+            original_link:
+              options:
+                attributes:
+                  class: ''
+            in_active_trail: false
+          - text: 'Link #6-2-3'
+            url: 'https://uwaterloo.ca/'
+            original_link:
+              options:
+                attributes:
+                  class: ''
+            in_active_trail: false
+      - text: 'Link #6-3'
+        url: 'https://uwaterloo.ca/'
+        original_link:
+          options:
+            attributes:
+              class: ''
+        in_active_trail: false
+  - text: 'Link #7'
     url: 'https://uwaterloo.ca/'
     original_link:
       options:
diff --git a/source/_patterns/03-layouts/site-container/site-container.twig b/source/_patterns/03-layouts/site-container/site-container.twig
index 8d867322..ccd58647 100644
--- a/source/_patterns/03-layouts/site-container/site-container.twig
+++ b/source/_patterns/03-layouts/site-container/site-container.twig
@@ -4,6 +4,9 @@
       'menu_name': header_menu_name,
       'items': header_items
     } %}
+    {% include "@layouts/navigation/navigation.twig" with {
+      'items': main_menu
+    }%}
     {% include "@layouts/footer/footer.twig" with {
       'menu_name': footer_menu_name,
       'items': footer_items
diff --git a/source/_patterns/03-layouts/site-container/site-container.yml b/source/_patterns/03-layouts/site-container/site-container.yml
index b5464326..ecaf4534 100644
--- a/source/_patterns/03-layouts/site-container/site-container.yml
+++ b/source/_patterns/03-layouts/site-container/site-container.yml
@@ -115,4 +115,91 @@ social_media:
       url: "https://www.instagram.com/uofwaterloo/"
     - text: "LinkedIn"
       url: "https://www.linkedin.com/edu/school?id=10875"
-social_media_placement: "global-site-footer"
\ No newline at end of file
+social_media_placement: "global-site-footer"
+main_menu:
+  - text: 'Home'
+    url: '/front'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+  - text: 'Link #1'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+    submenu:
+      - text: 'Link #1-1'
+        url: '/front'
+        original_link:
+          options:
+            attributes:
+              class: ''
+        in_active_trail: false
+      - text: 'Link #1-2'
+        url: '/front'
+        original_link:
+          options:
+            attributes:
+              class: ''
+        in_active_trail: false
+  - text: 'Link #2'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+  - text: 'Link #3'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+  - text: 'Link #4'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+    submenu:
+      - text: 'Link #4-1'
+        url: '/front'
+        original_link:
+          options:
+            attributes:
+              class: ''
+        in_active_trail: false
+      - text: 'Link #4-2'
+        url: '/front'
+        original_link:
+          options:
+            attributes:
+              class: ''
+        in_active_trail: false
+  - text: 'Link #5'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+  - text: 'Link #6'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
+  - text: 'Link #7'
+    url: 'https://uwaterloo.ca/'
+    original_link:
+      options:
+        attributes:
+          class: ''
+    in_active_trail: false
\ No newline at end of file
diff --git a/source/_patterns/04-components/menu/menu.twig b/source/_patterns/04-components/menu/menu.twig
index 2b0b6414..089a9826 100644
--- a/source/_patterns/04-components/menu/menu.twig
+++ b/source/_patterns/04-components/menu/menu.twig
@@ -18,9 +18,20 @@
         'class': additional_classes
       } %}
       <ul {{ add_attributes(additional_attributes) }}>
+
+      {% if menu_name == 'main-more' %}
+        <div class="menu__subnav--outside-wrapper ML0">
+        <div class="menu__subnav--inside-wrapper ML0">
+      {% endif %}
+
     {% else %}
       <ul class="menu menu__subnav">
+        {% if menu_level == 1 and menu_name != 'main-more' %}
+          <div class="menu__subnav--outside-wrapper ML1">
+          <div class="menu__subnav--inside-wrapper ML1">
+        {% endif %}
     {% endif %}
+
     {% for item in items %}
 
       {% set item_classes = ['menu__item'] %}
@@ -52,6 +63,20 @@
         {% set link_classes = link_classes|merge(link_class) %}
       {% endif %}
 
+      {% if item.below %}
+        {% if menu_level == 0 %}
+          {% set item_classes = item_classes|merge(['has-submenu']) %}
+        {% elseif menu_level <= 2 %}
+          {% set item_classes = item_classes|merge(['has-children']) %}
+        {% endif %}
+      {% elseif item.submenu %}
+        {% if menu_level == 0 %}
+          {% set item_classes = item_classes|merge(['has-submenu']) %}
+        {% elseif menu_level <= 2 %}
+          {% set item_classes = item_classes|merge(['has-children']) %}
+        {% endif %}
+      {% endif %}
+
       {% set additional_item_attributes = {
         'class': item_classes
       } %}
@@ -75,6 +100,12 @@
         {% endif %}
       </li>
     {% endfor %}
-    </ul>
+
+    {% if menu_level == 1 or menu_name == 'main-more' %}
+      </div></div></ul>
+    {% else %}
+      </ul>
+    {% endif %}
+
   {% endif %}
 {% endmacro %}
diff --git a/source/images/icons/dots.png b/source/images/icons/dots.png
new file mode 100644
index 0000000000000000000000000000000000000000..76509657bf49f826c06ed81c39df691197b8bf97
GIT binary patch
literal 215
zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3Y)RhkE)4%caKYZ?lYt^Vo-U3d
z9-VI|IdUCx;Bhs+J3a2ey6SJ!oUZHbnaFjHbsl%~m5YH|FW=dpNIEgwU%^n=iDM({
z0`@e8YTW}HR=+;W{XVAgpL0OZYvHRix;7Y?Gu}LN>y%iL*UISD)}6jfKmPf@`2Y6X
zGj6`@F3`DGsAurwkoUO*4^z)%Oh3-*ci?QcPIFk}?j24XimUE0K7Fww{*OccYoNOr
NJYD@<);T3K0RUg|Tc!X2

literal 0
HcmV?d00001

diff --git a/source/images/icons/home.png b/source/images/icons/home.png
new file mode 100644
index 0000000000000000000000000000000000000000..4f71ffd4fa973afb1325f37fbfda24b7caa77e3a
GIT binary patch
literal 322
zcmV-I0lof-P)<h;3K|Lk000e1NJLTq000;O000;W1^@s6;CDUv00006VoOIv0RI60
z0RN!9r;`8x0QX5mK~zYI?bER?1W^>m@x5ZVk!U0&It87EMoYyr>_aHF@CsTF;T3E{
ztD(}7P$?7&LbC-w%}LyB%+57-3gJtpIp_QS=iZq!oz9;U1{kyfPB`?bBg{+--otT#
zNAZYS@2BuN3<LOrU2NkiYG;^l3SYuyfF7`s_11A8y(=t#7rug<0Ni4=!gC#-JFJz$
zH{--`fyD{l1)PWX5nFZe9Xv<iwB-H9cRGp8EB304{cJ;^TL;gw-7Ggkf84N-x6Gsz
zo-uO0<6xq(>45S2Y-#wbdP*tPWvBDIPisI5wKkxMe*b{VEh<^n5>M+l_*bny0A*fN
UxssB4n*aa+07*qoM6N<$f^Zy<YXATM

literal 0
HcmV?d00001

-- 
GitLab