From cb4403d71fe3dfd63c3a8c45e375306d910d4f09 Mon Sep 17 00:00:00 2001 From: Tuukka Turu <tuukka.turu@druid.fi> Date: Fri, 5 Mar 2021 12:34:06 +0200 Subject: [PATCH] Mobile styling --- src/components.d.ts | 14 +-- .../hy-menu-main-group.scss | 88 ++++++++++++++++--- .../hy-menu-main-group/hy-menu-main-group.tsx | 38 ++++---- .../navigation/hy-menu-main-group/readme.md | 18 ++-- src/components/navigation/menu/menu.scss | 5 ++ src/components/site-header/site-header.scss | 8 +- src/components/site-header/site-header.tsx | 14 ++- .../site-header/site-search/site-search.scss | 3 + 8 files changed, 135 insertions(+), 53 deletions(-) diff --git a/src/components.d.ts b/src/components.d.ts index e42969d1..40e55d71 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/navigation/hy-menu-main-group/hy-menu-main-group'; +import {DonateLink, 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'; @@ -628,10 +628,10 @@ export namespace Components { } interface HyMenuMainGroup { dataMainMenu: MainMenu[] | string; + donate: DonateLink[]; isMobile: boolean; - logoLabelGroup?: string; - logoSizeGroup?: any; - logoUrlGroup?: string; + logoLabel?: string; + logoUrl?: string; siteLabel?: string; siteUrl?: string; } @@ -2013,10 +2013,10 @@ declare namespace LocalJSX { } interface HyMenuMainGroup { dataMainMenu?: MainMenu[] | string; + donate?: DonateLink[]; isMobile?: boolean; - logoLabelGroup?: string; - logoSizeGroup?: any; - logoUrlGroup?: string; + logoLabel?: string; + logoUrl?: string; onUniversityMainMenuToggled?: (event: CustomEvent<any>) => void; siteLabel?: string; siteUrl?: string; diff --git a/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss index 5fbcb1d6..da533272 100644 --- a/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss +++ b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.scss @@ -176,12 +176,8 @@ align-items: center; display: flex; flex-flow: row; - margin-left: 28px; position: relative; - @include breakpoint($narrow) { - margin-left: 32px; - } @include breakpoint($wide) { margin-left: 40px; } @@ -191,29 +187,94 @@ border: none; background: transparent; padding: 15px 28px 15px 15px; + + &:hover { + cursor: pointer; + } } .menu--main-group__dropdown__top { + display: flex; + flex-direction: row; + justify-content: space-between; + margin-bottom: 23px; +} + +.menu--main-group__dropdown__close { + border: none; + background-color: transparent; + padding: 0; + margin: 0; + + &:hover { + cursor: pointer; + } +} + +.menu--main-group__logo-container .hy-site-logo__label.group { + max-width: 250px; } .menu--main-group__dropdown__items { + display: flex; + flex-direction: column; + + .menu-main-link { + @include font-size(15px, 20px); + + background-color: var(--grayscale-dark-text); + color: var(--grayscale-white); + font-family: var(--main-font-family); + letter-spacing: -0.5px; + margin-bottom: 8px; + padding: 14px 20px; + text-decoration: none; + width: 100%; + + &:hover { + text-decoration: underline; + } + } } .menu--main-group__dropdown__donate { + display: flex; + flex-direction: row; + justify-content: center; + background-color: var(--grayscale-dark-text); + position: fixed; + bottom: 0; + margin-left: -20px; + width: 100%; + + .hy-link__donate.group { + @include font-size(16px, 16px); + @include font-weight($semibold); + + display: flex; + color: var(--grayscale-white); + font-family: var(--main-font-family); + margin: 20px auto 16px auto; + text-decoration: none; + + .hy-link__donate__label { + margin-left: 6px; + } + } } .menu--main-group__dropdown--mobile { - place-items: stretch; - //inset: 0px; - display: flex; - -webkit-box-orient: vertical; -webkit-box-direction: normal; - flex-direction: column; - justify-items: space-between; + -webkit-box-orient: vertical; background-color: var(--grayscale-black); bottom: 0px; + display: flex; + flex-direction: column; + justify-items: space-between; + max-width: 350px; overflow: hidden; padding: 0px; + place-items: stretch; position: fixed; right: 0px; top: 0px; @@ -223,13 +284,12 @@ width: 0px; &.is-open { - padding: 20px; + padding: 50px 20px 20px; transform: translateX(0px); + transition: transform 0.3s cubic-bezier(0, 0, 0.3, 1); visibility: visible; width: 90%; - z-index: 100; - padding-top: 50px; - transition: transform 0.3s cubic-bezier(0, 0, 0.3, 1); + z-index: 101; &::after { opacity: 1; diff --git a/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx index 115f14bd..fe3a5917 100644 --- a/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx +++ b/src/components/navigation/hy-menu-main-group/hy-menu-main-group.tsx @@ -4,9 +4,13 @@ export interface MainMenu { menuLinkId: string; } +export interface DonateLink { + url: string; + label: string; +} + import {Component, Host, h, Element, Prop, State, Watch, Listen, Event, EventEmitter} from '@stencil/core'; import {ColorVariant, SiteLogoSize} from '../../../utils/utils'; -import {DonateLink} from '../../site-header/site-header'; let keys = { enter: 'Enter', @@ -21,13 +25,12 @@ export class HyMenuMainGroup { @Element() el: HTMLElement; @Prop() dataMainMenu: MainMenu[] | string; @Prop() isMobile: boolean = false; - @Prop() logoUrlGroup?: string; - @Prop() logoSizeGroup?: any; - @Prop() logoLabelGroup?: string; + @Prop() logoUrl?: string; + @Prop() logoLabel?: string; @Prop() siteLabel?: string; @Prop() siteUrl?: string; + @Prop() donate: DonateLink[]; @State() isMenuOpen: boolean = false; - private donateLink: DonateLink[]; @Event() universityMainMenuToggled: EventEmitter; @@ -154,32 +157,31 @@ export class HyMenuMainGroup { }} > <div class="menu--main-group__dropdown__top"> - <hy-site-logo - is-group={true} - size={logoSizeGroup} - color={logoColorGroup} - url={this.siteUrl} - label={this.siteLabel} - /> + <div class={'menu--main-group__logo-container'} id={'menu-logo'}> + <hy-site-logo + is-group={true} + size={logoSizeGroup} + color={logoColorGroup} + url={this.siteUrl} + label={this.siteLabel} + /> + </div> <button class="menu--main-group__dropdown__close" onClick={() => this.isMenuOpen == false}> - CLOSE ME + <hy-icon icon={'hy-icon-remove'} size={20} fill={white} /> </button> </div> <div class="menu--main-group__dropdown__items"> {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> <div class="menu--main-group__dropdown__donate"> - {this.donateLink && - this.donateLink.map((i) => { + {this.donate && + this.donate.map((i) => { return ( <a class={'menu--secondary__item hy-link__donate group'} href={i.url}> <hy-icon icon={'hy-icon-heart-support'} size={14} fill={logoColorGroup} /> diff --git a/src/components/navigation/hy-menu-main-group/readme.md b/src/components/navigation/hy-menu-main-group/readme.md index dd21c99c..122597d8 100644 --- a/src/components/navigation/hy-menu-main-group/readme.md +++ b/src/components/navigation/hy-menu-main-group/readme.md @@ -4,15 +4,15 @@ ## Properties -| Property | Attribute | Description | Type | Default | -| ---------------- | ------------------ | ----------- | ---------------------- | ----------- | -| `dataMainMenu` | `data-main-menu` | | `MainMenu[] \| string` | `undefined` | -| `isMobile` | `is-mobile` | | `boolean` | `false` | -| `logoLabelGroup` | `logo-label-group` | | `string` | `undefined` | -| `logoSizeGroup` | `logo-size-group` | | `any` | `undefined` | -| `logoUrlGroup` | `logo-url-group` | | `string` | `undefined` | -| `siteLabel` | `site-label` | | `string` | `undefined` | -| `siteUrl` | `site-url` | | `string` | `undefined` | +| Property | Attribute | Description | Type | Default | +| -------------- | ---------------- | ----------- | ---------------------- | ----------- | +| `dataMainMenu` | `data-main-menu` | | `MainMenu[] \| string` | `undefined` | +| `donate` | -- | | `DonateLink[]` | `undefined` | +| `isMobile` | `is-mobile` | | `boolean` | `false` | +| `logoLabel` | `logo-label` | | `string` | `undefined` | +| `logoUrl` | `logo-url` | | `string` | `undefined` | +| `siteLabel` | `site-label` | | `string` | `undefined` | +| `siteUrl` | `site-url` | | `string` | `undefined` | ## Events diff --git a/src/components/navigation/menu/menu.scss b/src/components/navigation/menu/menu.scss index 8ea72d4e..5d38d130 100644 --- a/src/components/navigation/menu/menu.scss +++ b/src/components/navigation/menu/menu.scss @@ -14,6 +14,11 @@ position: absolute; right: 0; top: 0; + z-index: 99; + + &.is-open { + z-index: 101; + } } &--desktop { diff --git a/src/components/site-header/site-header.scss b/src/components/site-header/site-header.scss index a47d2931..241bd7a9 100644 --- a/src/components/site-header/site-header.scss +++ b/src/components/site-header/site-header.scss @@ -74,7 +74,7 @@ flex-flow: row; place-content: center space-between; position: relative; - z-index: 100; + z-index: 99; @include breakpoint($narrow) { margin: 0 auto; @@ -161,7 +161,11 @@ .hy-site-header__menu-container { align-items: center; display: flex; - z-index: 510; + z-index: 99; + + &.is-open { + z-index: 101; + } } .hy-site-header__panel { diff --git a/src/components/site-header/site-header.tsx b/src/components/site-header/site-header.tsx index cf04fdf4..433c6922 100644 --- a/src/components/site-header/site-header.tsx +++ b/src/components/site-header/site-header.tsx @@ -452,7 +452,7 @@ export class SiteHeader { <div class={'menu--secondary menu--secondary--group'}> <hy-site-search class={'menu--secondary__item group'} - size={14} + size={18} color={logoColorGroup} is-group={true} show-label={true} @@ -460,7 +460,15 @@ export class SiteHeader { search-labels={this.dataSiteSearchLabels} search-tools={this.dataSearchTools} /> - <hy-menu-main-group is-mobile={true} data-main-menu={this.dataMainMenuLinks} /> + <hy-menu-main-group + site-label={this.siteLabel} + site-url={this.siteUrl} + logo-label={this.logoLabel} + logo-url={this.logoUrl} + is-mobile={true} + donate={this.donateLink} + data-main-menu={this.dataMainMenuLinks} + /> </div> </div> )} @@ -475,7 +483,7 @@ export class SiteHeader { )} </div> - <div class={'hy-site-header__menu-container'}> + <div class={{'hy-site-header__menu-container': true, 'is-open': this.isMenuOpen}}> {!this.isGroup && ( <hy-site-search class={'menu--secondary__item'} diff --git a/src/components/site-header/site-search/site-search.scss b/src/components/site-header/site-search/site-search.scss index 177a4028..bf1d97e7 100644 --- a/src/components/site-header/site-search/site-search.scss +++ b/src/components/site-header/site-search/site-search.scss @@ -117,10 +117,13 @@ .button--search__label { color: var(--grayscale-white); + display: none; @include breakpoint($wide) { @include font-size(14px, 24px); @include font-weight($semibold); + + display: block; letter-spacing: -0.5px; } } -- GitLab