<!-- 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">
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;
+ }
+ }
+ }
}
}