Bug fix for issue 5202
Anto committed
Mar 9, 2016 at 19:16 UTC
0fb1cd61e1bf2e96a03376dd49748c62d1dfce1e
4 files changed
+34
-1
src/renderers/dom/client/ReactBrowserEventEmitter.js
+14
-1
@@ -287,7 +287,8 @@ var ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {
287
);
288
}
289
} else if (dependency === topLevelTypes.topFocus ||
290
- dependency === topLevelTypes.topBlur) {
290
+ dependency === topLevelTypes.topBlur || dependency === topLevelTypes.topFocusIn ||
291
+ dependency === topLevelTypes.topFocusOut) {
292
293
if (isEventSupported('focus', true)) {
294
ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(
@@ -295,6 +296,16 @@ var ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {
296
'focus',
297
mountAt
298
);
299
+ ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(
300
+ topLevelTypes.topFocusIn,
301
+ 'focusin',
302
+ mountAt
303
+ );
304
+ ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(
305
+ topLevelTypes.topFocusOut,
306
+ 'focusout',
307
+ mountAt
308
+ );
309
ReactBrowserEventEmitter.ReactEventListener.trapCapturedEvent(
310
topLevelTypes.topBlur,
311
'blur',
@@ -318,6 +329,8 @@ var ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {
329
// to make sure blur and focus event listeners are only attached once
330
isListening[topLevelTypes.topBlur] = true;
331
isListening[topLevelTypes.topFocus] = true;
332
+ isListening[topLevelTypes.topFocusIn] = true;
333
+ isListening[topLevelTypes.topFocusOut] = true;
334
} else if (topEventMapping.hasOwnProperty(dependency)) {
335
ReactBrowserEventEmitter.ReactEventListener.trapBubbledEvent(
336
dependency,
src/renderers/dom/client/eventPlugins/ChangeEventPlugin.js
+2
@@ -37,6 +37,8 @@ var eventTypes = {
37
topLevelTypes.topChange,
38
topLevelTypes.topClick,
39
topLevelTypes.topFocus,
40
+ topLevelTypes.topFocusIn,
41
+ topLevelTypes.topFocusOut,
42
topLevelTypes.topInput,
43
topLevelTypes.topKeyDown,
44
topLevelTypes.topKeyUp,
src/renderers/dom/client/eventPlugins/SimpleEventPlugin.js
+16
@@ -191,6 +191,18 @@ var eventTypes = {
191
captured: keyOf({onFocusCapture: true}),
192
},
193
},
194
+ focusOut: {
195
+ phasedRegistrationNames: {
196
+ bubbled: keyOf({onFocusOut: true}),
197
+ captured: keyOf({onFocusOutCapture: true}),
198
+ },
199
+ },
200
+ focusIn: {
201
+ phasedRegistrationNames: {
202
+ bubbled: keyOf({onFocusIn: true}),
203
+ captured: keyOf({onFocusInCapture: true}),
204
+ },
205
+ },
206
input: {
207
phasedRegistrationNames: {
208
bubbled: keyOf({onInput: true}),
@@ -438,6 +450,8 @@ var topLevelEventsToDispatchConfig = {
450
topEnded: eventTypes.ended,
451
topError: eventTypes.error,
452
topFocus: eventTypes.focus,
453
+ topFocusOut: eventTypes.focusOut,
454
+ topFocusIn: eventTypes.focusIn,
455
topInput: eventTypes.input,
456
topInvalid: eventTypes.invalid,
457
topKeyDown: eventTypes.keyDown,
@@ -545,6 +559,8 @@ var SimpleEventPlugin = {
559
break;
560
case topLevelTypes.topBlur:
561
case topLevelTypes.topFocus:
562
+ case topLevelTypes.topFocusIn:
563
+ case topLevelTypes.topFocusOut:
564
EventConstructor = SyntheticFocusEvent;
565
break;
566
case topLevelTypes.topClick:
src/renderers/shared/event/EventConstants.js
+2
@@ -49,6 +49,8 @@ var topLevelTypes = keyMirror({
49
topEnded: null,
50
topError: null,
51
topFocus: null,
52
+ topFocusIn: null,
53
+ topFocusOut: null,
54
topInput: null,
55
topInvalid: null,
56
topKeyDown: null,