47 lines
2.8 KiB
HTML
47 lines
2.8 KiB
HTML
<div class="row auto-complete">
|
|
<input matInput #autocompleteInput class="col-12" [name]="id" autocomplete="off" #autocompleteTrigger="matAutocompleteTrigger" [placeholder]="placeholder" [matAutocomplete]="autocomplete" [value]="inputValue" (keyup)="onKeyUp($event)" [disabled]="disabled" (focus)="_onInputFocus()" (blur)="onBlur($event)">
|
|
<!-- The attribute autocomplete="nope", set by downshift, is ignored in Chrome 67 and Opera 54 (latest at the time of writing)
|
|
<input matInput #autocompleteInput class="col-12" [name]="id" autocomplete="nope" #autocompleteTrigger="matAutocompleteTrigger" [placeholder]="placeholder" [matAutocomplete]="autocomplete" [value]="inputValue" (keyup)="onKeyUp($event)" [disabled]="disabled" (focus)="_onInputFocus()" (blur)="onBlur($event)"> -->
|
|
<mat-icon *ngIf="!disabled" class="align-arrow-right" matSuffix>arrow_drop_down</mat-icon>
|
|
<mat-autocomplete #autocomplete="matAutocomplete" [displayWith]="_displayFn.bind(this)" (optionSelected)="_optionSelected($event)">
|
|
<span *ngIf="_groupedItems">
|
|
<mat-optgroup *ngFor="let group of _groupedItems | async" [label]="group.title">
|
|
<mat-option *ngFor="let item of group.items" [value]="item" [class.two-line-mat-option]="_subtitleFn(item) && !_optionTemplate(item)">
|
|
<!-- <img style="vertical-align:middle;" aria-hidden src="{{state.flag}}" height="25" /> -->
|
|
<ng-template #cellTemplate *ngIf="_optionTemplate(item)" [ngTemplateOutlet]="_optionTemplate(item)" [ngTemplateOutletContext]="{
|
|
item: item
|
|
}"></ng-template>
|
|
<div *ngIf="!_optionTemplate(item)">
|
|
<span>{{_titleFn(item)}}</span>
|
|
<br *ngIf="_subtitleFn(item)">
|
|
<small *ngIf="_subtitleFn(item)">{{_subtitleFn(item)}}</small>
|
|
</div>
|
|
</mat-option>
|
|
</mat-optgroup>
|
|
</span>
|
|
<span *ngIf="!_groupedItems">
|
|
<div *ngIf="_items | async as autocompleteItems; else loading">
|
|
<ng-container *ngIf="autocompleteItems.length; else noItems">
|
|
<mat-option *ngFor="let item of autocompleteItems" [value]="item" [class.two-line-mat-option]="_subtitleFn(item) && !_optionTemplate(item)">
|
|
<!-- <img style="vertical-align:middle;" aria-hidden src="{{state.flag}}" height="25" /> -->
|
|
<ng-template #cellTemplate *ngIf="_optionTemplate(item)" [ngTemplateOutlet]="_optionTemplate(item)" [ngTemplateOutletContext]="{
|
|
item: item
|
|
}"></ng-template>
|
|
<div *ngIf="!_optionTemplate(item)">
|
|
<span *ngIf="!_optionTemplate(item)">{{_titleFn(item)}}</span>
|
|
<br *ngIf="_subtitleFn(item)">
|
|
<small *ngIf="_subtitleFn(item)">{{_subtitleFn(item)}}</small>
|
|
</div>
|
|
</mat-option>
|
|
</ng-container>
|
|
<ng-template #noItems>
|
|
<mat-option disabled="true">No results found!</mat-option>
|
|
</ng-template>
|
|
</div>
|
|
<ng-template #loading>
|
|
<mat-option disabled="true">loading...</mat-option>
|
|
</ng-template>
|
|
</span>
|
|
</mat-autocomplete>
|
|
</div>
|