X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2Fvideos%2F%2Bvideo-watch%2Fvideo-watch.component.scss;h=7b134a4dce661bb2a969b85ba2e5557cfb3d1558;hb=d816f3a063febac1cad09ab3a32e5f0d29353627;hp=06c2de7c6da6c1dbd924b9b1aa50ece879264075;hpb=be6a4802326b1748e85c0d6fdadf06e70e6ecbb0;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 06c2de7c6..7b134a4dc 100644 --- a/client/src/app/videos/+video-watch/video-watch.component.scss +++ b/client/src/app/videos/+video-watch/video-watch.component.scss @@ -1,183 +1,351 @@ -#video-container { - background-color: #000; - display: flex; - justify-content: center; +@import '_variables'; +@import '_mixins'; +@import '_bootstrap-variables'; +@import '_miniature'; - #video-element { - width: 888px; - height: 500px; - } +$other-videos-width: 260px; +$player-factor: 1.7; // 16/9 + +@function getPlayerHeight($width){ + @return calc(#{$width} / #{$player-factor}) } -#video-not-found { - height: 300px; - line-height: 300px; - margin-top: 50px; - text-align: center; - font-weight: bold; +@function getPlayerWidth($height){ + @return calc(#{$height} * #{$player-factor}) } -#torrent-info { - font-size: 10px; - margin-top: 10px; - text-align: center; +@mixin playlist-below-player { + width: 100% !important; + height: auto !important; + max-height: 300px !important; + max-width: initial; + border-bottom: 1px solid $separator-border-color !important; +} + +.root { + &.theater-enabled #video-wrapper { + flex-direction: column; + justify-content: center; + + #videojs-wrapper { + width: 100%; + } + + ::ng-deep .video-js { + $height: calc(100vh - #{$header-height} - #{$theater-bottom-space}); - div { - min-width: 60px; + height: $height; + width: 100%; + max-width: initial; + } + + my-video-watch-playlist ::ng-deep .playlist { + @include playlist-below-player; + } } } -#video-info { - .video-name-views { - font-weight: bold; - font-size: 18px; - min-height: $video-watch-title-height; +.blacklisted-label { + font-weight: $font-semibold; +} + +#video-wrapper { + background-color: #000; + display: flex; + justify-content: center; + margin: 0 -15px; + + #videojs-wrapper { display: flex; + justify-content: center; + flex-grow: 1; + } + + .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; - .video-name { - padding-left: $video-watch-info-padding-left; + @media screen and (max-width: 1000px) { + font-size: 20px; } - .video-views { - text-align: right; - // Keep a symmetry with the video name - padding-right: $video-watch-info-padding-left + @media screen and (max-width: 600px) { + font-size: 16px; } + } + + ::ng-deep .video-js { + width: 100%; + max-width: getPlayerWidth(66vh); + height: 66vh; + + // VideoJS create an inner video player + video { + outline: 0; + position: relative !important; + } + } + @media screen and (max-width: 600px) { + .remote-server-down, + ::ng-deep .video-js { + width: 100vw; + height: getPlayerHeight(100vw) + } } +} + +.alert { + text-align: center; + border-radius: 0; +} - .video-small-blocks { - height: $video-watch-info-height; - color: $video-watch-info-color; - border-color: $video-watch-border-color; - border-width: 1px 0px; - border-style: solid; +.flex-direction-column { + flex-direction: column; +} + +#video-not-found { + height: 300px; + line-height: 300px; + margin-top: 50px; + text-align: center; + font-weight: $font-semibold; + font-size: 15px; +} + +.video-bottom { + display: flex; + margin-top: 40px; - .video-small-block { - height: $video-watch-info-height; + .video-info { + flex-grow: 1; + // Set min width for flex item + min-width: 1px; + max-width: 100%; + + .video-info-first-row { display: flex; - flex-direction: column; - justify-content: center; - text-align: center; - a { - cursor: pointer; - transition: color 0.3s; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - - &, &:hover { - color: inherit; - text-decoration:none; - } + & > div:first-child { + flex-grow: 1; + } - &:hover { - color: #000 !important; - } + .video-info-name { + margin-right: 30px; + min-height: 40px; // Align with the action buttons + font-size: 27px; + font-weight: $font-semibold; + flex-grow: 1; + } - &:hover > .glyphicon { - opacity: 1 !important; - } + .video-info-first-row-bottom { + display: grid; + grid-template-columns: 1fr auto; + align-items: center; + width: 100%; } - .option .glyphicon { - font-size: 22px; - color: inherit; - opacity: 0.15; + .video-info-date-views { + flex-grow: 1; margin-bottom: 10px; - transition: opacity 0.3s; + margin-right: 10px; + font-size: 16px; } - .video-small-block-text { + .video-info-channel { + font-weight: $font-semibold; font-size: 15px; - font-weight: bold; - } - } - .video-small-block:not(:last-child) { - border-width: 0 1px 0 0; - border-color: $video-watch-border-color; - border-style: solid; - } + a { + @include disable-default-a-behaviour; - .video-small-block-account, .video-small-block-more { - a.option { - display: block; + color: var(--mainForegroundColor); - .glyphicon { - display: block; - } - } - } + &:hover { + opacity: 0.8; + } - .video-small-block-share, .video-small-block-more { - a.option { - display: block; + img { + @include avatar(18px); - .glyphicon { - display: block; + margin: -2px 2px 0 5px; + } + } + + my-subscribe-button { + margin-left: 5px; } } - } - .video-small-block-more .video-small-block-dropdown { - position: relative; + .video-info-by { - .dropdown-item .glyphicon { - margin-right: 5px; - } - } + a { + @include disable-default-a-behaviour; - .video-small-block-rating { + display: inline; + align-items: center; + font-size: 13px; + color: var(--mainForegroundColor); - .video-small-block-like { - margin-bottom: 10px; - } + span:hover { + opacity: 0.8; + } + + img { + @include avatar(18px); - .video-small-block-text { - vertical-align: top; + margin-top: -2px; + margin-left: 7px; + } + } + + my-help { + position: relative; + top: 1px; + margin-left: 2px; + } } - .glyphicon { - font-size: 18px; - margin: 0 10px 0 0; - opacity: 0.3; + my-feed { + margin-left: 5px; + margin-top: 1px; } - .interactive { - cursor: pointer; - transition: opacity, color 0.3s; + .video-actions-rates { + margin: 0 0 10px 0; + 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 { + margin-left: 10px; + } + + .action-button { + @include peertube-button; + @include grey-button; + @include button-with-icon(21px, 0, -1px); + @include apply-svg-color($grey-foreground-color); + + font-size: 15px; + font-weight: $font-semibold; + display: inline-block; + padding: 0 10px 0 10px; + white-space: nowrap; + + &::after { + display: none; + } + + .action-button-like, + .action-button-dislike { + .count { + margin-right: 5px; + } + } + + &.action-button-like.activated { + background-color: $green; + + .count { + color: #fff; + } + + my-global-icon { + @include apply-svg-color(#fff); + } + } + + &.action-button-dislike.activated { + background-color: $red; + + .count { + color: #fff; + } + + my-global-icon { + @include apply-svg-color(#fff); + } + } + + &.action-button-support { + color: var(--supportButtonColor); + background-color: var(--supportButtonBackgroundColor); + + &:hover { + opacity: 0.9; + } + + my-global-icon { + @include apply-svg-color(var(--supportButtonColor)); + } + } + + &.action-button-save { + my-global-icon { + top: 0 !important; + right: -1px; + } + } + + .icon-text { + margin-left: 3px; + } + } + } - &.activated, &:hover { - opacity: 1; - color: #000; + .video-info-likes-dislikes-bar { + $likes-bar-height: 2px; + height: $likes-bar-height; + margin-top: -$likes-bar-height; + width: 186px; + background-color: $red; + position: relative; + top: 10px; + + .likes-bar { + height: 100%; + background-color: $green; + } } } } - } - .video-details { - margin-top: 30px; + .video-info-description { + margin: 20px 0; + font-size: 15px; - .video-details-date-description { - padding-left: $video-watch-info-padding-left; + .video-info-description-html { + @include peertube-word-wrap; + } - .description-loading { - display: inline-block; + .glyphicon, .description-loading { + margin-left: 3px; } - .video-details-date { - font-weight: bold; - margin-bottom: 30px; + .description-loading { + display: inline-block; } - .video-details-description-more { + .video-info-description-more { cursor: pointer; - margin-top: 15px; - font-weight: bold; - color: #acaeb7; + font-weight: $font-semibold; + color: $grey-foreground-color; + font-size: 14px; .glyphicon { position: relative; @@ -186,109 +354,221 @@ } } - .video-details-attributes { - font-weight: bold; - font-size: 12px; + .video-attributes .video-attribute { + font-size: 13px; + display: block; + margin-bottom: 12px; - .video-details-attribute { - display: flex; + .video-attribute-label { + min-width: 142px; + padding-right: 5px; + display: inline-block; + color: $grey-foreground-color; + font-weight: $font-bold; + } + + a.video-attribute-value { + @include disable-default-a-behaviour; + color: var(--mainForegroundColor); + + &:hover { + opacity: 0.9; + } + } - .video-details-attribute-label { - color: $video-watch-info-color; - flex-basis: 60px; - flex-grow: 0; - flex-shrink: 0; - margin-right: 5px; + &.video-attribute-tags { + .video-attribute-value:not(:nth-child(2)) { + &::before { + content: ', ' + } } } } + } + + ::ng-deep .other-videos { + padding-left: 15px; + flex-basis: $other-videos-width; + min-width: $other-videos-width; + + .title-page { + margin-top: 0 !important; + } - .video-details-tags { + .video-miniature { display: flex; + width: $other-videos-width; + height: 100%; + margin-bottom: 20px; flex-wrap: wrap; - a { - margin: 0 3px 3px 0; - font-size: 11px; + .video-thumbnail { + margin-right: 10px } } } +} - @media screen and (max-width: 800px) { - .video-name-views { - .video-name { - padding-left: 5px; - padding-right: 0px; - } +my-video-comments { + display: inline-block; + width: 100%; + margin-bottom: 20px; +} - .video-views { - padding-left: 0px; - padding-right: 5px; - } +// If the view is not expanded, take into account the menu +.privacy-concerns { + 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; + + padding: 5px 15px; + + display: flex; + flex-wrap: nowrap; + align-items: center; + justify-content: flex-start; + background-color: rgba(0, 0, 0, 0.9); + color: #fff; + + .privacy-concerns-text { + margin: 0 5px; + } + + a { + @include disable-default-a-behaviour; + + color: var(--mainColor); + transition: color 0.3s; + + &:hover { + color: #fff; } + } - .video-small-blocks { - a, .video-small-block-text { - font-size: 13px !important; - } + .privacy-concerns-okay { + background-color: var(--mainColor); + padding: 5px 8px 5px 7px; + margin-left: auto; + border-radius: 3px; + cursor: pointer; + transition: background-color 0.3s; + font-weight: $font-semibold; + + &:hover { + background-color: #000; + } + } +} - .glyphicon { - font-size: 18px !important; - } +@media screen and (max-width: 1600px) { + .video-bottom .video-info .video-attributes .video-attribute { + margin-bottom: 5px; + } +} - .video-small-block-account { - padding-left: 10px; - padding-right: 10px; - } +@media screen and (max-width: 1300px) { + .privacy-concerns { + font-size: 12px; + padding: 2px 5px; + + .privacy-concerns-text { + margin: 0; + } + } +} + +@media screen and (max-width: 1100px) { + #video-wrapper { + flex-direction: column; + justify-content: center; + + my-video-watch-playlist ::ng-deep .playlist { + @include playlist-below-player; } + } + + .video-bottom { + flex-direction: column; + + ::ng-deep .other-videos { + padding-left: 0 !important; - .video-details { - .video-details-date-description { - padding-left: 10px; - font-size: 13px !important; + ::ng-deep .video-miniature { + flex-direction: row; + width: auto; } + } + } +} + +@media screen and (max-width: 600px) { + .video-bottom { + margin: 20px 0 0 0 !important; + + .video-info { + padding: 0; - .video-details-attributes { - font-size: 11px !important; + .video-info-first-row { - .video-details-attribute-label { - width: 50px; + .video-info-name { + font-size: 20px; + height: auto; } } } } - @media screen and (max-width: 500px) { - .video-name-views { - font-size: 16px !important; - } + ::ng-deep .other-videos .video-miniature { + flex-direction: column; + } - // Keep the same hierarchy than max-width: 800px - .video-small-blocks { - a, .video-small-block-text { - font-size: 10px !important; - } + .privacy-concerns { + width: 100%; - .video-small-block-account { - padding-left: 5px; - padding-right: 5px; - } + strong { + display: none; } + } +} - .video-details { - .video-details-date-description { - margin-bottom: 30px; - width: 100%; +@media screen and (max-width: 450px) { + .video-bottom { + .action-button .icon-text { + display: none !important; + } - .video-details-date { - margin-bottom: 15px; - } + .video-info .video-info-first-row { + .video-info-name { + font-size: 18px; + } + + .video-info-date-views { + font-size: 14px; } - .video-details-attributes { - padding-left: 10px; - padding-right: 10px; + .video-actions-rates { + margin-top: 10px; } } + + .video-info-description { + font-size: 14px !important; + } } }