Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohann-S <johann.servoire@gmail.com>2018-10-16 12:10:29 +0300
committerXhmikosR <xhmikosr@gmail.com>2018-10-20 15:32:09 +0300
commitb1dc6b324c33bc6a4b0cb2dc06939136e32d0e0c (patch)
tree4d6bf5747a6b072aef3f14e0d1bab796b7b11a5d
parent8883ccb205abfe975b4cacca8fbc22cf67092eb0 (diff)
avoid drag img
-rw-r--r--js/src/carousel.js3
-rw-r--r--js/tests/unit/carousel.js20
2 files changed, 14 insertions, 9 deletions
diff --git a/js/src/carousel.js b/js/src/carousel.js
index 3507a81594..989390aa0a 100644
--- a/js/src/carousel.js
+++ b/js/src/carousel.js
@@ -64,6 +64,7 @@ const Event = {
POINTERUP : `pointerup${EVENT_KEY}`,
POINTERLEAVE : `pointerleave${EVENT_KEY}`,
POINTERCANCEL : `pointercancel${EVENT_KEY}`,
+ DRAG_START : `dragstart${EVENT_KEY}`,
LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,
CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`
}
@@ -84,6 +85,7 @@ const Selector = {
ACTIVE : '.active',
ACTIVE_ITEM : '.active.carousel-item',
ITEM : '.carousel-item',
+ ITEM_IMG : '.carousel-item img',
NEXT_PREV : '.carousel-item-next, .carousel-item-prev',
INDICATORS : '.carousel-indicators',
DATA_SLIDE : '[data-slide], [data-slide-to]',
@@ -323,6 +325,7 @@ class Carousel {
}
}
+ $(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, (e) => e.preventDefault())
if (this._pointerEvent) {
$(this._element).on(Event.POINTERDOWN, (event) => start(event))
$(this._element).on(Event.POINTERUP, (event) => end(event))
diff --git a/js/tests/unit/carousel.js b/js/tests/unit/carousel.js
index bafd45fe78..d7d9ad2508 100644
--- a/js/tests/unit/carousel.js
+++ b/js/tests/unit/carousel.js
@@ -4,17 +4,15 @@ $(function () {
window.Carousel = typeof bootstrap !== 'undefined' ? bootstrap.Carousel : Carousel
var originWinPointerEvent = window.PointerEvent
- var originMsPointerEvent = window.MSPointerEvent
+ window.MSPointerEvent = null
var supportPointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent)
function clearPointerEvents() {
window.PointerEvent = null
- window.MSPointerEvent = null
}
function restorePointerEvents() {
window.PointerEvent = originWinPointerEvent
- window.MSPointerEvent = originMsPointerEvent
}
var stylesCarousel = [
@@ -1032,11 +1030,11 @@ $(function () {
return
}
+ document.documentElement.ontouchstart = $.noop
Simulator.setType('pointer')
assert.expect(3)
var $styles = $(stylesCarousel).appendTo('head')
var done = assert.async()
- document.documentElement.ontouchstart = $.noop
var carouselHTML =
'<div class="carousel" data-interval="false">' +
@@ -1050,8 +1048,7 @@ $(function () {
' </div>' +
'</div>'
- var $carousel = $(carouselHTML)
- $carousel.appendTo('#qunit-fixture')
+ var $carousel = $(carouselHTML).appendTo('#qunit-fixture')
var $item = $('#item')
$carousel.bootstrapCarousel()
var carousel = $carousel.data('bs.carousel')
@@ -1061,8 +1058,8 @@ $(function () {
assert.ok(true, 'slid event fired')
assert.ok($item.hasClass('active'))
assert.ok(spy.called)
- delete document.documentElement.ontouchstart
$styles.remove()
+ delete document.documentElement.ontouchstart
done()
})
@@ -1075,6 +1072,7 @@ $(function () {
QUnit.test('should allow swiperight and call prev with touch events', function (assert) {
Simulator.setType('touch')
clearPointerEvents()
+
assert.expect(3)
var done = assert.async()
document.documentElement.ontouchstart = $.noop
@@ -1119,12 +1117,12 @@ $(function () {
return
}
+ document.documentElement.ontouchstart = $.noop
assert.expect(3)
Simulator.setType('pointer')
var $styles = $(stylesCarousel).appendTo('head')
var done = assert.async()
- document.documentElement.ontouchstart = $.noop
var carouselHTML =
'<div class="carousel" data-interval="false">' +
@@ -1150,6 +1148,7 @@ $(function () {
assert.ok(!$item.hasClass('active'))
assert.ok(spy.called)
$styles.remove()
+ delete document.documentElement.ontouchstart
done()
})
@@ -1164,9 +1163,9 @@ $(function () {
assert.expect(3)
clearPointerEvents()
Simulator.setType('touch')
+ document.documentElement.ontouchstart = $.noop
var done = assert.async()
- document.documentElement.ontouchstart = $.noop
var carouselHTML =
'<div class="carousel" data-interval="false">' +
@@ -1192,6 +1191,7 @@ $(function () {
assert.ok(!$item.hasClass('active'))
assert.ok(spy.called)
restorePointerEvents()
+ delete document.documentElement.ontouchstart
done()
})
@@ -1205,6 +1205,7 @@ $(function () {
QUnit.test('should not allow pinch with touch events', function (assert) {
assert.expect(0)
clearPointerEvents()
+
Simulator.setType('touch')
var done = assert.async()
document.documentElement.ontouchstart = $.noop
@@ -1221,6 +1222,7 @@ $(function () {
touches: 2
}, function () {
restorePointerEvents()
+ delete document.documentElement.ontouchstart
done()
})
})