Skip to content

Commit 59e456e

Browse files
author
Mikhail Bashkirov
committed
fix(button): put host element into click event target (fix #89)
1 parent b71177f commit 59e456e

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

packages/button/src/LionButton.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,20 @@ export class LionButton extends DelegateMixin(SlotMixin(LionLitElement)) {
159159
oldEvent.stopPropagation();
160160
// replacing `MouseEvent` with `oldEvent.constructor` breaks IE
161161
const newEvent = new MouseEvent(oldEvent.type, oldEvent);
162+
this.__enforceHostEventTarget(newEvent);
162163
this.$$slot('_button').dispatchEvent(newEvent);
163164
}
164165

166+
__enforceHostEventTarget(event) {
167+
try {
168+
// this is for IE11 (and works in others), because `Object.defineProperty` does not give any effect there
169+
event.__defineGetter__('target', () => this); // eslint-disable-line no-restricted-properties
170+
} catch (error) {
171+
// in case `__defineGetter__` is removed from the platform
172+
Object.defineProperty(event, 'target', { writable: false, value: this });
173+
}
174+
}
175+
165176
__setupDelegation() {
166177
this.addEventListener('keydown', this.__keydownDelegationHandler);
167178
this.addEventListener('keyup', this.__keyupDelegationHandler);

packages/button/test/lion-button.test.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ describe('lion-button', () => {
194194
'cancelable',
195195
'clientX',
196196
'clientY',
197+
'target',
197198
];
198199

199200
sameProperties.forEach(property => {

0 commit comments

Comments
 (0)