diff --git a/source/_patterns/03-layouts/navigation/_navigation.scss b/source/_patterns/03-layouts/navigation/_navigation.scss new file mode 100644 index 0000000000000000000000000000000000000000..89bbcf8b85f6bac6ae29e09f0fb129f4bea9aa5e --- /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 7c9083e88064cd2775f0764efff01111562576fb..cfdc77ca40f40d4d8bf4c8292fc207277f91b2b4 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 fe21bd3f98ec2463f04b872c1b93c9e48bf489e0..13197b224ea0cabc155a430316f579a8ab8fd96c 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 8d867322c24bec9126559adbc99722002abc9c93..ccd5864730f995ceb49477e275570b88375a9f73 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 b5464326a4975c80ce0cf9279d686166a30ba01b..ecaf45341b5373c781b700b059717ad23b18a4e6 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 2b0b64140f558b036118eb357deb1645d1b66798..089a98267260e9f05ba1c466f234e72a8e686bcd 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 Binary files /dev/null and b/source/images/icons/dots.png differ diff --git a/source/images/icons/home.png b/source/images/icons/home.png new file mode 100644 index 0000000000000000000000000000000000000000..4f71ffd4fa973afb1325f37fbfda24b7caa77e3a Binary files /dev/null and b/source/images/icons/home.png differ