X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Bvideos%2F%2Bvideo-watch%2Fvideo-watch.component.scss;h=d438facd32870de80edff0b4e5ac869119e8c321;hb=5b0ec7cddb1ae6dbd2057f067382866f846b882c;hp=4d68504f5fc491f884fa597031258244401b1f75;hpb=6ea59f415461c27eea840ed204986eaefb538afc;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 4d68504f5..d438facd3 100644 --- a/client/src/app/+videos/+video-watch/video-watch.component.scss +++ b/client/src/app/+videos/+video-watch/video-watch.component.scss @@ -4,15 +4,14 @@ @use '_bootstrap-variables'; @use '_miniature' as *; -$player-factor: math.div(16, 9); -$video-info-margin-left: 44px; +$video-height: 66vh; @function getPlayerHeight ($width) { - @return calc(#{$width} / #{$player-factor}); + @return calc(#{$width} / #{$video-watch-player-factor}); } @function getPlayerWidth ($height) { - @return calc(#{$height} * #{$player-factor}); + @return calc(#{$height} * #{$video-watch-player-factor}); } @mixin playlist-below-player { @@ -23,6 +22,20 @@ $video-info-margin-left: 44px; border-bottom: 1px solid $separator-border-color !important; } +.blocked-label { + font-weight: $font-semibold; +} + +.placeholder-image { + height: 100%; + max-width: 100%; + object-fit: contain; +} + +.flex-direction-column { + flex-direction: column; +} + .root { &.theater-enabled #video-wrapper { $height: calc(100vh - #{$header-height} - #{$theater-bottom-space}); @@ -47,52 +60,14 @@ $video-info-margin-left: 44px; } } -.blocked-label { - font-weight: $font-semibold; -} - -.placeholder-image { - height: 100%; -} - #video-wrapper { - $video-height: 66vh; - background-color: #000; display: flex; justify-content: center; - #videojs-wrapper { - display: flex; - justify-content: center; - flex-grow: 1; - height: $video-height; - } - - .remote-server-down { - color: #fff; - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - justify-content: center; - background-color: #141313; - width: 100%; - font-size: 24px; - height: 500px; - - @media screen and (max-width: 1000px) { - font-size: 20px; - } - - @media screen and (max-width: 600px) { - font-size: 16px; - } - } - ::ng-deep .video-js { width: 100%; - max-width: getPlayerWidth(66vh); + max-width: getPlayerWidth($video-height); height: $video-height; // VideoJS create an inner video player @@ -101,27 +76,34 @@ $video-info-margin-left: 44px; position: relative !important; } } - - @media screen and (max-width: 600px) { - #videojs-wrapper { - height: getPlayerHeight(100vw) !important; - } - - .remote-server-down, - ::ng-deep .video-js { - width: 100vw; - height: getPlayerHeight(100vw) !important; - } - } } -.alert { - text-align: center; - border-radius: 0; +#videojs-wrapper { + display: flex; + justify-content: center; + flex-grow: 1; + height: $video-height; } -.flex-direction-column { +.remote-server-down { + color: #fff; + display: flex; flex-direction: column; + align-items: center; + text-align: center; + justify-content: center; + background-color: #141313; + width: 100%; + font-size: 24px; + height: 500px; + + @media screen and (max-width: 1000px) { + font-size: 20px; + } + + @media screen and (max-width: 600px) { + font-size: 16px; + } } #video-not-found { @@ -130,367 +112,123 @@ $video-info-margin-left: 44px; margin-top: 50px; text-align: center; font-weight: $font-semibold; - font-size: 15px; } .video-bottom { display: flex; margin-top: 1.5rem; +} - .video-info { - flex-grow: 1; - // Set min width for flex item - min-width: 1px; - max-width: 100%; - - .video-info-first-row { - display: flex; - - > div:first-child { - flex-grow: 1; - } - - .video-info-name { - @include peertube-word-wrap; - - @include margin-right(30px); - min-height: 40px; // Align with the action buttons - font-size: 27px; - font-weight: $font-semibold; - flex-grow: 1; - } - - .video-info-first-row-bottom { - display: flex; - flex-wrap: wrap; - align-items: center; - width: 100%; - } - - .video-info-date-views { - @include margin-right(10px); - - margin-bottom: 10px; - align-self: start; - font-size: 1em; - } - - .video-info-channel { - font-weight: $font-semibold; - font-size: 15px; - - a { - @include disable-default-a-behaviour; - @include peertube-word-wrap; - - color: pvar(--mainForegroundColor); - - &:hover { - opacity: 0.8; - } - } - - .video-info-channel-left { - flex-grow: 1; - - .video-info-channel-left-links { - display: flex; - flex-direction: column; - position: relative; - line-height: 1.37; - - a:nth-of-type(2) { - font-weight: $font-regular; - font-size: 90%; - } - - a.single-link { - margin-top: 7px; - } - } - } - - my-subscribe-button { - @include margin-left(5px); - } - } - - .video-actions-rates { - @include margin-left(auto); - @include margin-right(0); - - margin-top: 0; - margin-bottom: 10px; - - align-items: start; - width: max-content; - - .video-actions { - height: 40px; // Align with the title - display: flex; - align-items: center; - - .action-button:not(:first-child), - .action-dropdown, - my-video-actions-dropdown { - @include margin-left(5px); - } - - ::ng-deep.action-button { - @include peertube-button; - @include button-with-icon(21px, 0, -1px); - - font-size: 100%; - font-weight: $font-semibold; - display: inline-block; - padding: 0 10px; - white-space: nowrap; - background-color: transparent !important; - color: pvar(--actionButtonColor); - text-transform: uppercase; - - &::after { - display: none; - } - - &:hover { - opacity: 0.9; - } - - &.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 { - @include 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); - } - } - } - } - } - - .video-info-description { - @include margin-left($video-info-margin-left); - @include margin-right(0); - - margin-top: 20px; - margin-bottom: 20px; - font-size: 15px; - - .video-info-description-html { - @include peertube-word-wrap; - - ::ng-deep a { - text-decoration: none; - } - } - - .glyphicon, - .description-loading { - @include 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; - } - } - } +.video-info { + flex-grow: 1; + // Set min width for flex item + min-width: 1px; + max-width: 100%; +} - .video-attributes { - @include margin-left($video-info-margin-left); - } +.video-info-first-row { + display: flex; - .video-attributes .video-attribute { - font-size: 13px; - display: block; - margin-bottom: 12px; - - .video-attribute-label { - @include padding-right(5px); - - min-width: 142px; - display: inline-block; - color: pvar(--greyForegroundColor); - font-weight: $font-bold; - } - - a.video-attribute-value { - @include disable-default-a-behaviour; - color: pvar(--mainForegroundColor); - - &:hover { - opacity: 0.9; - } - } - - &.video-attribute-tags { - .video-attribute-value:not(:nth-child(2)) { - &::before { - content: ', '; - } - } - } - } + > div:first-child { + flex-grow: 1; } } -my-recommended-videos { - @include padding-left(15px); - - display: block; - min-width: 250px; -} +.video-info-name { + @include peertube-word-wrap; -my-video-comments { - display: inline-block; - width: 100%; - margin-bottom: 20px; -} + @include margin-right(30px); -// If the view is not expanded, take into account the menu -.privacy-concerns { - z-index: z(dropdown) + 1; - width: calc(100% - #{$menu-width}); + min-height: 40px; // Align with the action buttons + font-size: 27px; + font-weight: $font-semibold; + flex-grow: 1; } -@media screen and (max-width: $small-view) { - .privacy-concerns { - @include margin-left($menu-width - 15px); // Menu is absolute - } +.video-info-first-row-bottom { + display: flex; + flex-wrap: wrap; + align-items: center; + width: 100%; } -:host-context(.expanded) { - .privacy-concerns { - @include margin-left(-15px); +.video-info-date-views { + @include margin-right(10px); - width: 100%; - } + margin-bottom: 10px; + align-self: start; + font-size: 14px; } -.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; - } +.video-info-channel { + font-weight: $font-semibold; a { @include disable-default-a-behaviour; + @include peertube-word-wrap; - color: pvar(--mainColor); - transition: color 0.3s; + color: pvar(--mainForegroundColor); &:hover { - color: #fff; + opacity: 0.8; } } +} - .privacy-concerns-button { - @include margin-left(auto); +.video-info-channel-left { + flex-grow: 1; - padding: 5px 8px 5px 7px; - border-radius: 3px; - white-space: nowrap; - cursor: pointer; - transition: background-color 0.3s; - font-weight: $font-semibold; + .video-info-channel-left-links { + display: flex; + flex-direction: column; + position: relative; + line-height: 1.37; - &:hover { - background-color: #000; + a:nth-of-type(2) { + font-weight: $font-regular; + font-size: 90%; + } + + a.single-link { + margin-top: 7px; } } +} - .privacy-concerns-okay { - @include margin-left(10px); +my-subscribe-button { + @include margin-left(5px); +} - background-color: pvar(--mainColor); - } +my-video-attributes { + @include margin-left($video-watch-info-margin-left); + + display: block; + margin-bottom: 15px; } -@media screen and (max-width: 1600px) { - .video-bottom .video-info .video-attributes .video-attribute { - margin-bottom: 5px; - } +my-action-buttons { + @include margin-left(auto); + @include margin-right(0); + + display: block; + margin-top: 0; + margin-bottom: 10px; + + align-items: start; + width: max-content; } -@media screen and (max-width: 1300px) { - .privacy-concerns { - font-size: 12px; - padding: 2px 5px; +my-recommended-videos { + @include padding-left(15px); - .privacy-concerns-text { - margin: 0; - } - } + display: block; + min-width: 250px; +} + +my-video-comments { + display: inline-block; + width: 100%; + margin-bottom: 20px; } // Use the same breakpoint than in the typescript component to display the other video miniatures as row @@ -514,55 +252,45 @@ my-video-comments { } @media screen and (max-width: 600px) { + #videojs-wrapper { + height: getPlayerHeight(100vw) !important; + + .remote-server-down, + ::ng-deep .video-js { + width: 100vw; + height: getPlayerHeight(100vw) !important; + } + } + .video-bottom { margin-top: 20px !important; padding-bottom: 20px !important; + } - .video-info { - padding: 0; - - .video-info-first-row { - - .video-info-name { - font-size: 20px; - height: auto; - } - } - } + .video-info { + padding: 0; } - .privacy-concerns { - width: 100%; + .video-info-name { + font-size: 20px; + height: auto; } } @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; - } - - .video-info-date-views { - font-size: 14px; - } + .video-info-name { + font-size: 18px; + } - .video-actions-rates { - margin-top: 10px; - } - } + .video-info-date-views { + font-size: 14px; + } - .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;