From cc56629620bf6929f7bb7d375f3738527eb26031 Mon Sep 17 00:00:00 2001 From: Marcin Szczepanski Date: Thu, 20 Mar 2014 15:11:38 +1100 Subject: [PATCH 1/2] Fix transition end detection for Android Some Android versions have the "transition" and "animation" properties set on element style objects despite not supporting un-prefxied animations and transitions. This change adds an additional sanity check to make sure the correct event handlers are added for transition groups. --- .../transitions/ReactTransitionEvents.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/addons/transitions/ReactTransitionEvents.js b/src/addons/transitions/ReactTransitionEvents.js index be61140598..d8991ae725 100644 --- a/src/addons/transitions/ReactTransitionEvents.js +++ b/src/addons/transitions/ReactTransitionEvents.js @@ -20,6 +20,11 @@ var ExecutionEnvironment = require('ExecutionEnvironment'); +/** + * EVENT_NAME_MAP is used to determine which event fired when a + * transition/animation ends, based on the style property used to + * define that event. + */ var EVENT_NAME_MAP = { transitionend: { 'transition': 'transitionend', @@ -43,6 +48,20 @@ var endEvents = []; function detectEvents() { var testEl = document.createElement('div'); var style = testEl.style; + + // On some platforms, in particular some releases of Android 4.x, + // the un-prefixed "animation" and "transition" properties are defined on the + // style object but the events that fire will still be prefixed, so we need + // to check if the un-prefixed events are useable, and if not remove them + // from the map + if (!('AnimationEvent' in window)) { + delete EVENT_NAME_MAP.animationend.animation; + } + + if (!('TransitionEvent' in window)) { + delete EVENT_NAME_MAP.transitionend.transition; + } + for (var baseEventName in EVENT_NAME_MAP) { var baseEvents = EVENT_NAME_MAP[baseEventName]; for (var styleName in baseEvents) { From c7c30270811b46782a2e08d5fa1f2e55ae1384a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20O=E2=80=99Shannessy?= Date: Wed, 7 May 2014 10:44:30 -0700 Subject: [PATCH 2/2] Small style fixup --- src/addons/transitions/ReactTransitionEvents.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/addons/transitions/ReactTransitionEvents.js b/src/addons/transitions/ReactTransitionEvents.js index d8991ae725..ac65be7719 100644 --- a/src/addons/transitions/ReactTransitionEvents.js +++ b/src/addons/transitions/ReactTransitionEvents.js @@ -59,7 +59,7 @@ function detectEvents() { } if (!('TransitionEvent' in window)) { - delete EVENT_NAME_MAP.transitionend.transition; + delete EVENT_NAME_MAP.transitionend.transition; } for (var baseEventName in EVENT_NAME_MAP) {