From 378f3c957bcf4ab106fe7d60b8017374c052b8e4 Mon Sep 17 00:00:00 2001 From: Diamantis Tziotzios Date: Mon, 22 Apr 2024 10:32:24 +0300 Subject: [PATCH] mat-autocomplete change --- .../multiple-auto-complete-configuration.ts | 5 ++++- .../multiple-auto-complete.component.html | 4 ++-- .../multiple/multiple-auto-complete.component.ts | 16 +++++++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete-configuration.ts b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete-configuration.ts index 33ec75ee1..17898d24f 100644 --- a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete-configuration.ts +++ b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete-configuration.ts @@ -30,6 +30,8 @@ export interface MultipleAutoCompleteConfiguration { valueAssign?: (selectedItem: any) => any; // Callback to provide equals function betwen the values uniqueAssign?: (selectedItem: any) => any; + // Get selected items. Used when valueAssign is used so the full object can be retrieved for presentation. + canRemoveItem?: (selectedItem: any) => { canRemove: boolean, message: string }; // Property formating template optionTemplate?: TemplateRef; // Property formatting component @@ -39,8 +41,9 @@ export interface MultipleAutoCompleteConfiguration { // Display icon that opens popup popupItemActionIcon?: string; + autoSelectFirstOptionOnBlur?: boolean; - appendClassToItem?: {class: string, applyFunc: (item:any) => boolean}[]; + appendClassToItem?: { class: string, applyFunc: (item: any) => boolean }[]; } diff --git a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.html b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.html index b69c9919d..43f8b0746 100644 --- a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.html +++ b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.html @@ -4,14 +4,14 @@
- + {{_displayFn(selectedItem)}} - diff --git a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts index 920d1d346..abad96f88 100644 --- a/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts +++ b/dmp-frontend/src/app/library/auto-complete/multiple/multiple-auto-complete.component.ts @@ -96,7 +96,6 @@ export class MultipleAutoCompleteComponent extends _CustomComponentMixinBase imp _selectedItems: Map = new Map(); _groupedItems: Observable; selectable = false; - removable = true; selected: boolean = false; get empty() { @@ -434,6 +433,21 @@ export class MultipleAutoCompleteComponent extends _CustomComponentMixinBase imp this._items = null; } + _canRemoveItem(item: any): boolean { + if(this.configuration.canRemoveItem != null) { + return this.configuration.canRemoveItem(item).canRemove; + } + return true; + } + + _canRemoveItemMessage(item: any): string { + if(this.configuration.canRemoveItem != null) { + const canRemoveResuslt = this.configuration.canRemoveItem(item); + if (canRemoveResuslt.canRemove) return canRemoveResuslt.message; + } + return null; + } + _removeSelectedItem(item: any, event: MouseEvent): void { if (event != null) { event.stopPropagation(); } const valueToDelete = this._valueToAssign(item);