Skip to content

Commit c5bf804

Browse files
committed
fix selectable mixin so it only selects when the right element is clicked
1 parent 8f781ce commit c5bf804

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

packages/uui-base/lib/mixins/SelectableMixin.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,11 @@ export const SelectableMixin = <T extends Constructor<LitElement>>(
112112
}
113113

114114
private _handleClick(e: Event) {
115-
if (e.composedPath().indexOf(this.selectableTarget) !== -1) {
115+
const composePath = e.composedPath();
116+
if (
117+
(this._selectable || (this.deselectable && this.selected)) &&
118+
composePath.indexOf(this.selectableTarget) === 0
119+
) {
116120
this._toggleSelect();
117121
}
118122
}

packages/uui-card-media/lib/uui-card-media.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,22 @@ describe('UUICardMediaElement', () => {
9999
expect(event.type).to.equal(UUISelectableEvent.SELECTED);
100100
expect(element.selected).to.be.true;
101101
});
102+
it('do react to a click event on performed in this way', async () => {
103+
element.selectable = true;
104+
await elementUpdated(element);
105+
element.click();
106+
await Promise.resolve();
107+
expect(element.selected).to.be.true;
108+
});
109+
it('do not react to a click event on other parts', async () => {
110+
element.selectable = true;
111+
await elementUpdated(element);
112+
element
113+
.shadowRoot!.querySelector<HTMLAnchorElement>('#open-part')!
114+
.click();
115+
await Promise.resolve();
116+
expect(element.selected).to.be.false;
117+
});
102118
it('can be selected with keyboard', async () => {
103119
element.selectable = true;
104120
await elementUpdated(element);

0 commit comments

Comments
 (0)