From 5c631d315145fdd58230f01b02ba6a8ec2067c9a Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 26 Nov 2024 14:19:49 +0100 Subject: [PATCH 1/5] add fallback to this --- packages/uui-base/lib/mixins/SelectableMixin.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/uui-base/lib/mixins/SelectableMixin.ts b/packages/uui-base/lib/mixins/SelectableMixin.ts index af40771f9..686fe0bac 100644 --- a/packages/uui-base/lib/mixins/SelectableMixin.ts +++ b/packages/uui-base/lib/mixins/SelectableMixin.ts @@ -95,6 +95,15 @@ export const SelectableMixin = >( readonly #onClick = (e: Event) => { const composePath = e.composedPath(); + + if ( + (this._selectable || (this.deselectable && this.selected)) && + this.selectableTarget === this + ) { + this.#toggleSelect(); + return; + } + if ( (this._selectable || (this.deselectable && this.selected)) && composePath.indexOf(this.selectableTarget) === 0 From 9475a7bfe201d4eeb908c2561fe434797773f7c0 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 26 Nov 2024 14:21:01 +0100 Subject: [PATCH 2/5] add to const --- packages/uui-base/lib/mixins/SelectableMixin.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/uui-base/lib/mixins/SelectableMixin.ts b/packages/uui-base/lib/mixins/SelectableMixin.ts index 686fe0bac..cae19e20d 100644 --- a/packages/uui-base/lib/mixins/SelectableMixin.ts +++ b/packages/uui-base/lib/mixins/SelectableMixin.ts @@ -95,19 +95,15 @@ export const SelectableMixin = >( readonly #onClick = (e: Event) => { const composePath = e.composedPath(); + const isSelectable = + this._selectable || (this.deselectable && this.selected); - if ( - (this._selectable || (this.deselectable && this.selected)) && - this.selectableTarget === this - ) { + if (isSelectable && this.selectableTarget === this) { this.#toggleSelect(); return; } - if ( - (this._selectable || (this.deselectable && this.selected)) && - composePath.indexOf(this.selectableTarget) === 0 - ) { + if (isSelectable && composePath.indexOf(this.selectableTarget) === 0) { this.#toggleSelect(); } }; From 52e6385e08a7ad84b712a7230ae50bc6c8ce4942 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 27 Nov 2024 09:29:50 +0100 Subject: [PATCH 3/5] ignore click on a tags --- packages/uui-base/lib/mixins/SelectableMixin.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/uui-base/lib/mixins/SelectableMixin.ts b/packages/uui-base/lib/mixins/SelectableMixin.ts index cae19e20d..d66d49e48 100644 --- a/packages/uui-base/lib/mixins/SelectableMixin.ts +++ b/packages/uui-base/lib/mixins/SelectableMixin.ts @@ -95,6 +95,10 @@ export const SelectableMixin = >( readonly #onClick = (e: Event) => { const composePath = e.composedPath(); + const target = composePath[0] as HTMLElement; + + if (target.tagName === 'A') return; + const isSelectable = this._selectable || (this.deselectable && this.selected); From d7108d37c1ca44e1ded59ecaf36f85bbc425e073 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 27 Nov 2024 09:44:19 +0100 Subject: [PATCH 4/5] check all of composedPath --- packages/uui-base/lib/mixins/SelectableMixin.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/uui-base/lib/mixins/SelectableMixin.ts b/packages/uui-base/lib/mixins/SelectableMixin.ts index d66d49e48..70871a469 100644 --- a/packages/uui-base/lib/mixins/SelectableMixin.ts +++ b/packages/uui-base/lib/mixins/SelectableMixin.ts @@ -95,9 +95,13 @@ export const SelectableMixin = >( readonly #onClick = (e: Event) => { const composePath = e.composedPath(); - const target = composePath[0] as HTMLElement; + const isAnchorTag = composePath.some(el => { + const element = el as HTMLElement; + return element.tagName === 'A'; + }); - if (target.tagName === 'A') return; + // never select when clicking on a link + if (isAnchorTag) return; const isSelectable = this._selectable || (this.deselectable && this.selected); From 49aae8cda58c10559d35dbc8414b81de17727963 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Wed, 27 Nov 2024 10:06:39 +0100 Subject: [PATCH 5/5] ignore select on button clicks --- packages/uui-base/lib/mixins/SelectableMixin.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/uui-base/lib/mixins/SelectableMixin.ts b/packages/uui-base/lib/mixins/SelectableMixin.ts index 70871a469..bdbb55bcd 100644 --- a/packages/uui-base/lib/mixins/SelectableMixin.ts +++ b/packages/uui-base/lib/mixins/SelectableMixin.ts @@ -95,13 +95,13 @@ export const SelectableMixin = >( readonly #onClick = (e: Event) => { const composePath = e.composedPath(); - const isAnchorTag = composePath.some(el => { + const isActionTag = composePath.some(el => { const element = el as HTMLElement; - return element.tagName === 'A'; + return element.tagName === 'A' || element.tagName === 'BUTTON'; }); - // never select when clicking on a link - if (isAnchorTag) return; + // never select when clicking on a link or button + if (isActionTag) return; const isSelectable = this._selectable || (this.deselectable && this.selected);