Commit fb1ced1770c for woocommerce
commit fb1ced1770cab5be6e5661c0a0f923c08041b086
Author: Karol Manijak <20098064+kmanijak@users.noreply.github.com>
Date: Fri Jul 17 14:53:07 2026 +0200
Restore FlexSlider touch event ordering and keep the fix for in-app browser gestures minimal (#66754)
* Restore FlexSlider touch event ordering
* Add changelog entry for FlexSlider touch handling
* Limit non-passive handling to FlexSlider pre-listener
* Use default options for FlexSlider pre-listener
diff --git a/plugins/woocommerce/changelog/codex-66752-restore-flexslider-bubble-phase b/plugins/woocommerce/changelog/codex-66752-restore-flexslider-bubble-phase
new file mode 100644
index 00000000000..2aeee1987d4
--- /dev/null
+++ b/plugins/woocommerce/changelog/codex-66752-restore-flexslider-bubble-phase
@@ -0,0 +1,4 @@
+Significance: patch
+Type: fix
+
+Preserve touch handling for interactive content nested inside FlexSlider galleries.
diff --git a/plugins/woocommerce/client/legacy/js/flexslider/jquery.flexslider.js b/plugins/woocommerce/client/legacy/js/flexslider/jquery.flexslider.js
index 1921304cd38..da2eaf91660 100755
--- a/plugins/woocommerce/client/legacy/js/flexslider/jquery.flexslider.js
+++ b/plugins/woocommerce/client/legacy/js/flexslider/jquery.flexslider.js
@@ -455,7 +455,6 @@
onTouchStart,
onTouchMove,
onTouchEnd,
- touchListenerOptions = { capture: true, passive: false },
scrolling = false,
localX = 0,
localY = 0,
@@ -482,8 +481,8 @@
(reverse) ? (slider.last - slider.currentSlide + slider.cloneOffset) * cwidth : (slider.currentSlide + slider.cloneOffset) * cwidth;
startX = (vertical) ? localY : localX;
startY = (vertical) ? localX : localY;
- el.addEventListener('touchmove', onTouchMove, touchListenerOptions);
- el.addEventListener('touchend', onTouchEnd, touchListenerOptions);
+ el.addEventListener('touchmove', onTouchMove, false);
+ el.addEventListener('touchend', onTouchEnd, false);
}
};
@@ -510,7 +509,7 @@
onTouchEnd = function(e) {
// finish the touch by undoing the touch session
- el.removeEventListener('touchmove', onTouchMove, touchListenerOptions);
+ el.removeEventListener('touchmove', onTouchMove, false);
if (slider.animatingTo === slider.currentSlide && !scrolling && !(dx === null)) {
var updateDx = (reverse) ? -dx : dx,
@@ -522,7 +521,7 @@
if (!fade) { slider.flexAnimate(slider.currentSlide, slider.vars.pauseOnAction, true); }
}
}
- el.removeEventListener('touchend', onTouchEnd, touchListenerOptions);
+ el.removeEventListener('touchend', onTouchEnd, false);
startX = null;
startY = null;
@@ -533,8 +532,8 @@
// Register before a gesture starts so embedded WebViews keep touchmove events cancelable.
el.addEventListener('touchmove', function() {
// Intentionally empty.
- }, touchListenerOptions);
- el.addEventListener('touchstart', onTouchStart, touchListenerOptions);
+ }, false);
+ el.addEventListener('touchstart', onTouchStart, false);
},
resize: function() {
if (!slider.animating && slider.is(':visible')) {