123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600 |
- .nav-wrapper {
- position: relative;
- margin-left: -$menu-width;
- width: $menu-width;
- float: left;
- display: flex;
- flex-direction: column;
- height: 100%;
- background: $nav-grey-1;
- .inner {
- background: $nav-grey-1;
- border-right: 1px solid transparent; // ensure visible separation in Windows High Contrast mode
- @include media-breakpoint-up(sm) {
- // On medium, make it possible for the nav links to scroll.
- display: flex;
- flex-flow: column nowrap;
- }
- }
- }
- .nav-toggle.icon {
- position: absolute;
- padding-left: $mobile-nice-padding;
- cursor: pointer;
- border: 1px solid transparent; // ensure visible separation in Windows High Contrast mode
- background-color: transparent;
- &:before {
- position: relative;
- top: 3px;
- font-size: 40px;
- color: $color-white;
- line-height: 40px;
- content: '\2261';
- }
- }
- .nav-main {
- ul,
- li {
- margin: 0;
- padding: 0;
- list-style-type: none;
- }
- li {
- @include transition(border-color 0.2s ease);
- position: relative;
- }
- a {
- @include transition(border-color 0.2s ease);
- -webkit-font-smoothing: auto;
- text-decoration: none;
- display: block;
- color: $color-menu-text;
- padding: 0.8em 1.7em;
- font-size: 1em;
- font-weight: normal;
- // Note, font-weights lower than normal,
- // and font-size smaller than 1em (80% ~= 12.8px),
- // makes the strokes thinner than 1px on non-retina screens
- // making the text semi-transparent
- &:hover,
- &:focus {
- background-color: $nav-item-hover-bg;
- color: $color-white;
- text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
- }
- }
- .menu-item a {
- position: relative;
- white-space: nowrap;
- border-left: 3px solid transparent;
- &:before {
- font-size: 1rem;
- vertical-align: -15%;
- margin-right: 0.5em;
- }
- // only really used for spinners and settings menu
- &:after {
- font-size: 1.5em;
- margin: 0;
- position: absolute;
- right: 0.5em;
- top: 0.5em;
- margin-top: 0;
- }
- }
- .menu-active {
- background: $nav-item-active-bg;
- text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
- > a {
- border-left-color: $color-salmon;
- color: $color-white;
- }
- }
- .nav-footer-submenu {
- a {
- border-left: 3px solid transparent;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- &:before {
- font-size: 1rem;
- margin-right: 0.5em;
- vertical-align: -10%;
- }
- }
- }
- .account {
- display: none;
- }
- *:focus {
- @include show-focus-outline-inside;
- }
- }
- .icon--menuitem {
- width: 1.25em;
- height: 1.25em;
- margin-right: 0.5em;
- vertical-align: text-top;
- }
- .icon--submenu-trigger {
- // The menus are collapsible on desktop only.
- display: none;
- @include media-breakpoint-up(sm) {
- display: block;
- width: 1.5em;
- height: 1.5em;
- position: absolute;
- top: 0.8125em;
- right: 0.5em;
- @include transition(transform 0.3s ease);
- .menu-item.submenu-active & {
- transform-origin: 50% 50%;
- transform: rotate(180deg);
- }
- }
- }
- .icon--submenu-header {
- display: block;
- width: 4rem;
- height: 4rem;
- margin: 0 auto 0.8em;
- opacity: 0.15;
- }
- .nav-submenu {
- background: $nav-submenu-bg;
- h2 {
- display: none;
- }
- .menu-item a {
- white-space: normal;
- padding: 0.9em 1.7em 0.9em 4.5em;
- &:before {
- margin-left: -1.5em;
- }
- .icon--menuitem {
- margin-left: -1.75em;
- }
- &:hover {
- background-color: rgba(100, 100, 100, 0.2);
- }
- }
- li {
- border: 0;
- }
- &__footer {
- margin: 0;
- padding: 0.9em 1.7em;
- text-align: center;
- color: $color-menu-text;
- }
- }
- .nav-search {
- position: relative;
- padding: 0 1em 1em;
- margin: 0;
- width: 100%;
- box-sizing: border-box;
- label {
- @include visuallyhidden();
- }
- input,
- button {
- border-radius: 0;
- font-size: 1em;
- border: 0;
- }
- input {
- cursor: pointer;
- border: 1px solid $nav-search-border;
- background-color: $nav-search-bg;
- color: $nav-search-color;
- padding: 0.8em 2.5em 0.8em 1em;
- font-weight: 600;
- &:hover {
- background-color: $nav-search-hover-bg;
- }
- &:active,
- &:focus {
- background-color: $nav-search-focus-bg;
- color: $nav-search-focus-color;
- }
- &::placeholder {
- color: $color-menu-text;
- }
- }
- button {
- background-color: transparent;
- position: absolute;
- top: 0;
- right: 1em;
- bottom: 0;
- padding: 0;
- width: 3em;
- &:hover {
- background-color: $nav-item-hover-bg;
- }
- &:active {
- background-color: $nav-item-active-bg;
- }
- &:before {
- font-family: wagtail;
- font-weight: 200;
- text-transform: none;
- content: map-get($icons, 'search');
- display: block;
- height: 100%;
- line-height: 3.3em;
- padding: 0 1em;
- }
- }
- }
- // Navigation open condition
- body.nav-open {
- .wrapper {
- transform: translate3d($menu-width, 0, 0);
- }
- .content-wrapper {
- position: fixed;
- }
- footer {
- bottom: 1px;
- }
- }
- // Explorer open condition, widens navigation area
- body.explorer-open {
- .wrapper {
- transform: translate3d($menu-width-max, 0, 0);
- }
- .nav-wrapper {
- margin-left: -$menu-width-max;
- width: $menu-width-max;
- }
- .nav-main {
- display: none;
- }
- }
- @include media-breakpoint-up(sm) {
- .wrapper,
- body.nav-open .wrapper {
- transform: none;
- padding-left: $menu-width;
- @include transition(padding-left $menu-transition-duration ease);
- }
- body.sidebar-collapsed .wrapper {
- padding-left: $menu-width-slim;
- }
- .nav-wrapper {
- // height and position necessary to force it to 100% height of screen (with some JS help)
- position: absolute;
- left: 0;
- height: 100%;
- margin-left: 0;
- .inner {
- height: 100%;
- position: fixed;
- width: $menu-width;
- z-index: $nav-wrapper-inner-z-index;
- }
- }
- .nav-toggle {
- display: none;
- }
- .nav-main {
- overflow: auto;
- margin-bottom: $nav-footer-closed-height;
- @include transition(margin-bottom 0.2s ease);
- .nav-footer {
- position: fixed;
- width: $menu-width;
- bottom: 0;
- background-color: $nav-footer-submenu-bg;
- }
- .nav-footer-submenu {
- @include transition(max-height 0.2s ease);
- max-height: 0;
- }
- &--open-footer {
- margin-bottom: $nav-footer-open-height;
- .nav-footer-submenu {
- max-height: $nav-footer-submenu-height;
- }
- }
- .account {
- @include clearfix;
- background: $nav-footer-account-bg;
- color: $color-menu-text;
- text-transform: uppercase;
- display: block;
- cursor: pointer;
- &:hover {
- background-color: rgba(100, 100, 100, 0.15);
- color: $color-white;
- text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
- }
- .avatar {
- float: left;
- margin-right: 0.9em;
- &:before {
- color: inherit;
- border-color: inherit;
- }
- }
- em {
- box-sizing: border-box;
- padding-right: 1.8em;
- margin-top: 1.2em;
- font-style: normal;
- font-weight: 700;
- width: 110px;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- float: left;
- &:after {
- font-size: 1.5em;
- position: absolute;
- right: 0.25em;
- }
- }
- }
- }
- .nav-submenu {
- transform: translate3d(0, 0, 0);
- position: fixed;
- height: 100vh;
- width: 0;
- padding: 0;
- top: 0;
- left: $menu-width;
- overflow: hidden;
- display: flex;
- flex-direction: column;
- h2,
- &__list {
- width: $menu-width;
- }
- h2 {
- display: block;
- padding: 0.2em 0;
- font-size: 1.2em;
- font-weight: 500;
- text-transform: none;
- text-align: center;
- color: $color-menu-text;
- &:before {
- font-size: 4em;
- display: block;
- text-align: center;
- margin: 0 0 0.2em;
- width: 100%;
- opacity: 0.15;
- }
- }
- &__list {
- overflow: auto;
- flex-grow: 1;
- }
- &__footer {
- line-height: $nav-footer-closed-height;
- padding: 0;
- }
- }
- li.submenu-active {
- background: $nav-submenu-bg;
- > a {
- text-shadow: -1px -1px 0 rgba(0, 0, 0, 0.3);
- &:hover {
- background-color: transparent;
- }
- }
- .nav-submenu {
- @include transition(width 0.2s ease);
- box-shadow: 2px 0 2px rgba(0, 0, 0, 0.35);
- width: $menu-width;
- a {
- padding-left: 3.5em;
- }
- }
- }
- body.nav-open {
- .content-wrapper {
- position: relative;
- }
- }
- body.explorer-open {
- overflow: hidden;
- &:after {
- opacity: 1;
- visibility: visible;
- }
- .wrapper {
- transform: none;
- }
- .nav-wrapper {
- margin-left: 0;
- width: $menu-width;
- }
- .nav-main {
- display: block;
- }
- }
- }
- ///////////////
- // Z-indexes //
- ///////////////
- .nav-toggle {
- z-index: 5;
- }
- .nav-wrapper {
- z-index: 2;
- }
- // Avoiding a stacking context for the content-wrapper saves us a world
- // of pain when dealing with overlays that are appended to the end of
- // <body>, eg Hallo & calendars. As long as content-wrapper remains floated,
- // the z-index shouldn't be required.
- // .content-wrapper {
- // z-index: 3;
- // }
- .nav-submenu {
- z-index: 6;
- }
- footer,
- .logo {
- z-index: 100;
- }
- @include media-breakpoint-up(sm) {
- .nav-main {
- .nav-footer {
- z-index: 2;
- }
- }
- .nav-submenu {
- z-index: 500;
- }
- // Allows overspill of messages banner onto left menu, but also explorer
- // to spill over main content
- .nav-wrapper {
- z-index: auto;
- }
- // footer is z-index: 100, so ensure the navigation sits on top of it.
- .nav-wrapper.submenu-active {
- z-index: 200;
- }
- }
- ///////////////////////
- // Media query hacks //
- ///////////////////////
- // to detect IE10+ which doesn't support 3d transform of static elements and needs a fallback
- // stylelint-disable scss/media-feature-value-dollar-variable
- @media all and (-ms-high-contrast: none),
- all and (-ms-high-contrast: active) {
- .wrapper {
- @include transition(left 0.2s ease);
- left: 0;
- }
- body.nav-open {
- .wrapper {
- transform: none;
- left: $menu-width;
- position: relative;
- }
- }
- body.explorer-open {
- .wrapper {
- transform: none;
- left: $menu-width-max;
- }
- .nav-wrapper {
- width: $menu-width-max;
- }
- }
- }
- @media all and (min-width: breakpoint-min(sm)) and (-ms-high-contrast: none),
- all and (min-width: breakpoint-min(sm)) and (-ms-high-contrast: active) {
- body.explorer-open {
- .wrapper {
- left: 0;
- }
- .nav-wrapper {
- width: $menu-width;
- }
- }
- }
|