Improve responsive on video watch
authorChocobozzz <me@florianbigard.com>
Wed, 31 Jan 2018 10:38:05 +0000 (11:38 +0100)
committerChocobozzz <me@florianbigard.com>
Wed, 31 Jan 2018 10:38:05 +0000 (11:38 +0100)
client/src/app/app.component.scss
client/src/app/header/header.component.scss
client/src/app/videos/+video-watch/video-watch.component.html
client/src/app/videos/+video-watch/video-watch.component.scss
client/src/sass/application.scss

index 2aadb1c97466aad003ceaebbc0f44084458d2766..d502d63b5c385ddd11020fddc3abc8fe1bb31071 100644 (file)
@@ -42,7 +42,7 @@
 
       &.icon-menu {
         background-image: url('../assets/images/header/menu.svg');
-        margin: 0 18px 0 24px;
+        margin: 0 18px 0 20px;
       }
     }
 
index 1b67042fc23affdad0eacbded644a380ce3f2698..d589d66c94d799aab2cabde2057a724eb9adcbde 100644 (file)
@@ -10,7 +10,7 @@
     color: #000;
   }
 
-  @media screen and (max-width: 600px) {
+  @media screen and (max-width: 800px) {
     width: calc(100% - 150px);
   }
 
index 5921b4b7202cfb42db9f09a9737306204b6aaefc..74ead1b76437513be59248ce5f8b7a662a4f89d8 100644 (file)
@@ -9,89 +9,91 @@
   <!-- Video information -->
   <div *ngIf="video" class="margin-content video-bottom">
     <div class="video-info">
-      <div class="video-info-name-actions">
-        <div class="video-info-name">{{ video.name }}</div>
+      <div class="video-info-first-row">
+        <div>
+          <div class="video-info-name">{{ video.name }}</div>
 
-        <div class="video-info-actions">
-          <div
-            *ngIf="isUserLoggedIn()" [ngClass]="{ 'activated': userRating === 'like' }" (click)="setLike()"
-            class="action-button action-button-like"
-          >
-            <span class="icon icon-like" title="Like this video" ></span>
+          <div class="video-info-date-views">
+            {{ video.createdAt | myFromNow }} - {{ video.views | myNumberFormatter }} views
           </div>
 
-          <div
-            *ngIf="isUserLoggedIn()" [ngClass]="{ 'activated': userRating === 'dislike' }" (click)="setDislike()"
-            class="action-button action-button-dislike"
-          >
-            <span class="icon icon-dislike" title="Dislike this video"></span>
+          <div class="video-info-channel">
+            {{ video.channel.displayName }}
+            <!-- Here will be the subscribe button -->
           </div>
 
-          <div (click)="showShareModal()" class="action-button">
-            <span class="icon icon-share"></span>
-            Share
+          <div class="video-info-by">
+            By {{ video.by }}
+            <img [src]="getAvatarPath()" alt="Account avatar" />
           </div>
+        </div>
 
-          <div class="action-more" dropdown dropup="true" placement="right">
-            <div class="action-button" dropdownToggle>
-              <span class="icon icon-more"></span>
+        <div class="video-actions-rates">
+          <div class="video-actions">
+            <div
+                *ngIf="isUserLoggedIn()" [ngClass]="{ 'activated': userRating === 'like' }" (click)="setLike()"
+                class="action-button action-button-like"
+            >
+              <span class="icon icon-like" title="Like this video" ></span>
             </div>
 
-            <ul *dropdownMenu class="dropdown-menu" id="more-menu" role="menu" aria-labelledby="single-button">
-              <li role="menuitem">
-                <a class="dropdown-item" title="Download the video" href="#" (click)="showDownloadModal($event)">
-                  <span class="icon icon-download"></span> Download
-                </a>
-              </li>
-
-              <li *ngIf="isUserLoggedIn()" role="menuitem">
-                <a class="dropdown-item" title="Report this video" href="#" (click)="showReportModal($event)">
-                  <span class="icon icon-alert"></span> Report
-                </a>
-              </li>
-
-              <li *ngIf="isVideoBlacklistable()" role="menuitem">
-                <a class="dropdown-item" title="Blacklist this video" href="#" (click)="blacklistVideo($event)">
-                  <span class="icon icon-blacklist"></span> Blacklist
-                </a>
-              </li>
-
-              <li *ngIf="isVideoUpdatable()" role="menuitem">
-                <a class="dropdown-item" title="Update this video" href="#" [routerLink]="[ '/videos/edit', video.uuid ]">
-                  <span class="icon icon-edit"></span> Update
-                </a>
-              </li>
-
-              <li *ngIf="isVideoRemovable()" role="menuitem">
-                <a class="dropdown-item" title="Delete this video" href="#" (click)="removeVideo($event)">
-                  <span class="icon icon-blacklist"></span> Delete
-                </a>
-              </li>
-            </ul>
-          </div>
-        </div>
-      </div>
-
-      <div class="video-info-date-views-bar">
-        <div class="video-info-date-views">
-          {{ video.createdAt | myFromNow }} - {{ video.views | myNumberFormatter }} views
-        </div>
+            <div
+                *ngIf="isUserLoggedIn()" [ngClass]="{ 'activated': userRating === 'dislike' }" (click)="setDislike()"
+                class="action-button action-button-dislike"
+            >
+              <span class="icon icon-dislike" title="Dislike this video"></span>
+            </div>
 
-        <div
-          class="video-info-likes-dislikes-bar"
-          *ngIf="video.likes !== 0 || video.dislikes !== 0"  [tooltip]="likesBarTooltipText">
-          <div class="likes-bar" [ngStyle]="{ 'width.%': video.likesPercent }"></div>
-        </div>
-      </div>
+            <div (click)="showShareModal()" class="action-button">
+              <span class="icon icon-share"></span>
+              Share
+            </div>
 
-      <div class="video-info-channel">
-        {{ video.channel.displayName }}
-        <!-- Here will be the subscribe button -->
-      </div>
+            <div class="action-more" dropdown dropup="true" placement="right">
+              <div class="action-button" dropdownToggle>
+                <span class="icon icon-more"></span>
+              </div>
+
+              <ul *dropdownMenu class="dropdown-menu" id="more-menu" role="menu" aria-labelledby="single-button">
+                <li role="menuitem">
+                  <a class="dropdown-item" title="Download the video" href="#" (click)="showDownloadModal($event)">
+                    <span class="icon icon-download"></span> Download
+                  </a>
+                </li>
+
+                <li *ngIf="isUserLoggedIn()" role="menuitem">
+                  <a class="dropdown-item" title="Report this video" href="#" (click)="showReportModal($event)">
+                    <span class="icon icon-alert"></span> Report
+                  </a>
+                </li>
+
+                <li *ngIf="isVideoBlacklistable()" role="menuitem">
+                  <a class="dropdown-item" title="Blacklist this video" href="#" (click)="blacklistVideo($event)">
+                    <span class="icon icon-blacklist"></span> Blacklist
+                  </a>
+                </li>
+
+                <li *ngIf="isVideoUpdatable()" role="menuitem">
+                  <a class="dropdown-item" title="Update this video" href="#" [routerLink]="[ '/videos/edit', video.uuid ]">
+                    <span class="icon icon-edit"></span> Update
+                  </a>
+                </li>
+
+                <li *ngIf="isVideoRemovable()" role="menuitem">
+                  <a class="dropdown-item" title="Delete this video" href="#" (click)="removeVideo($event)">
+                    <span class="icon icon-blacklist"></span> Delete
+                  </a>
+                </li>
+              </ul>
+            </div>
+          </div>
 
-      <div class="video-info-by">
-        By {{ video.by }}
-        <img [src]="getAvatarPath()" alt="Account avatar" />
+          <div
+              class="video-info-likes-dislikes-bar"
+              *ngIf="video.likes !== 0 || video.dislikes !== 0"  [tooltip]="likesBarTooltipText">
+            <div class="likes-bar" [ngStyle]="{ 'width.%': video.likesPercent }"></div>
+          </div>
+        </div>
       </div>
 
       <div class="video-info-description">
index 7ebdfc0c4b7fffc8726e54f8579069a46f55d803..d963f713dbf73dd4327c235084b67dba9a91a859 100644 (file)
     flex-grow: 1;
     margin-right: 28px;
 
-    .video-info-name-actions {
+    .video-info-first-row {
       display: flex;
-      align-items: center;
+
+      & > div {
+        flex-grow: 1;
+      }
 
       .video-info-name {
         margin-right: 30px;
+        height: 40px; // Align with the action buttons
         font-size: 27px;
         font-weight: $font-semibold;
         flex-grow: 1;
       }
 
-      .video-info-actions {
-        min-width: 215px;
+      .video-info-date-views {
+        font-size: 16px;
+        margin-bottom: 10px;
+        flex-grow: 1;
+      }
+
+      .video-info-channel {
+        font-weight: $font-semibold;
+        font-size: 15px;
+      }
+
+      .video-info-by {
         display: flex;
-        justify-content: end;
+        align-items: center;
+        font-size: 13px;
+
+        img {
+          @include avatar(18px);
 
-        .action-button:not(:first-child), .action-more {
-          margin-left: 10px;
+          margin-left: 7px;
         }
+      }
 
-        .action-button {
-          @include peertube-button;
-          @include grey-button;
+      .video-actions-rates {
+        display: flex;
+        flex-direction: column;
+        align-items: end;
 
-          font-size: 15px;
-          font-weight: $font-semibold;
-          display: inline-block;
-          padding: 0 10px 0 10px;
+        .video-actions {
+          height: 40px; // Align with the title
+          min-width: 215px;
+          display: flex;
+          align-items: center;
 
-          .icon {
-            @include icon(21px);
+          .action-button:not(:first-child), .action-more {
+            margin-left: 10px;
+          }
 
-            position: relative;
-            top: -2px;
+          .action-button {
+            @include peertube-button;
+            @include grey-button;
 
-            &.icon-like {
-              background-image: url('../../../assets/images/video/like-grey.svg');
-            }
+            font-size: 15px;
+            font-weight: $font-semibold;
+            display: inline-block;
+            padding: 0 10px 0 10px;
 
-            &.icon-dislike {
-              background-image: url('../../../assets/images/video/dislike-grey.svg');
-            }
+            .icon {
+              @include icon(21px);
 
-            &.icon-share {
-              background-image: url('../../../assets/images/video/share.svg');
-            }
+              position: relative;
+              top: -2px;
+
+              &.icon-like {
+                background-image: url('../../../assets/images/video/like-grey.svg');
+              }
+
+              &.icon-dislike {
+                background-image: url('../../../assets/images/video/dislike-grey.svg');
+              }
 
-            &.icon-more {
-              background-image: url('../../../assets/images/video/more.svg');
-              top: -1px;
+              &.icon-share {
+                background-image: url('../../../assets/images/video/share.svg');
+              }
+
+              &.icon-more {
+                background-image: url('../../../assets/images/video/more.svg');
+                top: -1px;
+              }
             }
-          }
 
-          &.action-button-like.activated {
-            background-color: #39CC0B;
+            &.action-button-like.activated {
+              background-color: #39CC0B;
 
-            .icon-like {
-              background-image: url('../../../assets/images/video/like-white.svg');
+              .icon-like {
+                background-image: url('../../../assets/images/video/like-white.svg');
+              }
             }
-          }
 
-          &.action-button-dislike.activated {
-            background-color: #FF0000;
+            &.action-button-dislike.activated {
+              background-color: #FF0000;
 
-            .icon-dislike {
-              background-image: url('../../../assets/images/video/dislike-white.svg');
+              .icon-dislike {
+                background-image: url('../../../assets/images/video/dislike-white.svg');
+              }
             }
           }
-        }
 
-        .action-more {
-          display: inline-block;
+          .action-more {
+            display: inline-block;
 
-          .dropdown-menu .dropdown-item {
-            padding: 6px 24px;
+            .dropdown-menu .dropdown-item {
+              padding: 6px 24px;
 
-            .icon {
-              @include icon(24px);
+              .icon {
+                @include icon(24px);
 
-              margin-right: 10px;
-              position: relative;
-              top: -1px;
+                margin-right: 10px;
+                position: relative;
+                top: -1px;
 
-              &.icon-download {
-                background-image: url('../../../assets/images/video/download-black.svg');
-              }
+                &.icon-download {
+                  background-image: url('../../../assets/images/video/download-black.svg');
+                }
 
-              &.icon-edit {
-                background-image: url('../../../assets/images/global/edit-black.svg');
-              }
+                &.icon-edit {
+                  background-image: url('../../../assets/images/global/edit-black.svg');
+                }
 
-              &.icon-alert {
-                background-image: url('../../../assets/images/video/alert.svg');
-              }
+                &.icon-alert {
+                  background-image: url('../../../assets/images/video/alert.svg');
+                }
 
-              &.icon-blacklist {
-                background-image: url('../../../assets/images/video/blacklist.svg');
+                &.icon-blacklist {
+                  background-image: url('../../../assets/images/video/blacklist.svg');
+                }
               }
             }
           }
         }
-      }
-    }
-
-    .video-info-date-views-bar {
-      display: flex;
 
-      .video-info-date-views {
-        font-size: 16px;
-        margin-bottom: 10px;
-        flex-grow: 1;
-      }
-
-      .video-info-likes-dislikes-bar {
-        height: 5px;
-        width: 186px;
-        background-color: #E5E5E5;
-        margin-top: 25px;
+        .video-info-likes-dislikes-bar {
+          height: 5px;
+          width: 186px;
+          background-color: #E5E5E5;
+          margin-top: 25px;
 
-        .likes-bar {
-          height: 100%;
-          background-color: #39CC0B;
+          .likes-bar {
+            height: 100%;
+            background-color: #39CC0B;
+          }
         }
       }
     }
 
-    .video-info-channel {
-      font-weight: $font-semibold;
-      font-size: 15px;
-    }
-
-    .video-info-by {
-      display: flex;
-      align-items: center;
-      font-size: 13px;
-
-      img {
-        @include avatar(18px);
-
-        margin-left: 7px;
-      }
-    }
-
     .video-info-description {
       margin: 20px 0;
       font-size: 15px;
       }
     }
 
-    .video-attributes {
-      .video-attribute {
-        font-size: 13px;
-        display: block;
-        margin-bottom: 12px;
-
-        .video-attribute-label {
-          width: 86px;
-          display: inline-block;
-          color: #585858;
-          font-weight: $font-bold;
-        }
+    .video-attributes .video-attribute {
+      font-size: 13px;
+      display: block;
+      margin-bottom: 12px;
+
+      .video-attribute-label {
+        width: 86px;
+        display: inline-block;
+        color: #585858;
+        font-weight: $font-bold;
       }
     }
   }
     .video-info {
       margin-right: 0;
 
-      .video-info-name-actions {
-        align-items: left;
+      .video-info-first-row {
         flex-direction: column;
         margin-bottom: 30px;
+
+        .video-actions-rates {
+          margin-top: 20px;
+          align-items: left;
+
+          .video-info-likes-dislikes-bar {
+            margin-top: 10px;
+          }
+        }
       }
 
-      .video-info-date-views-bar {
-        align-items: left;
+      .video-info-date-views {
         flex-direction: column;
         margin-bottom: 30px;
 
           margin-top: 0;
         }
       }
+
+      .video-attributes .video-attribute {
+        margin-bottom: 5px;
+      }
     }
   }
 }
 
-@media screen and (max-width: 800px) {
+@media screen and (max-width: 600px) {
   .video-bottom {
     margin: 20px 0 0 0;
+
+    .video-info {
+
+      .video-info-first-row {
+
+        .video-info-name {
+          font-size: 20px;
+          height: auto;
+        }
+      }
+    }
   }
 }
index 5363b759b174838e02eca55c41e883dabc1bdf2e..84ffbec65316ee0be8155e27ceaab230db43ce22 100644 (file)
@@ -360,6 +360,17 @@ table {
   }
 }
 
+@media screen and (max-width: 900px) {
+  .main-col {
+    &, &.expanded {
+      .margin-content {
+        margin-left: 50px;
+        margin-right: 50px;
+      }
+    }
+  }
+}
+
 // On small screen, menu is absolute
 @media screen and (max-width: 600px) {
   .title-menu-left {