diff --git a/docs/docs/reference-events.md b/docs/docs/reference-events.md index 6e275db9b5..faec6dd267 100644 --- a/docs/docs/reference-events.md +++ b/docs/docs/reference-events.md @@ -84,6 +84,7 @@ The event handlers below are triggered by an event in the bubbling phase. To reg - [Image Events](#image-events) - [Animation Events](#animation-events) - [Transition Events](#transition-events) +- [Other Events](#other-events) * * * @@ -286,9 +287,9 @@ number deltaZ Event names: ``` -onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted -onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay -onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend +onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted +onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay +onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting ``` @@ -338,3 +339,12 @@ string pseudoElement float elapsedTime ``` +* * * + +### Other Events + +Event names: + +``` +onToggle +``` diff --git a/src/renderers/dom/fiber/ReactDOMFiberComponent.js b/src/renderers/dom/fiber/ReactDOMFiberComponent.js index 36ff9101c6..3dd082083c 100644 --- a/src/renderers/dom/fiber/ReactDOMFiberComponent.js +++ b/src/renderers/dom/fiber/ReactDOMFiberComponent.js @@ -264,6 +264,13 @@ function trapBubbledEventsLocal(node : Element, tag : string) { node ); break; + case 'details': + ReactBrowserEventEmitter.trapBubbledEvent( + 'topToggle', + 'toggle', + node + ); + break; } } @@ -518,6 +525,7 @@ var ReactDOMFiberComponent = { case 'object': case 'source': case 'video': + case 'details': trapBubbledEventsLocal(domElement, tag); props = rawProps; break; diff --git a/src/renderers/dom/shared/ReactBrowserEventEmitter.js b/src/renderers/dom/shared/ReactBrowserEventEmitter.js index af75631906..a191a45b14 100644 --- a/src/renderers/dom/shared/ReactBrowserEventEmitter.js +++ b/src/renderers/dom/shared/ReactBrowserEventEmitter.js @@ -140,6 +140,7 @@ var topEventMapping = { topSuspend: 'suspend', topTextInput: 'textInput', topTimeUpdate: 'timeupdate', + topToggle: 'toggle', topTouchCancel: 'touchcancel', topTouchEnd: 'touchend', topTouchMove: 'touchmove', diff --git a/src/renderers/dom/shared/eventPlugins/SimpleEventPlugin.js b/src/renderers/dom/shared/eventPlugins/SimpleEventPlugin.js index 32057fe856..d55d137350 100644 --- a/src/renderers/dom/shared/eventPlugins/SimpleEventPlugin.js +++ b/src/renderers/dom/shared/eventPlugins/SimpleEventPlugin.js @@ -116,6 +116,7 @@ var topLevelEventsToDispatchConfig: {[key: TopLevelTypes]: DispatchConfig} = {}; 'submit', 'suspend', 'timeUpdate', + 'toggle', 'touchCancel', 'touchEnd', 'touchMove', @@ -184,6 +185,7 @@ var SimpleEventPlugin: PluginModule = { case 'topSubmit': case 'topSuspend': case 'topTimeUpdate': + case 'topToggle': case 'topVolumeChange': case 'topWaiting': // HTML Events diff --git a/src/renderers/dom/stack/client/ReactDOMComponent.js b/src/renderers/dom/stack/client/ReactDOMComponent.js index 7a9dcb7625..26a574851a 100644 --- a/src/renderers/dom/stack/client/ReactDOMComponent.js +++ b/src/renderers/dom/stack/client/ReactDOMComponent.js @@ -331,6 +331,15 @@ function trapBubbledEventsLocal() { ), ]; break; + case 'details': + inst._wrapperState.listeners = [ + ReactBrowserEventEmitter.trapBubbledEvent( + 'topToggle', + 'toggle', + node + ), + ]; + break; } } @@ -465,6 +474,7 @@ ReactDOMComponent.Mixin = { case 'object': case 'source': case 'video': + case 'details': this._wrapperState = { listeners: null, }; diff --git a/src/renderers/shared/shared/event/EventConstants.js b/src/renderers/shared/shared/event/EventConstants.js index 70151fc64f..0b7837aad9 100644 --- a/src/renderers/shared/shared/event/EventConstants.js +++ b/src/renderers/shared/shared/event/EventConstants.js @@ -79,6 +79,7 @@ var topLevelTypes = { topSuspend: null, topTextInput: null, topTimeUpdate: null, + topToggle: null, topTouchCancel: null, topTouchEnd: null, topTouchMove: null,