Add visitor settings, rework logged-in dropdown (#2514)
[oweals/peertube.git] / client / src / app / videos / +video-watch / video-watch.component.scss
index d8113b666de6abd2eeb5504309863bc1270c2eb1..10e129ac589555e9b4f6d8b871779d36b4a2d4b1 100644 (file)
@@ -3,8 +3,8 @@
 @import '_bootstrap-variables';
 @import '_miniature';
 
-$other-videos-width: 260px;
 $player-factor: 1.7; // 16/9
+$video-info-margin-left: 44px;
 
 @function getPlayerHeight($width){
   @return calc(#{$width} / #{$player-factor})
@@ -15,10 +15,11 @@ $player-factor: 1.7; // 16/9
 }
 
 @mixin playlist-below-player {
-  width: 100%;
-  height: auto;
-  max-height: 300px;
-  border-bottom: 1px solid $separator-border-color;
+  width: 100% !important;
+  height: auto !important;
+  max-height: 300px !important;
+  max-width: initial;
+  border-bottom: 1px solid $separator-border-color !important;
 }
 
 .root {
@@ -30,14 +31,15 @@ $player-factor: 1.7; // 16/9
       width: 100%;
     }
 
-    /deep/ .video-js {
+    ::ng-deep .video-js {
       $height: calc(100vh - #{$header-height} - #{$theater-bottom-space});
 
       height: $height;
       width: 100%;
+      max-width: initial;
     }
 
-    .playlist {
+    my-video-watch-playlist ::ng-deep .playlist {
       @include playlist-below-player;
     }
   }
@@ -80,62 +82,9 @@ $player-factor: 1.7; // 16/9
     }
   }
 
-  .playlist {
-    min-width: 200px;
-    max-width: 470px;
-    height: 66vh;
-    background-color: var(--mainBackgroundColor);
-    overflow-y: auto;
-    border-bottom: 1px solid $separator-border-color;
-
-    .playlist-info {
-      padding: 5px 30px;
-      background-color: #e4e4e4;
-
-      .playlist-display-name {
-        font-size: 18px;
-        font-weight: $font-semibold;
-        margin-bottom: 5px;
-      }
-
-      .playlist-by-index {
-        color: $grey-foreground-color;
-        display: flex;
-
-        .playlist-by {
-          margin-right: 5px;
-        }
-
-        .playlist-index span:first-child::after {
-          content: '/';
-          margin: 0 3px;
-        }
-      }
-    }
-
-    my-video-playlist-element-miniature {
-      /deep/ {
-        .video {
-          .position {
-            margin-right: 0;
-          }
-
-          .video-info {
-            .video-info-name {
-              font-size: 15px;
-            }
-          }
-        }
-
-        my-video-thumbnail {
-          @include thumbnail-size-component(90px, 50px);
-        }
-      }
-    }
-  }
-
-  /deep/ .video-js {
-    width: getPlayerWidth(66vh);
+  ::ng-deep .video-js {
+    width: 100%;
+    max-width: getPlayerWidth(66vh);
     height: 66vh;
 
     // VideoJS create an inner video player
@@ -147,7 +96,7 @@ $player-factor: 1.7; // 16/9
 
   @media screen and (max-width: 600px) {
     .remote-server-down,
-    /deep/ .video-js {
+    ::ng-deep .video-js {
       width: 100vw;
       height: getPlayerHeight(100vw)
     }
@@ -159,6 +108,10 @@ $player-factor: 1.7; // 16/9
   border-radius: 0;
 }
 
+.flex-direction-column {
+  flex-direction: column;
+}
+
 #video-not-found {
   height: 300px;
   line-height: 300px;
@@ -193,11 +146,18 @@ $player-factor: 1.7; // 16/9
         flex-grow: 1;
       }
 
+      .video-info-first-row-bottom {
+        display: flex;
+        flex-wrap: wrap;
+        align-items: center;
+        width: 100%;
+      }
+
       .video-info-date-views {
-        flex-grow: 1;
+        align-self: start;
         margin-bottom: 10px;
         margin-right: 10px;
-        font-size: 16px;
+        font-size: 1em;
       }
 
       .video-info-channel {
@@ -216,41 +176,28 @@ $player-factor: 1.7; // 16/9
           img {
             @include avatar(18px);
 
-            margin: -2px 2px 0 5px;
+            margin: -2px 5px 0 0;
           }
         }
 
-        my-subscribe-button {
-          margin-left: 5px;
-        }
-      }
+        .video-info-channel-left {
+          flex-grow: 1;
 
-      .video-info-by {
-
-        a {
-          @include disable-default-a-behaviour;
+          .video-info-channel-left-links {
+            display: flex;
+            flex-direction: column;
+            position: relative;
+            line-height: 1.37;
 
-          display: inline;
-          align-items: center;
-          font-size: 13px;
-          color: var(--mainForegroundColor);
-
-          span:hover {
-            opacity: 0.8;
-          }
-
-          img {
-            @include avatar(18px);
-
-            margin-top: -2px;
-            margin-left: 7px;
+            a:nth-of-type(2) {
+              font-weight: 500;
+              font-size: 90%;
+            }
           }
         }
 
-        my-help {
-          position: relative;
-          top: 1px;
-          margin-left: 2px;
+        my-subscribe-button {
+          margin-left: 5px;
         }
       }
 
@@ -260,8 +207,10 @@ $player-factor: 1.7; // 16/9
       }
 
       .video-actions-rates {
-        margin: 20px 0 10px 0;
+        margin: 0 0 10px 0;
         align-items: start;
+        width: max-content;
+        margin-left: auto;
 
         .video-actions {
           height: 40px; // Align with the title
@@ -271,38 +220,73 @@ $player-factor: 1.7; // 16/9
           .action-button:not(:first-child),
           .action-dropdown,
           my-video-actions-dropdown {
-            margin-left: 10px;
+            margin-left: 5px;
           }
 
-          .action-button {
+          ::ng-deep.action-button {
             @include peertube-button;
-            @include grey-button;
             @include button-with-icon(21px, 0, -1px);
-            @include apply-svg-color($grey-foreground-color);
+            @include apply-svg-color(var(--actionButtonColor));
 
-            font-size: 15px;
+            font-size: 100%;
             font-weight: $font-semibold;
             display: inline-block;
             padding: 0 10px 0 10px;
             white-space: nowrap;
+            background-color: transparent !important;
+            color: var(--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 {
-              background-color: $green;
+              .count {
+                color: $activated-action-button-color;
+              }
 
               my-global-icon {
-                @include apply-svg-color(#fff);
+                @include apply-svg-color($activated-action-button-color);
               }
             }
 
             &.action-button-dislike.activated {
-              background-color: $red;
+              .count {
+                color: $activated-action-button-color;
+              }
+
+              my-global-icon {
+                @include apply-svg-color($activated-action-button-color);
+              }
+            }
+
+            &.action-button-support {
+              color: var(--supportButtonColor);
+
+              my-global-icon {
+                @include apply-svg-color(var(--supportButtonColor));
+              }
+            }
 
+            &.action-button-support {
               my-global-icon {
-                @include apply-svg-color(#fff);
+                ::ng-deep path:first-child {
+                  fill: var(--supportButtonHeartColor) !important;
+                }
               }
             }
 
@@ -319,18 +303,31 @@ $player-factor: 1.7; // 16/9
           }
         }
 
+        .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: 186px;
-          background-color: $red;
+          width: 120px;
+          background-color: #ccc;
           position: relative;
           top: 10px;
 
           .likes-bar {
             height: 100%;
-            background-color: $green;
+            background-color: #909090;
+
+            &.liked {
+              background-color: $activated-action-button-color;
+            }
           }
         }
       }
@@ -338,10 +335,15 @@ $player-factor: 1.7; // 16/9
 
     .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 {
@@ -365,6 +367,10 @@ $player-factor: 1.7; // 16/9
       }
     }
 
+    .video-attributes {
+      margin-left: $video-info-margin-left;
+    }
+
     .video-attributes .video-attribute {
       font-size: 13px;
       display: block;
@@ -397,23 +403,33 @@ $player-factor: 1.7; // 16/9
     }
   }
 
-  /deep/ .other-videos {
+  ::ng-deep .other-videos {
     padding-left: 15px;
-    flex-basis: $other-videos-width;
+    min-width: $video-miniature-width;
+
+    @media screen and (min-width: 1800px - (3* $video-miniature-width)) {
+      width: min-content;
+    }
 
     .title-page {
-      margin-top: 0 !important;
+      margin: 0 !important;
     }
 
     .video-miniature {
       display: flex;
-      width: $other-videos-width;
+      width: max-content;
       height: 100%;
       margin-bottom: 20px;
       flex-wrap: wrap;
+    }
 
-      .video-thumbnail {
-        margin-right: 10px
+    .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;
       }
     }
   }
@@ -427,6 +443,7 @@ my-video-comments {
 
 // If the view is not expanded, take into account the menu
 .privacy-concerns {
+  z-index: z(dropdown) + 1;
   width: calc(100% - #{$menu-width});
 }
 
@@ -446,6 +463,7 @@ my-video-comments {
 .privacy-concerns {
   position: fixed;
   bottom: 0;
+  z-index: z(privacymsg);
 
   padding: 5px 15px;
 
@@ -471,11 +489,11 @@ my-video-comments {
     }
   }
 
-  .privacy-concerns-okay {
-    background-color: var(--mainColor);
+  .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;
@@ -484,6 +502,11 @@ my-video-comments {
       background-color: #000;
     }
   }
+
+  .privacy-concerns-okay {
+    background-color: var(--mainColor);
+    margin-left: 10px;
+  }
 }
 
 @media screen and (max-width: 1600px) {
@@ -508,7 +531,7 @@ my-video-comments {
     flex-direction: column;
     justify-content: center;
 
-    .playlist {
+    my-video-watch-playlist ::ng-deep .playlist {
       @include playlist-below-player;
     }
   }
@@ -516,10 +539,10 @@ my-video-comments {
   .video-bottom {
     flex-direction: column;
 
-    /deep/ .other-videos {
+    ::ng-deep .other-videos {
       padding-left: 0 !important;
 
-      /deep/ .video-miniature  {
+      ::ng-deep .video-miniature  {
         flex-direction: row;
         width: auto;
       }
@@ -544,7 +567,7 @@ my-video-comments {
     }
   }
 
-  /deep/ .other-videos .video-miniature  {
+  ::ng-deep .other-videos .video-miniature  {
     flex-direction: column;
   }