diff --git a/src/Umbraco.Web.UI.Client/src/shared/utils/selection-manager.ts b/src/Umbraco.Web.UI.Client/src/shared/utils/selection-manager.ts index 740da02d2c..e8d88f857f 100644 --- a/src/Umbraco.Web.UI.Client/src/shared/utils/selection-manager.ts +++ b/src/Umbraco.Web.UI.Client/src/shared/utils/selection-manager.ts @@ -57,7 +57,8 @@ export class UmbSelectionManager extends UmbBaseController { public setSelection(value: Array) { if (this.getSelectable() === false) return; if (value === undefined) throw new Error('Value cannot be undefined'); - this.#selection.next(value); + const newSelection = this.getMultiple() ? value : [value[0]]; + this.#selection.next(newSelection); } /** @@ -95,6 +96,7 @@ export class UmbSelectionManager extends UmbBaseController { */ public select(unique: string | null) { if (this.getSelectable() === false) return; + if (this.isSelected(unique)) return; const newSelection = this.getMultiple() ? [...this.getSelection(), unique] : [unique]; this.#selection.next(newSelection); this._host.getHostElement().dispatchEvent(new UmbSelectionChangeEvent()); @@ -127,6 +129,7 @@ export class UmbSelectionManager extends UmbBaseController { * @memberof UmbSelectionManager */ public clearSelection() { + if (this.getSelectable() === false) return; this.#selection.next([]); } }