this.subscribed = true
this.notifier.success(
- this.i18n('Subscribed to {{nameWithHost}}', { nameWithHost: this.videoChannel.displayName }),
+ this.i18n(
+ 'Subscribed to {{nameWithHost}}. ' +
+ 'You will be notified of all their new videos.',
+ { nameWithHost: this.videoChannel.displayName }
+ ),
this.i18n('Subscribed')
)
},
</div>
<my-video-actions-dropdown
- placement="top auto" buttonDirection="horizontal" [buttonStyled]="true" [video]="video"
+ placement="bottom auto" buttonDirection="horizontal" [buttonStyled]="true" [video]="video"
(videoRemoved)="onVideoRemoved()" (modalOpened)="onModalOpened()"
></my-video-actions-dropdown>
</div>
}
.video-info-first-row-bottom {
- display: grid;
- grid-template-columns: 1fr auto;
+ 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;
.video-actions-rates {
margin: 0 0 10px 0;
align-items: start;
- align-self: end;
width: max-content;
+ margin-left: auto;
.video-actions {
height: 40px; // Align with the title
padding-left: 15px;
min-width: $video-miniature-width;
+ @media screen and (min-width: 1800px - (3* $video-miniature-width)) {
+ width: min-content;
+ }
+
.title-page {
margin: 0 !important;
}
<div class="other-videos">
<ng-container *ngIf="hasVideos$ | async">
- <div class="d-flex title-page-container">
+ <div class="title-page-container">
<div i18n class="title-page title-page-single">
Other videos
</div>
- <div *ngIf="!playlist" class="d-flex title-page-autoplay">
+ <div *ngIf="!playlist" class="title-page-autoplay"
+ [ngbTooltip]="autoPlayNextVideoTooltip" placement="bottom-right auto"
+ >
<span i18n>Autoplay</span>
<p-inputSwitch [(ngModel)]="autoPlayNextVideo" (ngModelChange)="switchAutoPlayNextVideo()"></p-inputSwitch>
</div>
.title-page-container {
+ display: flex;
justify-content: space-between;
- align-items: center;
+ align-items: baseline;
margin-bottom: 25px;
+ flex-wrap: wrap-reverse;
.title-page.active, .title-page.title-page-single {
margin-bottom: unset;
+ margin-right: .5rem !important;
}
}
.title-page-autoplay {
+ display: flex;
width: max-content;
height: max-content;
align-items: center;
+ margin-left: auto;
span {
margin-right: 0.3rem;
import { AuthService, Notifier } from '@app/core'
import { UserService } from '@app/shared/users/user.service'
import { peertubeSessionStorage } from '@app/shared/misc/peertube-web-storage'
+import { I18n } from '@ngx-translate/i18n-polyfill'
@Component({
selector: 'my-recommended-videos',
@Output() gotRecommendations = new EventEmitter<Video[]>()
autoPlayNextVideo: boolean
+ autoPlayNextVideoTooltip: string
readonly hasVideos$: Observable<boolean>
readonly videos$: Observable<Video[]>
private userService: UserService,
private authService: AuthService,
private notifier: Notifier,
+ private i18n: I18n,
private store: RecommendedVideosStore
) {
this.videos$ = this.store.recommendations$
this.autoPlayNextVideo = this.authService.isLoggedIn()
? this.authService.getUser().autoPlayNextVideo
: peertubeSessionStorage.getItem(RecommendedVideosComponent.SESSION_STORAGE_AUTO_PLAY_NEXT_VIDEO) === 'true' || false
+
+ this.autoPlayNextVideoTooltip = this.i18n('When active, the next video is automatically played after the current one.')
}
public ngOnChanges (): void {