X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fmenu%2Fmenu.component.scss;h=f0919ed289d1930ec8eeb743948e74254a4e17e6;hb=cce70ae5ca3a2bfd893a7a8c457086151470de70;hp=8a4910605a88652c1b3892810acd6c60ca88981c;hpb=b33f657c304b77938c1f68164d8e754787f5aae5;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/menu/menu.component.scss b/client/src/app/menu/menu.component.scss index 8a4910605..f0919ed28 100644 --- a/client/src/app/menu/menu.component.scss +++ b/client/src/app/menu/menu.component.scss @@ -1,131 +1,426 @@ +@use 'sass:math'; +@use '_variables' as *; +@use '_mixins' as *; + +$menu-link-icon-size: 22px; +$menu-link-icon-margin-right: 18px; +$footer-links-base-opacity: .8; + +.menu-link { + @include disable-default-a-behaviour; + @include padding-left($menu-lateral-padding); + @include padding-right(20px); + + display: flex; + align-items: center; + + color: pvar(--menuForegroundColor); + cursor: pointer; + font-size: 16px; + white-space: normal; + word-break: break-word; + transition: background-color .1s ease-in-out; + line-height: $line-height-normal; + + &.active { + background-color: rgba(255, 255, 255, 0.15); + } + + &:hover, + &.focus-visible { + background-color: rgba(255, 255, 255, 0.1); + } + + my-global-icon { + @include apply-svg-color(#808080); + @include margin-right($menu-link-icon-margin-right); + + display: flex; + width: $menu-link-icon-size; + height: $menu-link-icon-size; + } +} + +.menu-wrapper { + position: fixed; + height: calc(100vh - #{$header-height}); + padding: 0; + width: $menu-width; + z-index: z(menu); + scrollbar-color: pvar(--actionButtonColor) pvar(--menuBackgroundColor); +} + menu { - background-color: $black-background; + @include ellipsis; + + background-color: pvar(--menuBackgroundColor); + color: pvar(--menuForegroundColor); + + display: flex; + flex-direction: column; + height: 100%; + width: 100%; margin: 0; padding: 0; - height: 100%; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - z-index: 1000; - color: $menu-color; - @media screen and (max-width: 550px) { - font-size: 90%; + &:focus, + &:hover { + overflow-y: auto; } - .logged-in-block { - height: 100px; - background-color: rgba(255, 255, 255, 0.15); + @media not all and (hover: hover) and (pointer: fine) { + overflow-y: auto; + } + + &.is-logged-in { + .panel-block { + margin-bottom: 20px; + } + + .block-title { + margin-bottom: 15px; + } + } +} + +.top-menu { + flex-grow: 1; + width: $menu-width; +} + +.logged-in-block { + margin-bottom: 20px; + background-color: rgba(255, 255, 255, 0.15); + + > div:first-child { + height: 80px; display: flex; align-items: center; - justify-content: center; - margin-bottom: 35px; + justify-content: left; + } +} - .logged-in-info { - flex-grow: 1; - margin-left: 40px; +my-notification { + @include margin-left(auto); + @include margin-right(15px); +} - .logged-in-username { - font-size: 16px; - font-weight: $font-semibold; +.logged-in-more { + @mixin display-hints($is-mobile: false) { + background-color: rgba(255, 255, 255, 0.15); + + @if $is-mobile { + .dropdown-toggle-indicator { + display: inherit !important; } - .logged-in-email { - font-size: 13px; - color: #C6C6C6; + .dropdown-toggle { + max-width: 88% !important; } } + } - .logged-in-more { - margin-right: 20px; + $main-radius: 25px; - .glyphicon { - cursor: pointer; - font-size: 18px; - } + @include margin-left(13px); + + flex: 1; + border-radius: $main-radius; + transition: all .1s ease-in-out; + cursor: pointer; + line-height: 1; + + &.show { + background-color: rgba(255, 255, 255, 0.2); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .325); + } + + &:hover { + @include display-hints; + } + + /* smartphones and touchscreens */ + @media (hover: none) and (pointer: coarse) { + @include display-hints($is-mobile: true); + + /* fill space when on mobile */ + max-width: calc(100% - 80px); + + .dropdown-toggle { + max-width: 100%; + } + + .logged-in-info { + max-width: calc(100% - 45px) !important; } } - .button-block { - margin: 30px 25px 35px 25px; + .dropdown-toggle-indicator { + position: relative; + width: 0; + display: none; - .login-button, .create-account-button { - font-weight: $font-semibold; - font-size: 15px; - height: $button-height; - line-height: $button-height; - width: 190px; - border-radius: 3px; - text-align: center; - - &.login-button { - background-color: $orange-color; - margin-bottom: 10px; + span { + position: absolute; + right: -35px; + top: -8px; + color: #808080; + width: $main-radius; + } + } + + .dropdown-toggle { + &::after { + border: 0; + } + } + + .dropdown-toggle:first-child { + display: flex; + align-items: center; + padding: 5px 7px; + border-radius: $main-radius; + } +} + +my-actor-avatar { + @include margin-right(10px); +} + +.logged-in-info { + max-width: 105px; + + flex-grow: 1; +} + +.logged-in-display-name, +.logged-in-username { + @include ellipsis; +} + +.logged-in-display-name { + @include disable-default-a-behaviour; + + font-size: 16px; + font-weight: $font-semibold; + color: pvar(--menuForegroundColor); +} + +.logged-in-username { + font-size: 13px; + color: #C6C6C6; + margin-top: 3px; +} + +.logged-in-menu { + display: flex; + flex-direction: column; + align-items: flex-start; + border-top: 1px solid var(--greyForegroundColor); + line-height: $line-height-normal; + + a { + $icon-size: 13px; + $additional-margin: math.div($menu-link-icon-size - $icon-size, 2); + + font-size: 14px; + width: 100%; + min-height: 35px; + + my-global-icon { + // Keep aligned with other icons + @include margin-left($additional-margin); + + width: $icon-size; + height: $icon-size; + } + + &.active, + &:hover, + &:focus-visible { + my-global-icon { + @include apply-svg-color(var(--menuForegroundColor)); } + } + + &.active { + $border-left-width: 4px; + + font-weight: $font-semibold; + border-left: $border-left-width solid var(--mainColor); - &.create-account-button { - background-color: rgba(255, 255, 255, 0.25); + my-global-icon { + @include margin-left($additional-margin - $border-left-width); } } } +} + +.login-buttons-block { + margin: 30px 25px 35px; + + > a { + display: block; + width: 100%; + + &:not(:last-child) { + margin-bottom: 10px; + } + } +} + +.create-account-button { + color: #fff; + background-color: rgba(255, 255, 255, 0.25); + + &:hover { + background-color: rgba(255, 255, 255, 0.28); + } +} + +.menu-block, +.footer-block { + margin-bottom: 15px; .block-title { + @include ellipsis; + @include margin-left(26px); + @include margin-right(30px); + text-transform: uppercase; font-weight: $font-bold; // Bold font-size: 13px; margin-bottom: 25px; } - .panel-block { - margin-bottom: 45px; - margin-left: 26px; - - a { - display: flex; - - .icon { - width: 22px; - height: 22px; - display: inline-block; - margin-right: 18px; - background-size: contain; - - &.icon-videos-trending { - position: relative; - top: -2px; - background-image: url('../../assets/menu/trending.svg'); - } - - &.icon-videos-recently-added { - width: 23px; - height: 23px; - position: relative; - top: -1px; - background-image: url('../../assets/menu/recently-added.svg'); - } - - &.icon-administration { - width: 23px; - height: 23px; - - background-image: url('../../assets/menu/administration.svg'); - } - } + a { + min-height: 40px; + } +} + +.footer { + width: $menu-width; + padding-bottom: 15px; +} + +.footer-bottom { + display: flex; + flex-direction: column; + padding: 0 $menu-lateral-padding; +} + +.footer-links { + &, + > div { + display: flex; + flex-wrap: wrap; + } + + a, + span[role=button] { + @include margin-right(8px); + + display: inline-block; + text-decoration: none; + color: pvar(--menuForegroundColor); + opacity: $footer-links-base-opacity; + white-space: nowrap; + font-size: 90%; + font-weight: 500; + line-height: 1.4rem; + } +} + +.footer-copyleft small a { + @include disable-default-a-behaviour; + + color: pvar(--menuForegroundColor); + opacity: $footer-links-base-opacity - .2; +} + +.dropdown { + z-index: #{z('menu') + 1} !important; +} + +.dropdown-menu { + width: calc(100% + 40px); +} + +.dropdown-item { + @include dropdown-with-icon-item; + + cursor: pointer; + display: flex; + align-items: center; + + i.glyphicon-menu-right { + opacity: .4; + } + + &:hover { + .hover-display-toggle { + display: none; + } + + .hover-display-toggle[hidden] { + display: inherit !important; } } +} - a { - color: $menu-color; - height: 22px; - line-height: 22px; - display: block; - font-size: 16px; - cursor: pointer; - margin-bottom: 15px; +.more-settings { + text-transform: uppercase; + font-size: 80%; + color: #6c757d; +} + +@media screen and (max-width: $mobile-view) { + .menu-wrapper { + width: 100% !important; + + menu { + overflow-y: auto; + } + } - &:hover, &:focus { - text-decoration: none !important; - outline: none !important; + .top-menu, + .footer { + width: 100% !important; + } + + .dropdown-menu { + width: calc(100vw - 30px); + } + + .dropdown-item:hover, + .dropdown-item:active { + &.settings-sensitive my-global-icon ::ng-deep svg { + margin-top: 0 !important; } } } + +my-global-icon { + &[iconName=playlists] { + @include margin-right(16px); + + height: 24px; + width: 24px; + } + + &[iconName=videos] { + position: relative; + right: -1px; + } + + &[iconName=channel] { + margin-top: -2px; + } + + &[iconName='sign-out'] { + position: relative; + right: -2px; + height: 20px; + width: 20px; + } +}