Improve responsive on video watch

This commit is contained in:
Chocobozzz 2018-01-31 11:38:05 +01:00
parent 6693df9dd6
commit 1f788f2044
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
5 changed files with 244 additions and 204 deletions

View File

@ -42,7 +42,7 @@
&.icon-menu { &.icon-menu {
background-image: url('../assets/images/header/menu.svg'); background-image: url('../assets/images/header/menu.svg');
margin: 0 18px 0 24px; margin: 0 18px 0 20px;
} }
} }

View File

@ -10,7 +10,7 @@
color: #000; color: #000;
} }
@media screen and (max-width: 600px) { @media screen and (max-width: 800px) {
width: calc(100% - 150px); width: calc(100% - 150px);
} }

View File

@ -9,91 +9,93 @@
<!-- Video information --> <!-- Video information -->
<div *ngIf="video" class="margin-content video-bottom"> <div *ngIf="video" class="margin-content video-bottom">
<div class="video-info"> <div class="video-info">
<div class="video-info-name-actions"> <div class="video-info-first-row">
<div class="video-info-name">{{ video.name }}</div> <div>
<div class="video-info-name">{{ video.name }}</div>
<div class="video-info-actions"> <div class="video-info-date-views">
<div {{ video.createdAt | myFromNow }} - {{ video.views | myNumberFormatter }} views
*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> </div>
<div <div class="video-info-channel">
*ngIf="isUserLoggedIn()" [ngClass]="{ 'activated': userRating === 'dislike' }" (click)="setDislike()" {{ video.channel.displayName }}
class="action-button action-button-dislike" <!-- Here will be the subscribe button -->
>
<span class="icon icon-dislike" title="Dislike this video"></span>
</div> </div>
<div (click)="showShareModal()" class="action-button"> <div class="video-info-by">
<span class="icon icon-share"></span> By {{ video.by }}
Share <img [src]="getAvatarPath()" alt="Account avatar" />
</div> </div>
</div>
<div class="action-more" dropdown dropup="true" placement="right"> <div class="video-actions-rates">
<div class="action-button" dropdownToggle> <div class="video-actions">
<span class="icon icon-more"></span> <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> </div>
<ul *dropdownMenu class="dropdown-menu" id="more-menu" role="menu" aria-labelledby="single-button"> <div
<li role="menuitem"> *ngIf="isUserLoggedIn()" [ngClass]="{ 'activated': userRating === 'dislike' }" (click)="setDislike()"
<a class="dropdown-item" title="Download the video" href="#" (click)="showDownloadModal($event)"> class="action-button action-button-dislike"
<span class="icon icon-download"></span> Download >
</a> <span class="icon icon-dislike" title="Dislike this video"></span>
</li> </div>
<li *ngIf="isUserLoggedIn()" role="menuitem"> <div (click)="showShareModal()" class="action-button">
<a class="dropdown-item" title="Report this video" href="#" (click)="showReportModal($event)"> <span class="icon icon-share"></span>
<span class="icon icon-alert"></span> Report Share
</a> </div>
</li>
<li *ngIf="isVideoBlacklistable()" role="menuitem"> <div class="action-more" dropdown dropup="true" placement="right">
<a class="dropdown-item" title="Blacklist this video" href="#" (click)="blacklistVideo($event)"> <div class="action-button" dropdownToggle>
<span class="icon icon-blacklist"></span> Blacklist <span class="icon icon-more"></span>
</a> </div>
</li>
<li *ngIf="isVideoUpdatable()" role="menuitem"> <ul *dropdownMenu class="dropdown-menu" id="more-menu" role="menu" aria-labelledby="single-button">
<a class="dropdown-item" title="Update this video" href="#" [routerLink]="[ '/videos/edit', video.uuid ]"> <li role="menuitem">
<span class="icon icon-edit"></span> Update <a class="dropdown-item" title="Download the video" href="#" (click)="showDownloadModal($event)">
</a> <span class="icon icon-download"></span> Download
</li> </a>
</li>
<li *ngIf="isVideoRemovable()" role="menuitem"> <li *ngIf="isUserLoggedIn()" role="menuitem">
<a class="dropdown-item" title="Delete this video" href="#" (click)="removeVideo($event)"> <a class="dropdown-item" title="Report this video" href="#" (click)="showReportModal($event)">
<span class="icon icon-blacklist"></span> Delete <span class="icon icon-alert"></span> Report
</a> </a>
</li> </li>
</ul>
<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-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>
</div> </div>
<div class="video-info-date-views-bar">
<div class="video-info-date-views">
{{ video.createdAt | myFromNow }} - {{ video.views | myNumberFormatter }} views
</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 class="video-info-channel">
{{ video.channel.displayName }}
<!-- Here will be the subscribe button -->
</div>
<div class="video-info-by">
By {{ video.by }}
<img [src]="getAvatarPath()" alt="Account avatar" />
</div>
<div class="video-info-description"> <div class="video-info-description">
<div class="video-info-description-html" [innerHTML]="videoHTMLDescription"></div> <div class="video-info-description-html" [innerHTML]="videoHTMLDescription"></div>

View File

@ -39,146 +39,153 @@
flex-grow: 1; flex-grow: 1;
margin-right: 28px; margin-right: 28px;
.video-info-name-actions { .video-info-first-row {
display: flex; display: flex;
align-items: center;
& > div {
flex-grow: 1;
}
.video-info-name { .video-info-name {
margin-right: 30px; margin-right: 30px;
height: 40px; // Align with the action buttons
font-size: 27px; font-size: 27px;
font-weight: $font-semibold; font-weight: $font-semibold;
flex-grow: 1; flex-grow: 1;
} }
.video-info-actions {
min-width: 215px;
display: flex;
justify-content: end;
.action-button:not(:first-child), .action-more {
margin-left: 10px;
}
.action-button {
@include peertube-button;
@include grey-button;
font-size: 15px;
font-weight: $font-semibold;
display: inline-block;
padding: 0 10px 0 10px;
.icon {
@include icon(21px);
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-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;
.icon-like {
background-image: url('../../../assets/images/video/like-white.svg');
}
}
&.action-button-dislike.activated {
background-color: #FF0000;
.icon-dislike {
background-image: url('../../../assets/images/video/dislike-white.svg');
}
}
}
.action-more {
display: inline-block;
.dropdown-menu .dropdown-item {
padding: 6px 24px;
.icon {
@include icon(24px);
margin-right: 10px;
position: relative;
top: -1px;
&.icon-download {
background-image: url('../../../assets/images/video/download-black.svg');
}
&.icon-edit {
background-image: url('../../../assets/images/global/edit-black.svg');
}
&.icon-alert {
background-image: url('../../../assets/images/video/alert.svg');
}
&.icon-blacklist {
background-image: url('../../../assets/images/video/blacklist.svg');
}
}
}
}
}
}
.video-info-date-views-bar {
display: flex;
.video-info-date-views { .video-info-date-views {
font-size: 16px; font-size: 16px;
margin-bottom: 10px; margin-bottom: 10px;
flex-grow: 1; flex-grow: 1;
} }
.video-info-likes-dislikes-bar { .video-info-channel {
height: 5px; font-weight: $font-semibold;
width: 186px; font-size: 15px;
background-color: #E5E5E5; }
margin-top: 25px;
.likes-bar { .video-info-by {
height: 100%; display: flex;
background-color: #39CC0B; align-items: center;
font-size: 13px;
img {
@include avatar(18px);
margin-left: 7px;
} }
} }
}
.video-info-channel { .video-actions-rates {
font-weight: $font-semibold; display: flex;
font-size: 15px; flex-direction: column;
} align-items: end;
.video-info-by { .video-actions {
display: flex; height: 40px; // Align with the title
align-items: center; min-width: 215px;
font-size: 13px; display: flex;
align-items: center;
img { .action-button:not(:first-child), .action-more {
@include avatar(18px); margin-left: 10px;
}
margin-left: 7px; .action-button {
@include peertube-button;
@include grey-button;
font-size: 15px;
font-weight: $font-semibold;
display: inline-block;
padding: 0 10px 0 10px;
.icon {
@include icon(21px);
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-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;
.icon-like {
background-image: url('../../../assets/images/video/like-white.svg');
}
}
&.action-button-dislike.activated {
background-color: #FF0000;
.icon-dislike {
background-image: url('../../../assets/images/video/dislike-white.svg');
}
}
}
.action-more {
display: inline-block;
.dropdown-menu .dropdown-item {
padding: 6px 24px;
.icon {
@include icon(24px);
margin-right: 10px;
position: relative;
top: -1px;
&.icon-download {
background-image: url('../../../assets/images/video/download-black.svg');
}
&.icon-edit {
background-image: url('../../../assets/images/global/edit-black.svg');
}
&.icon-alert {
background-image: url('../../../assets/images/video/alert.svg');
}
&.icon-blacklist {
background-image: url('../../../assets/images/video/blacklist.svg');
}
}
}
}
}
.video-info-likes-dislikes-bar {
height: 5px;
width: 186px;
background-color: #E5E5E5;
margin-top: 25px;
.likes-bar {
height: 100%;
background-color: #39CC0B;
}
}
} }
} }
@ -203,18 +210,16 @@
} }
} }
.video-attributes { .video-attributes .video-attribute {
.video-attribute { font-size: 13px;
font-size: 13px; display: block;
display: block; margin-bottom: 12px;
margin-bottom: 12px;
.video-attribute-label { .video-attribute-label {
width: 86px; width: 86px;
display: inline-block; display: inline-block;
color: #585858; color: #585858;
font-weight: $font-bold; font-weight: $font-bold;
}
} }
} }
} }
@ -246,14 +251,21 @@
.video-info { .video-info {
margin-right: 0; margin-right: 0;
.video-info-name-actions { .video-info-first-row {
align-items: left;
flex-direction: column; flex-direction: column;
margin-bottom: 30px; 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 { .video-info-date-views {
align-items: left;
flex-direction: column; flex-direction: column;
margin-bottom: 30px; margin-bottom: 30px;
@ -261,12 +273,27 @@
margin-top: 0; margin-top: 0;
} }
} }
.video-attributes .video-attribute {
margin-bottom: 5px;
}
} }
} }
} }
@media screen and (max-width: 800px) { @media screen and (max-width: 600px) {
.video-bottom { .video-bottom {
margin: 20px 0 0 0; margin: 20px 0 0 0;
.video-info {
.video-info-first-row {
.video-info-name {
font-size: 20px;
height: auto;
}
}
}
} }
} }

View 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 // On small screen, menu is absolute
@media screen and (max-width: 600px) { @media screen and (max-width: 600px) {
.title-menu-left { .title-menu-left {