2019-12-11 15:51:03 +01:00
|
|
|
<div class="row multiple-auto-complete" ngForm>
|
2021-11-09 13:14:19 +01:00
|
|
|
<mat-chip-list #chipList ngDefaultControl style="width: 100% !important;">
|
2019-12-11 15:51:03 +01:00
|
|
|
<ng-container *ngIf="value as values">
|
2021-07-21 11:16:22 +02:00
|
|
|
<mat-chip *ngFor="let value of values" [disabled]="disabled" [selectable]="selectable" [removable]="removable" [ngClass]="computeClass(value)">
|
2019-12-11 15:51:03 +01:00
|
|
|
<ng-container *ngIf="_selectedItems.get(stringify(value)) as selectedItem">
|
2020-09-08 09:36:18 +02:00
|
|
|
<ng-template #cellTemplate *ngIf="_selectedValueTemplate(selectedItem)" [ngTemplateOutlet]="_selectedValueTemplate(selectedItem)" [ngTemplateOutletContext]="{ item: selectedItem }"></ng-template>
|
2019-12-11 15:51:03 +01:00
|
|
|
<div *ngIf="!_selectedValueTemplate(selectedItem)">{{_displayFn(selectedItem)}}</div>
|
|
|
|
<mat-icon matChipRemove *ngIf="!disabled && removable" (click)="_removeSelectedItem(_selectedItems.get(stringify(value)), $event)">cancel</mat-icon>
|
|
|
|
</ng-container>
|
|
|
|
</mat-chip>
|
|
|
|
</ng-container>
|
2021-11-09 13:14:19 +01:00
|
|
|
<!-- <input matInput #autocompleteInput class="col" [class.hide-placeholder]="hidePlaceholder" [name]="id" autocomplete="off" #autocompleteTrigger="matAutocompleteTrigger" [placeholder]="placeholder" [matAutocomplete]="autocomplete" [value]="inputValue" (keyup)="onKeyUp($event)" (keydown)="onKeyDown($event)" [disabled]="disabled" (focus)="_onInputFocus()" (blur)="onBlur($event)" [matChipInputFor]="chipList" [matChipInputSeparatorKeyCodes]="separatorKeysCodes" [matChipInputAddOnBlur]="autoSelectFirstOptionOnBlur" (matChipInputTokenEnd)="_addItem($event)">-->
|
|
|
|
<input matInput #autocompleteInput class="col"
|
|
|
|
style="width: calc(100% - 8px) !important;"
|
|
|
|
[class.hide-placeholder]="hidePlaceholder" [name]="id"
|
|
|
|
autocomplete="off" #autocompleteTrigger="matAutocompleteTrigger"
|
|
|
|
[placeholder]="placeholder" [matAutocomplete]="autocomplete" [value]="inputValue"
|
|
|
|
(keyup)="onKeyUp($event)" (keydown)="onKeyDown($event)" [disabled]="disabled" (focus)="_onInputFocus()"
|
|
|
|
(blur)="onBlur($event)" [matChipInputFor]="chipList" [matChipInputSeparatorKeyCodes]="separatorKeysCodes"
|
|
|
|
[matChipInputAddOnBlur]="autoSelectFirstOptionOnBlur"
|
|
|
|
(matChipInputTokenEnd)="_addItem($event)"
|
|
|
|
[matAutocompleteConnectedTo]="origin">
|
|
|
|
<!-- 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" [name]="id" autocomplete="nope" #autocompleteTrigger="matAutocompleteTrigger" [placeholder]="placeholder" [matAutocomplete]="autocomplete" [value]="inputValue" (keyup)="onKeyUp($event)" (keydown)="onKeyDown($event)" [disabled]="disabled" (focus)="_onInputFocus()" (blur)="onBlur($event)" [matChipInputFor]="chipList" [matChipInputSeparatorKeyCodes]="separatorKeysCodes" [matChipInputAddOnBlur]="autoSelectFirstOptionOnBlur" (matChipInputTokenEnd)="_addItem($event)"> -->
|
|
|
|
<mat-icon *ngIf="!disabled" class="align-arrow-right" matSuffix>arrow_drop_down</mat-icon>
|
|
|
|
<div style="height: 0 !important; width: 100% !important; visibility: hidden !important;" matAutocompleteOrigin #origin="matAutocompleteOrigin"></div>
|
2019-01-18 18:03:45 +01:00
|
|
|
</mat-chip-list>
|
2021-11-09 13:14:19 +01:00
|
|
|
|
2019-12-11 15:51:03 +01:00
|
|
|
<mat-autocomplete #autocomplete="matAutocomplete" [displayWith]="_displayFn.bind(this)" (optionSelected)="_optionSelected($event)">
|
2019-01-18 18:03:45 +01:00
|
|
|
<span *ngIf="_groupedItems">
|
|
|
|
<mat-optgroup *ngFor="let group of _groupedItems | async" [label]="group.title">
|
2019-12-11 15:51:03 +01:00
|
|
|
<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>
|
2020-10-20 12:00:02 +02:00
|
|
|
<div *ngIf="!_optionTemplate(item)" class="d-flex">
|
2021-11-09 13:14:19 +01:00
|
|
|
<div class="title-subtitle-fn">
|
|
|
|
<div class="title-fn">
|
|
|
|
<div class="title-fn-inner">
|
|
|
|
<span *ngIf="!_optionTemplate(item)">{{_titleFn(item)}}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div *ngIf="_subtitleFn(item)" class="subtitle-fn">
|
|
|
|
<div class="subtitle-fn-inner">
|
|
|
|
<small [innerHTML]="_subtitleFn(item)"></small>
|
|
|
|
</div>
|
|
|
|
</div>
|
2020-10-20 12:00:02 +02:00
|
|
|
</div>
|
|
|
|
<span *ngIf="popupItemActionIcon" class="option-icon" (click)="_optionActionClick(item, $event)"><mat-icon>{{popupItemActionIcon}}</mat-icon></span>
|
2019-12-11 15:51:03 +01:00
|
|
|
</div>
|
2019-01-18 18:03:45 +01:00
|
|
|
</mat-option>
|
|
|
|
</mat-optgroup>
|
|
|
|
</span>
|
|
|
|
<span *ngIf="!_groupedItems">
|
2021-11-09 13:14:19 +01:00
|
|
|
<ng-container *ngIf="_items | async as autocompleteItems; else loading">
|
|
|
|
<ng-container *ngIf="autocompleteItems.length">
|
2019-12-11 15:51:03 +01:00
|
|
|
<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>
|
2020-10-20 12:00:02 +02:00
|
|
|
<div *ngIf="!_optionTemplate(item)" class="d-flex">
|
2021-11-09 13:14:19 +01:00
|
|
|
<div class="title-subtitle-fn">
|
|
|
|
<div class="title-fn">
|
|
|
|
<div class="title-fn-inner">
|
|
|
|
<span *ngIf="!_optionTemplate(item)">{{_titleFn(item)}}</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div *ngIf="_subtitleFn(item)" class="subtitle-fn">
|
|
|
|
<div class="subtitle-fn-inner">
|
|
|
|
<small [innerHTML]="_subtitleFn(item)"></small>
|
|
|
|
</div>
|
2021-11-02 15:50:43 +01:00
|
|
|
</div>
|
2020-10-20 12:00:02 +02:00
|
|
|
</div>
|
|
|
|
<span *ngIf="popupItemActionIcon" class="option-icon" (click)="_optionActionClick(item, $event)"><mat-icon>{{popupItemActionIcon}}</mat-icon></span>
|
2019-12-11 15:51:03 +01:00
|
|
|
</div>
|
|
|
|
</mat-option>
|
|
|
|
</ng-container>
|
2021-11-09 13:14:19 +01:00
|
|
|
<ng-container *ngIf="!autocompleteItems.length && showNoResultsLabel && (queryValue == inputValue)">
|
2019-12-11 15:51:03 +01:00
|
|
|
<mat-option disabled="true">No results found!</mat-option>
|
2021-11-09 13:14:19 +01:00
|
|
|
</ng-container>
|
|
|
|
</ng-container>
|
2019-12-11 15:51:03 +01:00
|
|
|
<ng-template #loading>
|
|
|
|
<mat-option disabled="true">loading...</mat-option>
|
|
|
|
</ng-template>
|
2019-01-18 18:03:45 +01:00
|
|
|
</span>
|
|
|
|
</mat-autocomplete>
|
2019-12-12 11:04:29 +01:00
|
|
|
</div>
|