aboutsummaryrefslogtreecommitdiff
path: root/js/src
diff options
context:
space:
mode:
Diffstat (limited to 'js/src')
-rw-r--r--js/src/alert.js10
-rw-r--r--js/src/carousel.js12
-rw-r--r--js/src/dom/data.js2
-rw-r--r--js/src/dom/eventHandler.js18
-rw-r--r--js/src/dom/manipulator.js2
-rw-r--r--js/src/dom/polyfill.js2
-rw-r--r--js/src/dom/selectorEngine.js2
-rw-r--r--js/src/dropdown.js2
-rw-r--r--js/src/index.js17
-rw-r--r--js/src/modal.js24
-rw-r--r--js/src/tooltip.js3
-rw-r--r--js/src/util.js2
12 files changed, 54 insertions, 42 deletions
diff --git a/js/src/alert.js b/js/src/alert.js
index bc368ae62..a8d0cc5da 100644
--- a/js/src/alert.js
+++ b/js/src/alert.js
@@ -140,6 +140,16 @@ class Alert {
})
}
+ static _handleDismiss(alertInstance) {
+ return function (event) {
+ if (event) {
+ event.preventDefault()
+ }
+
+ alertInstance.close(this)
+ }
+ }
+
static _getInstance(element) {
return Data.getData(element, DATA_KEY)
}
diff --git a/js/src/carousel.js b/js/src/carousel.js
index 32a039c49..9ff7c09e7 100644
--- a/js/src/carousel.js
+++ b/js/src/carousel.js
@@ -178,7 +178,7 @@ class Carousel {
this._interval = null
}
- if (this._config.interval && !this._isPaused) {
+ if (this._config && this._config.interval && !this._isPaused) {
this._interval = setInterval(
(document.visibilityState ? this.nextWhenVisible : this.next).bind(this),
this._config.interval
@@ -298,7 +298,7 @@ class Carousel {
}
const end = (event) => {
- if (this._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
+ if (this._pointerEvent && PointerType[event.pointerType.toUpperCase()]) {
this.touchDeltaX = event.clientX - this.touchStartX
}
@@ -464,6 +464,14 @@ class Carousel {
activeElement.classList.add(directionalClassName)
nextElement.classList.add(directionalClassName)
+ const nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10)
+ if (nextElementInterval) {
+ this._config.defaultInterval = this._config.defaultInterval || this._config.interval
+ this._config.interval = nextElementInterval
+ } else {
+ this._config.interval = this._config.defaultInterval || this._config.interval
+ }
+
const transitionDuration = Util.getTransitionDurationFromElement(activeElement)
EventHandler
diff --git a/js/src/dom/data.js b/js/src/dom/data.js
index 2c1115125..2dfaad91a 100644
--- a/js/src/dom/data.js
+++ b/js/src/dom/data.js
@@ -1,6 +1,6 @@
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): dom/data.js
+ * Bootstrap (v4.1.3): dom/data.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
diff --git a/js/src/dom/eventHandler.js b/js/src/dom/eventHandler.js
index 17f6d077a..259f575ed 100644
--- a/js/src/dom/eventHandler.js
+++ b/js/src/dom/eventHandler.js
@@ -3,7 +3,7 @@ import Util from '../util'
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): dom/eventHandler.js
+ * Bootstrap (v4.1.3): dom/eventHandler.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
@@ -32,6 +32,7 @@ const EventHandler = (() => {
'keydown', 'keypress', 'keyup',
'orientationchange',
'touchstart', 'touchmove', 'touchend', 'touchcancel',
+ 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel',
'gesturestart', 'gesturechange', 'gestureend',
'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout',
'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange',
@@ -314,4 +315,19 @@ const EventHandler = (() => {
}
})()
+/* istanbul ignore next */
+// focusin and focusout polyfill
+if (Polyfill.focusIn) {
+ (() => {
+ function listenerFocus(event) {
+ EventHandler.trigger(event.target, 'focusin')
+ }
+ function listenerBlur(event) {
+ EventHandler.trigger(event.target, 'focusout')
+ }
+ EventHandler.on(document, 'focus', 'input', listenerFocus)
+ EventHandler.on(document, 'blur', 'input', listenerBlur)
+ })()
+}
+
export default EventHandler
diff --git a/js/src/dom/manipulator.js b/js/src/dom/manipulator.js
index db3113f88..ad14e2914 100644
--- a/js/src/dom/manipulator.js
+++ b/js/src/dom/manipulator.js
@@ -1,6 +1,6 @@
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): dom/manipulator.js
+ * Bootstrap (v4.1.3): dom/manipulator.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
diff --git a/js/src/dom/polyfill.js b/js/src/dom/polyfill.js
index c0c1139f0..45defb76e 100644
--- a/js/src/dom/polyfill.js
+++ b/js/src/dom/polyfill.js
@@ -2,7 +2,7 @@ import Util from '../util'
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): dom/polyfill.js
+ * Bootstrap (v4.1.3): dom/polyfill.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
diff --git a/js/src/dom/selectorEngine.js b/js/src/dom/selectorEngine.js
index 55d2ce4bb..c2eec95a7 100644
--- a/js/src/dom/selectorEngine.js
+++ b/js/src/dom/selectorEngine.js
@@ -3,7 +3,7 @@ import Util from '../util'
/**
* --------------------------------------------------------------------------
- * Bootstrap (v4.1.1): dom/selectorEngine.js
+ * Bootstrap (v4.1.3): dom/selectorEngine.js
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
diff --git a/js/src/dropdown.js b/js/src/dropdown.js
index 6a4fb9e01..9a22a6991 100644
--- a/js/src/dropdown.js
+++ b/js/src/dropdown.js
@@ -234,7 +234,7 @@ class Dropdown {
Manipulator.toggleClass(this._menu, ClassName.SHOW)
Manipulator.toggleClass(parent, ClassName.SHOW)
- EventHandler.trigger(parent, Event.SHOWN, relatedTarget)
+ EventHandler.trigger(parent, Event.HIDDEN, relatedTarget)
}
dispose() {
diff --git a/js/src/index.js b/js/src/index.js
index 0c662873d..aa35ed07b 100644
--- a/js/src/index.js
+++ b/js/src/index.js
@@ -3,9 +3,7 @@ import Button from './button'
import Carousel from './carousel'
import Collapse from './collapse'
import Dropdown from './dropdown'
-import EventHandler from './dom/eventHandler'
import Modal from './modal'
-import Polyfill from './dom/polyfill'
import Popover from './popover'
import ScrollSpy from './scrollspy'
import Tab from './tab'
@@ -20,21 +18,6 @@ import Util from './util'
* --------------------------------------------------------------------------
*/
-/* istanbul ignore next */
-// focusin and focusout polyfill
-if (Polyfill.focusIn) {
- (() => {
- function listenerFocus(event) {
- EventHandler.trigger(event.target, 'focusin')
- }
- function listenerBlur(event) {
- EventHandler.trigger(event.target, 'focusout')
- }
- EventHandler.on(document, 'focus', 'input', listenerFocus)
- EventHandler.on(document, 'blur', 'input', listenerBlur)
- })()
-}
-
export {
Util,
Alert,
diff --git a/js/src/modal.js b/js/src/modal.js
index 34aa56606..8e56fc5b2 100644
--- a/js/src/modal.js
+++ b/js/src/modal.js
@@ -119,7 +119,7 @@ class Modal {
relatedTarget
})
- if (this._isShown || showEvent.isDefaultPrevented()) {
+ if (this._isShown || showEvent.defaultPrevented) {
return
}
@@ -161,7 +161,7 @@ class Modal {
const hideEvent = EventHandler.trigger(this._element, Event.HIDE)
- if (!this._isShown || hideEvent.isDefaultPrevented()) {
+ if (!this._isShown || hideEvent.defaultPrevented) {
return
}
@@ -282,16 +282,14 @@ class Modal {
}
_enforceFocus() {
- if (this._isShown && this._config.keyboard) {
- EventHandler.on(this._element, Event.KEYDOWN_DISMISS, (event) => {
- if (event.which === ESCAPE_KEYCODE) {
- event.preventDefault()
- this.hide()
- }
- })
- } else if (!this._isShown) {
- EventHandler.off(this._element, Event.KEYDOWN_DISMISS)
- }
+ EventHandler.off(document, Event.FOCUSIN) // guard against infinite focus loop
+ EventHandler.on(document, Event.FOCUSIN, (event) => {
+ if (document !== event.target &&
+ this._element !== event.target &&
+ !this._element.contains(event.target)) {
+ this._element.focus()
+ }
+ })
}
_setEscapeEvent() {
@@ -383,7 +381,7 @@ class Modal {
const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)
EventHandler.one(this._backdrop, Util.TRANSITION_END, callback)
- Util.emulateTransitionEnd(backdropTransitionDuration)
+ Util.emulateTransitionEnd(this._backdrop, backdropTransitionDuration)
} else if (!this._isShown && this._backdrop) {
this._backdrop.classList.remove(ClassName.SHOW)
diff --git a/js/src/tooltip.js b/js/src/tooltip.js
index 29394b948..93880bb8e 100644
--- a/js/src/tooltip.js
+++ b/js/src/tooltip.js
@@ -682,8 +682,7 @@ class Tooltip {
}
})
- if (typeof config !== 'undefined' &&
- typeof config.container === 'object' && config.container.jquery) {
+ if (config && typeof config.container === 'object' && config.container.jquery) {
config.container = config.container[0]
}
diff --git a/js/src/util.js b/js/src/util.js
index 7a97411bb..caa2e6348 100644
--- a/js/src/util.js
+++ b/js/src/util.js
@@ -5,8 +5,6 @@
* --------------------------------------------------------------------------
*/
-import EventHandler from './dom/eventHandler'
-
/**
* ------------------------------------------------------------------------
* Private TransitionEnd Helpers