diff options
| author | Aleksander Machniak <[email protected]> | 2022-06-30 21:52:47 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-06-30 22:52:47 +0300 |
| commit | 505e0235b91052e7b9e4e542d8cd5639cba03de6 (patch) | |
| tree | 8bceea060fe997ccff5f416c0c413e0fc838bcc6 /js/tests | |
| parent | 4082a3b52d0803efe8414abdf07d57f340a27225 (diff) | |
| download | bootstrap-505e0235b91052e7b9e4e542d8cd5639cba03de6.tar.xz bootstrap-505e0235b91052e7b9e4e542d8cd5639cba03de6.zip | |
Fix interoperability issue regarding Event properties (#36386)
* Fix interoperability issue regarding Event properties
- make possible to re-set read-only event properties
- use hydrateObj() to set delegateTarget property
Fixes #36207
Co-authored-by: GeoSot <[email protected]>
Co-authored-by: Julien Déramond <[email protected]>
Diffstat (limited to 'js/tests')
| -rw-r--r-- | js/tests/unit/dom/event-handler.spec.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/js/tests/unit/dom/event-handler.spec.js b/js/tests/unit/dom/event-handler.spec.js index 14037929b..19d0235e6 100644 --- a/js/tests/unit/dom/event-handler.spec.js +++ b/js/tests/unit/dom/event-handler.spec.js @@ -441,4 +441,41 @@ describe('EventHandler', () => { expect(i).toEqual(5) }) }) + + describe('general functionality', () => { + it('should hydrate properties, and make them configurable', () => { + return new Promise(resolve => { + fixtureEl.innerHTML = [ + '<div id="div1">', + ' <div id="div2"></div>', + ' <div id="div3"></div>', + '</div>' + ].join('') + + const div1 = fixtureEl.querySelector('#div1') + const div2 = fixtureEl.querySelector('#div2') + const div3 = fixtureEl.querySelector('#div3') + + EventHandler.on(div1, 'click', event => { + event.originalTarget = div3 + + expect(event.currentTarget).toBe(div2) + + Object.defineProperty(event, 'currentTarget', { + configurable: true, + get() { + return div1 + } + }) + + expect(event.currentTarget).toBe(div1) + resolve() + }) + + expect(() => { + EventHandler.trigger(div1, 'click', { delegateTarget: div2, originalTarget: null, currentTarget: div2 }) + }).not.toThrowError(TypeError) + }) + }) + }) }) |
