From 5a78819c01c9d6fae1216fa94a7f64a353afad05 Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Mon, 16 Apr 2018 12:37:20 +0100 Subject: rake update[v4.1.0] --- assets/javascripts/bootstrap/alert.js | 10 ++--- assets/javascripts/bootstrap/button.js | 4 +- assets/javascripts/bootstrap/carousel.js | 24 ++++++------ assets/javascripts/bootstrap/collapse.js | 30 ++++++--------- assets/javascripts/bootstrap/dropdown.js | 50 ++++++++++++++++-------- assets/javascripts/bootstrap/modal.js | 51 +++++++++++++------------ assets/javascripts/bootstrap/popover.js | 12 +++--- assets/javascripts/bootstrap/scrollspy.js | 10 +++-- assets/javascripts/bootstrap/tab.js | 10 ++--- assets/javascripts/bootstrap/tooltip.js | 27 +++++++------ assets/javascripts/bootstrap/util.js | 63 ++++++++++++++----------------- 11 files changed, 153 insertions(+), 138 deletions(-) (limited to 'assets/javascripts/bootstrap') diff --git a/assets/javascripts/bootstrap/alert.js b/assets/javascripts/bootstrap/alert.js index 3de9f13..c241746 100644 --- a/assets/javascripts/bootstrap/alert.js +++ b/assets/javascripts/bootstrap/alert.js @@ -4,7 +4,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): alert.js + * Bootstrap (v4.1.0): alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -15,12 +15,11 @@ var Alert = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'alert'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.alert'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 150; var Selector = { DISMISS: '[data-dismiss="alert"]' }; @@ -98,15 +97,16 @@ var Alert = function ($) { $(element).removeClass(ClassName.SHOW); - if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { + if (!$(element).hasClass(ClassName.FADE)) { this._destroyElement(element); return; } + var transitionDuration = Util.getTransitionDurationFromElement(element); $(element).one(Util.TRANSITION_END, function (event) { return _this._destroyElement(element, event); - }).emulateTransitionEnd(TRANSITION_DURATION); + }).emulateTransitionEnd(transitionDuration); }; _proto._destroyElement = function _destroyElement(element) { diff --git a/assets/javascripts/bootstrap/button.js b/assets/javascripts/bootstrap/button.js index 7d23bbe..d517e52 100644 --- a/assets/javascripts/bootstrap/button.js +++ b/assets/javascripts/bootstrap/button.js @@ -4,7 +4,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): button.js + * Bootstrap (v4.1.0): button.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -15,7 +15,7 @@ var Button = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'button'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.button'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; diff --git a/assets/javascripts/bootstrap/carousel.js b/assets/javascripts/bootstrap/carousel.js index f5dd28c..8326699 100644 --- a/assets/javascripts/bootstrap/carousel.js +++ b/assets/javascripts/bootstrap/carousel.js @@ -1,4 +1,6 @@ -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -6,7 +8,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): carousel.js + * Bootstrap (v4.1.0): carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -17,12 +19,11 @@ var Carousel = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'carousel'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.carousel'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 600; var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key @@ -131,7 +132,7 @@ var Carousel = function ($) { this._isPaused = true; } - if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { + if ($(this._element).find(Selector.NEXT_PREV)[0]) { Util.triggerTransitionEnd(this._element); this.cycle(true); } @@ -199,7 +200,7 @@ var Carousel = function ($) { _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); + config = _objectSpread({}, Default, config); Util.typeCheckConfig(NAME, config, DefaultType); return config; }; @@ -370,11 +371,12 @@ var Carousel = function ($) { to: nextElementIndex }); - if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { + if ($(this._element).hasClass(ClassName.SLIDE)) { $(nextElement).addClass(orderClassName); Util.reflow(nextElement); $(activeElement).addClass(directionalClassName); $(nextElement).addClass(directionalClassName); + var transitionDuration = Util.getTransitionDurationFromElement(activeElement); $(activeElement).one(Util.TRANSITION_END, function () { $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE); $(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName); @@ -382,7 +384,7 @@ var Carousel = function ($) { setTimeout(function () { return $(_this3._element).trigger(slidEvent); }, 0); - }).emulateTransitionEnd(TRANSITION_DURATION); + }).emulateTransitionEnd(transitionDuration); } else { $(activeElement).removeClass(ClassName.ACTIVE); $(nextElement).addClass(ClassName.ACTIVE); @@ -400,10 +402,10 @@ var Carousel = function ($) { return this.each(function () { var data = $(this).data(DATA_KEY); - var _config = _extends({}, Default, $(this).data()); + var _config = _objectSpread({}, Default, $(this).data()); if (typeof config === 'object') { - _config = _extends({}, _config, config); + _config = _objectSpread({}, _config, config); } var action = typeof config === 'string' ? config : _config.slide; @@ -441,7 +443,7 @@ var Carousel = function ($) { return; } - var config = _extends({}, $(target).data(), $(this).data()); + var config = _objectSpread({}, $(target).data(), $(this).data()); var slideIndex = this.getAttribute('data-slide-to'); diff --git a/assets/javascripts/bootstrap/collapse.js b/assets/javascripts/bootstrap/collapse.js index 39f4b88..6b0c1da 100644 --- a/assets/javascripts/bootstrap/collapse.js +++ b/assets/javascripts/bootstrap/collapse.js @@ -1,4 +1,6 @@ -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -6,7 +8,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): collapse.js + * Bootstrap (v4.1.0): collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -17,12 +19,11 @@ var Collapse = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'collapse'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.collapse'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 600; var Default = { toggle: true, parent: '' @@ -164,14 +165,10 @@ var Collapse = function ($) { $(_this._element).trigger(Event.SHOWN); }; - if (!Util.supportsTransitionEnd()) { - complete(); - return; - } - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); var scrollSize = "scroll" + capitalizedDimension; - $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); this._element.style[dimension] = this._element[scrollSize] + "px"; }; @@ -219,13 +216,8 @@ var Collapse = function ($) { }; this._element.style[dimension] = ''; - - if (!Util.supportsTransitionEnd()) { - complete(); - return; - } - - $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); }; _proto.setTransitioning = function setTransitioning(isTransitioning) { @@ -243,7 +235,7 @@ var Collapse = function ($) { _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); + config = _objectSpread({}, Default, config); config.toggle = Boolean(config.toggle); // Coerce string values Util.typeCheckConfig(NAME, config, DefaultType); @@ -298,7 +290,7 @@ var Collapse = function ($) { var $this = $(this); var data = $this.data(DATA_KEY); - var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config); + var _config = _objectSpread({}, Default, $this.data(), typeof config === 'object' && config); if (!data && _config.toggle && /show|hide/.test(config)) { _config.toggle = false; diff --git a/assets/javascripts/bootstrap/dropdown.js b/assets/javascripts/bootstrap/dropdown.js index a4f73fe..9a81783 100644 --- a/assets/javascripts/bootstrap/dropdown.js +++ b/assets/javascripts/bootstrap/dropdown.js @@ -1,4 +1,6 @@ -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -6,7 +8,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): dropdown.js + * Bootstrap (v4.1.0): dropdown.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -17,7 +19,7 @@ var Dropdown = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'dropdown'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.dropdown'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; @@ -60,7 +62,7 @@ var Dropdown = function ($) { FORM_CHILD: '.dropdown form', MENU: '.dropdown-menu', NAVBAR_NAV: '.navbar-nav', - VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)' + VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' }; var AttachmentMap = { TOP: 'top-start', @@ -75,12 +77,16 @@ var Dropdown = function ($) { var Default = { offset: 0, flip: true, - boundary: 'scrollParent' + boundary: 'scrollParent', + reference: 'toggle', + display: 'dynamic' }; var DefaultType = { offset: '(number|string|function)', flip: 'boolean', - boundary: '(string|element)' + boundary: '(string|element)', + reference: '(string|element)', + display: 'string' /** * ------------------------------------------------------------------------ * Class Definition @@ -141,11 +147,15 @@ var Dropdown = function ($) { throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)'); } - var element = this._element; // For dropup with alignment we use the parent as popper container + var referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (Util.isElement(this._config.reference)) { + referenceElement = this._config.reference; // Check if it's jQuery element - if ($(parent).hasClass(ClassName.DROPUP)) { - if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) { - element = parent; + if (typeof this._config.reference.jquery !== 'undefined') { + referenceElement = this._config.reference[0]; } } // If boundary is not `scrollParent`, then set position to `static` // to allow the menu to "escape" the scroll parent's boundaries @@ -156,7 +166,7 @@ var Dropdown = function ($) { $(parent).addClass(ClassName.POSITION_STATIC); } - this._popper = new Popper(element, this._menu, this._getPopperConfig()); + this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); } // If this is a touch-enabled device we add extra // empty mouseover listeners to the body's immediate children; // only needed because of broken event delegation on iOS @@ -164,7 +174,7 @@ var Dropdown = function ($) { if ('ontouchstart' in document.documentElement && $(parent).closest(Selector.NAVBAR_NAV).length === 0) { - $('body').children().on('mouseover', null, $.noop); + $(document.body).children().on('mouseover', null, $.noop); } this._element.focus(); @@ -209,7 +219,7 @@ var Dropdown = function ($) { }; _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, $(this._element).data(), config); + config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config); Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); return config; }; @@ -256,7 +266,7 @@ var Dropdown = function ($) { if (typeof this._config.offset === 'function') { offsetConf.fn = function (data) { - data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {}); + data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets) || {}); return data; }; } else { @@ -273,8 +283,16 @@ var Dropdown = function ($) { preventOverflow: { boundariesElement: this._config.boundary } - } + } // Disable Popper.js if we have a static display + }; + + if (this._config.display === 'static') { + popperConfig.modifiers.applyStyle = { + enabled: false + }; + } + return popperConfig; }; // Static @@ -339,7 +357,7 @@ var Dropdown = function ($) { if ('ontouchstart' in document.documentElement) { - $('body').children().off('mouseover', null, $.noop); + $(document.body).children().off('mouseover', null, $.noop); } toggles[i].setAttribute('aria-expanded', 'false'); diff --git a/assets/javascripts/bootstrap/modal.js b/assets/javascripts/bootstrap/modal.js index 8e3c886..6e94b87 100644 --- a/assets/javascripts/bootstrap/modal.js +++ b/assets/javascripts/bootstrap/modal.js @@ -1,4 +1,6 @@ -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -6,7 +8,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): modal.js + * Bootstrap (v4.1.0): modal.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -17,13 +19,11 @@ var Modal = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'modal'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.modal'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 300; - var BACKDROP_TRANSITION_DURATION = 150; var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key var Default = { @@ -84,7 +84,6 @@ var Modal = function ($) { this._isShown = false; this._isBodyOverflowing = false; this._ignoreBackdropClick = false; - this._originalBodyPadding = 0; this._scrollbarWidth = 0; } // Getters @@ -103,7 +102,7 @@ var Modal = function ($) { return; } - if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { + if ($(this._element).hasClass(ClassName.FADE)) { this._isTransitioning = true; } @@ -165,7 +164,7 @@ var Modal = function ($) { } this._isShown = false; - var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + var transition = $(this._element).hasClass(ClassName.FADE); if (transition) { this._isTransitioning = true; @@ -181,9 +180,10 @@ var Modal = function ($) { $(this._dialog).off(Event.MOUSEDOWN_DISMISS); if (transition) { + var transitionDuration = Util.getTransitionDurationFromElement(this._element); $(this._element).one(Util.TRANSITION_END, function (event) { return _this2._hideModal(event); - }).emulateTransitionEnd(TRANSITION_DURATION); + }).emulateTransitionEnd(transitionDuration); } else { this._hideModal(); } @@ -208,7 +208,7 @@ var Modal = function ($) { _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); + config = _objectSpread({}, Default, config); Util.typeCheckConfig(NAME, config, DefaultType); return config; }; @@ -216,7 +216,7 @@ var Modal = function ($) { _proto._showElement = function _showElement(relatedTarget) { var _this3 = this; - var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + var transition = $(this._element).hasClass(ClassName.FADE); if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { // Don't move modal's DOM position @@ -253,7 +253,8 @@ var Modal = function ($) { }; if (transition) { - $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); + var transitionDuration = Util.getTransitionDurationFromElement(this._element); + $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); } else { transitionComplete(); } @@ -331,7 +332,6 @@ var Modal = function ($) { var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; if (this._isShown && this._config.backdrop) { - var doAnimate = Util.supportsTransitionEnd() && animate; this._backdrop = document.createElement('div'); this._backdrop.className = ClassName.BACKDROP; @@ -357,7 +357,7 @@ var Modal = function ($) { } }); - if (doAnimate) { + if (animate) { Util.reflow(this._backdrop); } @@ -367,12 +367,13 @@ var Modal = function ($) { return; } - if (!doAnimate) { + if (!animate) { callback(); return; } - $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); } else if (!this._isShown && this._backdrop) { $(this._backdrop).removeClass(ClassName.SHOW); @@ -384,8 +385,10 @@ var Modal = function ($) { } }; - if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { - $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); + if ($(this._element).hasClass(ClassName.FADE)) { + var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + + $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); } else { callbackRemove(); } @@ -447,8 +450,8 @@ var Modal = function ($) { }); // Adjust body padding var actualPadding = document.body.style.paddingRight; - var calculatedPadding = $('body').css('padding-right'); - $('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); + var calculatedPadding = $(document.body).css('padding-right'); + $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); } }; @@ -470,10 +473,10 @@ var Modal = function ($) { } }); // Restore body padding - var padding = $('body').data('padding-right'); + var padding = $(document.body).data('padding-right'); if (typeof padding !== 'undefined') { - $('body').css('padding-right', padding).removeData('padding-right'); + $(document.body).css('padding-right', padding).removeData('padding-right'); } }; @@ -492,7 +495,7 @@ var Modal = function ($) { return this.each(function () { var data = $(this).data(DATA_KEY); - var _config = _extends({}, Modal.Default, $(this).data(), typeof config === 'object' && config); + var _config = _objectSpread({}, Modal.Default, $(this).data(), typeof config === 'object' && config); if (!data) { data = new Modal(this, _config); @@ -542,7 +545,7 @@ var Modal = function ($) { target = $(selector)[0]; } - var config = $(target).data(DATA_KEY) ? 'toggle' : _extends({}, $(target).data(), $(this).data()); + var config = $(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data()); if (this.tagName === 'A' || this.tagName === 'AREA') { event.preventDefault(); diff --git a/assets/javascripts/bootstrap/popover.js b/assets/javascripts/bootstrap/popover.js index ee53fcd..c4adfb5 100644 --- a/assets/javascripts/bootstrap/popover.js +++ b/assets/javascripts/bootstrap/popover.js @@ -4,11 +4,13 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): popover.js + * Bootstrap (v4.1.0): popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -19,21 +21,21 @@ var Popover = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'popover'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.popover'; var EVENT_KEY = "." + DATA_KEY; var JQUERY_NO_CONFLICT = $.fn[NAME]; var CLASS_PREFIX = 'bs-popover'; var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); - var Default = _extends({}, Tooltip.Default, { + var Default = _objectSpread({}, Tooltip.Default, { placement: 'right', trigger: 'click', content: '', template: '' }); - var DefaultType = _extends({}, Tooltip.DefaultType, { + var DefaultType = _objectSpread({}, Tooltip.DefaultType, { content: '(string|element|function)' }); diff --git a/assets/javascripts/bootstrap/scrollspy.js b/assets/javascripts/bootstrap/scrollspy.js index 616bb03..38b45d6 100644 --- a/assets/javascripts/bootstrap/scrollspy.js +++ b/assets/javascripts/bootstrap/scrollspy.js @@ -1,4 +1,6 @@ -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -6,7 +8,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): scrollspy.js + * Bootstrap (v4.1.0): scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -17,7 +19,7 @@ var ScrollSpy = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'scrollspy'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.scrollspy'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; @@ -144,7 +146,7 @@ var ScrollSpy = function ($) { _proto._getConfig = function _getConfig(config) { - config = _extends({}, Default, config); + config = _objectSpread({}, Default, config); if (typeof config.target !== 'string') { var id = $(config.target).attr('id'); diff --git a/assets/javascripts/bootstrap/tab.js b/assets/javascripts/bootstrap/tab.js index b8aa5a8..7c9ba2d 100644 --- a/assets/javascripts/bootstrap/tab.js +++ b/assets/javascripts/bootstrap/tab.js @@ -4,7 +4,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): tab.js + * Bootstrap (v4.1.0): tab.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -15,12 +15,11 @@ var Tab = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'tab'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.tab'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 150; var Event = { HIDE: "hide" + EVENT_KEY, HIDDEN: "hidden" + EVENT_KEY, @@ -139,14 +138,15 @@ var Tab = function ($) { } var active = activeElements[0]; - var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE); + var isTransitioning = callback && active && $(active).hasClass(ClassName.FADE); var complete = function complete() { return _this2._transitionComplete(element, active, callback); }; if (active && isTransitioning) { - $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + var transitionDuration = Util.getTransitionDurationFromElement(active); + $(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); } else { complete(); } diff --git a/assets/javascripts/bootstrap/tooltip.js b/assets/javascripts/bootstrap/tooltip.js index edb2c96..63f1bc6 100644 --- a/assets/javascripts/bootstrap/tooltip.js +++ b/assets/javascripts/bootstrap/tooltip.js @@ -1,4 +1,6 @@ -function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } @@ -6,7 +8,7 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): tooltip.js + * Bootstrap (v4.1.0): tooltip.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -17,11 +19,10 @@ var Tooltip = function ($) { * ------------------------------------------------------------------------ */ var NAME = 'tooltip'; - var VERSION = '4.0.0'; + var VERSION = '4.1.0'; var DATA_KEY = 'bs.tooltip'; var EVENT_KEY = "." + DATA_KEY; var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 150; var CLASS_PREFIX = 'bs-tooltip'; var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); var DefaultType = { @@ -267,7 +268,7 @@ var Tooltip = function ($) { // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html if ('ontouchstart' in document.documentElement) { - $('body').children().on('mouseover', null, $.noop); + $(document.body).children().on('mouseover', null, $.noop); } var complete = function complete() { @@ -284,8 +285,9 @@ var Tooltip = function ($) { } }; - if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { - $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION); + if ($(this.tip).hasClass(ClassName.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(this.tip); + $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); } else { complete(); } @@ -328,15 +330,16 @@ var Tooltip = function ($) { // empty mouseover listeners we added for iOS support if ('ontouchstart' in document.documentElement) { - $('body').children().off('mouseover', null, $.noop); + $(document.body).children().off('mouseover', null, $.noop); } this._activeTrigger[Trigger.CLICK] = false; this._activeTrigger[Trigger.FOCUS] = false; this._activeTrigger[Trigger.HOVER] = false; - if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) { - $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); + if ($(this.tip).hasClass(ClassName.FADE)) { + var transitionDuration = Util.getTransitionDurationFromElement(tip); + $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); } else { complete(); } @@ -427,7 +430,7 @@ var Tooltip = function ($) { }); if (this.config.selector) { - this.config = _extends({}, this.config, { + this.config = _objectSpread({}, this.config, { trigger: 'manual', selector: '' }); @@ -521,7 +524,7 @@ var Tooltip = function ($) { }; _proto._getConfig = function _getConfig(config) { - config = _extends({}, this.constructor.Default, $(this.element).data(), config); + config = _objectSpread({}, this.constructor.Default, $(this.element).data(), config); if (typeof config.delay === 'number') { config.delay = { diff --git a/assets/javascripts/bootstrap/util.js b/assets/javascripts/bootstrap/util.js index 1e33eb8..e03cfc9 100644 --- a/assets/javascripts/bootstrap/util.js +++ b/assets/javascripts/bootstrap/util.js @@ -1,6 +1,6 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): util.js + * Bootstrap (v4.1.0): util.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ @@ -10,17 +10,18 @@ var Util = function ($) { * Private TransitionEnd Helpers * ------------------------------------------------------------------------ */ - var transition = false; - var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + var TRANSITION_END = 'transitionend'; + var MAX_UID = 1000000; + var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) function toType(obj) { - return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); } function getSpecialTransitionEndEvent() { return { - bindType: transition.end, - delegateType: transition.end, + bindType: TRANSITION_END, + delegateType: TRANSITION_END, handle: function handle(event) { if ($(event.target).is(this)) { return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params @@ -31,16 +32,6 @@ var Util = function ($) { }; } - function transitionEndTest() { - if (typeof window !== 'undefined' && window.QUnit) { - return false; - } - - return { - end: 'transitionend' - }; - } - function transitionEndEmulator(duration) { var _this = this; @@ -57,19 +48,8 @@ var Util = function ($) { } function setTransitionEndSupport() { - transition = transitionEndTest(); $.fn.emulateTransitionEnd = transitionEndEmulator; - - if (Util.supportsTransitionEnd()) { - $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); - } - } - - function escapeId(selector) { - // We escape IDs in case of special selectors (selector = '#myId:something') - // $.escapeSelector does not exist in jQuery < 3 - selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1'); - return selector; + $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); } /** * -------------------------------------------------------------------------- @@ -93,11 +73,6 @@ var Util = function ($) { if (!selector || selector === '#') { selector = element.getAttribute('href') || ''; - } // If it's an ID - - - if (selector.charAt(0) === '#') { - selector = escapeId(selector); } try { @@ -107,14 +82,32 @@ var Util = function ($) { return null; } }, + getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { + if (!element) { + return 0; + } // Get transition-duration of the element + + + var transitionDuration = $(element).css('transition-duration'); + var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found + + if (!floatTransitionDuration) { + return 0; + } // If multiple durations are defined, take the first + + + transitionDuration = transitionDuration.split(',')[0]; + return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER; + }, reflow: function reflow(element) { return element.offsetHeight; }, triggerTransitionEnd: function triggerTransitionEnd(element) { - $(element).trigger(transition.end); + $(element).trigger(TRANSITION_END); }, + // TODO: Remove in v5 supportsTransitionEnd: function supportsTransitionEnd() { - return Boolean(transition); + return Boolean(TRANSITION_END); }, isElement: function isElement(obj) { return (obj[0] || obj).nodeType; -- cgit v1.2.3