X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=client%2Fsrc%2Fapp%2F%2Bvideos%2F%2Bvideo-watch%2Fvideo-watch.component.scss;h=1d83fa139ea30dd45f8d59101e3d80967f3945ee;hb=06a555797929d4867264b096c8420cdedd50f496;hp=2e083982eb46fe42d488b480be841228746fb3c8;hpb=1942f11d5ee6926ad93dc1b79fae18325ba5de18;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+videos/+video-watch/video-watch.component.scss b/client/src/app/+videos/+video-watch/video-watch.component.scss index 2e083982e..1d83fa139 100644 --- a/client/src/app/+videos/+video-watch/video-watch.component.scss +++ b/client/src/app/+videos/+video-watch/video-watch.component.scss @@ -1,17 +1,15 @@ -@import '_variables'; -@import '_mixins'; -@import '_bootstrap-variables'; -@import '_miniature'; - -$player-factor: 1.7; // 16/9 -$video-info-margin-left: 44px; - -@function getPlayerHeight($width){ - @return calc(#{$width} / #{$player-factor}) +@use 'sass:math'; +@use '_variables' as *; +@use '_mixins' as *; +@use '_bootstrap-variables'; +@use '_miniature' as *; + +@function getPlayerHeight ($width) { + @return calc(#{$width} / #{$video-watch-player-factor}); } -@function getPlayerWidth($height){ - @return calc(#{$height} * #{$player-factor}) +@function getPlayerWidth ($height) { + @return calc(#{$height} * #{$video-watch-player-factor}); } @mixin playlist-below-player { @@ -24,16 +22,17 @@ $video-info-margin-left: 44px; .root { &.theater-enabled #video-wrapper { + $height: calc(100vh - #{$header-height} - #{$theater-bottom-space}); + flex-direction: column; justify-content: center; #videojs-wrapper { width: 100%; + height: $height; } ::ng-deep .video-js { - $height: calc(100vh - #{$header-height} - #{$theater-bottom-space}); - height: $height; width: 100%; max-width: initial; @@ -49,7 +48,13 @@ $video-info-margin-left: 44px; font-weight: $font-semibold; } +.placeholder-image { + height: 100%; +} + #video-wrapper { + $video-height: 66vh; + background-color: #000; display: flex; justify-content: center; @@ -58,6 +63,7 @@ $video-info-margin-left: 44px; display: flex; justify-content: center; flex-grow: 1; + height: $video-height; } .remote-server-down { @@ -84,7 +90,7 @@ $video-info-margin-left: 44px; ::ng-deep .video-js { width: 100%; max-width: getPlayerWidth(66vh); - height: 66vh; + height: $video-height; // VideoJS create an inner video player video { @@ -94,10 +100,14 @@ $video-info-margin-left: 44px; } @media screen and (max-width: 600px) { + #videojs-wrapper { + height: getPlayerHeight(100vw) !important; + } + .remote-server-down, ::ng-deep .video-js { width: 100vw; - height: getPlayerHeight(100vw) + height: getPlayerHeight(100vw) !important; } } } @@ -133,12 +143,15 @@ $video-info-margin-left: 44px; .video-info-first-row { display: flex; - & > div:first-child { + > div:first-child { flex-grow: 1; } .video-info-name { - margin-right: 30px; + @include peertube-word-wrap; + + @include margin-right(30px); + min-height: 40px; // Align with the action buttons font-size: 27px; font-weight: $font-semibold; @@ -153,9 +166,10 @@ $video-info-margin-left: 44px; } .video-info-date-views { - align-self: start; + @include margin-right(10px); + margin-bottom: 10px; - margin-right: 10px; + align-self: start; font-size: 1em; } @@ -165,18 +179,13 @@ $video-info-margin-left: 44px; a { @include disable-default-a-behaviour; + @include peertube-word-wrap; color: pvar(--mainForegroundColor); &:hover { opacity: 0.8; } - - img { - @include avatar(18px); - - margin: -2px 5px 0 0; - } } .video-info-channel-left { @@ -189,185 +198,24 @@ $video-info-margin-left: 44px; line-height: 1.37; a:nth-of-type(2) { - font-weight: 500; + font-weight: $font-regular; font-size: 90%; } - } - } - - my-subscribe-button { - margin-left: 5px; - } - } - - my-feed { - margin-left: 5px; - margin-top: 1px; - } - - .video-actions-rates { - margin: 0 0 10px 0; - align-items: start; - width: max-content; - margin-left: auto; - - .video-actions { - height: 40px; // Align with the title - display: flex; - align-items: center; - - .action-button:not(:first-child), - .action-dropdown, - my-video-actions-dropdown { - margin-left: 5px; - } - - ::ng-deep.action-button { - @include peertube-button; - @include button-with-icon(21px, 0, -1px); - @include apply-svg-color(pvar(--actionButtonColor)); - - font-size: 100%; - font-weight: $font-semibold; - display: inline-block; - padding: 0 10px 0 10px; - white-space: nowrap; - background-color: transparent !important; - color: pvar(--actionButtonColor); - text-transform: uppercase; - - &::after { - display: none; - } - - &:hover { - opacity: 0.9; - } - - &.action-button-like, - &.action-button-dislike { - filter: brightness(120%); - .count { - margin-right: 5px; - } - } - - &.action-button-like.activated { - .count { - color: pvar(--activatedActionButtonColor); - } - - my-global-icon { - @include apply-svg-color(pvar(--activatedActionButtonColor)); - } - } - - &.action-button-dislike.activated { - .count { - color: pvar(--activatedActionButtonColor); - } - - my-global-icon { - @include apply-svg-color(pvar(--activatedActionButtonColor)); - } - } - - &.action-button-support { - color: pvar(--supportButtonColor); - - my-global-icon { - @include apply-svg-color(pvar(--supportButtonColor)); - } - } - - &.action-button-support { - my-global-icon { - ::ng-deep path:first-child { - fill: pvar(--supportButtonHeartColor) !important; - } - } - } - - &.action-button-save { - my-global-icon { - top: 0 !important; - right: -1px; - } - } - - .icon-text { - margin-left: 3px; - } - } - } - - .video-info-likes-dislikes-bar-outer-container { - position: relative; - } - - .video-info-likes-dislikes-bar-inner-container { - position: absolute; - height: 20px; - } - - .video-info-likes-dislikes-bar { - $likes-bar-height: 2px; - height: $likes-bar-height; - margin-top: -$likes-bar-height; - width: 120px; - background-color: #ccc; - position: relative; - top: 10px; - - .likes-bar { - height: 100%; - background-color: #909090; - - &.liked { - background-color: pvar(--activatedActionButtonColor); + a.single-link { + margin-top: 7px; } } } - } - } - - .video-info-description { - margin: 20px 0; - margin-left: $video-info-margin-left; - font-size: 15px; - - .video-info-description-html { - @include peertube-word-wrap; - - /deep/ a { - text-decoration: none; - } - } - - .glyphicon, .description-loading { - margin-left: 3px; - } - - .description-loading { - display: inline-block; - } - .video-info-description-more { - cursor: pointer; - font-weight: $font-semibold; - color: pvar(--greyForegroundColor); - font-size: 14px; - - .glyphicon { - position: relative; - top: 2px; + my-subscribe-button { + @include margin-left(5px); } } } .video-attributes { - margin-left: $video-info-margin-left; + @include margin-left($video-watch-info-margin-left); } .video-attributes .video-attribute { @@ -376,8 +224,9 @@ $video-info-margin-left: 44px; margin-bottom: 12px; .video-attribute-label { + @include padding-right(5px); + min-width: 142px; - padding-right: 5px; display: inline-block; color: pvar(--greyForegroundColor); font-weight: $font-bold; @@ -395,43 +244,31 @@ $video-info-margin-left: 44px; &.video-attribute-tags { .video-attribute-value:not(:nth-child(2)) { &::before { - content: ', ' + content: ', '; } } } } } +} - ::ng-deep .other-videos { - padding-left: 15px; - min-width: $video-miniature-width; +my-action-buttons { + @include margin-left(auto); + @include margin-right(0); - @media screen and (min-width: 1800px - (3* $video-miniature-width)) { - width: min-content; - } + display: block; + margin-top: 0; + margin-bottom: 10px; - .title-page { - margin: 0 !important; - } + align-items: start; + width: max-content; +} - .video-miniature { - display: flex; - width: max-content; - height: 100%; - padding-bottom: 20px; - flex-wrap: wrap; - } +my-recommended-videos { + @include padding-left(15px); - .video-bottom { - @media screen and (max-width: 1800px - (3* $video-miniature-width)) { - margin-left: 1rem; - } - @media screen and (max-width: 500px) { - margin-left: 0; - margin-top: .5rem; - } - } - } + display: block; + min-width: 250px; } my-video-comments { @@ -440,91 +277,13 @@ my-video-comments { margin-bottom: 20px; } -// If the view is not expanded, take into account the menu -.privacy-concerns { - z-index: z(dropdown) + 1; - width: calc(100% - #{$menu-width}); -} - -@media screen and (max-width: $small-view) { - .privacy-concerns { - margin-left: $menu-width - 15px; // Menu is absolute - } -} - -:host-context(.expanded) { - .privacy-concerns { - width: 100%; - margin-left: -15px; - } -} - -.privacy-concerns { - position: fixed; - bottom: 0; - z-index: z(privacymsg); - - padding: 5px 15px; - - display: flex; - flex-wrap: nowrap; - align-items: center; - justify-content: space-between; - background-color: rgba(0, 0, 0, 0.9); - color: #fff; - - .privacy-concerns-text { - margin: 0 5px; - } - - a { - @include disable-default-a-behaviour; - - color: pvar(--mainColor); - transition: color 0.3s; - - &:hover { - color: #fff; - } - } - - .privacy-concerns-button { - padding: 5px 8px 5px 7px; - margin-left: auto; - border-radius: 3px; - white-space: nowrap; - cursor: pointer; - transition: background-color 0.3s; - font-weight: $font-semibold; - - &:hover { - background-color: #000; - } - } - - .privacy-concerns-okay { - background-color: pvar(--mainColor); - margin-left: 10px; - } -} - @media screen and (max-width: 1600px) { .video-bottom .video-info .video-attributes .video-attribute { margin-bottom: 5px; } } -@media screen and (max-width: 1300px) { - .privacy-concerns { - font-size: 12px; - padding: 2px 5px; - - .privacy-concerns-text { - margin: 0; - } - } -} - +// Use the same breakpoint than in the typescript component to display the other video miniatures as row @media screen and (max-width: 1100px) { #video-wrapper { flex-direction: column; @@ -537,15 +296,10 @@ my-video-comments { .video-bottom { flex-direction: column; + } - ::ng-deep .other-videos { - padding-left: 0 !important; - - ::ng-deep .video-miniature { - flex-direction: row; - width: auto; - } - } + my-recommended-videos { + @include padding-left(0); } } @@ -566,26 +320,10 @@ my-video-comments { } } } - - ::ng-deep .other-videos .video-miniature { - flex-direction: column; - } - - .privacy-concerns { - width: 100%; - - strong { - display: none; - } - } } @media screen and (max-width: 450px) { .video-bottom { - .action-button .icon-text { - display: none !important; - } - .video-info .video-info-first-row { .video-info-name { font-size: 18px; @@ -594,14 +332,16 @@ my-video-comments { .video-info-date-views { font-size: 14px; } - - .video-actions-rates { - margin-top: 10px; - } } + } - .video-info-description { - font-size: 14px !important; - } + my-action-buttons { + margin-top: 10px; } } + + +// Special case for iOS, that takes into account the width for fullscreens +#video-wrapper ::ng-deep .video-js.vjs-fullscreen { + max-width: unset; +}