This repository was archived by the owner on Sep 7, 2022. It is now read-only.
File tree 3 files changed +28
-4
lines changed 3 files changed +28
-4
lines changed Original file line number Diff line number Diff line change @@ -9,16 +9,16 @@ const defaults = {
9
9
function syncEvent ( node , eventName , newEventHandler ) {
10
10
const eventNameLc = eventName . toLowerCase ( ) ;
11
11
const eventStore = node . __events || ( node . __events = { } ) ;
12
- const oldEventHandler = eventStore [ eventName ] ;
12
+ const oldEventHandler = eventStore [ eventNameLc ] ;
13
13
14
14
// Remove old listener so they don't double up.
15
15
if ( oldEventHandler ) {
16
- node . removeEventListener ( eventName , oldEventHandler ) ;
16
+ node . removeEventListener ( eventNameLc , oldEventHandler ) ;
17
17
}
18
18
19
19
// Bind new listener.
20
20
if ( newEventHandler ) {
21
- node . addEventListener ( eventNameLc , eventStore [ eventName ] = function handler ( e ) {
21
+ node . addEventListener ( eventNameLc , eventStore [ eventNameLc ] = function handler ( e ) {
22
22
newEventHandler . call ( this , e ) ;
23
23
} ) ;
24
24
}
Original file line number Diff line number Diff line change 1
1
import './unit/children' ;
2
- import './unit/custom- events' ;
2
+ import './unit/events' ;
3
3
import './unit/display-name' ;
4
4
import './unit/errors' ;
5
5
import './unit/prop-types' ;
Original file line number Diff line number Diff line change @@ -42,4 +42,28 @@ describe('custom events', () => {
42
42
done ( ) ;
43
43
} , 1 ) ;
44
44
} ) ;
45
+
46
+ it ( 'should not duplicate handlers' , done => {
47
+ let count = 0 ;
48
+ const Comp = reactify ( document . registerElement ( 'x-custom-event-3' , {
49
+ prototype : Object . create ( HTMLElement . prototype , {
50
+ trigger : {
51
+ value ( ) {
52
+ this . dispatchEvent ( new CustomEvent ( 'test' ) ) ;
53
+ } ,
54
+ } ,
55
+ } ) ,
56
+ } ) , { React, ReactDOM } ) ;
57
+
58
+ const func = ( ) => ++ count ;
59
+
60
+ // Using both ontest and onTest (case-sensitive) test case-sensitivity.
61
+ const comp = ReactDOM . render ( < Comp ontest = { func } onTest = { func } /> , window . fixture ) ;
62
+
63
+ setTimeout ( ( ) => {
64
+ ReactDOM . findDOMNode ( comp ) . trigger ( ) ;
65
+ expect ( count ) . to . equal ( 1 ) ;
66
+ done ( ) ;
67
+ } , 1 ) ;
68
+ } ) ;
45
69
} ) ;
You can’t perform that action at this time.
0 commit comments