diff --git a/packages/uui-base/lib/mixins/SelectableMixin.ts b/packages/uui-base/lib/mixins/SelectableMixin.ts index af40771f9..bdbb55bcd 100644 --- a/packages/uui-base/lib/mixins/SelectableMixin.ts +++ b/packages/uui-base/lib/mixins/SelectableMixin.ts @@ -95,10 +95,23 @@ export const SelectableMixin = >( readonly #onClick = (e: Event) => { const composePath = e.composedPath(); - if ( - (this._selectable || (this.deselectable && this.selected)) && - composePath.indexOf(this.selectableTarget) === 0 - ) { + const isActionTag = composePath.some(el => { + const element = el as HTMLElement; + return element.tagName === 'A' || element.tagName === 'BUTTON'; + }); + + // never select when clicking on a link or button + if (isActionTag) return; + + const isSelectable = + this._selectable || (this.deselectable && this.selected); + + if (isSelectable && this.selectableTarget === this) { + this.#toggleSelect(); + return; + } + + if (isSelectable && composePath.indexOf(this.selectableTarget) === 0) { this.#toggleSelect(); } };