diff --git a/api/js/etemplate/Et2Vfs/Et2VfsSelectDialog.ts b/api/js/etemplate/Et2Vfs/Et2VfsSelectDialog.ts index fe2d672753..1110d7c930 100644 --- a/api/js/etemplate/Et2Vfs/Et2VfsSelectDialog.ts +++ b/api/js/etemplate/Et2Vfs/Et2VfsSelectDialog.ts @@ -493,6 +493,22 @@ export class Et2VfsSelectDialog this.searchResultSelected(); } + /** + * Toggles a search result's selected state + */ + protected toggleResultSelection(result : HTMLElement & SearchResultElement, force? : boolean) + { + if(!this.multiple) + { + this._resultNodes.forEach(n => + { + n.selected = false; + n.requestUpdate("selected"); + }); + } + super.toggleResultSelection(result, force); + } + /** * This method must be called whenever the selection changes. It will update the selected file cache, the current * value, and the display value diff --git a/api/js/etemplate/Et2Widget/SearchMixin.ts b/api/js/etemplate/Et2Widget/SearchMixin.ts index 83e1304412..aed19d997f 100644 --- a/api/js/etemplate/Et2Widget/SearchMixin.ts +++ b/api/js/etemplate/Et2Widget/SearchMixin.ts @@ -174,6 +174,8 @@ type Constructor = new (...args : any[]) => T; * @param {T} superClass * @returns {Constructor> & T} * @constructor + * + * @event et2-select - Emitted when the selection changes */ export const SearchMixin = , @@ -464,7 +466,7 @@ export const SearchMixin = + { + this.dispatchEvent(new Event("et2-select")); + }) }