aboutsummaryrefslogtreecommitdiff
path: root/js/src
diff options
context:
space:
mode:
authoralpadev <[email protected]>2021-06-22 12:11:03 +0200
committerGitHub <[email protected]>2021-06-22 13:11:03 +0300
commit290b9ee2cde5a0182e1a53116ef626bd6c0c9cad (patch)
treea6decbb684041413311d76558b67f313cf053a4d /js/src
parent8be957b32b9ccc345cea65ea3025b6ed300d4ac5 (diff)
downloadbootstrap-290b9ee2cde5a0182e1a53116ef626bd6c0c9cad.tar.xz
bootstrap-290b9ee2cde5a0182e1a53116ef626bd6c0c9cad.zip
fix(carousel): arrow keys break animation if carousel sliding (#34307)
Diffstat (limited to 'js/src')
-rw-r--r--js/src/carousel.js25
1 files changed, 14 insertions, 11 deletions
diff --git a/js/src/carousel.js b/js/src/carousel.js
index fa401535a..3c64829db 100644
--- a/js/src/carousel.js
+++ b/js/src/carousel.js
@@ -59,6 +59,11 @@ const ORDER_PREV = 'prev'
const DIRECTION_LEFT = 'left'
const DIRECTION_RIGHT = 'right'
+const KEY_TO_DIRECTION = {
+ [ARROW_LEFT_KEY]: DIRECTION_RIGHT,
+ [ARROW_RIGHT_KEY]: DIRECTION_LEFT
+}
+
const EVENT_SLIDE = `slide${EVENT_KEY}`
const EVENT_SLID = `slid${EVENT_KEY}`
const EVENT_KEYDOWN = `keydown${EVENT_KEY}`
@@ -134,9 +139,7 @@ class Carousel extends BaseComponent {
// Public
next() {
- if (!this._isSliding) {
- this._slide(ORDER_NEXT)
- }
+ this._slide(ORDER_NEXT)
}
nextWhenVisible() {
@@ -148,9 +151,7 @@ class Carousel extends BaseComponent {
}
prev() {
- if (!this._isSliding) {
- this._slide(ORDER_PREV)
- }
+ this._slide(ORDER_PREV)
}
pause(event) {
@@ -319,12 +320,10 @@ class Carousel extends BaseComponent {
return
}
- if (event.key === ARROW_LEFT_KEY) {
- event.preventDefault()
- this._slide(DIRECTION_RIGHT)
- } else if (event.key === ARROW_RIGHT_KEY) {
+ const direction = KEY_TO_DIRECTION[event.key]
+ if (direction) {
event.preventDefault()
- this._slide(DIRECTION_LEFT)
+ this._slide(direction)
}
}
@@ -408,6 +407,10 @@ class Carousel extends BaseComponent {
return
}
+ if (this._isSliding) {
+ return
+ }
+
const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)
if (slideEvent.defaultPrevented) {
return