Newer
Older
<ng-template [ngTemplateOutlet]="resultTmpl">
</ng-template>
<ng-template #busyTmpl>
<spinner-cmp></spinner-cmp>
</ng-template>
<ng-template #resultTmpl>
<!-- virtual scroll. do not activate until autosize is supported -->
<cdk-virtual-scroll-viewport
*ngIf="useVirtualScroll; else regularScrollTmpl"
[attr.aria-label]="ARIA_LABELS.LIST_OF_DATASETS_ARIA_LABEL"
class="h-100"
minBufferPx="200"
maxBufferPx="400"
itemSize="50">
<div *cdkVirtualFor="let feature of registeredFeatures; templateCacheSize: 20; let index = index"
class="h-50px overflow-hidden">
<!-- divider, show if not first -->
<mat-divider *ngIf="index !== 0"></mat-divider>
<ng-container *ngTemplateOutlet="itemContainer; context: { $implicit: feature }">
</ng-container>
<!-- fallback, regular scroll -->
<!-- less efficient on large list, but for now should do -->
<ng-template #regularScrollTmpl>
<div class="feature-container"
[attr.aria-label]="ARIA_LABELS.LIST_OF_DATASETS_ARIA_LABEL">
<ng-template [ngIf]="busy$ | async" [ngIfElse]="notBusyTmpl">
<ng-template [ngTemplateOutlet]="busyTmpl"></ng-template>
</ng-template>
<ng-template #notBusyTmpl>
<ng-template [ngIf]="registeredFeatures.length === 0">
<span class="text-muted">
No regional features found.
</span>
</ng-template>
</ng-template>
<div *ngFor="let feature of registeredFeatures; let index = index"
<!-- divider, show if not first -->
<mat-divider *ngIf="index !== 0"></mat-divider>
<ng-container *ngTemplateOutlet="itemContainer; context: { $implicit: feature }">
</ng-container>
</div>
</div>
</ng-template>
</ng-template>
<!-- feature template -->
<ng-template #itemContainer let-feature>
<div class="d-block pt-4 cursor-default"
(click)="handleFeatureClick(feature)"
mat-ripple>
<!-- mat-chip container -->
<!-- do not use mat-chip-list to avoid adding incorrect a11y info -->
<div class="transform-origin-left-center scale-80">
<mat-chip *ngFor="let badge of feature | getBadgeFromFeaturePipe"
[color]="badge.color"
selected>
{{ badge.text }}
</mat-chip>
</div>
<small>
{{ feature | renderRegionalFeatureSummaryPipe }}
</small>
</div>
</ng-template>
<ng-template #regionalFeatureContainerTmpl>
</ng-template>