></my-video-playlist-miniature>
</div>
- <div class="col-xs-12 col-md-7 col-xl-9">
+ <div class="playlist-elements col-xs-12 col-md-7 col-xl-9">
<div i18n class="no-results" *ngIf="pagination.totalItems === 0">No videos in this playlist.</div>
<div
background-color: rgba(0, 0, 0, 0.05);
.more {
- display: block;
+ opacity: 1;
}
}
a {
@include disable-default-a-behaviour;
- min-width: 0;
display: flex;
+ min-width: 0;
align-items: center;
cursor: pointer;
- flex-grow: 1;
.position {
font-weight: $font-semibold;
.video-info {
display: flex;
flex-direction: column;
+ align-self: flex-start;
min-width: 0;
a {
.video-info-name {
font-size: 18px;
font-weight: $font-semibold;
+ display: inline-block;
@include ellipsis;
}
justify-self: flex-end;
margin-left: auto;
cursor: pointer;
- display: none;
+ opacity: 0;
&.show {
- display: block;
+ opacity: 1;
}
.icon-more {
-import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, Output, ViewChild } from '@angular/core'
+import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output, ViewChild } from '@angular/core'
import { Video } from '@app/shared/video/video.model'
import { VideoPlaylistElementUpdate } from '@shared/models'
import { AuthService, ConfirmService, Notifier, ServerService } from '@app/core'
{{ playlist.displayName }}
</a>
- <div class="video-info-privacy" *ngIf="displayPrivacy">{{ playlist.privacy.label }}</div>
+ <a i18n [routerLink]="[ '/video-channels', playlist.videoChannelBy ]" class="by" *ngIf="displayChannel && playlist.videoChannelBy">
+ {{ playlist.videoChannelBy }}
+ </a>
- <div class="video-info-by-date">
- <a i18n [routerLink]="[ '/video-channels', playlist.videoChannelBy ]" class="by" *ngIf="displayChannel && playlist.videoChannelBy">
- {{ playlist.videoChannelBy }}
- </a>
+ <div class="privacy-date">
+ <span class="video-info-privacy" *ngIf="displayPrivacy">{{ playlist.privacy.label }}</span>
- <div i18n class="updated-at">Updated {{ playlist.updatedAt | myFromNow }}</div>
+ <span i18n class="updated-at">Updated {{ playlist.updatedAt | myFromNow }}</span>
</div>
<div *ngIf="displayDescription" class="video-info-description">{{ playlist.description }}</div>
.miniature-name {
@include miniature-name;
+
+ @include ellipsis-multiline(1.3em, 2);
+
+ margin: 0;
}
- .video-info-by-date {
- display: flex;
- font-size: 13px;
- margin: 5px 0;
+ .by {
+ @include disable-default-a-behaviour;
- .by {
- @include disable-default-a-behaviour;
+ display: block;
+ color: $grey-foreground-color;
+ }
- display: block;
- color: var(--mainForegroundColor);
+ .privacy-date {
+ margin-top: 5px;
+
+ .video-info-privacy {
+ font-size: 14px;
+ font-weight: $font-semibold;
&::after {
content: '-';
}
}
- .video-info-privacy {
- font-size: 13px;
- font-weight: $font-semibold;
- }
-
.video-info-description {
margin-top: 10px;
color: $grey-foreground-color;
@mixin playlist-below-player {
width: 100%;
+ height: auto;
+ max-height: 300px;
border-bottom: 1px solid $separator-border-color;
}
justify-content: center;
margin: 0 -15px;
+ #videojs-wrapper {
+ display: flex;
+ justify-content: center;
+ flex-grow: 1;
+ }
+
.remote-server-down {
color: #fff;
display: flex;
}
.playlist {
- width: 400px;
+ 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;
}
@media screen and (max-width: 1100px) {
+ #video-wrapper {
+ flex-direction: column;
+ justify-content: center;
+
+ .playlist {
+ @include playlist-below-player;
+ }
+ }
+
.video-bottom {
flex-direction: column;
}
}
-@media screen and (max-width: 900px) {
- #video-wrapper {
- flex-direction: column;
- justify-content: center;
-
- #videojs-wrapper {
- display: flex;
- justify-content: center;
- }
-
- .playlist {
- @include playlist-below-player;
- }
- }
-}
-
@media screen and (max-width: 600px) {
.video-bottom {
margin: 20px 0 0 0 !important;