1 <div class=
"video-miniature" [ngClass]=
"getClasses()" (mouseenter)=
"loadActions()">
3 [video]=
"video" [nsfw]=
"isVideoBlur" [videoRouterLink]=
"videoRouterLink" [videoHref]=
"videoHref" [videoTarget]=
"videoTarget"
4 [displayWatchLaterPlaylist]=
"isWatchLaterPlaylistDisplayed()" [inWatchLaterPlaylist]=
"inWatchLaterPlaylist" (watchLaterClick)=
"onWatchLaterClick($event)"
6 <ng-container ngProjectAs=
"label-warning" *
ngIf=
"displayOptions.privacyLabel && isUnlistedVideo()" i18n
>Unlisted
</ng-container>
7 <ng-container ngProjectAs=
"label-danger" *
ngIf=
"displayOptions.privacyLabel && isPrivateVideo()" i18n
>Private
</ng-container>
10 <div class=
"video-bottom">
11 <div class=
"video-miniature-information">
12 <div class=
"d-flex video-miniature-meta">
14 *
ngIf=
"displayOptions.avatar && displayOwnerVideoChannel() && !displayAsRow" [title]=
"channelLinkTitle"
15 [actor]=
"video.channel" actorType=
"channel" [size]=
"actorImageSize" [internalHref]=
"[ '/c', video.byVideoChannel ]"
20 *
ngIf=
"displayOptions.avatar && displayOwnerAccount() && !displayAsRow" [title]=
"channelLinkTitle"
21 [actor]=
"video.account" actorType=
"channel" [size]=
"actorImageSize" [internalHref]=
"[ '/c', video.byVideoChannel ]"
25 <div class=
"w-100 d-flex flex-column">
27 [internalLink]=
"videoRouterLink" [href]=
"videoHref" [target]=
"videoTarget"
28 [title]=
"video.name"class=
"video-miniature-name" [ngClass]=
"{ 'blur-filter': isVideoBlur }" tabindex=
"-1"
33 <span class=
"video-miniature-created-at-views">
34 <my-date-toggle *
ngIf=
"displayOptions.date" [date]=
"video.publishedAt"></my-date-toggle>
36 <span class=
"views" [title]=
"video.getExactNumberOfViews()">
37 <ng-container *
ngIf=
"displayOptions.date && displayOptions.views"> •
</ng-container>
39 <my-video-views-counter *
ngIf=
"displayOptions.views" [video]=
"video"></my-video-views-counter>
43 <a tabindex=
"-1" *
ngIf=
"displayOptions.by && displayOwnerAccount()" class=
"video-miniature-account" [routerLink]=
"[ '/c', video.byVideoChannel ]">
46 <a tabindex=
"-1" *
ngIf=
"displayOptions.by && displayOwnerVideoChannel()" class=
"video-miniature-channel" [routerLink]=
"[ '/c', video.byVideoChannel ]">
50 <div class=
"video-info-privacy">
51 <ng-container *
ngIf=
"displayOptions.privacyText">{{ video.privacy.label }}
</ng-container>
52 <ng-container *
ngIf=
"displayOptions.privacyText && displayOptions.state && getStateLabel(video)"> -
</ng-container>
53 <ng-container *
ngIf=
"displayOptions.state">{{ getStateLabel(video) }}
</ng-container>
56 <div *
ngIf=
"containedInPlaylists" class=
"fs-6">
57 <a *
ngFor=
"let playlist of containedInPlaylists" class=
"pt-badge badge-secondary" [routerLink]=
"['/w/p/', playlist.playlistShortUUID]">
58 {{ playlist.playlistDisplayName }}
64 <div *
ngIf=
"displayOptions.blacklistInfo && video.blacklisted" class=
"video-info-blocked">
65 <span class=
"blocked-label" i18n
>Blocked
</span>
66 <span class=
"blocked-reason" *
ngIf=
"video.blacklistedReason">{{ video.blacklistedReason }}
</span>
69 <div i18n *
ngIf=
"displayOptions.nsfw && video.nsfw" class=
"video-info-nsfw">
74 <div class=
"video-actions">
75 <!-- FIXME: remove bottom placement when overflow is fixed in bootstrap dropdown: https://github.com/ng-bootstrap/ng-bootstrap/issues/3495 -->
76 <my-video-actions-dropdown
77 *
ngIf=
"showActions" [video]=
"video" [displayOptions]=
"videoActionsDisplayOptions" placement=
"bottom-left bottom-right left auto"
78 (videoRemoved)=
"onVideoRemoved()" (videoBlocked)=
"onVideoBlocked()" (videoUnblocked)=
"onVideoUnblocked()" (videoAccountMuted)=
"onVideoAccountMuted()"
79 ></my-video-actions-dropdown>