X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fmenu%2Fmenu.component.scss;h=6cfe2643118ca210225778cb919e3748f885290c;hb=c5f3ff39e5351ac911418c432dac235c5aefec9e;hp=8f8c31417966f5a81da9b7917da7afffd3aa7151;hpb=e66883b37ae0796256b3aba550670a2d76cfc98a;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/menu/menu.component.scss b/client/src/app/menu/menu.component.scss index 8f8c31417..6cfe26431 100644 --- a/client/src/app/menu/menu.component.scss +++ b/client/src/app/menu/menu.component.scss @@ -1,5 +1,44 @@ -@import '_variables'; -@import '_mixins'; +@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; + 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; @@ -14,16 +53,17 @@ menu { @include ellipsis; background-color: pvar(--menuBackgroundColor); - margin: 0; - padding: 0; - height: 100%; - overflow-x: hidden; color: pvar(--menuForegroundColor); + display: flex; flex-direction: column; + height: 100%; width: 100%; + margin: 0; + padding: 0; - &:focus, &:hover { + &:focus, + &:hover { overflow-y: auto; } @@ -31,7 +71,7 @@ menu { overflow-y: auto; } - &.logged-in { + &.is-logged-in { .panel-block { margin-bottom: 20px; } @@ -40,306 +80,295 @@ menu { margin-bottom: 15px; } } +} - .top-menu { - flex-grow: 1; - width: $menu-width; - } +.top-menu { + flex-grow: 1; + width: $menu-width; +} - .logged-in-block { - height: 100px; - background-color: rgba(255, 255, 255, 0.15); +.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: 20px; + justify-content: left; + } +} - .logged-in-info { - @include ellipsis; +my-notification { + @include margin-left(auto); + @include margin-right(15px); +} - flex-grow: 1; +.logged-in-more { - .logged-in-display-name { - font-size: 16px; - font-weight: $font-semibold; - color: pvar(--menuForegroundColor); - cursor: pointer; + @mixin display-hints($is-mobile: false) { + background-color: rgba(255, 255, 255, 0.15); - @include disable-default-a-behaviour; + @if $is-mobile { + .dropdown-toggle-indicator { + display: inherit !important; } - .logged-in-username { - @include ellipsis; - - font-size: 13px; - color: #C6C6C6; - max-width: 140px; - cursor: pointer; + > .dropdown-toggle { + max-width: 88% !important; } } + } - .logged-in-more { - margin-right: 20px; + @include margin-left(13px); - my-global-icon.dropdown-toggle { - cursor: pointer; + flex: 1; + border-radius: 25px; + transition: all .1s ease-in-out; + cursor: pointer; + line-height: 1; - &::after { - border: none; - } + &.show { + background-color: rgba(255, 255, 255, 0.2); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .325); + } - ::ng-deep { - @include apply-svg-color(pvar(--menuForegroundColor)); - } - } - } + &:hover { + @include display-hints; } - .button-block { - margin: 30px 25px 35px 25px; + /* smartphones and touchscreens */ + @media (hover: none) and (pointer: coarse) { + @include display-hints($is-mobile: true); - .login-button { - @include peertube-button-link; - @include orange-button; + /* fill space when on mobile */ + max-width: calc(100% - 80px); - display: block; - width: 100%; - margin-bottom: 10px; + .dropdown-toggle { + max-width: 100%; } - .create-account-button { - @include peertube-button-link; - - display: block; - width: 100%; + .logged-in-info { + max-width: calc(100% - 45px) !important; + } + } - color: #fff; - background-color: rgba(255, 255, 255, 0.25); + .dropdown-toggle-indicator { + position: relative; + display: none; - &:hover { - background-color: rgba(255, 255, 255, 0.28); - } + span { + position: absolute; + right: -35px; + top: -8px; + color: #808080; } } - .block-title { - text-transform: uppercase; - font-weight: $font-bold; // Bold - font-size: 13px; - margin-bottom: 25px; - margin-left: 26px; + .dropdown-toggle::after { + border: 0; } - .panel-block { - margin-bottom: 15px; - - a { - @include disable-default-a-behaviour; - - display: flex; - align-items: center; - padding-left: $menu-lateral-padding; - color: pvar(--menuForegroundColor); - cursor: pointer; - min-height: 40px; - font-size: 16px; - transition: background-color .1s ease-in-out; - white-space: normal; - word-break: break-word; - padding-right: 20px; - - &.active { - background-color: rgba(255, 255, 255, 0.15); - } + > .dropdown-toggle:first-child { + display: flex; + align-items: center; + padding: 5px 7px; + } +} - &:hover, &.focus-visible { - background-color: rgba(255, 255, 255, 0.10); - } +my-actor-avatar { + @include margin-right(10px); +} - my-global-icon { - @include apply-svg-color(#808080); +.logged-in-info { + max-width: 105px; - display: flex; - width: 22px; - height: 22px; - margin-right: 18px; + flex-grow: 1; +} - &[iconName="playlists"] { - height: 24px; - width: 24px; +.logged-in-display-name, +.logged-in-username { + @include ellipsis; +} - margin-right: 16px; - } +.logged-in-display-name { + @include disable-default-a-behaviour; - &[iconName="videos"] { - position: relative; - right: -1px; - } - } + font-weight: $font-semibold; + color: pvar(--menuForegroundColor); +} - .icon { - @include icon(22px); +.logged-in-username { + font-size: 13px; + color: #C6C6C6; + margin-top: 3px; +} - margin-right: 18px; - } - } - } +.logged-in-menu { + display: flex; + flex-direction: column; + align-items: flex-start; + border-top: 1px solid var(--greyForegroundColor); + line-height: $line-height-normal; - .footer { - width: $menu-width; - padding-bottom: 15px; + a { + $icon-size: 13px; + $additional-margin: math.div($menu-link-icon-size - $icon-size, 2); - .bottom-links { - display: flex; - flex-direction: column; - padding: 0 $menu-lateral-padding; - } + font-size: 14px; + width: 100%; + min-height: 35px; - $footer-links-base-opacity: .8; + my-global-icon { + // Keep aligned with other icons + @include margin-left($additional-margin); + + width: $icon-size; + height: $icon-size; + } - .footer-links { - &, > div { - display: flex; - flex-wrap: wrap; + &.active, + &:hover, + &:focus-visible { + my-global-icon { + @include apply-svg-color(var(--menuForegroundColor)); } + } + + &.active { + $border-left-width: 4px; - a, span[role=button] { - display: inline-block; - text-decoration: none; - color: pvar(--mainBackgroundColor); - opacity: $footer-links-base-opacity; - white-space: nowrap; - font-size: 90%; - font-weight: 500; - line-height: 1.4rem; - margin-right: 8px; - - &.inline-global-icon { - display: inline-flex; - align-items: center; - white-space: nowrap; - height: 1.4rem; - - my-global-icon { - @include apply-svg-color(pvar(--mainBackgroundColor)); - - display: flex; - width: auto; - height: 90%; - margin-right: .2rem; - } - } + font-weight: $font-semibold; + border-left: $border-left-width solid var(--mainColor); + + my-global-icon { + @include margin-left($additional-margin - $border-left-width); } } + } +} + +.login-buttons-block { + margin: 30px 25px 35px; - .footer-copyleft small a { - @include disable-default-a-behaviour; + > a { + display: block; + width: 100%; - color: pvar(--mainBackgroundColor); - opacity: $footer-links-base-opacity - .2; + &:not(:last-child) { + margin-bottom: 10px; } } } -.dropdown-menu { - width: calc(100% + 40px); +.create-account-button { + color: #fff; + background-color: rgba(255, 255, 255, 0.25); + + &:hover { + background-color: rgba(255, 255, 255, 0.28); + } } -.dropdown-item { - @include dropdown-with-icon-item; +.menu-block, +.footer-block { + margin-bottom: 15px; - cursor: pointer; - display: flex; - align-items: center; + .block-title { + @include ellipsis; + @include margin-left(26px); + @include margin-right(30px); - i.glyphicon-menu-right { - opacity: .4; + text-transform: uppercase; + font-weight: $font-bold; // Bold + font-size: 13px; + margin-bottom: 25px; } - my-global-icon { - &[iconName="cog"], - &[iconName="sign-out"] { - position: relative; - right: -2px; - height: 20px; - width: 20px; - } + a { + min-height: 40px; } +} - my-global-icon.not-displayed { - display: none; +.footer { + padding-bottom: 15px; +} + +.footer-bottom { + padding: 0 $menu-lateral-padding; +} + +.footer-links { + > div { + display: flex; + flex-wrap: wrap; } - &:hover { - my-global-icon.hover-display-toggle.not-displayed { - display: inherit; - } - my-global-icon.hover-display-toggle { - display: none; + a, + span[role=button] { + @include margin-right(8px); + @include disable-default-a-behaviour; + + color: pvar(--menuForegroundColor); + opacity: $footer-links-base-opacity; + white-space: nowrap; + font-size: 0.75rem; + line-height: 1.4rem; + font-weight: $font-semibold; + + &:hover { + opacity: $footer-links-base-opacity + .2; } } } -.more-settings { - text-transform: uppercase; - font-size: 80%; - color: #6c757d; +.footer-copyleft a { + @include disable-default-a-behaviour; + + color: pvar(--menuForegroundColor); + opacity: $footer-links-base-opacity - .2; + font-size: 0.85rem; + + &:hover { + opacity: $footer-links-base-opacity; + } } -.icon { - @include disable-outline; - @include icon(22px); - opacity: 0.8; +.dropdown { + z-index: #{z('menu') + 1} !important; +} - &.icon-shortcuts { - position: relative; - top: -1px; - margin-right: 10px; +.dropdown-menu { + width: calc(100% + 40px); - background-image: url('../../assets/images/menu/keyboard.png'); + // Prevent weird display issue on firefox when global style is not loaded yet + &:not(.show) { + display: none; } } -input[type=checkbox]{ - position: absolute; - visibility: hidden; -} +.dropdown-item { + @include dropdown-with-icon-item; -label { cursor: pointer; - text-indent: -9999px; - width: 35px; - height: 20px; - background: #cccccc; - display: block; - border-radius: 100px; - position: relative; - margin: 0; + display: flex; + align-items: center; - &:after { - content: ''; - position: absolute; - top: 3px; - left: 3px; - width: 14px; - height: 14px; - background: pvar(--mainBackgroundColor); - border-radius: 50%; - transition: 0.3s ease-out; - } + &:hover { + .hover-display-toggle { + display: none; + } - &:active:after { - width: 40px; + .hover-display-toggle[hidden] { + display: inherit !important; + } } } -input:checked + label { - background: pvar(--mainColor); - - &:after { - left: calc(100% - 3px); - transform: translateX(-100%); - } +.more-settings { + text-transform: uppercase; + font-size: 80%; + color: #6c757d; } @media screen and (max-width: $mobile-view) { @@ -351,7 +380,28 @@ input:checked + label { } } - .top-menu, .footer { + .top-menu, + .footer { width: 100% !important; } + + .dropdown-menu { + width: calc(100vw - 30px); + } +} + +my-global-icon { + position: relative; + top: -1px; + + .playlist-icon { + @include margin-right(16px); + + height: 24px; + width: 24px; + } + + &.channel-icon { + top: -2px; + } }