2021-08-19 07:24:29 +00:00
|
|
|
<div myInfiniteScroller (nearOfBottom)="onNearOfBottom()" class="search-result">
|
2018-07-24 14:00:22 +00:00
|
|
|
<div class="results-header">
|
2018-07-20 16:31:49 +00:00
|
|
|
<div class="first-line">
|
2018-07-24 14:00:22 +00:00
|
|
|
<div class="results-counter" *ngIf="pagination.totalItems">
|
2022-06-08 14:14:24 +00:00
|
|
|
<span class="me-1" i18n>{{ pagination.totalItems | myNumberFormatter }} {pagination.totalItems, plural, =1 {result} other {results}}</span>
|
2020-05-29 14:16:24 +00:00
|
|
|
|
2022-06-08 14:14:24 +00:00
|
|
|
<span class="me-1" i18n *ngIf="advancedSearch.searchTarget === 'local'">on this instance</span>
|
|
|
|
<span class="me-1" i18n *ngIf="advancedSearch.searchTarget === 'search-index'">on the vidiverse</span>
|
2020-05-29 14:16:24 +00:00
|
|
|
|
2021-03-24 13:48:31 +00:00
|
|
|
<span *ngIf="currentSearch" i18n>for <span class="search-value">{{ currentSearch }}</span></span>
|
2018-07-20 16:31:49 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div
|
2022-06-08 14:14:24 +00:00
|
|
|
class="results-filter-button ms-auto" (click)="isSearchFilterCollapsed = !isSearchFilterCollapsed" role="button"
|
2018-07-23 18:13:30 +00:00
|
|
|
[attr.aria-expanded]="!isSearchFilterCollapsed" aria-controls="collapseBasic"
|
2018-07-20 16:31:49 +00:00
|
|
|
>
|
|
|
|
<span class="icon icon-filter"></span>
|
2018-10-01 15:21:03 +00:00
|
|
|
<ng-container i18n>
|
|
|
|
Filters
|
2022-06-08 14:14:24 +00:00
|
|
|
<span *ngIf="numberOfFilters() > 0" class="pt-badge badge-secondary">{{ numberOfFilters() }}</span>
|
2018-10-01 15:21:03 +00:00
|
|
|
</ng-container>
|
2018-07-20 16:31:49 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2019-06-12 10:40:24 +00:00
|
|
|
<div class="results-filter collapse-transition" [ngbCollapse]="isSearchFilterCollapsed">
|
2018-07-23 18:13:30 +00:00
|
|
|
<my-search-filters [advancedSearch]="advancedSearch" (filtered)="onFiltered()"></my-search-filters>
|
2021-07-29 13:19:22 +00:00
|
|
|
|
|
|
|
<div *ngIf="error" class="alert alert-danger">{{ error }}</div>
|
2018-07-20 16:31:49 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2018-08-30 12:58:00 +00:00
|
|
|
<div i18n *ngIf="pagination.totalItems === 0 && results.length === 0" class="no-results">
|
2018-07-20 16:31:49 +00:00
|
|
|
No results found
|
2018-07-19 14:17:54 +00:00
|
|
|
</div>
|
|
|
|
|
2018-08-28 14:02:02 +00:00
|
|
|
<ng-container *ngFor="let result of results">
|
|
|
|
<div *ngIf="isVideoChannel(result)" class="entry video-channel">
|
2020-07-20 09:37:06 +00:00
|
|
|
|
2022-06-27 09:22:21 +00:00
|
|
|
<my-actor-avatar [actor]="result" actorType="channel" [internalHref]="getInternalChannelUrl(result)" [href]="getExternalChannelUrl(result)" size="120"></my-actor-avatar>
|
2018-08-23 15:58:39 +00:00
|
|
|
|
2018-08-28 14:02:02 +00:00
|
|
|
<div class="video-channel-info">
|
2021-04-28 09:49:34 +00:00
|
|
|
<a *ngIf="!isExternalChannelUrl()" [routerLink]="getInternalChannelUrl(result)" class="video-channel-names">
|
2020-07-20 09:37:06 +00:00
|
|
|
<ng-container *ngTemplateOutlet="aContent"></ng-container>
|
|
|
|
</a>
|
|
|
|
|
2021-04-28 09:49:34 +00:00
|
|
|
<a *ngIf="isExternalChannelUrl()" [href]="getExternalChannelUrl(result)" target="_blank" class="video-channel-names">
|
2020-07-20 09:37:06 +00:00
|
|
|
<ng-container *ngTemplateOutlet="aContent"></ng-container>
|
|
|
|
</a>
|
|
|
|
|
|
|
|
<ng-template #aContent>
|
2018-08-28 14:02:02 +00:00
|
|
|
<div class="video-channel-display-name">{{ result.displayName }}</div>
|
|
|
|
<div class="video-channel-name">{{ result.nameWithHost }}</div>
|
2020-07-20 09:37:06 +00:00
|
|
|
</ng-template>
|
2018-08-23 15:58:39 +00:00
|
|
|
|
2018-08-28 14:02:02 +00:00
|
|
|
<div i18n class="video-channel-followers">{{ result.followersCount }} subscribers</div>
|
|
|
|
</div>
|
2018-08-23 15:58:39 +00:00
|
|
|
|
2020-05-29 14:16:24 +00:00
|
|
|
<my-subscribe-button *ngIf="!hideActions()" [videoChannels]="[result]"></my-subscribe-button>
|
2018-08-28 14:02:02 +00:00
|
|
|
</div>
|
2018-07-19 14:17:54 +00:00
|
|
|
|
2018-08-28 14:02:02 +00:00
|
|
|
<div *ngIf="isVideo(result)" class="entry video">
|
2019-04-05 08:52:27 +00:00
|
|
|
<my-video-miniature
|
2020-06-16 09:00:35 +00:00
|
|
|
[video]="result" [user]="userMiniature" [displayAsRow]="true" [displayVideoActions]="!hideActions()"
|
2021-06-17 14:02:38 +00:00
|
|
|
[displayOptions]="videoDisplayOptions" [videoLinkType]="getLinkType()"
|
2020-06-02 18:50:42 +00:00
|
|
|
(videoBlocked)="removeVideoFromArray(result)" (videoRemoved)="removeVideoFromArray(result)"
|
2019-04-05 08:52:27 +00:00
|
|
|
></my-video-miniature>
|
2018-07-19 14:17:54 +00:00
|
|
|
</div>
|
2021-06-17 14:02:38 +00:00
|
|
|
|
|
|
|
<div *ngIf="isPlaylist(result)" class="entry video-playlist">
|
|
|
|
<my-video-playlist-miniature
|
|
|
|
[playlist]="result" [displayAsRow]="true" [displayChannel]="true"
|
|
|
|
[linkType]="getLinkType()"
|
|
|
|
></my-video-playlist-miniature>
|
|
|
|
</div>
|
2018-08-28 14:02:02 +00:00
|
|
|
</ng-container>
|
|
|
|
|
2018-07-19 14:17:54 +00:00
|
|
|
</div>
|