diff options
author | Gleb Mazovetskiy <glex.spb@gmail.com> | 2017-12-29 04:59:01 +0300 |
---|---|---|
committer | Gleb Mazovetskiy <glex.spb@gmail.com> | 2017-12-29 04:59:01 +0300 |
commit | 2bb5568533f77bfbeb6ca50ec3a464a69a238bde (patch) | |
tree | 0ab4271cf951fd6df69c143991d6b7a109bda575 /assets/javascripts/bootstrap | |
parent | 5ae93e717519e910360350e6c0396efae8aff716 (diff) |
rake update[v4-dev]
Diffstat (limited to 'assets/javascripts/bootstrap')
-rw-r--r-- | assets/javascripts/bootstrap/alert.js | 6 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/button.js | 6 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/carousel.js | 17 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/collapse.js | 12 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/dropdown.js | 101 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/modal.js | 14 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/popover.js | 26 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/scrollspy.js | 10 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/tab.js | 24 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/tooltip.js | 40 | ||||
-rw-r--r-- | assets/javascripts/bootstrap/util.js | 39 |
11 files changed, 169 insertions, 126 deletions
diff --git a/assets/javascripts/bootstrap/alert.js b/assets/javascripts/bootstrap/alert.js index 4c5e120..3e8cc35 100644 --- a/assets/javascripts/bootstrap/alert.js +++ b/assets/javascripts/bootstrap/alert.js @@ -4,18 +4,18 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): alert.js + * Bootstrap (v4.0.0-beta.3): alert.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Alert = function () { +var Alert = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ var NAME = 'alert'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; var DATA_KEY = 'bs.alert'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; diff --git a/assets/javascripts/bootstrap/button.js b/assets/javascripts/bootstrap/button.js index a0de028..34dda7a 100644 --- a/assets/javascripts/bootstrap/button.js +++ b/assets/javascripts/bootstrap/button.js @@ -4,18 +4,18 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): button.js + * Bootstrap (v4.0.0-beta.3): button.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Button = function () { +var Button = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ var NAME = 'button'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; 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 e63ecc1..b90add3 100644 --- a/assets/javascripts/bootstrap/carousel.js +++ b/assets/javascripts/bootstrap/carousel.js @@ -1,21 +1,23 @@ +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 _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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): carousel.js + * Bootstrap (v4.0.0-beta.3): carousel.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Carousel = function () { +var Carousel = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ var NAME = 'carousel'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; var DATA_KEY = 'bs.carousel'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; @@ -197,7 +199,7 @@ var Carousel = function () { _proto._getConfig = function _getConfig(config) { - config = $.extend({}, Default, config); + config = _extends({}, Default, config); Util.typeCheckConfig(NAME, config, DefaultType); return config; }; @@ -399,10 +401,10 @@ var Carousel = function () { return this.each(function () { var data = $(this).data(DATA_KEY); - var _config = $.extend({}, Default, $(this).data()); + var _config = _extends({}, Default, $(this).data()); if (typeof config === 'object') { - $.extend(_config, config); + _config = _extends({}, _config, config); } var action = typeof config === 'string' ? config : _config.slide; @@ -440,7 +442,8 @@ var Carousel = function () { return; } - var config = $.extend({}, $(target).data(), $(this).data()); + var config = _extends({}, $(target).data(), $(this).data()); + var slideIndex = this.getAttribute('data-slide-to'); if (slideIndex) { diff --git a/assets/javascripts/bootstrap/collapse.js b/assets/javascripts/bootstrap/collapse.js index bc124d6..3291dfa 100644 --- a/assets/javascripts/bootstrap/collapse.js +++ b/assets/javascripts/bootstrap/collapse.js @@ -1,21 +1,23 @@ +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 _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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): collapse.js + * Bootstrap (v4.0.0-beta.3): collapse.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Collapse = function () { +var Collapse = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ var NAME = 'collapse'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; var DATA_KEY = 'bs.collapse'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; @@ -239,7 +241,7 @@ var Collapse = function () { _proto._getConfig = function _getConfig(config) { - config = $.extend({}, Default, config); + config = _extends({}, Default, config); config.toggle = Boolean(config.toggle); // coerce string values Util.typeCheckConfig(NAME, config, DefaultType); @@ -294,7 +296,7 @@ var Collapse = function () { var $this = $(this); var data = $this.data(DATA_KEY); - var _config = $.extend({}, Default, $this.data(), typeof config === 'object' && config); + var _config = _extends({}, 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 e83f0fd..5250119 100644 --- a/assets/javascripts/bootstrap/dropdown.js +++ b/assets/javascripts/bootstrap/dropdown.js @@ -1,30 +1,23 @@ +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 _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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): dropdown.js + * Bootstrap (v4.0.0-beta.3): dropdown.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Dropdown = function () { - /** - * Check for Popper dependency - * Popper - https://popper.js.org - */ - if (typeof Popper === 'undefined') { - throw new Error('Bootstrap dropdown require Popper.js (https://popper.js.org)'); - } +var Dropdown = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ - - var NAME = 'dropdown'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; var DATA_KEY = 'bs.dropdown'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; @@ -56,8 +49,11 @@ var Dropdown = function () { DISABLED: 'disabled', SHOW: 'show', DROPUP: 'dropup', + DROPRIGHT: 'dropright', + DROPLEFT: 'dropleft', MENURIGHT: 'dropdown-menu-right', - MENULEFT: 'dropdown-menu-left' + MENULEFT: 'dropdown-menu-left', + POSITION_STATIC: 'position-static' }; var Selector = { DATA_TOGGLE: '[data-toggle="dropdown"]', @@ -70,15 +66,21 @@ var Dropdown = function () { TOP: 'top-start', TOPEND: 'top-end', BOTTOM: 'bottom-start', - BOTTOMEND: 'bottom-end' + BOTTOMEND: 'bottom-end', + RIGHT: 'right-start', + RIGHTEND: 'right-end', + LEFT: 'left-start', + LEFTEND: 'left-end' }; var Default = { offset: 0, - flip: true + flip: true, + boundary: 'scrollParent' }; var DefaultType = { offset: '(number|string|function)', - flip: 'boolean' + flip: 'boolean', + boundary: '(string|element)' /** * ------------------------------------------------------------------------ * Class Definition @@ -127,21 +129,40 @@ var Dropdown = function () { if (showEvent.isDefaultPrevented()) { return; - } + } // Disable totally Popper.js for Dropdown in Navbar - var element = this._element; // for dropup with alignment we use the parent as popper container - if ($(parent).hasClass(ClassName.DROPUP)) { - if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) { - element = parent; + if (!this._inNavbar) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new Error('Bootstrap dropdown require Popper.js (https://popper.js.org)'); } - } - this._popper = new Popper(element, this._menu, this._getPopperConfig()); // if this is a touch-enabled device we add extra + var element = this._element; // for dropup with alignment we use the parent as popper container + + if ($(parent).hasClass(ClassName.DROPUP)) { + if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) { + element = parent; + } + } // If boundary is not `scrollParent`, then set position to `static` + // to allow the menu to "escape" the scroll parent's boundaries + // https://github.com/twbs/bootstrap/issues/24251 + + + if (this._config.boundary !== 'scrollParent') { + $(parent).addClass(ClassName.POSITION_STATIC); + } + + this._popper = new Popper(element, 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 // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) { $('body').children().on('mouseover', null, $.noop); } @@ -162,9 +183,9 @@ var Dropdown = function () { if (this._popper !== null) { this._popper.destroy(); - } - this._popper = null; + this._popper = null; + } }; _proto.update = function update() { @@ -188,7 +209,7 @@ var Dropdown = function () { }; _proto._getConfig = function _getConfig(config) { - config = $.extend({}, this.constructor.Default, $(this._element).data(), config); + config = _extends({}, this.constructor.Default, $(this._element).data(), config); Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); return config; }; @@ -213,6 +234,10 @@ var Dropdown = function () { if ($(this._menu).hasClass(ClassName.MENURIGHT)) { placement = AttachmentMap.TOPEND; } + } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { + placement = AttachmentMap.RIGHT; + } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { + placement = AttachmentMap.LEFT; } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) { placement = AttachmentMap.BOTTOMEND; } @@ -231,7 +256,7 @@ var Dropdown = function () { if (typeof this._config.offset === 'function') { offsetConf.fn = function (data) { - data.offsets = $.extend({}, data.offsets, _this2._config.offset(data.offsets) || {}); + data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {}); return data; }; } else { @@ -244,17 +269,12 @@ var Dropdown = function () { offset: offsetConf, flip: { enabled: this._config.flip + }, + preventOverflow: { + boundariesElement: this._config.boundary } - } // Disable Popper.js for Dropdown in Navbar - + } }; - - if (this._inNavbar) { - popperConfig.modifiers.applyStyle = { - enabled: !this._inNavbar - }; - } - return popperConfig; }; // static @@ -340,7 +360,14 @@ var Dropdown = function () { }; Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { - if (!REGEXP_KEYDOWN.test(event.which) || /button/i.test(event.target.tagName) && event.which === SPACE_KEYCODE || /input|textarea/i.test(event.target.tagName)) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { return; } diff --git a/assets/javascripts/bootstrap/modal.js b/assets/javascripts/bootstrap/modal.js index c6f5f60..525ea85 100644 --- a/assets/javascripts/bootstrap/modal.js +++ b/assets/javascripts/bootstrap/modal.js @@ -1,21 +1,23 @@ +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 _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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): modal.js + * Bootstrap (v4.0.0-beta.3): modal.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Modal = function () { +var Modal = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ var NAME = 'modal'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; var DATA_KEY = 'bs.modal'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; @@ -206,7 +208,7 @@ var Modal = function () { _proto._getConfig = function _getConfig(config) { - config = $.extend({}, Default, config); + config = _extends({}, Default, config); Util.typeCheckConfig(NAME, config, DefaultType); return config; }; @@ -490,7 +492,7 @@ var Modal = function () { return this.each(function () { var data = $(this).data(DATA_KEY); - var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config); + var _config = _extends({}, Modal.Default, $(this).data(), typeof config === 'object' && config); if (!data) { data = new Modal(this, _config); @@ -540,7 +542,7 @@ var Modal = function () { target = $(selector)[0]; } - var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data()); + var config = $(target).data(DATA_KEY) ? 'toggle' : _extends({}, $(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 a317b7f..f733a1e 100644 --- a/assets/javascripts/bootstrap/popover.js +++ b/assets/javascripts/bootstrap/popover.js @@ -4,34 +4,39 @@ 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); } + /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): popover.js + * Bootstrap (v4.0.0-beta.3): popover.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Popover = function () { +var Popover = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ var NAME = 'popover'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; 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 = $.extend({}, Tooltip.Default, { + + var Default = _extends({}, Tooltip.Default, { placement: 'right', trigger: 'click', content: '', template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>' }); - var DefaultType = $.extend({}, Tooltip.DefaultType, { + + var DefaultType = _extends({}, Tooltip.DefaultType, { content: '(string|element|function)' }); + var ClassName = { FADE: 'fade', SHOW: 'show' @@ -88,13 +93,20 @@ var Popover = function () { var $tip = $(this.getTipElement()); // we use append for html objects to maintain js events this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); - this.setElementContent($tip.find(Selector.CONTENT), this._getContent()); + + var content = this._getContent(); + + if (typeof content === 'function') { + content = content.call(this.element); + } + + this.setElementContent($tip.find(Selector.CONTENT), content); $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); }; // private _proto._getContent = function _getContent() { - return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content); + return this.element.getAttribute('data-content') || this.config.content; }; _proto._cleanTipClass = function _cleanTipClass() { diff --git a/assets/javascripts/bootstrap/scrollspy.js b/assets/javascripts/bootstrap/scrollspy.js index c9218fc..99f7a41 100644 --- a/assets/javascripts/bootstrap/scrollspy.js +++ b/assets/javascripts/bootstrap/scrollspy.js @@ -1,21 +1,23 @@ +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 _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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): scrollspy.js + * Bootstrap (v4.0.0-beta.3): scrollspy.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var ScrollSpy = function () { +var ScrollSpy = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ var NAME = 'scrollspy'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; var DATA_KEY = 'bs.scrollspy'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; @@ -142,7 +144,7 @@ var ScrollSpy = function () { _proto._getConfig = function _getConfig(config) { - config = $.extend({}, Default, config); + config = _extends({}, 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 c66e82f..a135130 100644 --- a/assets/javascripts/bootstrap/tab.js +++ b/assets/javascripts/bootstrap/tab.js @@ -4,18 +4,18 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): tab.js + * Bootstrap (v4.0.0-beta.3): tab.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Tab = function () { +var Tab = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ var NAME = 'tab'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; var DATA_KEY = 'bs.tab'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; @@ -142,7 +142,7 @@ var Tab = function () { var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE); var complete = function complete() { - return _this2._transitionComplete(element, active, isTransitioning, callback); + return _this2._transitionComplete(element, active, callback); }; if (active && isTransitioning) { @@ -150,15 +150,11 @@ var Tab = function () { } else { complete(); } - - if (active) { - $(active).removeClass(ClassName.SHOW); - } }; - _proto._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) { + _proto._transitionComplete = function _transitionComplete(element, active, callback) { if (active) { - $(active).removeClass(ClassName.ACTIVE); + $(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE); var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; if (dropdownChild) { @@ -176,12 +172,8 @@ var Tab = function () { element.setAttribute('aria-selected', true); } - if (isTransitioning) { - Util.reflow(element); - $(element).addClass(ClassName.SHOW); - } else { - $(element).removeClass(ClassName.FADE); - } + Util.reflow(element); + $(element).addClass(ClassName.SHOW); if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { var dropdownElement = $(element).closest(Selector.DROPDOWN)[0]; diff --git a/assets/javascripts/bootstrap/tooltip.js b/assets/javascripts/bootstrap/tooltip.js index 6d2bb1a..162ea92 100644 --- a/assets/javascripts/bootstrap/tooltip.js +++ b/assets/javascripts/bootstrap/tooltip.js @@ -1,30 +1,23 @@ +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 _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); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): tooltip.js + * Bootstrap (v4.0.0-beta.3): tooltip.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Tooltip = function () { - /** - * Check for Popper dependency - * Popper - https://popper.js.org - */ - if (typeof Popper === 'undefined') { - throw new Error('Bootstrap tooltips require Popper.js (https://popper.js.org)'); - } +var Tooltip = function ($) { /** * ------------------------------------------------------------------------ * Constants * ------------------------------------------------------------------------ */ - - var NAME = 'tooltip'; - var VERSION = '4.0.0-beta.2'; + var VERSION = '4.0.0-beta.3'; var DATA_KEY = 'bs.tooltip'; var EVENT_KEY = "." + DATA_KEY; var JQUERY_NO_CONFLICT = $.fn[NAME]; @@ -42,7 +35,8 @@ var Tooltip = function () { placement: '(string|function)', offset: '(number|string)', container: '(string|element|boolean)', - fallbackPlacement: '(string|array)' + fallbackPlacement: '(string|array)', + boundary: '(string|element)' }; var AttachmentMap = { AUTO: 'auto', @@ -62,7 +56,8 @@ var Tooltip = function () { placement: 'top', offset: 0, container: false, - fallbackPlacement: 'flip' + fallbackPlacement: 'flip', + boundary: 'scrollParent' }; var HoverState = { SHOW: 'show', @@ -106,7 +101,15 @@ var Tooltip = function () { /*#__PURE__*/ function () { function Tooltip(element, config) { - // private + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof Popper === 'undefined') { + throw new Error('Bootstrap tooltips require Popper.js (https://popper.js.org)'); + } // private + + this._isEnabled = true; this._timeout = 0; this._hoverState = ''; @@ -244,6 +247,9 @@ var Tooltip = function () { }, arrow: { element: Selector.ARROW + }, + preventOverflow: { + boundariesElement: this.config.boundary } }, onCreate: function onCreate(data) { @@ -421,7 +427,7 @@ var Tooltip = function () { }); if (this.config.selector) { - this.config = $.extend({}, this.config, { + this.config = _extends({}, this.config, { trigger: 'manual', selector: '' }); @@ -515,7 +521,7 @@ var Tooltip = function () { }; _proto._getConfig = function _getConfig(config) { - config = $.extend({}, this.constructor.Default, $(this.element).data(), config); + config = _extends({}, 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 9eb542a..f51988e 100644 --- a/assets/javascripts/bootstrap/util.js +++ b/assets/javascripts/bootstrap/util.js @@ -1,24 +1,17 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0-beta.2): util.js + * Bootstrap (v4.0.0-beta.3): util.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ -var Util = function () { +var Util = function ($) { /** * ------------------------------------------------------------------------ * Private TransitionEnd Helpers * ------------------------------------------------------------------------ */ var transition = false; - var MAX_UID = 1000000; - var TransitionEndEvent = { - WebkitTransition: 'webkitTransitionEnd', - MozTransition: 'transitionend', - OTransition: 'oTransitionEnd otransitionend', - transition: 'transitionend' // shoutout AngusCroll (https://goo.gl/pxwQGp) - - }; + var MAX_UID = 1000000; // shoutout AngusCroll (https://goo.gl/pxwQGp) function toType(obj) { return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); @@ -43,17 +36,9 @@ var Util = function () { return false; } - var el = document.createElement('bootstrap'); - - for (var name in TransitionEndEvent) { - if (typeof el.style[name] !== 'undefined') { - return { - end: TransitionEndEvent[name] - }; - } - } - - return false; + return { + end: 'transitionend' + }; } function transitionEndEmulator(duration) { @@ -79,6 +64,13 @@ var Util = function () { $.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; + } /** * -------------------------------------------------------------------------- * Public Util Api @@ -101,6 +93,11 @@ var Util = function () { if (!selector || selector === '#') { selector = element.getAttribute('href') || ''; + } // if it's an ID + + + if (selector.charAt(0) === '#') { + selector = escapeId(selector); } try { |