diff options
Diffstat (limited to 'dist/js/bootstrap.js')
-rw-r--r-- | dist/js/bootstrap.js | 2469 |
1 files changed, 1650 insertions, 819 deletions
diff --git a/dist/js/bootstrap.js b/dist/js/bootstrap.js index da59f0e0ca..378690ad6a 100644 --- a/dist/js/bootstrap.js +++ b/dist/js/bootstrap.js @@ -4,12 +4,11 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) */ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : - typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : - (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper)); -}(this, function (exports, $, Popper) { 'use strict'; + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('popper.js')) : + typeof define === 'function' && define.amd ? define(['exports', 'popper.js'], factory) : + (global = global || self, factory(global.bootstrap = {}, global.Popper)); +}(this, function (exports, Popper) { 'use strict'; - $ = $ && $.hasOwnProperty('default') ? $['default'] : $; Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper; function _defineProperties(target, props) { @@ -70,158 +69,705 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v4.3.1): util.js + * Bootstrap (v4.3.1): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ + var MAX_UID = 1000000; + var MILLISECONDS_MULTIPLIER = 1000; + var TRANSITION_END = 'transitionend'; + var jQuery = window.jQuery; // Shoutout AngusCroll (https://goo.gl/pxwQGp) + + var toType = function toType(obj) { + return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase(); + }; /** - * ------------------------------------------------------------------------ - * Private TransitionEnd Helpers - * ------------------------------------------------------------------------ + * -------------------------------------------------------------------------- + * Public Util Api + * -------------------------------------------------------------------------- */ - 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-z]+)/i)[1].toLowerCase(); - } + var getUID = function getUID(prefix) { + do { + // eslint-disable-next-line no-bitwise + prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here + } while (document.getElementById(prefix)); - function getSpecialTransitionEndEvent() { - return { - 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 - } + return prefix; + }; + + var getSelectorFromElement = function getSelectorFromElement(element) { + var selector = element.getAttribute('data-target'); + + if (!selector || selector === '#') { + var hrefAttr = element.getAttribute('href'); + selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''; + } + + try { + return document.querySelector(selector) ? selector : null; + } catch (err) { + return null; + } + }; + + var getTransitionDurationFromElement = function getTransitionDurationFromElement(element) { + if (!element) { + return 0; + } // Get transition-duration of the element - return undefined; // eslint-disable-line no-undefined - } - }; - } - function transitionEndEmulator(duration) { - var _this = this; + var _window$getComputedSt = window.getComputedStyle(element), + transitionDuration = _window$getComputedSt.transitionDuration, + transitionDelay = _window$getComputedSt.transitionDelay; + + var floatTransitionDuration = parseFloat(transitionDuration); + var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found + + if (!floatTransitionDuration && !floatTransitionDelay) { + return 0; + } // If multiple durations are defined, take the first + + + transitionDuration = transitionDuration.split(',')[0]; + transitionDelay = transitionDelay.split(',')[0]; + return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + }; + var triggerTransitionEnd = function triggerTransitionEnd(element) { + element.dispatchEvent(new Event(TRANSITION_END)); + }; + + var isElement = function isElement(obj) { + return (obj[0] || obj).nodeType; + }; + + var emulateTransitionEnd = function emulateTransitionEnd(element, duration) { var called = false; - $(this).one(Util.TRANSITION_END, function () { + var durationPadding = 5; + var emulatedDuration = duration + durationPadding; + + function listener() { called = true; - }); + element.removeEventListener(TRANSITION_END, listener); + } + + element.addEventListener(TRANSITION_END, listener); setTimeout(function () { if (!called) { - Util.triggerTransitionEnd(_this); + triggerTransitionEnd(element); } - }, duration); - return this; - } + }, emulatedDuration); + }; + + var typeCheckConfig = function typeCheckConfig(componentName, config, configTypes) { + Object.keys(configTypes).forEach(function (property) { + var expectedTypes = configTypes[property]; + var value = config[property]; + var valueType = value && isElement(value) ? 'element' : toType(value); + + if (!new RegExp(expectedTypes).test(valueType)) { + throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); + } + }); + }; + + var makeArray = function makeArray(nodeList) { + if (!nodeList) { + return []; + } + + return [].slice.call(nodeList); + }; + + var isVisible = function isVisible(element) { + if (!element) { + return false; + } + + if (element.style && element.parentNode && element.parentNode.style) { + return element.style.display !== 'none' && element.parentNode.style.display !== 'none' && element.style.visibility !== 'hidden'; + } + + return false; + }; + + var findShadowRoot = function findShadowRoot(element) { + if (!document.documentElement.attachShadow) { + return null; + } // Can find the shadow root otherwise it'll return the document + + + if (typeof element.getRootNode === 'function') { + var root = element.getRootNode(); + return root instanceof ShadowRoot ? root : null; + } + + if (element instanceof ShadowRoot) { + return element; + } // when we don't find a shadow root + + + if (!element.parentNode) { + return null; + } + + return findShadowRoot(element.parentNode); + }; // eslint-disable-next-line no-empty-function + + + var noop = function noop() { + return function () {}; + }; + + var reflow = function reflow(element) { + return element.offsetHeight; + }; - function setTransitionEndSupport() { - $.fn.emulateTransitionEnd = transitionEndEmulator; - $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); - } /** * -------------------------------------------------------------------------- - * Public Util Api + * Bootstrap (v4.3.1): dom/data.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var mapData = function () { + var storeData = {}; + var id = 1; + return { + set: function set(element, key, data) { + if (typeof element.key === 'undefined') { + element.key = { + key: key, + id: id + }; + id++; + } + + storeData[element.key.id] = data; + }, + get: function get(element, key) { + if (!element || typeof element.key === 'undefined') { + return null; + } - var Util = { - TRANSITION_END: 'bsTransitionEnd', - getUID: function getUID(prefix) { - do { - // eslint-disable-next-line no-bitwise - prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here - } while (document.getElementById(prefix)); + var keyProperties = element.key; - return prefix; - }, - getSelectorFromElement: function getSelectorFromElement(element) { - var selector = element.getAttribute('data-target'); + if (keyProperties.key === key) { + return storeData[keyProperties.id]; + } - if (!selector || selector === '#') { - var hrefAttr = element.getAttribute('href'); - selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : ''; + return null; + }, + delete: function _delete(element, key) { + if (typeof element.key === 'undefined') { + return; + } + + var keyProperties = element.key; + + if (keyProperties.key === key) { + delete storeData[keyProperties.id]; + delete element.key; + } } + }; + }(); + + var Data = { + setData: function setData(instance, key, data) { + mapData.set(instance, key, data); + }, + getData: function getData(instance, key) { + return mapData.get(instance, key); + }, + removeData: function removeData(instance, key) { + mapData.delete(instance, key); + } + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): dom/polyfill.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + /* istanbul ignore next */ + + var Polyfill = function () { + // MSEdge resets defaultPrevented flag upon dispatchEvent call if at least one listener is attached + var defaultPreventedPreservedOnDispatch = function () { + var e = new CustomEvent('Bootstrap', { + cancelable: true + }); + var element = document.createElement('div'); + element.addEventListener('Bootstrap', function () { + return null; + }); + e.preventDefault(); + element.dispatchEvent(e); + return e.defaultPrevented; + }(); + + var find = Element.prototype.querySelectorAll; + var findOne = Element.prototype.querySelector; + var scopeSelectorRegex = /:scope\b/; + + var supportScopeQuery = function () { + var element = document.createElement('div'); try { - return document.querySelector(selector) ? selector : null; - } catch (err) { + element.querySelectorAll(':scope *'); + } catch (e) { + return false; + } + + return true; + }(); + + if (!supportScopeQuery) { + find = function find(selector) { + if (!scopeSelectorRegex.test(selector)) { + return this.querySelectorAll(selector); + } + + var hasId = Boolean(this.id); + + if (!hasId) { + this.id = getUID('scope'); + } + + var nodeList = null; + + try { + selector = selector.replace(scopeSelectorRegex, "#" + this.id); + nodeList = this.querySelectorAll(selector); + } finally { + if (!hasId) { + this.removeAttribute('id'); + } + } + + return nodeList; + }; + + findOne = function findOne(selector) { + if (!scopeSelectorRegex.test(selector)) { + return this.querySelector(selector); + } + + var matches = find.call(this, selector); + + if (typeof matches[0] !== 'undefined') { + return matches[0]; + } + return null; + }; + } + + return { + defaultPreventedPreservedOnDispatch: defaultPreventedPreservedOnDispatch, + find: find, + findOne: findOne + }; + }(); + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): dom/eventHandler.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var namespaceRegex = /[^.]*(?=\..*)\.|.*/; + var stripNameRegex = /\..*/; + var keyEventRegex = /^key/; + var stripUidRegex = /::\d+$/; + var eventRegistry = {}; // Events storage + + var uidEvent = 1; + var customEvents = { + mouseenter: 'mouseover', + mouseleave: 'mouseout' + }; + var nativeEvents = ['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', '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', 'error', 'abort', 'scroll']; + /** + * ------------------------------------------------------------------------ + * Private methods + * ------------------------------------------------------------------------ + */ + + function getUidEvent(element, uid) { + return uid && uid + "::" + uidEvent++ || element.uidEvent || uidEvent++; + } + + function getEvent(element) { + var uid = getUidEvent(element); + element.uidEvent = uid; + return eventRegistry[uid] = eventRegistry[uid] || {}; + } + + function fixEvent(event, element) { + // Add which for key events + if (event.which === null && keyEventRegex.test(event.type)) { + event.which = event.charCode !== null ? event.charCode : event.keyCode; + } + + event.delegateTarget = element; + } + + function bootstrapHandler(element, fn) { + return function handler(event) { + fixEvent(event, element); + + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + + return fn.apply(element, [event]); + }; + } + + function bootstrapDelegationHandler(element, selector, fn) { + return function handler(event) { + var domElements = element.querySelectorAll(selector); + + for (var target = event.target; target && target !== this; target = target.parentNode) { + for (var i = domElements.length; i--;) { + if (domElements[i] === target) { + fixEvent(event, target); + + if (handler.oneOff) { + EventHandler.off(element, event.type, fn); + } + + return fn.apply(target, [event]); + } + } + } // To please ESLint + + + return null; + }; + } + + function findHandler(events, handler, delegationSelector) { + if (delegationSelector === void 0) { + delegationSelector = null; + } + + var uidList = Object.keys(events); + + for (var i = 0; i < uidList.length; i++) { + var uid = uidList[i]; + var event = events[uid]; + + if (event.originalHandler === handler && event.delegationSelector === delegationSelector) { + return events[uid]; + } + } + + return null; + } + + function normalizeParams(originalTypeEvent, handler, delegationFn) { + var delegation = typeof handler === 'string'; + var originalHandler = delegation ? delegationFn : handler; // allow to get the native events from namespaced events ('click.bs.button' --> 'click') + + var typeEvent = originalTypeEvent.replace(stripNameRegex, ''); + var custom = customEvents[typeEvent]; + + if (custom) { + typeEvent = custom; + } + + var isNative = nativeEvents.indexOf(typeEvent) > -1; + + if (!isNative) { + typeEvent = originalTypeEvent; + } + + return [delegation, originalHandler, typeEvent]; + } + + function addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + + if (!handler) { + handler = delegationFn; + delegationFn = null; + } + + var _normalizeParams = normalizeParams(originalTypeEvent, handler, delegationFn), + delegation = _normalizeParams[0], + originalHandler = _normalizeParams[1], + typeEvent = _normalizeParams[2]; + + var events = getEvent(element); + var handlers = events[typeEvent] || (events[typeEvent] = {}); + var previousFn = findHandler(handlers, originalHandler, delegation ? handler : null); + + if (previousFn) { + previousFn.oneOff = previousFn.oneOff && oneOff; + return; + } + + var uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, '')); + var fn = !delegation ? bootstrapHandler(element, handler) : bootstrapDelegationHandler(element, handler, delegationFn); + fn.delegationSelector = delegation ? handler : null; + fn.originalHandler = originalHandler; + fn.oneOff = oneOff; + fn.uidEvent = uid; + handlers[uid] = fn; + element.addEventListener(typeEvent, fn, delegation); + } + + function removeHandler(element, events, typeEvent, handler, delegationSelector) { + var fn = findHandler(events[typeEvent], handler, delegationSelector); + + if (fn === null) { + return; + } + + element.removeEventListener(typeEvent, fn, Boolean(delegationSelector)); + delete events[typeEvent][fn.uidEvent]; + } + + function removeNamespacedHandlers(element, events, typeEvent, namespace) { + var storeElementEvent = events[typeEvent] || {}; + Object.keys(storeElementEvent).forEach(function (handlerKey) { + if (handlerKey.indexOf(namespace) > -1) { + var event = storeElementEvent[handlerKey]; + removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); } + }); + } + + var EventHandler = { + on: function on(element, event, handler, delegationFn) { + addHandler(element, event, handler, delegationFn, false); }, - getTransitionDurationFromElement: function getTransitionDurationFromElement(element) { - if (!element) { - return 0; - } // Get transition-duration of the element + one: function one(element, event, handler, delegationFn) { + addHandler(element, event, handler, delegationFn, true); + }, + off: function off(element, originalTypeEvent, handler, delegationFn) { + if (typeof originalTypeEvent !== 'string' || !element) { + return; + } + + var _normalizeParams2 = normalizeParams(originalTypeEvent, handler, delegationFn), + delegation = _normalizeParams2[0], + originalHandler = _normalizeParams2[1], + typeEvent = _normalizeParams2[2]; + + var inNamespace = typeEvent !== originalTypeEvent; + var events = getEvent(element); + var isNamespace = originalTypeEvent.charAt(0) === '.'; + if (typeof originalHandler !== 'undefined') { + // Simplest case: handler is passed, remove that listener ONLY. + if (!events || !events[typeEvent]) { + return; + } - var transitionDuration = $(element).css('transition-duration'); - var transitionDelay = $(element).css('transition-delay'); - var floatTransitionDuration = parseFloat(transitionDuration); - var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found + removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null); + return; + } - if (!floatTransitionDuration && !floatTransitionDelay) { - return 0; - } // If multiple durations are defined, take the first + if (isNamespace) { + Object.keys(events).forEach(function (elementEvent) { + removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.substr(1)); + }); + } + var storeElementEvent = events[typeEvent] || {}; + Object.keys(storeElementEvent).forEach(function (keyHandlers) { + var handlerKey = keyHandlers.replace(stripUidRegex, ''); - transitionDuration = transitionDuration.split(',')[0]; - transitionDelay = transitionDelay.split(',')[0]; - return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + if (!inNamespace || originalTypeEvent.indexOf(handlerKey) > -1) { + var event = storeElementEvent[keyHandlers]; + removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector); + } + }); }, - reflow: function reflow(element) { - return element.offsetHeight; + trigger: function trigger(element, event, args) { + if (typeof event !== 'string' || !element) { + return null; + } + + var typeEvent = event.replace(stripNameRegex, ''); + var inNamespace = event !== typeEvent; + var isNative = nativeEvents.indexOf(typeEvent) > -1; + var jQueryEvent; + var bubbles = true; + var nativeDispatch = true; + var defaultPrevented = false; + var evt = null; + + if (inNamespace && typeof jQuery !== 'undefined') { + jQueryEvent = jQuery.Event(event, args); + jQuery(element).trigger(jQueryEvent); + bubbles = !jQueryEvent.isPropagationStopped(); + nativeDispatch = !jQueryEvent.isImmediatePropagationStopped(); + defaultPrevented = jQueryEvent.isDefaultPrevented(); + } + + if (isNative) { + evt = document.createEvent('HTMLEvents'); + evt.initEvent(typeEvent, bubbles, true); + } else { + evt = new CustomEvent(event, { + bubbles: bubbles, + cancelable: true + }); + } // merge custom informations in our event + + + if (typeof args !== 'undefined') { + Object.keys(args).forEach(function (key) { + Object.defineProperty(evt, key, { + get: function get() { + return args[key]; + } + }); + }); + } + + if (defaultPrevented) { + evt.preventDefault(); + + if (!Polyfill.defaultPreventedPreservedOnDispatch) { + Object.defineProperty(evt, 'defaultPrevented', { + get: function get() { + return true; + } + }); + } + } + + if (nativeDispatch) { + element.dispatchEvent(evt); + } + + if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') { + jQueryEvent.preventDefault(); + } + + return evt; + } + }; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): dom/selectorEngine.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + + var findFn = Polyfill.find; + var _findOne = Polyfill.findOne; + var NODE_TEXT = 3; + var SelectorEngine = { + matches: function matches(element, selector) { + return element.matches(selector); }, - triggerTransitionEnd: function triggerTransitionEnd(element) { - $(element).trigger(TRANSITION_END); + find: function find(selector, element) { + if (element === void 0) { + element = document.documentElement; + } + + if (typeof selector !== 'string') { + return null; + } + + return findFn.call(element, selector); }, - // TODO: Remove in v5 - supportsTransitionEnd: function supportsTransitionEnd() { - return Boolean(TRANSITION_END); + findOne: function findOne(selector, element) { + if (element === void 0) { + element = document.documentElement; + } + + if (typeof selector !== 'string') { + return null; + } + + return _findOne.call(element, selector); }, - isElement: function isElement(obj) { - return (obj[0] || obj).nodeType; + children: function children(element, selector) { + var _this = this; + + if (typeof selector !== 'string') { + return null; + } + + var children = makeArray(element.children); + return children.filter(function (child) { + return _this.matches(child, selector); + }); }, - typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { - for (var property in configTypes) { - if (Object.prototype.hasOwnProperty.call(configTypes, property)) { - var expectedTypes = configTypes[property]; - var value = config[property]; - var valueType = value && Util.isElement(value) ? 'element' : toType(value); - - if (!new RegExp(expectedTypes).test(valueType)) { - throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); - } + parents: function parents(element, selector) { + if (typeof selector !== 'string') { + return null; + } + + var parents = []; + var ancestor = element.parentNode; + + while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) { + if (this.matches(ancestor, selector)) { + parents.push(ancestor); } + + ancestor = ancestor.parentNode; } + + return parents; }, - findShadowRoot: function findShadowRoot(element) { - if (!document.documentElement.attachShadow) { + closest: function closest(element, selector) { + if (typeof selector !== 'string') { return null; - } // Can find the shadow root otherwise it'll return the document - + } - if (typeof element.getRootNode === 'function') { - var root = element.getRootNode(); - return root instanceof ShadowRoot ? root : null; + return element.closest(selector); + }, + prev: function prev(element, selector) { + if (typeof selector !== 'string') { + return null; } - if (element instanceof ShadowRoot) { - return element; - } // when we don't find a shadow root + var siblings = []; + var previous = element.previousSibling; + while (previous && previous.nodeType === Node.ELEMENT_NODE && previous.nodeType !== NODE_TEXT) { + if (this.matches(previous, selector)) { + siblings.push(previous); + } - if (!element.parentNode) { - return null; + previous = previous.previousSibling; } - return Util.findShadowRoot(element.parentNode); + return siblings; } }; - setTransitionEndSupport(); /** * ------------------------------------------------------------------------ @@ -234,11 +780,10 @@ var DATA_KEY = 'bs.alert'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $.fn[NAME]; var Selector = { DISMISS: '[data-dismiss="alert"]' }; - var Event = { + var Event$1 = { CLOSE: "close" + EVENT_KEY, CLOSED: "closed" + EVENT_KEY, CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY @@ -260,6 +805,10 @@ function () { function Alert(element) { this._element = element; + + if (this._element) { + Data.setData(element, DATA_KEY, this); + } } // Getters @@ -275,7 +824,7 @@ var customEvent = this._triggerCloseEvent(rootElement); - if (customEvent.isDefaultPrevented()) { + if (customEvent === null || customEvent.defaultPrevented) { return; } @@ -283,62 +832,63 @@ }; _proto.dispose = function dispose() { - $.removeData(this._element, DATA_KEY); + Data.removeData(this._element, DATA_KEY); this._element = null; } // Private ; _proto._getRootElement = function _getRootElement(element) { - var selector = Util.getSelectorFromElement(element); + var selector = getSelectorFromElement(element); var parent = false; if (selector) { - parent = document.querySelector(selector); + parent = SelectorEngine.findOne(selector); } if (!parent) { - parent = $(element).closest("." + ClassName.ALERT)[0]; + parent = SelectorEngine.closest(element, "." + ClassName.ALERT); } return parent; }; _proto._triggerCloseEvent = function _triggerCloseEvent(element) { - var closeEvent = $.Event(Event.CLOSE); - $(element).trigger(closeEvent); - return closeEvent; + return EventHandler.trigger(element, Event$1.CLOSE); }; _proto._removeElement = function _removeElement(element) { var _this = this; - $(element).removeClass(ClassName.SHOW); + element.classList.remove(ClassName.SHOW); - if (!$(element).hasClass(ClassName.FADE)) { + if (!element.classList.contains(ClassName.FADE)) { this._destroyElement(element); return; } - var transitionDuration = Util.getTransitionDurationFromElement(element); - $(element).one(Util.TRANSITION_END, function (event) { + var transitionDuration = getTransitionDurationFromElement(element); + EventHandler.one(element, TRANSITION_END, function (event) { return _this._destroyElement(element, event); - }).emulateTransitionEnd(transitionDuration); + }); + emulateTransitionEnd(element, transitionDuration); }; _proto._destroyElement = function _destroyElement(element) { - $(element).detach().trigger(Event.CLOSED).remove(); + if (element.parentNode) { + element.parentNode.removeChild(element); + } + + EventHandler.trigger(element, Event$1.CLOSED); } // Static ; Alert._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { - var $element = $(this); - var data = $element.data(DATA_KEY); + var data = Data.getData(this, DATA_KEY); if (!data) { data = new Alert(this); - $element.data(DATA_KEY, data); } if (config === 'close') { @@ -357,6 +907,10 @@ }; }; + Alert._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY); + }; + _createClass(Alert, null, [{ key: "VERSION", get: function get() { @@ -373,20 +927,24 @@ */ - $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + EventHandler.on(document, Event$1.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ + * add .alert to jQuery only if jQuery is present */ - $.fn[NAME] = Alert._jQueryInterface; - $.fn[NAME].Constructor = Alert; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT = jQuery.fn[NAME]; + jQuery.fn[NAME] = Alert._jQueryInterface; + jQuery.fn[NAME].Constructor = Alert; - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Alert._jQueryInterface; - }; + jQuery.fn[NAME].noConflict = function () { + jQuery.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; + } /** * ------------------------------------------------------------------------ @@ -399,7 +957,6 @@ var DATA_KEY$1 = 'bs.button'; var EVENT_KEY$1 = "." + DATA_KEY$1; var DATA_API_KEY$1 = '.data-api'; - var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1]; var ClassName$1 = { ACTIVE: 'active', BUTTON: 'btn', @@ -412,9 +969,10 @@ ACTIVE: '.active', BUTTON: '.btn' }; - var Event$1 = { + var Event$2 = { CLICK_DATA_API: "click" + EVENT_KEY$1 + DATA_API_KEY$1, - FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1 + " " + ("blur" + EVENT_KEY$1 + DATA_API_KEY$1) + FOCUS_DATA_API: "focus" + EVENT_KEY$1 + DATA_API_KEY$1, + BLUR_DATA_API: "blur" + EVENT_KEY$1 + DATA_API_KEY$1 /** * ------------------------------------------------------------------------ * Class Definition @@ -428,6 +986,7 @@ function () { function Button(element) { this._element = element; + Data.setData(element, DATA_KEY$1, this); } // Getters @@ -437,20 +996,20 @@ _proto.toggle = function toggle() { var triggerChangeEvent = true; var addAriaPressed = true; - var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLE)[0]; + var rootElement = SelectorEngine.closest(this._element, Selector$1.DATA_TOGGLE); if (rootElement) { - var input = this._element.querySelector(Selector$1.INPUT); + var input = SelectorEngine.findOne(Selector$1.INPUT, this._element); if (input) { if (input.type === 'radio') { if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) { triggerChangeEvent = false; } else { - var activeElement = rootElement.querySelector(Selector$1.ACTIVE); + var activeElement = SelectorEngine.findOne(Selector$1.ACTIVE, rootElement); if (activeElement) { - $(activeElement).removeClass(ClassName$1.ACTIVE); + activeElement.classList.remove(ClassName$1.ACTIVE); } } } @@ -461,7 +1020,7 @@ } input.checked = !this._element.classList.contains(ClassName$1.ACTIVE); - $(input).trigger('change'); + EventHandler.trigger(input, 'change'); } input.focus(); @@ -474,23 +1033,22 @@ } if (triggerChangeEvent) { - $(this._element).toggleClass(ClassName$1.ACTIVE); + this._element.classList.toggle(ClassName$1.ACTIVE); } }; _proto.dispose = function dispose() { - $.removeData(this._element, DATA_KEY$1); + Data.removeData(this._element, DATA_KEY$1); this._element = null; } // Static ; Button._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { - var data = $(this).data(DATA_KEY$1); + var data = Data.getData(this, DATA_KEY$1); if (!data) { data = new Button(this); - $(this).data(DATA_KEY$1, data); } if (config === 'toggle') { @@ -499,6 +1057,10 @@ }); }; + Button._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$1); + }; + _createClass(Button, null, [{ key: "VERSION", get: function get() { @@ -515,31 +1077,127 @@ */ - $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) { + EventHandler.on(document, Event$2.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) { event.preventDefault(); var button = event.target; - if (!$(button).hasClass(ClassName$1.BUTTON)) { - button = $(button).closest(Selector$1.BUTTON); + if (!button.classList.contains(ClassName$1.BUTTON)) { + button = SelectorEngine.closest(button, Selector$1.BUTTON); } - Button._jQueryInterface.call($(button), 'toggle'); - }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) { - var button = $(event.target).closest(Selector$1.BUTTON)[0]; - $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type)); + var data = Data.getData(button, DATA_KEY$1); + + if (!data) { + data = new Button(button); + Data.setData(button, DATA_KEY$1, data); + } + + data.toggle(); + }); + EventHandler.on(document, Event$2.FOCUS_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) { + var button = SelectorEngine.closest(event.target, Selector$1.BUTTON); + button.classList.add(ClassName$1.FOCUS); + }); + EventHandler.on(document, Event$2.BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) { + var button = SelectorEngine.closest(event.target, Selector$1.BUTTON); + button.classList.remove(ClassName$1.FOCUS); }); /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ + * add .button to jQuery only if jQuery is present */ - $.fn[NAME$1] = Button._jQueryInterface; - $.fn[NAME$1].Constructor = Button; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$1 = jQuery.fn[NAME$1]; + jQuery.fn[NAME$1] = Button._jQueryInterface; + jQuery.fn[NAME$1].Constructor = Button; + + jQuery.fn[NAME$1].noConflict = function () { + jQuery.fn[NAME$1] = JQUERY_NO_CONFLICT$1; + return Button._jQueryInterface; + }; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): dom/manipulator.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + function normalizeData(val) { + if (val === 'true') { + return true; + } + + if (val === 'false') { + return false; + } + + if (val === Number(val).toString()) { + return Number(val); + } + + if (val === '' || val === 'null') { + return null; + } + + return val; + } + + function normalizeDataKey(key) { + return key.replace(/[A-Z]/g, function (chr) { + return chr.toLowerCase(); + }); + } + + var Manipulator = { + setDataAttribute: function setDataAttribute(element, key, value) { + element.setAttribute("data-" + normalizeDataKey(key), value); + }, + removeDataAttribute: function removeDataAttribute(element, key) { + element.removeAttribute("data-" + normalizeDataKey(key)); + }, + getDataAttributes: function getDataAttributes(element) { + if (!element) { + return {}; + } + + var attributes = _objectSpread({}, element.dataset); + + Object.keys(attributes).forEach(function (key) { + attributes[key] = normalizeData(attributes[key]); + }); + return attributes; + }, + getDataAttribute: function getDataAttribute(element, key) { + return normalizeData(element.getAttribute("data-" + normalizeDataKey(key))); + }, + offset: function offset(element) { + var rect = element.getBoundingClientRect(); + return { + top: rect.top + document.body.scrollTop, + left: rect.left + document.body.scrollLeft + }; + }, + position: function position(element) { + return { + top: element.offsetTop, + left: element.offsetLeft + }; + }, + toggleClass: function toggleClass(element, className) { + if (!element) { + return; + } - $.fn[NAME$1].noConflict = function () { - $.fn[NAME$1] = JQUERY_NO_CONFLICT$1; - return Button._jQueryInterface; + if (element.classList.contains(className)) { + element.classList.remove(className); + } else { + element.classList.add(className); + } + } }; /** @@ -553,7 +1211,6 @@ var DATA_KEY$2 = 'bs.carousel'; var EVENT_KEY$2 = "." + DATA_KEY$2; var DATA_API_KEY$2 = '.data-api'; - var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2]; var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key @@ -583,7 +1240,7 @@ LEFT: 'left', RIGHT: 'right' }; - var Event$2 = { + var Event$3 = { SLIDE: "slide" + EVENT_KEY$2, SLID: "slid" + EVENT_KEY$2, KEYDOWN: "keydown" + EVENT_KEY$2, @@ -644,11 +1301,13 @@ this.touchDeltaX = 0; this._config = this._getConfig(config); this._element = element; - this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS); + this._indicatorsElement = SelectorEngine.findOne(Selector$2.INDICATORS, this._element); this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent); this._addEventListeners(); + + Data.setData(element, DATA_KEY$2, this); } // Getters @@ -664,7 +1323,7 @@ _proto.nextWhenVisible = function nextWhenVisible() { // Don't call next when the page isn't visible // or the carousel or its parent isn't visible - if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') { + if (!document.hidden && isVisible(this._element)) { this.next(); } }; @@ -680,8 +1339,8 @@ this._isPaused = true; } - if (this._element.querySelector(Selector$2.NEXT_PREV)) { - Util.triggerTransitionEnd(this._element); + if (SelectorEngine.findOne(Selector$2.NEXT_PREV, this._element)) { + triggerTransitionEnd(this._element); this.cycle(true); } @@ -699,7 +1358,7 @@ 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); } }; @@ -707,7 +1366,7 @@ _proto.to = function to(index) { var _this = this; - this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM); + this._activeElement = SelectorEngine.findOne(Selector$2.ACTIVE_ITEM, this._element); var activeIndex = this._getItemIndex(this._activeElement); @@ -716,7 +1375,7 @@ } if (this._isSliding) { - $(this._element).one(Event$2.SLID, function () { + EventHandler.one(this._element, Event$3.SLID, function () { return _this.to(index); }); return; @@ -734,8 +1393,8 @@ }; _proto.dispose = function dispose() { - $(this._element).off(EVENT_KEY$2); - $.removeData(this._element, DATA_KEY$2); + EventHandler.off(this._element, EVENT_KEY$2); + Data.removeData(this._element, DATA_KEY$2); this._items = null; this._config = null; this._element = null; @@ -749,7 +1408,7 @@ _proto._getConfig = function _getConfig(config) { config = _objectSpread({}, Default, config); - Util.typeCheckConfig(NAME$2, config, DefaultType); + typeCheckConfig(NAME$2, config, DefaultType); return config; }; @@ -776,15 +1435,16 @@ var _this2 = this; if (this._config.keyboard) { - $(this._element).on(Event$2.KEYDOWN, function (event) { + EventHandler.on(this._element, Event$3.KEYDOWN, function (event) { return _this2._keydown(event); }); } if (this._config.pause === 'hover') { - $(this._element).on(Event$2.MOUSEENTER, function (event) { + EventHandler.on(this._element, Event$3.MOUSEENTER, function (event) { return _this2.pause(event); - }).on(Event$2.MOUSELEAVE, function (event) { + }); + EventHandler.on(this._element, Event$3.MOUSELEAVE, function (event) { return _this2.cycle(event); }); } @@ -802,25 +1462,25 @@ } var start = function start(event) { - if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { - _this3.touchStartX = event.originalEvent.clientX; + if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { + _this3.touchStartX = event.clientX; } else if (!_this3._pointerEvent) { - _this3.touchStartX = event.originalEvent.touches[0].clientX; + _this3.touchStartX = event.touches[0].clientX; } }; var move = function move(event) { // ensure swiping with one touch and not pinching - if (event.originalEvent.touches && event.originalEvent.touches.length > 1) { + if (event.touches && event.touches.length > 1) { _this3.touchDeltaX = 0; } else { - _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX; + _this3.touchDeltaX = event.touches[0].clientX - _this3.touchStartX; } }; var end = function end(event) { - if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { - _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX; + if (_this3._pointerEvent && PointerType[event.pointerType.toUpperCase()]) { + _this3.touchDeltaX = event.clientX - _this3.touchStartX; } _this3._handleSwipe(); @@ -845,27 +1505,29 @@ } }; - $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) { - return e.preventDefault(); + makeArray(SelectorEngine.find(Selector$2.ITEM_IMG, this._element)).forEach(function (itemImg) { + EventHandler.on(itemImg, Event$3.DRAG_START, function (e) { + return e.preventDefault(); + }); }); if (this._pointerEvent) { - $(this._element).on(Event$2.POINTERDOWN, function (event) { + EventHandler.on(this._element, Event$3.POINTERDOWN, function (event) { return start(event); }); - $(this._element).on(Event$2.POINTERUP, function (event) { + EventHandler.on(this._element, Event$3.POINTERUP, function (event) { return end(event); }); this._element.classList.add(ClassName$2.POINTER_EVENT); } else { - $(this._element).on(Event$2.TOUCHSTART, function (event) { + EventHandler.on(this._element, Event$3.TOUCHSTART, function (event) { return start(event); }); - $(this._element).on(Event$2.TOUCHMOVE, function (event) { + EventHandler.on(this._element, Event$3.TOUCHMOVE, function (event) { return move(event); }); - $(this._element).on(Event$2.TOUCHEND, function (event) { + EventHandler.on(this._element, Event$3.TOUCHEND, function (event) { return end(event); }); } @@ -892,7 +1554,7 @@ }; _proto._getItemIndex = function _getItemIndex(element) { - this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : []; + this._items = element && element.parentNode ? makeArray(SelectorEngine.find(Selector$2.ITEM, element.parentNode)) : []; return this._items.indexOf(element); }; @@ -917,27 +1579,28 @@ _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { var targetIndex = this._getItemIndex(relatedTarget); - var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM)); + var fromIndex = this._getItemIndex(SelectorEngine.findOne(Selector$2.ACTIVE_ITEM, this._element)); - var slideEvent = $.Event(Event$2.SLIDE, { + return EventHandler.trigger(this._element, Event$3.SLIDE, { relatedTarget: relatedTarget, direction: eventDirectionName, from: fromIndex, to: targetIndex }); - $(this._element).trigger(slideEvent); - return slideEvent; }; _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { if (this._indicatorsElement) { - var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE)); - $(indicators).removeClass(ClassName$2.ACTIVE); + var indicators = SelectorEngine.find(Selector$2.ACTIVE, this._indicatorsElement); + + for (var i = 0; i < indicators.length; i++) { + indicators[i].classList.remove(ClassName$2.ACTIVE); + } var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; if (nextIndicator) { - $(nextIndicator).addClass(ClassName$2.ACTIVE); + nextIndicator.classList.add(ClassName$2.ACTIVE); } } }; @@ -945,7 +1608,7 @@ _proto._slide = function _slide(direction, element) { var _this4 = this; - var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM); + var activeElement = SelectorEngine.findOne(Selector$2.ACTIVE_ITEM, this._element); var activeElementIndex = this._getItemIndex(activeElement); @@ -968,14 +1631,14 @@ eventDirectionName = Direction.RIGHT; } - if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) { + if (nextElement && nextElement.classList.contains(ClassName$2.ACTIVE)) { this._isSliding = false; return; } var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); - if (slideEvent.isDefaultPrevented()) { + if (slideEvent.defaultPrevented) { return; } @@ -992,18 +1655,11 @@ this._setActiveIndicatorElement(nextElement); - var slidEvent = $.Event(Event$2.SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex - }); - - if ($(this._element).hasClass(ClassName$2.SLIDE)) { - $(nextElement).addClass(orderClassName); - Util.reflow(nextElement); - $(activeElement).addClass(directionalClassName); - $(nextElement).addClass(directionalClassName); + if (this._element.classList.contains(ClassName$2.SLIDE)) { + nextElement.classList.add(orderClassName); + reflow(nextElement); + activeElement.classList.add(directionalClassName); + nextElement.classList.add(directionalClassName); var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10); if (nextElementInterval) { @@ -1013,20 +1669,35 @@ this._config.interval = this._config.defaultInterval || this._config.interval; } - var transitionDuration = Util.getTransitionDurationFromElement(activeElement); - $(activeElement).one(Util.TRANSITION_END, function () { - $(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName$2.ACTIVE); - $(activeElement).removeClass(ClassName$2.ACTIVE + " " + orderClassName + " " + directionalClassName); + var transitionDuration = getTransitionDurationFromElement(activeElement); + EventHandler.one(activeElement, TRANSITION_END, function () { + nextElement.classList.remove(directionalClassName); + nextElement.classList.remove(orderClassName); + nextElement.classList.add(ClassName$2.ACTIVE); + activeElement.classList.remove(ClassName$2.ACTIVE); + activeElement.classList.remove(orderClassName); + activeElement.classList.remove(directionalClassName); _this4._isSliding = false; setTimeout(function () { - return $(_this4._element).trigger(slidEvent); + EventHandler.trigger(_this4._element, Event$3.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); }, 0); - }).emulateTransitionEnd(transitionDuration); + }); + emulateTransitionEnd(activeElement, transitionDuration); } else { - $(activeElement).removeClass(ClassName$2.ACTIVE); - $(nextElement).addClass(ClassName$2.ACTIVE); + activeElement.classList.remove(ClassName$2.ACTIVE); + nextElement.classList.add(ClassName$2.ACTIVE); this._isSliding = false; - $(this._element).trigger(slidEvent); + EventHandler.trigger(this._element, Event$3.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); } if (isCycling) { @@ -1035,52 +1706,55 @@ } // Static ; - Carousel._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $(this).data(DATA_KEY$2); + Carousel._carouselInterface = function _carouselInterface(element, config) { + var data = Data.getData(element, DATA_KEY$2); - var _config = _objectSpread({}, Default, $(this).data()); + var _config = _objectSpread({}, Default, Manipulator.getDataAttributes(element)); - if (typeof config === 'object') { - _config = _objectSpread({}, _config, config); - } + if (typeof config === 'object') { + _config = _objectSpread({}, _config, config); + } - var action = typeof config === 'string' ? config : _config.slide; + var action = typeof config === 'string' ? config : _config.slide; - if (!data) { - data = new Carousel(this, _config); - $(this).data(DATA_KEY$2, data); + if (!data) { + data = new Carousel(element, _config); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (typeof data[action] === 'undefined') { + throw new Error("No method named \"" + action + "\""); } - if (typeof config === 'number') { - data.to(config); - } else if (typeof action === 'string') { - if (typeof data[action] === 'undefined') { - throw new TypeError("No method named \"" + action + "\""); - } + data[action](); + } else if (_config.interval && _config.ride) { + data.pause(); + data.cycle(); + } + }; - data[action](); - } else if (_config.interval && _config.ride) { - data.pause(); - data.cycle(); - } + Carousel._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + Carousel._carouselInterface(this, config); }); }; Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { - var selector = Util.getSelectorFromElement(this); + var selector = getSelectorFromElement(this); if (!selector) { return; } - var target = $(selector)[0]; + var target = SelectorEngine.findOne(selector); - if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) { + if (!target || !target.classList.contains(ClassName$2.CAROUSEL)) { return; } - var config = _objectSpread({}, $(target).data(), $(this).data()); + var config = _objectSpread({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); var slideIndex = this.getAttribute('data-slide-to'); @@ -1088,15 +1762,19 @@ config.interval = false; } - Carousel._jQueryInterface.call($(target), config); + Carousel._carouselInterface(target, config); if (slideIndex) { - $(target).data(DATA_KEY$2).to(slideIndex); + Data.getData(target, DATA_KEY$2).to(slideIndex); } event.preventDefault(); }; + Carousel._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$2); + }; + _createClass(Carousel, null, [{ key: "VERSION", get: function get() { @@ -1118,29 +1796,31 @@ */ - $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler); - $(window).on(Event$2.LOAD_DATA_API, function () { - var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE)); + EventHandler.on(document, Event$3.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler); + EventHandler.on(window, Event$3.LOAD_DATA_API, function () { + var carousels = makeArray(SelectorEngine.find(Selector$2.DATA_RIDE)); for (var i = 0, len = carousels.length; i < len; i++) { - var $carousel = $(carousels[i]); - - Carousel._jQueryInterface.call($carousel, $carousel.data()); + Carousel._carouselInterface(carousels[i], Data.getData(carousels[i], DATA_KEY$2)); } }); /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ + * add .carousel to jQuery only if jQuery is present */ - $.fn[NAME$2] = Carousel._jQueryInterface; - $.fn[NAME$2].Constructor = Carousel; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$2 = jQuery.fn[NAME$2]; + jQuery.fn[NAME$2] = Carousel._jQueryInterface; + jQuery.fn[NAME$2].Constructor = Carousel; - $.fn[NAME$2].noConflict = function () { - $.fn[NAME$2] = JQUERY_NO_CONFLICT$2; - return Carousel._jQueryInterface; - }; + jQuery.fn[NAME$2].noConflict = function () { + jQuery.fn[NAME$2] = JQUERY_NO_CONFLICT$2; + return Carousel._jQueryInterface; + }; + } /** * ------------------------------------------------------------------------ @@ -1153,7 +1833,6 @@ var DATA_KEY$3 = 'bs.collapse'; var EVENT_KEY$3 = "." + DATA_KEY$3; var DATA_API_KEY$3 = '.data-api'; - var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3]; var Default$1 = { toggle: true, parent: '' @@ -1162,7 +1841,7 @@ toggle: 'boolean', parent: '(string|element)' }; - var Event$3 = { + var Event$4 = { SHOW: "show" + EVENT_KEY$3, SHOWN: "shown" + EVENT_KEY$3, HIDE: "hide" + EVENT_KEY$3, @@ -1197,17 +1876,17 @@ this._isTransitioning = false; this._element = element; this._config = this._getConfig(config); - this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); - var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE)); + this._triggerArray = makeArray(SelectorEngine.find("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); + var toggleList = makeArray(SelectorEngine.find(Selector$3.DATA_TOGGLE)); for (var i = 0, len = toggleList.length; i < len; i++) { var elem = toggleList[i]; - var selector = Util.getSelectorFromElement(elem); - var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) { + var selector = getSelectorFromElement(elem); + var filterElement = makeArray(SelectorEngine.find(selector)).filter(function (foundElem) { return foundElem === element; }); - if (selector !== null && filterElement.length > 0) { + if (selector !== null && filterElement.length) { this._selector = selector; this._triggerArray.push(elem); @@ -1223,6 +1902,8 @@ if (this._config.toggle) { this.toggle(); } + + Data.setData(element, DATA_KEY$3, this); } // Getters @@ -1230,7 +1911,7 @@ // Public _proto.toggle = function toggle() { - if ($(this._element).hasClass(ClassName$3.SHOW)) { + if (this._element.classList.contains(ClassName$3.SHOW)) { this.hide(); } else { this.show(); @@ -1240,7 +1921,7 @@ _proto.show = function show() { var _this = this; - if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) { + if (this._isTransitioning || this._element.classList.contains(ClassName$3.SHOW)) { return; } @@ -1248,7 +1929,7 @@ var activesData; if (this._parent) { - actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) { + actives = makeArray(SelectorEngine.find(Selector$3.ACTIVES, this._parent)).filter(function (elem) { if (typeof _this._config.parent === 'string') { return elem.getAttribute('data-parent') === _this._config.parent; } @@ -1261,87 +1942,113 @@ } } + var container = SelectorEngine.findOne(this._selector); + if (actives) { - activesData = $(actives).not(this._selector).data(DATA_KEY$3); + var tempActiveData = actives.filter(function (elem) { + return container !== elem; + }); + activesData = tempActiveData[0] ? Data.getData(tempActiveData[0], DATA_KEY$3) : null; if (activesData && activesData._isTransitioning) { return; } } - var startEvent = $.Event(Event$3.SHOW); - $(this._element).trigger(startEvent); + var startEvent = EventHandler.trigger(this._element, Event$4.SHOW); - if (startEvent.isDefaultPrevented()) { + if (startEvent.defaultPrevented) { return; } if (actives) { - Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide'); + actives.forEach(function (elemActive) { + if (container !== elemActive) { + Collapse._collapseInterface(elemActive, 'hide'); + } - if (!activesData) { - $(actives).data(DATA_KEY$3, null); - } + if (!activesData) { + Data.setData(elemActive, DATA_KEY$3, null); + } + }); } var dimension = this._getDimension(); - $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING); + this._element.classList.remove(ClassName$3.COLLAPSE); + + this._element.classList.add(ClassName$3.COLLAPSING); + this._element.style[dimension] = 0; if (this._triggerArray.length) { - $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true); + this._triggerArray.forEach(function (element) { + element.classList.remove(ClassName$3.COLLAPSED); + element.setAttribute('aria-expanded', true); + }); } this.setTransitioning(true); var complete = function complete() { - $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW); + _this._element.classList.remove(ClassName$3.COLLAPSING); + + _this._element.classList.add(ClassName$3.COLLAPSE); + + _this._element.classList.add(ClassName$3.SHOW); + _this._element.style[dimension] = ''; _this.setTransitioning(false); - $(_this._element).trigger(Event$3.SHOWN); + EventHandler.trigger(_this._element, Event$4.SHOWN); }; var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); var scrollSize = "scroll" + capitalizedDimension; - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + var transitionDuration = getTransitionDurationFromElement(this._element); + EventHandler.one(this._element, TRANSITION_END, complete); + emulateTransitionEnd(this._element, transitionDuration); this._element.style[dimension] = this._element[scrollSize] + "px"; }; _proto.hide = function hide() { var _this2 = this; - if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) { + if (this._isTransitioning || !this._element.classList.contains(ClassName$3.SHOW)) { return; } - var startEvent = $.Event(Event$3.HIDE); - $(this._element).trigger(startEvent); + var startEvent = EventHandler.trigger(this._element, Event$4.HIDE); - if (startEvent.isDefaultPrevented()) { + if (startEvent.defaultPrevented) { return; } var dimension = this._getDimension(); this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; - Util.reflow(this._element); - $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW); + reflow(this._element); + + this._element.classList.add(ClassName$3.COLLAPSING); + + this._element.classList.remove(ClassName$3.COLLAPSE); + + this._element.classList.remove(ClassName$3.SHOW); + var triggerArrayLength = this._triggerArray.length; if (triggerArrayLength > 0) { for (var i = 0; i < triggerArrayLength; i++) { var trigger = this._triggerArray[i]; - var selector = Util.getSelectorFromElement(trigger); + var selector = getSelectorFromElement(trigger); if (selector !== null) { - var $elem = $([].slice.call(document.querySelectorAll(selector))); + var elem = SelectorEngine.findOne(selector); - if (!$elem.hasClass(ClassName$3.SHOW)) { - $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false); + if (!elem.classList.contains(ClassName$3.SHOW)) { + trigger.classList.add(ClassName$3.COLLAPSED); + trigger.setAttribute('aria-expanded', false); } } } @@ -1352,12 +2059,17 @@ var complete = function complete() { _this2.setTransitioning(false); - $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN); + _this2._element.classList.remove(ClassName$3.COLLAPSING); + + _this2._element.classList.add(ClassName$3.COLLAPSE); + + EventHandler.trigger(_this2._element, Event$4.HIDDEN); }; this._element.style[dimension] = ''; - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + var transitionDuration = getTransitionDurationFromElement(this._element); + EventHandler.one(this._element, TRANSITION_END, complete); + emulateTransitionEnd(this._element, transitionDuration); }; _proto.setTransitioning = function setTransitioning(isTransitioning) { @@ -1365,7 +2077,7 @@ }; _proto.dispose = function dispose() { - $.removeData(this._element, DATA_KEY$3); + Data.removeData(this._element, DATA_KEY$3); this._config = null; this._parent = null; this._element = null; @@ -1378,12 +2090,13 @@ config = _objectSpread({}, Default$1, config); config.toggle = Boolean(config.toggle); // Coerce string values - Util.typeCheckConfig(NAME$3, config, DefaultType$1); + typeCheckConfig(NAME$3, config, DefaultType$1); return config; }; _proto._getDimension = function _getDimension() { - var hasWidth = $(this._element).hasClass(Dimension.WIDTH); + var hasWidth = this._element.classList.contains(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; }; @@ -1392,64 +2105,79 @@ var parent; - if (Util.isElement(this._config.parent)) { - parent = this._config.parent; // It's a jQuery object + if (isElement(this._config.parent)) { + parent = this._config.parent; // it's a jQuery object - if (typeof this._config.parent.jquery !== 'undefined') { + if (typeof this._config.parent.jquery !== 'undefined' || typeof this._config.parent[0] !== 'undefined') { parent = this._config.parent[0]; } } else { - parent = document.querySelector(this._config.parent); + parent = SelectorEngine.findOne(this._config.parent); } var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; - var children = [].slice.call(parent.querySelectorAll(selector)); - $(children).each(function (i, element) { + makeArray(SelectorEngine.find(selector, parent)).forEach(function (element) { _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); }); return parent; }; _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { - var isOpen = $(element).hasClass(ClassName$3.SHOW); + if (element) { + var isOpen = element.classList.contains(ClassName$3.SHOW); + + if (triggerArray.length) { + triggerArray.forEach(function (elem) { + if (!isOpen) { + elem.classList.add(ClassName$3.COLLAPSED); + } else { + elem.classList.remove(ClassName$3.COLLAPSED); + } - if (triggerArray.length) { - $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + elem.setAttribute('aria-expanded', isOpen); + }); + } } } // Static ; Collapse._getTargetFromElement = function _getTargetFromElement(element) { - var selector = Util.getSelectorFromElement(element); - return selector ? document.querySelector(selector) : null; + var selector = getSelectorFromElement(element); + return selector ? SelectorEngine.findOne(selector) : null; }; - Collapse._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DATA_KEY$3); + Collapse._collapseInterface = function _collapseInterface(element, config) { + var data = Data.getData(element, DATA_KEY$3); - var _config = _objectSpread({}, Default$1, $this.data(), typeof config === 'object' && config ? config : {}); + var _config = _objectSpread({}, Default$1, Manipulator.getDataAttributes(element), typeof config === 'object' && config ? config : {}); - if (!data && _config.toggle && /show|hide/.test(config)) { - _config.toggle = false; - } + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } - if (!data) { - data = new Collapse(this, _config); - $this.data(DATA_KEY$3, data); + if (!data) { + data = new Collapse(element, _config); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new Error("No method named \"" + config + "\""); } - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } + data[config](); + } + }; - data[config](); - } + Collapse._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + Collapse._collapseInterface(this, config); }); }; + Collapse._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$3); + }; + _createClass(Collapse, null, [{ key: "VERSION", get: function get() { @@ -1471,36 +2199,51 @@ */ - $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) { + EventHandler.on(document, Event$4.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) { // preventDefault only for <a> elements (which change the URL) not inside the collapsible element - if (event.currentTarget.tagName === 'A') { + if (event.target.tagName === 'A') { event.preventDefault(); } - var $trigger = $(this); - var selector = Util.getSelectorFromElement(this); - var selectors = [].slice.call(document.querySelectorAll(selector)); - $(selectors).each(function () { - var $target = $(this); - var data = $target.data(DATA_KEY$3); - var config = data ? 'toggle' : $trigger.data(); + var triggerData = Manipulator.getDataAttributes(this); + var selector = getSelectorFromElement(this); + var selectorElements = makeArray(SelectorEngine.find(selector)); + selectorElements.forEach(function (element) { + var data = Data.getData(element, DATA_KEY$3); + var config; + + if (data) { + // update parent attribute + if (data._parent === null && typeof triggerData.parent === 'string') { + data._config.parent = triggerData.parent; + data._parent = data._getParent(); + } + + config = 'toggle'; + } else { + config = triggerData; + } - Collapse._jQueryInterface.call($target, config); + Collapse._collapseInterface(element, config); }); }); /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ + * add .collapse to jQuery only if jQuery is present */ - $.fn[NAME$3] = Collapse._jQueryInterface; - $.fn[NAME$3].Constructor = Collapse; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$3 = jQuery.fn[NAME$3]; + jQuery.fn[NAME$3] = Collapse._jQueryInterface; + jQuery.fn[NAME$3].Constructor = Collapse; - $.fn[NAME$3].noConflict = function () { - $.fn[NAME$3] = JQUERY_NO_CONFLICT$3; - return Collapse._jQueryInterface; - }; + jQuery.fn[NAME$3].noConflict = function () { + jQuery.fn[NAME$3] = JQUERY_NO_CONFLICT$3; + return Collapse._jQueryInterface; + }; + } /** * ------------------------------------------------------------------------ @@ -1513,7 +2256,6 @@ var DATA_KEY$4 = 'bs.dropdown'; var EVENT_KEY$4 = "." + DATA_KEY$4; var DATA_API_KEY$4 = '.data-api'; - var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4]; var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key @@ -1527,7 +2269,7 @@ var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); - var Event$4 = { + var Event$5 = { HIDE: "hide" + EVENT_KEY$4, HIDDEN: "hidden" + EVENT_KEY$4, SHOW: "show" + EVENT_KEY$4, @@ -1596,6 +2338,8 @@ this._inNavbar = this._detectNavbar(); this._addEventListeners(); + + Data.setData(element, DATA_KEY$4, this); } // Getters @@ -1603,13 +2347,13 @@ // Public _proto.toggle = function toggle() { - if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) { + if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED)) { return; } var parent = Dropdown._getParentFromElement(this._element); - var isActive = $(this._menu).hasClass(ClassName$4.SHOW); + var isActive = this._menu.classList.contains(ClassName$4.SHOW); Dropdown._clearMenus(); @@ -1620,10 +2364,9 @@ var relatedTarget = { relatedTarget: this._element }; - var showEvent = $.Event(Event$4.SHOW, relatedTarget); - $(parent).trigger(showEvent); + var showEvent = EventHandler.trigger(parent, Event$5.SHOW, relatedTarget); - if (showEvent.isDefaultPrevented()) { + if (showEvent.defaultPrevented) { return; } // Disable totally Popper.js for Dropdown in Navbar @@ -1634,14 +2377,14 @@ * Popper - https://popper.js.org */ if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)'); + throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org)'); } var referenceElement = this._element; if (this._config.reference === 'parent') { referenceElement = parent; - } else if (Util.isElement(this._config.reference)) { + } else if (isElement(this._config.reference)) { referenceElement = this._config.reference; // Check if it's jQuery element if (typeof this._config.reference.jquery !== 'undefined') { @@ -1653,7 +2396,7 @@ if (this._config.boundary !== 'scrollParent') { - $(parent).addClass(ClassName$4.POSITION_STATIC); + parent.classList.add(ClassName$4.POSITION_STATIC); } this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig()); @@ -1663,65 +2406,66 @@ // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) { - $(document.body).children().on('mouseover', null, $.noop); + if ('ontouchstart' in document.documentElement && !makeArray(SelectorEngine.closest(parent, Selector$4.NAVBAR_NAV)).length) { + makeArray(document.body.children).forEach(function (elem) { + return EventHandler.on(elem, 'mouseover', null, noop()); + }); } this._element.focus(); this._element.setAttribute('aria-expanded', true); - $(this._menu).toggleClass(ClassName$4.SHOW); - $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget)); + Manipulator.toggleClass(this._menu, ClassName$4.SHOW); + Manipulator.toggleClass(parent, ClassName$4.SHOW); + EventHandler.trigger(parent, Event$5.SHOWN, relatedTarget); }; _proto.show = function show() { - if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) { + if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED) || this._menu.classList.contains(ClassName$4.SHOW)) { return; } + var parent = Dropdown._getParentFromElement(this._element); + var relatedTarget = { relatedTarget: this._element }; - var showEvent = $.Event(Event$4.SHOW, relatedTarget); - - var parent = Dropdown._getParentFromElement(this._element); - - $(parent).trigger(showEvent); + var showEvent = EventHandler.trigger(parent, Event$5.SHOW, relatedTarget); - if (showEvent.isDefaultPrevented()) { + if (showEvent.defaultPrevented) { return; } - $(this._menu).toggleClass(ClassName$4.SHOW); - $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget)); + Manipulator.toggleClass(this._menu, ClassName$4.SHOW); + Manipulator.toggleClass(parent, ClassName$4.SHOW); + EventHandler.trigger(parent, Event$5.SHOWN, relatedTarget); }; _proto.hide = function hide() { - if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) { + if (this._element.disabled || this._element.classList.contains(ClassName$4.DISABLED) || !this._menu.classList.contains(ClassName$4.SHOW)) { return; } + var parent = Dropdown._getParentFromElement(this._element); + var relatedTarget = { relatedTarget: this._element }; - var hideEvent = $.Event(Event$4.HIDE, relatedTarget); - - var parent = Dropdown._getParentFromElement(this._element); - - $(parent).trigger(hideEvent); + var hideEvent = EventHandler.trigger(parent, Event$5.HIDE, relatedTarget); - if (hideEvent.isDefaultPrevented()) { + if (hideEvent.defaultPrevented) { return; } - $(this._menu).toggleClass(ClassName$4.SHOW); - $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget)); + Manipulator.toggleClass(this._menu, ClassName$4.SHOW); + Manipulator.toggleClass(parent, ClassName$4.SHOW); + EventHandler.trigger(parent, Event$5.HIDDEN, relatedTarget); }; _proto.dispose = function dispose() { - $.removeData(this._element, DATA_KEY$4); - $(this._element).off(EVENT_KEY$4); + Data.removeData(this._element, DATA_KEY$4); + EventHandler.off(this._element, EVENT_KEY$4); this._element = null; this._menu = null; @@ -1744,7 +2488,7 @@ _proto._addEventListeners = function _addEventListeners() { var _this = this; - $(this._element).on(Event$4.CLICK, function (event) { + EventHandler.on(this._element, Event$5.CLICK, function (event) { event.preventDefault(); event.stopPropagation(); @@ -1753,8 +2497,8 @@ }; _proto._getConfig = function _getConfig(config) { - config = _objectSpread({}, this.constructor.Default, $(this._element).data(), config); - Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType); + config = _objectSpread({}, this.constructor.Default, Manipulator.getDataAttributes(this._element), config); + typeCheckConfig(NAME$4, config, this.constructor.DefaultType); return config; }; @@ -1763,7 +2507,7 @@ var parent = Dropdown._getParentFromElement(this._element); if (parent) { - this._menu = parent.querySelector(Selector$4.MENU); + this._menu = SelectorEngine.findOne(Selector$4.MENU, parent); } } @@ -1771,20 +2515,20 @@ }; _proto._getPlacement = function _getPlacement() { - var $parentDropdown = $(this._element.parentNode); + var parentDropdown = this._element.parentNode; var placement = AttachmentMap.BOTTOM; // Handle dropup - if ($parentDropdown.hasClass(ClassName$4.DROPUP)) { + if (parentDropdown.classList.contains(ClassName$4.DROPUP)) { placement = AttachmentMap.TOP; - if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) { + if (this._menu.classList.contains(ClassName$4.MENURIGHT)) { placement = AttachmentMap.TOPEND; } - } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) { + } else if (parentDropdown.classList.contains(ClassName$4.DROPRIGHT)) { placement = AttachmentMap.RIGHT; - } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) { + } else if (parentDropdown.classList.contains(ClassName$4.DROPLEFT)) { placement = AttachmentMap.LEFT; - } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) { + } else if (this._menu.classList.contains(ClassName$4.MENURIGHT)) { placement = AttachmentMap.BOTTOMEND; } @@ -1792,7 +2536,7 @@ }; _proto._detectNavbar = function _detectNavbar() { - return $(this._element).closest('.navbar').length > 0; + return Boolean(SelectorEngine.closest(this._element, '.navbar')); }; _proto._getOffset = function _getOffset() { @@ -1837,24 +2581,27 @@ } // Static ; - Dropdown._jQueryInterface = function _jQueryInterface(config) { - return this.each(function () { - var data = $(this).data(DATA_KEY$4); + Dropdown._dropdownInterface = function _dropdownInterface(element, config) { + var data = Data.getData(element, DATA_KEY$4); - var _config = typeof config === 'object' ? config : null; + var _config = typeof config === 'object' ? config : null; - if (!data) { - data = new Dropdown(this, _config); - $(this).data(DATA_KEY$4, data); + if (!data) { + data = new Dropdown(element, _config); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new Error("No method named \"" + config + "\""); } - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"" + config + "\""); - } + data[config](); + } + }; - data[config](); - } + Dropdown._jQueryInterface = function _jQueryInterface(config) { + return this.each(function () { + Dropdown._dropdownInterface(this, config); }); }; @@ -1863,12 +2610,12 @@ return; } - var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE)); + var toggles = makeArray(SelectorEngine.find(Selector$4.DATA_TOGGLE)); for (var i = 0, len = toggles.length; i < len; i++) { var parent = Dropdown._getParentFromElement(toggles[i]); - var context = $(toggles[i]).data(DATA_KEY$4); + var context = Data.getData(toggles[i], DATA_KEY$4); var relatedTarget = { relatedTarget: toggles[i] }; @@ -1883,44 +2630,45 @@ var dropdownMenu = context._menu; - if (!$(parent).hasClass(ClassName$4.SHOW)) { + if (!parent.classList.contains(ClassName$4.SHOW)) { continue; } - if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) { + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && parent.contains(event.target)) { continue; } - var hideEvent = $.Event(Event$4.HIDE, relatedTarget); - $(parent).trigger(hideEvent); + var hideEvent = EventHandler.trigger(parent, Event$5.HIDE, relatedTarget); - if (hideEvent.isDefaultPrevented()) { + if (hideEvent.defaultPrevented) { continue; } // If this is a touch-enabled device we remove the extra // empty mouseover listeners we added for iOS support if ('ontouchstart' in document.documentElement) { - $(document.body).children().off('mouseover', null, $.noop); + makeArray(document.body.children).forEach(function (elem) { + return EventHandler.off(elem, 'mouseover', null, noop()); + }); } toggles[i].setAttribute('aria-expanded', 'false'); - $(dropdownMenu).removeClass(ClassName$4.SHOW); - $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget)); + dropdownMenu.classList.remove(ClassName$4.SHOW); + parent.classList.remove(ClassName$4.SHOW); + EventHandler.trigger(parent, Event$5.HIDDEN, relatedTarget); } }; Dropdown._getParentFromElement = function _getParentFromElement(element) { var parent; - var selector = Util.getSelectorFromElement(element); + var selector = getSelectorFromElement(element); if (selector) { - parent = document.querySelector(selector); + parent = SelectorEngine.findOne(selector); } return parent || element.parentNode; - } // eslint-disable-next-line complexity - ; + }; Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { // If not input/textarea: @@ -1930,34 +2678,34 @@ // - 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$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { + 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 || SelectorEngine.closest(event.target, Selector$4.MENU)) : !REGEXP_KEYDOWN.test(event.which)) { return; } event.preventDefault(); event.stopPropagation(); - if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) { + if (this.disabled || this.classList.contains(ClassName$4.DISABLED)) { return; } var parent = Dropdown._getParentFromElement(this); - var isActive = $(parent).hasClass(ClassName$4.SHOW); + var isActive = parent.classList.contains(ClassName$4.SHOW); if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { if (event.which === ESCAPE_KEYCODE) { - var toggle = parent.querySelector(Selector$4.DATA_TOGGLE); - $(toggle).trigger('focus'); + EventHandler.trigger(SelectorEngine.findOne(Selector$4.DATA_TOGGLE, parent), 'focus'); } - $(this).trigger('click'); + Dropdown._clearMenus(); + return; } - var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS)); + var items = makeArray(SelectorEngine.find(Selector$4.VISIBLE_ITEMS, parent)); - if (items.length === 0) { + if (!items.length) { return; } @@ -1980,6 +2728,10 @@ items[index].focus(); }; + Dropdown._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$4); + }; + _createClass(Dropdown, null, [{ key: "VERSION", get: function get() { @@ -2006,27 +2758,36 @@ */ - $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + " " + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) { + EventHandler.on(document, Event$5.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler); + EventHandler.on(document, Event$5.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler); + EventHandler.on(document, Event$5.CLICK_DATA_API, Dropdown._clearMenus); + EventHandler.on(document, Event$5.KEYUP_DATA_API, Dropdown._clearMenus); + EventHandler.on(document, Event$5.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) { event.preventDefault(); event.stopPropagation(); - Dropdown._jQueryInterface.call($(this), 'toggle'); - }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) { - e.stopPropagation(); + Dropdown._dropdownInterface(this, 'toggle'); + }); + EventHandler.on(document, Event$5.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) { + return e.stopPropagation(); }); /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ + * add .dropdown to jQuery only if jQuery is present */ - $.fn[NAME$4] = Dropdown._jQueryInterface; - $.fn[NAME$4].Constructor = Dropdown; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$4 = jQuery.fn[NAME$4]; + jQuery.fn[NAME$4] = Dropdown._jQueryInterface; + jQuery.fn[NAME$4].Constructor = Dropdown; - $.fn[NAME$4].noConflict = function () { - $.fn[NAME$4] = JQUERY_NO_CONFLICT$4; - return Dropdown._jQueryInterface; - }; + jQuery.fn[NAME$4].noConflict = function () { + jQuery.fn[NAME$4] = JQUERY_NO_CONFLICT$4; + return Dropdown._jQueryInterface; + }; + } /** * ------------------------------------------------------------------------ @@ -2039,7 +2800,6 @@ var DATA_KEY$5 = 'bs.modal'; var EVENT_KEY$5 = "." + DATA_KEY$5; var DATA_API_KEY$5 = '.data-api'; - var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5]; var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key var Default$3 = { @@ -2054,7 +2814,7 @@ focus: 'boolean', show: 'boolean' }; - var Event$5 = { + var Event$6 = { HIDE: "hide" + EVENT_KEY$5, HIDDEN: "hidden" + EVENT_KEY$5, SHOW: "show" + EVENT_KEY$5, @@ -2096,13 +2856,14 @@ function Modal(element, config) { this._config = this._getConfig(config); this._element = element; - this._dialog = element.querySelector(Selector$5.DIALOG); + this._dialog = SelectorEngine.findOne(Selector$5.DIALOG, element); this._backdrop = null; this._isShown = false; this._isBodyOverflowing = false; this._ignoreBackdropClick = false; this._isTransitioning = false; this._scrollbarWidth = 0; + Data.setData(element, DATA_KEY$5, this); } // Getters @@ -2120,16 +2881,15 @@ return; } - if ($(this._element).hasClass(ClassName$5.FADE)) { + if (this._element.classList.contains(ClassName$5.FADE)) { this._isTransitioning = true; } - var showEvent = $.Event(Event$5.SHOW, { + var showEvent = EventHandler.trigger(this._element, Event$6.SHOW, { relatedTarget: relatedTarget }); - $(this._element).trigger(showEvent); - if (this._isShown || showEvent.isDefaultPrevented()) { + if (this._isShown || showEvent.defaultPrevented) { return; } @@ -2145,12 +2905,12 @@ this._setResizeEvent(); - $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) { + EventHandler.on(this._element, Event$6.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) { return _this.hide(event); }); - $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () { - $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) { - if ($(event.target).is(_this._element)) { + EventHandler.on(this._dialog, Event$6.MOUSEDOWN_DISMISS, function () { + EventHandler.one(_this._element, Event$6.MOUSEUP_DISMISS, function (event) { + if (event.target === _this._element) { _this._ignoreBackdropClick = true; } }); @@ -2172,15 +2932,15 @@ return; } - var hideEvent = $.Event(Event$5.HIDE); - $(this._element).trigger(hideEvent); + var hideEvent = EventHandler.trigger(this._element, Event$6.HIDE); - if (!this._isShown || hideEvent.isDefaultPrevented()) { + if (!this._isShown || hideEvent.defaultPrevented) { return; } this._isShown = false; - var transition = $(this._element).hasClass(ClassName$5.FADE); + + var transition = this._element.classList.contains(ClassName$5.FADE); if (transition) { this._isTransitioning = true; @@ -2190,16 +2950,19 @@ this._setResizeEvent(); - $(document).off(Event$5.FOCUSIN); - $(this._element).removeClass(ClassName$5.SHOW); - $(this._element).off(Event$5.CLICK_DISMISS); - $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS); + EventHandler.off(document, Event$6.FOCUSIN); + + this._element.classList.remove(ClassName$5.SHOW); + + EventHandler.off(this._element, Event$6.CLICK_DISMISS); + EventHandler.off(this._dialog, Event$6.MOUSEDOWN_DISMISS); if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $(this._element).one(Util.TRANSITION_END, function (event) { + var transitionDuration = getTransitionDurationFromElement(this._element); + EventHandler.one(this._element, TRANSITION_END, function (event) { return _this2._hideModal(event); - }).emulateTransitionEnd(transitionDuration); + }); + emulateTransitionEnd(this._element, transitionDuration); } else { this._hideModal(); } @@ -2207,7 +2970,7 @@ _proto.dispose = function dispose() { [window, this._element, this._dialog].forEach(function (htmlElement) { - return $(htmlElement).off(EVENT_KEY$5); + return EventHandler.off(htmlElement, EVENT_KEY$5); }); /** * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API` @@ -2215,8 +2978,8 @@ * It will remove `Event.CLICK_DATA_API` event that should remain */ - $(document).off(Event$5.FOCUSIN); - $.removeData(this._element, DATA_KEY$5); + EventHandler.off(document, Event$6.FOCUSIN); + Data.removeData(this._element, DATA_KEY$5); this._config = null; this._element = null; this._dialog = null; @@ -2235,14 +2998,14 @@ _proto._getConfig = function _getConfig(config) { config = _objectSpread({}, Default$3, config); - Util.typeCheckConfig(NAME$5, config, DefaultType$3); + typeCheckConfig(NAME$5, config, DefaultType$3); return config; }; _proto._showElement = function _showElement(relatedTarget) { var _this3 = this; - var transition = $(this._element).hasClass(ClassName$5.FADE); + var transition = this._element.classList.contains(ClassName$5.FADE); if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { // Don't move modal's DOM position @@ -2255,38 +3018,37 @@ this._element.setAttribute('aria-modal', true); - if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE)) { - this._dialog.querySelector(Selector$5.MODAL_BODY).scrollTop = 0; + if (this._dialog.classList.contains(ClassName$5.SCROLLABLE)) { + SelectorEngine.findOne(Selector$5.MODAL_BODY, this._dialog).scrollTop = 0; } else { this._element.scrollTop = 0; } if (transition) { - Util.reflow(this._element); + reflow(this._element); } - $(this._element).addClass(ClassName$5.SHOW); + this._element.classList.add(ClassName$5.SHOW); if (this._config.focus) { this._enforceFocus(); } - var shownEvent = $.Event(Event$5.SHOWN, { - relatedTarget: relatedTarget - }); - var transitionComplete = function transitionComplete() { if (_this3._config.focus) { _this3._element.focus(); } _this3._isTransitioning = false; - $(_this3._element).trigger(shownEvent); + EventHandler.trigger(_this3._element, Event$6.SHOWN, { + relatedTarget: relatedTarget + }); }; if (transition) { - var transitionDuration = Util.getTransitionDurationFromElement(this._dialog); - $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); + var transitionDuration = getTransitionDurationFromElement(this._dialog); + EventHandler.one(this._dialog, TRANSITION_END, transitionComplete); + emulateTransitionEnd(this._dialog, transitionDuration); } else { transitionComplete(); } @@ -2295,9 +3057,10 @@ _proto._enforceFocus = function _enforceFocus() { var _this4 = this; - $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop - .on(Event$5.FOCUSIN, function (event) { - if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) { + EventHandler.off(document, Event$6.FOCUSIN); // guard against infinite focus loop + + EventHandler.on(document, Event$6.FOCUSIN, function (event) { + if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) { _this4._element.focus(); } }); @@ -2307,7 +3070,7 @@ var _this5 = this; if (this._isShown && this._config.keyboard) { - $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) { + EventHandler.on(this._element, Event$6.KEYDOWN_DISMISS, function (event) { if (event.which === ESCAPE_KEYCODE$1) { event.preventDefault(); @@ -2315,7 +3078,7 @@ } }); } else if (!this._isShown) { - $(this._element).off(Event$5.KEYDOWN_DISMISS); + EventHandler.off(this._element, Event$6.KEYDOWN_DISMISS); } }; @@ -2323,11 +3086,11 @@ var _this6 = this; if (this._isShown) { - $(window).on(Event$5.RESIZE, function (event) { + EventHandler.on(window, Event$6.RESIZE, function (event) { return _this6.handleUpdate(event); }); } else { - $(window).off(Event$5.RESIZE); + EventHandler.off(window, Event$6.RESIZE); } }; @@ -2343,19 +3106,20 @@ this._isTransitioning = false; this._showBackdrop(function () { - $(document.body).removeClass(ClassName$5.OPEN); + document.body.classList.remove(ClassName$5.OPEN); _this7._resetAdjustments(); _this7._resetScrollbar(); - $(_this7._element).trigger(Event$5.HIDDEN); + EventHandler.trigger(_this7._element, Event$6.HIDDEN); }); }; _proto._removeBackdrop = function _removeBackdrop() { if (this._backdrop) { - $(this._backdrop).remove(); + this._backdrop.parentNode.removeChild(this._backdrop); + this._backdrop = null; } }; @@ -2363,7 +3127,7 @@ _proto._showBackdrop = function _showBackdrop(callback) { var _this8 = this; - var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : ''; + var animate = this._element.classList.contains(ClassName$5.FADE) ? ClassName$5.FADE : ''; if (this._isShown && this._config.backdrop) { this._backdrop = document.createElement('div'); @@ -2373,8 +3137,8 @@ this._backdrop.classList.add(animate); } - $(this._backdrop).appendTo(document.body); - $(this._element).on(Event$5.CLICK_DISMISS, function (event) { + document.body.appendChild(this._backdrop); + EventHandler.on(this._element, Event$6.CLICK_DISMISS, function (event) { if (_this8._ignoreBackdropClick) { _this8._ignoreBackdropClick = false; return; @@ -2392,10 +3156,10 @@ }); if (animate) { - Util.reflow(this._backdrop); + reflow(this._backdrop); } - $(this._backdrop).addClass(ClassName$5.SHOW); + this._backdrop.classList.add(ClassName$5.SHOW); if (!callback) { return; @@ -2406,10 +3170,11 @@ return; } - var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); - $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); + var backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); + EventHandler.one(this._backdrop, TRANSITION_END, callback); + emulateTransitionEnd(this._backdrop, backdropTransitionDuration); } else if (!this._isShown && this._backdrop) { - $(this._backdrop).removeClass(ClassName$5.SHOW); + this._backdrop.classList.remove(ClassName$5.SHOW); var callbackRemove = function callbackRemove() { _this8._removeBackdrop(); @@ -2419,10 +3184,11 @@ } }; - if ($(this._element).hasClass(ClassName$5.FADE)) { - var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop); + if (this._element.classList.contains(ClassName$5.FADE)) { + var _backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop); - $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); + EventHandler.one(this._backdrop, TRANSITION_END, callbackRemove); + emulateTransitionEnd(this._backdrop, _backdropTransitionDuration); } else { callbackRemove(); } @@ -2464,50 +3230,58 @@ if (this._isBodyOverflowing) { // Note: DOMNode.style.paddingRight returns the actual value or '' if not set // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set - var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT)); - var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding - - $(fixedContent).each(function (index, element) { + // Adjust fixed content padding + makeArray(SelectorEngine.find(Selector$5.FIXED_CONTENT)).forEach(function (element) { var actualPadding = element.style.paddingRight; - var calculatedPadding = $(element).css('padding-right'); - $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); + var calculatedPadding = window.getComputedStyle(element)['padding-right']; + Manipulator.setDataAttribute(element, 'padding-right', actualPadding); + element.style.paddingRight = parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"; }); // Adjust sticky content margin - $(stickyContent).each(function (index, element) { + makeArray(SelectorEngine.find(Selector$5.STICKY_CONTENT)).forEach(function (element) { var actualMargin = element.style.marginRight; - var calculatedMargin = $(element).css('margin-right'); - $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); + var calculatedMargin = window.getComputedStyle(element)['margin-right']; + Manipulator.setDataAttribute(element, 'margin-right', actualMargin); + element.style.marginRight = parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"; }); // Adjust body padding var actualPadding = document.body.style.paddingRight; - var calculatedPadding = $(document.body).css('padding-right'); - $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); + var calculatedPadding = window.getComputedStyle(document.body)['padding-right']; + Manipulator.setDataAttribute(document.body, 'padding-right', actualPadding); + document.body.style.paddingRight = parseFloat(calculatedPadding) + this._scrollbarWidth + "px"; } - $(document.body).addClass(ClassName$5.OPEN); + document.body.classList.add(ClassName$5.OPEN); }; _proto._resetScrollbar = function _resetScrollbar() { // Restore fixed content padding - var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT)); - $(fixedContent).each(function (index, element) { - var padding = $(element).data('padding-right'); - $(element).removeData('padding-right'); - element.style.paddingRight = padding ? padding : ''; - }); // Restore sticky content + makeArray(SelectorEngine.find(Selector$5.FIXED_CONTENT)).forEach(function (element) { + var padding = Manipulator.getDataAttribute(element, 'padding-right'); - var elements = [].slice.call(document.querySelectorAll("" + Selector$5.STICKY_CONTENT)); - $(elements).each(function (index, element) { - var margin = $(element).data('margin-right'); + if (typeof padding !== 'undefined') { + Manipulator.removeDataAttribute(element, 'padding-right'); + element.style.paddingRight = padding; + } + }); // Restore sticky content and navbar-toggler margin + + makeArray(SelectorEngine.find("" + Selector$5.STICKY_CONTENT)).forEach(function (element) { + var margin = Manipulator.getDataAttribute(element, 'margin-right'); if (typeof margin !== 'undefined') { - $(element).css('margin-right', margin).removeData('margin-right'); + Manipulator.removeDataAttribute(element, 'margin-right'); + element.style.marginRight = margin; } }); // Restore body padding - var padding = $(document.body).data('padding-right'); - $(document.body).removeData('padding-right'); - document.body.style.paddingRight = padding ? padding : ''; + var padding = Manipulator.getDataAttribute(document.body, 'padding-right'); + + if (typeof padding !== 'undefined') { + Manipulator.removeDataAttribute(document.body, 'padding-right'); + document.body.style.paddingRight = padding; + } else { + document.body.style.paddingRight = ''; + } }; _proto._getScrollbarWidth = function _getScrollbarWidth() { @@ -2523,13 +3297,12 @@ Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { return this.each(function () { - var data = $(this).data(DATA_KEY$5); + var data = Data.getData(this, DATA_KEY$5); - var _config = _objectSpread({}, Default$3, $(this).data(), typeof config === 'object' && config ? config : {}); + var _config = _objectSpread({}, Default$3, Manipulator.getDataAttributes(this), typeof config === 'object' && config ? config : {}); if (!data) { data = new Modal(this, _config); - $(this).data(DATA_KEY$5, data); } if (typeof config === 'string') { @@ -2544,6 +3317,10 @@ }); }; + Modal._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$5); + }; + _createClass(Modal, null, [{ key: "VERSION", get: function get() { @@ -2565,36 +3342,41 @@ */ - $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) { + EventHandler.on(document, Event$6.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) { var _this10 = this; var target; - var selector = Util.getSelectorFromElement(this); + var selector = getSelectorFromElement(this); if (selector) { - target = document.querySelector(selector); + target = SelectorEngine.findOne(selector); } - var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data()); + var config = Data.getData(target, DATA_KEY$5) ? 'toggle' : _objectSpread({}, Manipulator.getDataAttributes(target), Manipulator.getDataAttributes(this)); if (this.tagName === 'A' || this.tagName === 'AREA') { event.preventDefault(); } - var $target = $(target).one(Event$5.SHOW, function (showEvent) { - if (showEvent.isDefaultPrevented()) { - // Only register focus restorer if modal will actually get shown + EventHandler.one(target, Event$6.SHOW, function (showEvent) { + if (showEvent.defaultPrevented) { + // only register focus restorer if modal will actually get shown return; } - $target.one(Event$5.HIDDEN, function () { - if ($(_this10).is(':visible')) { + EventHandler.one(target, Event$6.HIDDEN, function () { + if (isVisible(_this10)) { _this10.focus(); } }); }); + var data = Data.getData(target, DATA_KEY$5); + + if (!data) { + data = new Modal(target, config); + } - Modal._jQueryInterface.call($(target), config, this); + data.show(this); }); /** * ------------------------------------------------------------------------ @@ -2602,22 +3384,64 @@ * ------------------------------------------------------------------------ */ - $.fn[NAME$5] = Modal._jQueryInterface; - $.fn[NAME$5].Constructor = Modal; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$5 = jQuery.fn[NAME$5]; + jQuery.fn[NAME$5] = Modal._jQueryInterface; + jQuery.fn[NAME$5].Constructor = Modal; - $.fn[NAME$5].noConflict = function () { - $.fn[NAME$5] = JQUERY_NO_CONFLICT$5; - return Modal._jQueryInterface; - }; + jQuery.fn[NAME$5].noConflict = function () { + jQuery.fn[NAME$5] = JQUERY_NO_CONFLICT$5; + return Modal._jQueryInterface; + }; + } /** * -------------------------------------------------------------------------- - * Bootstrap (v4.3.1): tools/sanitizer.js + * Bootstrap (v4.3.1): util/sanitizer.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * -------------------------------------------------------------------------- */ var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + /** + * A pattern that recognizes a commonly useful subset of URLs that are safe. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + + var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi; + /** + * A pattern that matches safe data URLs. Only matches image, video and audio types. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + + var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; + + var allowedAttribute = function allowedAttribute(attr, allowedAttributeList) { + var attrName = attr.nodeName.toLowerCase(); + + if (allowedAttributeList.indexOf(attrName) !== -1) { + if (uriAttrs.indexOf(attrName) !== -1) { + return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); + } + + return true; + } + + var regExp = allowedAttributeList.filter(function (attrRegex) { + return attrRegex instanceof RegExp; + }); // Check if a regular expression validates the attribute. + + for (var i = 0, l = regExp.length; i < l; i++) { + if (attrName.match(regExp[i])) { + return true; + } + } + + return false; + }; + var DefaultWhitelist = { // Global attributes allowed on any supplied element below. '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], @@ -2650,48 +3474,9 @@ strong: [], u: [], ul: [] - /** - * A pattern that recognizes a commonly useful subset of URLs that are safe. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - }; - var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi; - /** - * A pattern that matches safe data URLs. Only matches image, video and audio types. - * - * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts - */ - - var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; - - function allowedAttribute(attr, allowedAttributeList) { - var attrName = attr.nodeName.toLowerCase(); - - if (allowedAttributeList.indexOf(attrName) !== -1) { - if (uriAttrs.indexOf(attrName) !== -1) { - return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); - } - - return true; - } - - var regExp = allowedAttributeList.filter(function (attrRegex) { - return attrRegex instanceof RegExp; - }); // Check if a regular expression validates the attribute. - - for (var i = 0, l = regExp.length; i < l; i++) { - if (attrName.match(regExp[i])) { - return true; - } - } - - return false; - } - function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { - if (unsafeHtml.length === 0) { + if (!unsafeHtml.length) { return unsafeHtml; } @@ -2702,18 +3487,18 @@ var domParser = new window.DOMParser(); var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); var whitelistKeys = Object.keys(whiteList); - var elements = [].slice.call(createdDocument.body.querySelectorAll('*')); + var elements = makeArray(createdDocument.body.querySelectorAll('*')); var _loop = function _loop(i, len) { var el = elements[i]; var elName = el.nodeName.toLowerCase(); - if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { + if (whitelistKeys.indexOf(elName) === -1) { el.parentNode.removeChild(el); return "continue"; } - var attributeList = [].slice.call(el.attributes); + var attributeList = makeArray(el.attributes); var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); attributeList.forEach(function (attr) { if (!allowedAttribute(attr, whitelistedAttributes)) { @@ -2741,7 +3526,6 @@ var VERSION$6 = '4.3.1'; var DATA_KEY$6 = 'bs.tooltip'; var EVENT_KEY$6 = "." + DATA_KEY$6; - var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6]; var CLASS_PREFIX = 'bs-tooltip'; var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']; @@ -2771,7 +3555,7 @@ }; var Default$4 = { animation: true, - template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>', + template: '<div class="tooltip" role="tooltip">' + '<div class="tooltip-arrow"></div>' + '<div class="tooltip-inner"></div></div>', trigger: 'hover focus', title: '', delay: 0, @@ -2790,7 +3574,7 @@ SHOW: 'show', OUT: 'out' }; - var Event$6 = { + var Event$7 = { HIDE: "hide" + EVENT_KEY$6, HIDDEN: "hidden" + EVENT_KEY$6, SHOW: "show" + EVENT_KEY$6, @@ -2809,7 +3593,7 @@ var Selector$6 = { TOOLTIP: '.tooltip', TOOLTIP_INNER: '.tooltip-inner', - ARROW: '.arrow' + TOOLTIP_ARROW: '.tooltip-arrow' }; var Trigger = { HOVER: 'hover', @@ -2833,7 +3617,7 @@ * Popper - https://popper.js.org */ if (typeof Popper === 'undefined') { - throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)'); + throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org)'); } // private @@ -2848,6 +3632,8 @@ this.tip = null; this._setListeners(); + + Data.setData(element, this.constructor.DATA_KEY, this); } // Getters @@ -2873,11 +3659,11 @@ if (event) { var dataKey = this.constructor.DATA_KEY; - var context = $(event.currentTarget).data(dataKey); + var context = Data.getData(event.delegateTarget, dataKey); if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $(event.currentTarget).data(dataKey, context); + context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); + Data.setData(event.delegateTarget, dataKey, context); } context._activeTrigger.click = !context._activeTrigger.click; @@ -2888,7 +3674,7 @@ context._leave(null, context); } } else { - if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) { + if (this.getTipElement().classList.contains(ClassName$6.SHOW)) { this._leave(null, this); return; @@ -2900,12 +3686,12 @@ _proto.dispose = function dispose() { clearTimeout(this._timeout); - $.removeData(this.element, this.constructor.DATA_KEY); - $(this.element).off(this.constructor.EVENT_KEY); - $(this.element).closest('.modal').off('hide.bs.modal'); + Data.removeData(this.element, this.constructor.DATA_KEY); + EventHandler.off(this.element, this.constructor.EVENT_KEY); + EventHandler.off(SelectorEngine.closest(this.element, '.modal'), 'hide.bs.modal'); if (this.tip) { - $(this.tip).remove(); + this.tip.parentNode.removeChild(this.tip); } this._isEnabled = null; @@ -2926,29 +3712,27 @@ _proto.show = function show() { var _this = this; - if ($(this.element).css('display') === 'none') { + if (this.element.style.display === 'none') { throw new Error('Please use show on visible elements'); } - var showEvent = $.Event(this.constructor.Event.SHOW); - if (this.isWithContent() && this._isEnabled) { - $(this.element).trigger(showEvent); - var shadowRoot = Util.findShadowRoot(this.element); - var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element); + var showEvent = EventHandler.trigger(this.element, this.constructor.Event.SHOW); + var shadowRoot = findShadowRoot(this.element); + var isInTheDom = shadowRoot !== null ? shadowRoot.contains(this.element) : this.element.ownerDocument.documentElement.contains(this.element); - if (showEvent.isDefaultPrevented() || !isInTheDom) { + if (showEvent.defaultPrevented || !isInTheDom) { return; } var tip = this.getTipElement(); - var tipId = Util.getUID(this.constructor.NAME); + var tipId = getUID(this.constructor.NAME); tip.setAttribute('id', tipId); this.element.setAttribute('aria-describedby', tipId); this.setContent(); if (this.config.animation) { - $(tip).addClass(ClassName$6.FADE); + tip.classList.add(ClassName$6.FADE); } var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; @@ -2959,13 +3743,13 @@ var container = this._getContainer(); - $(tip).data(this.constructor.DATA_KEY, this); + Data.setData(tip, this.constructor.DATA_KEY, this); - if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) { - $(tip).appendTo(container); + if (!this.element.ownerDocument.documentElement.contains(this.tip)) { + container.appendChild(tip); } - $(this.element).trigger(this.constructor.Event.INSERTED); + EventHandler.trigger(this.element, this.constructor.Event.INSERTED); this._popper = new Popper(this.element, tip, { placement: attachment, modifiers: { @@ -2974,7 +3758,7 @@ behavior: this.config.fallbackPlacement }, arrow: { - element: Selector$6.ARROW + element: Selector$6.TOOLTIP_ARROW }, preventOverflow: { boundariesElement: this.config.boundary @@ -2989,13 +3773,15 @@ return _this._handlePopperPlacementChange(data); } }); - $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra + tip.classList.add(ClassName$6.SHOW); // 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) { - $(document.body).children().on('mouseover', null, $.noop); + makeArray(document.body.children).forEach(function (element) { + EventHandler.on(element, 'mouseover', noop()); + }); } var complete = function complete() { @@ -3005,16 +3791,17 @@ var prevHoverState = _this._hoverState; _this._hoverState = null; - $(_this.element).trigger(_this.constructor.Event.SHOWN); + EventHandler.trigger(_this.element, _this.constructor.Event.SHOWN); if (prevHoverState === HoverState.OUT) { _this._leave(null, _this); } }; - if ($(this.tip).hasClass(ClassName$6.FADE)) { - var transitionDuration = Util.getTransitionDurationFromElement(this.tip); - $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + if (this.tip.classList.contains(ClassName$6.FADE)) { + var transitionDuration = getTransitionDurationFromElement(this.tip); + EventHandler.one(this.tip, TRANSITION_END, complete); + emulateTransitionEnd(this.tip, transitionDuration); } else { complete(); } @@ -3025,7 +3812,6 @@ var _this2 = this; var tip = this.getTipElement(); - var hideEvent = $.Event(this.constructor.Event.HIDE); var complete = function complete() { if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) { @@ -3036,7 +3822,7 @@ _this2.element.removeAttribute('aria-describedby'); - $(_this2.element).trigger(_this2.constructor.Event.HIDDEN); + EventHandler.trigger(_this2.element, _this2.constructor.Event.HIDDEN); if (_this2._popper !== null) { _this2._popper.destroy(); @@ -3047,26 +3833,29 @@ } }; - $(this.element).trigger(hideEvent); + var hideEvent = EventHandler.trigger(this.element, this.constructor.Event.HIDE); - if (hideEvent.isDefaultPrevented()) { + if (hideEvent.defaultPrevented) { return; } - $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra + tip.classList.remove(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra // empty mouseover listeners we added for iOS support if ('ontouchstart' in document.documentElement) { - $(document.body).children().off('mouseover', null, $.noop); + makeArray(document.body.children).forEach(function (element) { + return EventHandler.off(element, 'mouseover', noop); + }); } this._activeTrigger[Trigger.CLICK] = false; this._activeTrigger[Trigger.FOCUS] = false; this._activeTrigger[Trigger.HOVER] = false; - if ($(this.tip).hasClass(ClassName$6.FADE)) { - var transitionDuration = Util.getTransitionDurationFromElement(tip); - $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + if (this.tip.classList.contains(ClassName$6.FADE)) { + var transitionDuration = getTransitionDurationFromElement(tip); + EventHandler.one(tip, TRANSITION_END, complete); + emulateTransitionEnd(tip, transitionDuration); } else { complete(); } @@ -3086,29 +3875,45 @@ }; _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); + this.getTipElement().classList.add(CLASS_PREFIX + "-" + attachment); }; _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $(this.config.template)[0]; + if (this.tip) { + return this.tip; + } + + var element = document.createElement('div'); + element.innerHTML = this.config.template; + this.tip = element.children[0]; return this.tip; }; _proto.setContent = function setContent() { var tip = this.getTipElement(); - this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle()); - $(tip).removeClass(ClassName$6.FADE + " " + ClassName$6.SHOW); + this.setElementContent(SelectorEngine.findOne(Selector$6.TOOLTIP_INNER, tip), this.getTitle()); + tip.classList.remove(ClassName$6.FADE); + tip.classList.remove(ClassName$6.SHOW); }; - _proto.setElementContent = function setElementContent($element, content) { + _proto.setElementContent = function setElementContent(element, content) { + if (element === null) { + return; + } + if (typeof content === 'object' && (content.nodeType || content.jquery)) { - // Content is a DOM node or a jQuery + if (content.jquery) { + content = content[0]; + } // content is a DOM node or a jQuery + + if (this.config.html) { - if (!$(content).parent().is($element)) { - $element.empty().append(content); + if (content.parentNode !== element) { + element.innerHTML = ''; + element.appendChild(content); } } else { - $element.text($(content).text()); + element.innerText = content.textContent; } return; @@ -3119,9 +3924,9 @@ content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn); } - $element.html(content); + element.innerHTML = content; } else { - $element.text(content); + element.innerText = content; } }; @@ -3158,11 +3963,11 @@ return document.body; } - if (Util.isElement(this.config.container)) { - return $(this.config.container); + if (isElement(this.config.container)) { + return this.config.container; } - return $(document).find(this.config.container); + return SelectorEngine.findOne(this.config.container); }; _proto._getAttachment = function _getAttachment(placement) { @@ -3175,20 +3980,21 @@ var triggers = this.config.trigger.split(' '); triggers.forEach(function (trigger) { if (trigger === 'click') { - $(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) { + EventHandler.on(_this4.element, _this4.constructor.Event.CLICK, _this4.config.selector, function (event) { return _this4.toggle(event); }); } else if (trigger !== Trigger.MANUAL) { var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN; var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT; - $(_this4.element).on(eventIn, _this4.config.selector, function (event) { + EventHandler.on(_this4.element, eventIn, _this4.config.selector, function (event) { return _this4._enter(event); - }).on(eventOut, _this4.config.selector, function (event) { + }); + EventHandler.on(_this4.element, eventOut, _this4.config.selector, function (event) { return _this4._leave(event); }); } }); - $(this.element).closest('.modal').on('hide.bs.modal', function () { + EventHandler.on(SelectorEngine.closest(this.element, '.modal'), 'hide.bs.modal', function () { if (_this4.element) { _this4.hide(); } @@ -3215,18 +4021,18 @@ _proto._enter = function _enter(event, context) { var dataKey = this.constructor.DATA_KEY; - context = context || $(event.currentTarget).data(dataKey); + context = context || Data.getData(event.delegateTarget, dataKey); if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $(event.currentTarget).data(dataKey, context); + context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); + Data.setData(event.delegateTarget, dataKey, context); } if (event) { context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; } - if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) { + if (context.getTipElement().classList.contains(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) { context._hoverState = HoverState.SHOW; return; } @@ -3248,11 +4054,11 @@ _proto._leave = function _leave(event, context) { var dataKey = this.constructor.DATA_KEY; - context = context || $(event.currentTarget).data(dataKey); + context = context || Data.getData(event.delegateTarget, dataKey); if (!context) { - context = new this.constructor(event.currentTarget, this._getDelegateConfig()); - $(event.currentTarget).data(dataKey, context); + context = new this.constructor(event.delegateTarget, this._getDelegateConfig()); + Data.setData(event.delegateTarget, dataKey, context); } if (event) { @@ -3289,12 +4095,17 @@ }; _proto._getConfig = function _getConfig(config) { - var dataAttributes = $(this.element).data(); + var dataAttributes = Manipulator.getDataAttributes(this.element); Object.keys(dataAttributes).forEach(function (dataAttr) { if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) { delete dataAttributes[dataAttr]; } }); + + if (config && typeof config.container === 'object' && config.container.jquery) { + config.container = config.container[0]; + } + config = _objectSpread({}, this.constructor.Default, dataAttributes, typeof config === 'object' && config ? config : {}); if (typeof config.delay === 'number') { @@ -3312,7 +4123,7 @@ config.content = config.content.toString(); } - Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType); + typeCheckConfig(NAME$6, config, this.constructor.DefaultType); if (config.sanitize) { config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn); @@ -3336,11 +4147,15 @@ }; _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $(this.getTipElement()); - var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); + var tip = this.getTipElement(); + var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX); if (tabClass !== null && tabClass.length) { - $tip.removeClass(tabClass.join('')); + tabClass.map(function (token) { + return token.trim(); + }).forEach(function (tClass) { + return tip.classList.remove(tClass); + }); } }; @@ -3361,7 +4176,7 @@ return; } - $(tip).removeClass(ClassName$6.FADE); + tip.classList.remove(ClassName$6.FADE); this.config.animation = false; this.hide(); this.show(); @@ -3371,7 +4186,7 @@ Tooltip._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { - var data = $(this).data(DATA_KEY$6); + var data = Data.getData(this, DATA_KEY$6); var _config = typeof config === 'object' && config; @@ -3381,7 +4196,6 @@ if (!data) { data = new Tooltip(this, _config); - $(this).data(DATA_KEY$6, data); } if (typeof config === 'string') { @@ -3394,6 +4208,10 @@ }); }; + Tooltip._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$6); + }; + _createClass(Tooltip, null, [{ key: "VERSION", get: function get() { @@ -3417,7 +4235,7 @@ }, { key: "Event", get: function get() { - return Event$6; + return Event$7; } }, { key: "EVENT_KEY", @@ -3437,16 +4255,20 @@ * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ + * add .tooltip to jQuery only if jQuery is present */ - $.fn[NAME$6] = Tooltip._jQueryInterface; - $.fn[NAME$6].Constructor = Tooltip; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$6 = jQuery.fn[NAME$6]; + jQuery.fn[NAME$6] = Tooltip._jQueryInterface; + jQuery.fn[NAME$6].Constructor = Tooltip; - $.fn[NAME$6].noConflict = function () { - $.fn[NAME$6] = JQUERY_NO_CONFLICT$6; - return Tooltip._jQueryInterface; - }; + jQuery.fn[NAME$6].noConflict = function () { + jQuery.fn[NAME$6] = JQUERY_NO_CONFLICT$6; + return Tooltip._jQueryInterface; + }; + } /** * ------------------------------------------------------------------------ @@ -3458,7 +4280,6 @@ var VERSION$7 = '4.3.1'; var DATA_KEY$7 = 'bs.popover'; var EVENT_KEY$7 = "." + DATA_KEY$7; - var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7]; var CLASS_PREFIX$1 = 'bs-popover'; var BSCLS_PREFIX_REGEX$1 = new RegExp("(^|\\s)" + CLASS_PREFIX$1 + "\\S+", 'g'); @@ -3466,7 +4287,7 @@ 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>' + template: '<div class="popover" role="tooltip">' + '<div class="popover-arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>' }); var DefaultType$5 = _objectSpread({}, Tooltip.DefaultType, { @@ -3481,7 +4302,7 @@ TITLE: '.popover-header', CONTENT: '.popover-body' }; - var Event$7 = { + var Event$8 = { HIDE: "hide" + EVENT_KEY$7, HIDDEN: "hidden" + EVENT_KEY$7, SHOW: "show" + EVENT_KEY$7, @@ -3517,18 +4338,13 @@ }; _proto.addAttachmentClass = function addAttachmentClass(attachment) { - $(this.getTipElement()).addClass(CLASS_PREFIX$1 + "-" + attachment); - }; - - _proto.getTipElement = function getTipElement() { - this.tip = this.tip || $(this.config.template)[0]; - return this.tip; + this.getTipElement().classList.add(CLASS_PREFIX$1 + "-" + attachment); }; _proto.setContent = function setContent() { - var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events + var tip = this.getTipElement(); // we use append for html objects to maintain js events - this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle()); + this.setElementContent(SelectorEngine.findOne(Selector$7.TITLE, tip), this.getTitle()); var content = this._getContent(); @@ -3536,8 +4352,9 @@ content = content.call(this.element); } - this.setElementContent($tip.find(Selector$7.CONTENT), content); - $tip.removeClass(ClassName$7.FADE + " " + ClassName$7.SHOW); + this.setElementContent(SelectorEngine.findOne(Selector$7.CONTENT, tip), content); + tip.classList.remove(ClassName$7.FADE); + tip.classList.remove(ClassName$7.SHOW); } // Private ; @@ -3546,18 +4363,22 @@ }; _proto._cleanTipClass = function _cleanTipClass() { - var $tip = $(this.getTipElement()); - var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1); + var tip = this.getTipElement(); + var tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX$1); if (tabClass !== null && tabClass.length > 0) { - $tip.removeClass(tabClass.join('')); + tabClass.map(function (token) { + return token.trim(); + }).forEach(function (tClass) { + return tip.classList.remove(tClass); + }); } } // Static ; Popover._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { - var data = $(this).data(DATA_KEY$7); + var data = Data.getData(this, DATA_KEY$7); var _config = typeof config === 'object' ? config : null; @@ -3567,7 +4388,7 @@ if (!data) { data = new Popover(this, _config); - $(this).data(DATA_KEY$7, data); + Data.setData(this, DATA_KEY$7, data); } if (typeof config === 'string') { @@ -3580,6 +4401,10 @@ }); }; + Popover._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$7); + }; + _createClass(Popover, null, [{ key: "VERSION", // Getters @@ -3604,7 +4429,7 @@ }, { key: "Event", get: function get() { - return Event$7; + return Event$8; } }, { key: "EVENT_KEY", @@ -3627,13 +4452,16 @@ */ - $.fn[NAME$7] = Popover._jQueryInterface; - $.fn[NAME$7].Constructor = Popover; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$7 = jQuery.fn[NAME$7]; + jQuery.fn[NAME$7] = Popover._jQueryInterface; + jQuery.fn[NAME$7].Constructor = Popover; - $.fn[NAME$7].noConflict = function () { - $.fn[NAME$7] = JQUERY_NO_CONFLICT$7; - return Popover._jQueryInterface; - }; + jQuery.fn[NAME$7].noConflict = function () { + jQuery.fn[NAME$7] = JQUERY_NO_CONFLICT$7; + return Popover._jQueryInterface; + }; + } /** * ------------------------------------------------------------------------ @@ -3646,7 +4474,6 @@ var DATA_KEY$8 = 'bs.scrollspy'; var EVENT_KEY$8 = "." + DATA_KEY$8; var DATA_API_KEY$6 = '.data-api'; - var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8]; var Default$6 = { offset: 10, method: 'auto', @@ -3657,7 +4484,7 @@ method: 'string', target: '(string|element)' }; - var Event$8 = { + var Event$9 = { ACTIVATE: "activate" + EVENT_KEY$8, SCROLL: "scroll" + EVENT_KEY$8, LOAD_DATA_API: "load" + EVENT_KEY$8 + DATA_API_KEY$6 @@ -3703,12 +4530,14 @@ this._targets = []; this._activeTarget = null; this._scrollHeight = 0; - $(this._scrollElement).on(Event$8.SCROLL, function (event) { + EventHandler.on(this._scrollElement, Event$9.SCROLL, function (event) { return _this._process(event); }); this.refresh(); this._process(); + + Data.setData(element, DATA_KEY$8, this); } // Getters @@ -3724,13 +4553,13 @@ this._offsets = []; this._targets = []; this._scrollHeight = this._getScrollHeight(); - var targets = [].slice.call(document.querySelectorAll(this._selector)); + var targets = makeArray(SelectorEngine.find(this._selector)); targets.map(function (element) { var target; - var targetSelector = Util.getSelectorFromElement(element); + var targetSelector = getSelectorFromElement(element); if (targetSelector) { - target = document.querySelector(targetSelector); + target = SelectorEngine.findOne(targetSelector); } if (target) { @@ -3738,7 +4567,7 @@ if (targetBCR.width || targetBCR.height) { // TODO (fat): remove sketch reliance on jQuery position/offset - return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; + return [Manipulator[offsetMethod](target).top + offsetBase, targetSelector]; } } @@ -3755,8 +4584,8 @@ }; _proto.dispose = function dispose() { - $.removeData(this._element, DATA_KEY$8); - $(this._scrollElement).off(EVENT_KEY$8); + Data.removeData(this._element, DATA_KEY$8); + EventHandler.off(this._scrollElement, EVENT_KEY$8); this._element = null; this._scrollElement = null; this._config = null; @@ -3772,17 +4601,17 @@ config = _objectSpread({}, Default$6, typeof config === 'object' && config ? config : {}); if (typeof config.target !== 'string') { - var id = $(config.target).attr('id'); + var id = config.target.id; if (!id) { - id = Util.getUID(NAME$8); - $(config.target).attr('id', id); + id = getUID(NAME$8); + config.target.id = id; } config.target = "#" + id; } - Util.typeCheckConfig(NAME$8, config, DefaultType$6); + typeCheckConfig(NAME$8, config, DefaultType$6); return config; }; @@ -3847,28 +4676,36 @@ return selector + "[data-target=\"" + target + "\"]," + selector + "[href=\"" + target + "\"]"; }); - var $link = $([].slice.call(document.querySelectorAll(queries.join(',')))); + var link = SelectorEngine.findOne(queries.join(',')); - if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) { - $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE); - $link.addClass(ClassName$8.ACTIVE); + if (link.classList.contains(ClassName$8.DROPDOWN_ITEM)) { + SelectorEngine.findOne(Selector$8.DROPDOWN_TOGGLE, SelectorEngine.closest(link, Selector$8.DROPDOWN)).classList.add(ClassName$8.ACTIVE); + link.classList.add(ClassName$8.ACTIVE); } else { // Set triggered link as active - $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active - // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor - - $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_LINKS + ", " + Selector$8.LIST_ITEMS).addClass(ClassName$8.ACTIVE); // Handle special case when .nav-link is inside .nav-item - - $link.parents(Selector$8.NAV_LIST_GROUP).prev(Selector$8.NAV_ITEMS).children(Selector$8.NAV_LINKS).addClass(ClassName$8.ACTIVE); + link.classList.add(ClassName$8.ACTIVE); + SelectorEngine.parents(link, Selector$8.NAV_LIST_GROUP).forEach(function (listGroup) { + // Set triggered links parents as active + // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor + SelectorEngine.prev(listGroup, Selector$8.NAV_LINKS + ", " + Selector$8.LIST_ITEMS).forEach(function (item) { + return item.classList.add(ClassName$8.ACTIVE); + }); // Handle special case when .nav-link is inside .nav-item + + SelectorEngine.prev(listGroup, Selector$8.NAV_ITEMS).forEach(function (navItem) { + SelectorEngine.children(navItem, Selector$8.NAV_LINKS).forEach(function (item) { + return item.classList.add(ClassName$8.ACTIVE); + }); + }); + }); } - $(this._scrollElement).trigger(Event$8.ACTIVATE, { + EventHandler.trigger(this._scrollElement, Event$9.ACTIVATE, { relatedTarget: target }); }; _proto._clear = function _clear() { - [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) { + makeArray(SelectorEngine.find(this._selector)).filter(function (node) { return node.classList.contains(ClassName$8.ACTIVE); }).forEach(function (node) { return node.classList.remove(ClassName$8.ACTIVE); @@ -3878,13 +4715,12 @@ ScrollSpy._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { - var data = $(this).data(DATA_KEY$8); + var data = Data.getData(this, DATA_KEY$8); var _config = typeof config === 'object' && config; if (!data) { data = new ScrollSpy(this, _config); - $(this).data(DATA_KEY$8, data); } if (typeof config === 'string') { @@ -3897,6 +4733,10 @@ }); }; + ScrollSpy._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$8); + }; + _createClass(ScrollSpy, null, [{ key: "VERSION", get: function get() { @@ -3918,15 +4758,10 @@ */ - $(window).on(Event$8.LOAD_DATA_API, function () { - var scrollSpys = [].slice.call(document.querySelectorAll(Selector$8.DATA_SPY)); - var scrollSpysLength = scrollSpys.length; - - for (var i = scrollSpysLength; i--;) { - var $spy = $(scrollSpys[i]); - - ScrollSpy._jQueryInterface.call($spy, $spy.data()); - } + EventHandler.on(window, Event$9.LOAD_DATA_API, function () { + makeArray(SelectorEngine.find(Selector$8.DATA_SPY)).forEach(function (spy) { + return new ScrollSpy(spy, Manipulator.getDataAttributes(spy)); + }); }); /** * ------------------------------------------------------------------------ @@ -3934,13 +4769,16 @@ * ------------------------------------------------------------------------ */ - $.fn[NAME$8] = ScrollSpy._jQueryInterface; - $.fn[NAME$8].Constructor = ScrollSpy; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$8 = jQuery.fn[NAME$8]; + jQuery.fn[NAME$8] = ScrollSpy._jQueryInterface; + jQuery.fn[NAME$8].Constructor = ScrollSpy; - $.fn[NAME$8].noConflict = function () { - $.fn[NAME$8] = JQUERY_NO_CONFLICT$8; - return ScrollSpy._jQueryInterface; - }; + jQuery.fn[NAME$8].noConflict = function () { + jQuery.fn[NAME$8] = JQUERY_NO_CONFLICT$8; + return ScrollSpy._jQueryInterface; + }; + } /** * ------------------------------------------------------------------------ @@ -3953,8 +4791,7 @@ var DATA_KEY$9 = 'bs.tab'; var EVENT_KEY$9 = "." + DATA_KEY$9; var DATA_API_KEY$7 = '.data-api'; - var JQUERY_NO_CONFLICT$9 = $.fn[NAME$9]; - var Event$9 = { + var Event$a = { HIDE: "hide" + EVENT_KEY$9, HIDDEN: "hidden" + EVENT_KEY$9, SHOW: "show" + EVENT_KEY$9, @@ -3972,10 +4809,10 @@ DROPDOWN: '.dropdown', NAV_LIST_GROUP: '.nav, .list-group', ACTIVE: '.active', - ACTIVE_UL: '> li > .active', + ACTIVE_UL: ':scope > li > .active', DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', DROPDOWN_TOGGLE: '.dropdown-toggle', - DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' + DROPDOWN_ACTIVE_CHILD: ':scope > .dropdown-menu .active' /** * ------------------------------------------------------------------------ * Class Definition @@ -3989,6 +4826,7 @@ function () { function Tab(element) { this._element = element; + Data.setData(this._element, DATA_KEY$9, this); } // Getters @@ -3998,53 +4836,50 @@ _proto.show = function show() { var _this = this; - if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName$9.ACTIVE) || $(this._element).hasClass(ClassName$9.DISABLED)) { + if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && this._element.classList.contains(ClassName$9.ACTIVE) || this._element.classList.contains(ClassName$9.DISABLED)) { return; } var target; var previous; - var listElement = $(this._element).closest(Selector$9.NAV_LIST_GROUP)[0]; - var selector = Util.getSelectorFromElement(this._element); + var listElement = SelectorEngine.closest(this._element, Selector$9.NAV_LIST_GROUP); + var selector = getSelectorFromElement(this._element); if (listElement) { var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector$9.ACTIVE_UL : Selector$9.ACTIVE; - previous = $.makeArray($(listElement).find(itemSelector)); + previous = makeArray(SelectorEngine.find(itemSelector, listElement)); previous = previous[previous.length - 1]; } - var hideEvent = $.Event(Event$9.HIDE, { - relatedTarget: this._element - }); - var showEvent = $.Event(Event$9.SHOW, { - relatedTarget: previous - }); + var hideEvent = null; if (previous) { - $(previous).trigger(hideEvent); + hideEvent = EventHandler.trigger(previous, Event$a.HIDE, { + relatedTarget: this._element + }); } - $(this._element).trigger(showEvent); + var showEvent = EventHandler.trigger(this._element, Event$a.SHOW, { + relatedTarget: previous + }); - if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { + if (showEvent.defaultPrevented || hideEvent !== null && hideEvent.defaultPrevented) { return; } if (selector) { - target = document.querySelector(selector); + target = SelectorEngine.findOne(selector); } this._activate(this._element, listElement); var complete = function complete() { - var hiddenEvent = $.Event(Event$9.HIDDEN, { + EventHandler.trigger(previous, Event$a.HIDDEN, { relatedTarget: _this._element }); - var shownEvent = $.Event(Event$9.SHOWN, { + EventHandler.trigger(_this._element, Event$a.SHOWN, { relatedTarget: previous }); - $(previous).trigger(hiddenEvent); - $(_this._element).trigger(shownEvent); }; if (target) { @@ -4055,7 +4890,7 @@ }; _proto.dispose = function dispose() { - $.removeData(this._element, DATA_KEY$9); + Data.removeData(this._element, DATA_KEY$9); this._element = null; } // Private ; @@ -4063,17 +4898,19 @@ _proto._activate = function _activate(element, container, callback) { var _this2 = this; - var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? $(container).find(Selector$9.ACTIVE_UL) : $(container).children(Selector$9.ACTIVE); + var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? SelectorEngine.find(Selector$9.ACTIVE_UL, container) : SelectorEngine.children(container, Selector$9.ACTIVE); var active = activeElements[0]; - var isTransitioning = callback && active && $(active).hasClass(ClassName$9.FADE); + var isTransitioning = callback && active && active.classList.contains(ClassName$9.FADE); var complete = function complete() { return _this2._transitionComplete(element, active, callback); }; if (active && isTransitioning) { - var transitionDuration = Util.getTransitionDurationFromElement(active); - $(active).removeClass(ClassName$9.SHOW).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + var transitionDuration = getTransitionDurationFromElement(active); + active.classList.remove(ClassName$9.SHOW); + EventHandler.one(active, TRANSITION_END, complete); + emulateTransitionEnd(active, transitionDuration); } else { complete(); } @@ -4081,11 +4918,11 @@ _proto._transitionComplete = function _transitionComplete(element, active, callback) { if (active) { - $(active).removeClass(ClassName$9.ACTIVE); - var dropdownChild = $(active.parentNode).find(Selector$9.DROPDOWN_ACTIVE_CHILD)[0]; + active.classList.remove(ClassName$9.ACTIVE); + var dropdownChild = SelectorEngine.findOne(Selector$9.DROPDOWN_ACTIVE_CHILD, active.parentNode); if (dropdownChild) { - $(dropdownChild).removeClass(ClassName$9.ACTIVE); + dropdownChild.classList.remove(ClassName$9.ACTIVE); } if (active.getAttribute('role') === 'tab') { @@ -4093,24 +4930,25 @@ } } - $(element).addClass(ClassName$9.ACTIVE); + element.classList.add(ClassName$9.ACTIVE); if (element.getAttribute('role') === 'tab') { element.setAttribute('aria-selected', true); } - Util.reflow(element); + reflow(element); if (element.classList.contains(ClassName$9.FADE)) { element.classList.add(ClassName$9.SHOW); } - if (element.parentNode && $(element.parentNode).hasClass(ClassName$9.DROPDOWN_MENU)) { - var dropdownElement = $(element).closest(Selector$9.DROPDOWN)[0]; + if (element.parentNode && element.parentNode.classList.contains(ClassName$9.DROPDOWN_MENU)) { + var dropdownElement = SelectorEngine.closest(element, Selector$9.DROPDOWN); if (dropdownElement) { - var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector$9.DROPDOWN_TOGGLE)); - $(dropdownToggleList).addClass(ClassName$9.ACTIVE); + makeArray(SelectorEngine.find(Selector$9.DROPDOWN_TOGGLE)).forEach(function (dropdown) { + return dropdown.classList.add(ClassName$9.ACTIVE); + }); } element.setAttribute('aria-expanded', true); @@ -4124,13 +4962,7 @@ Tab._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { - var $this = $(this); - var data = $this.data(DATA_KEY$9); - - if (!data) { - data = new Tab(this); - $this.data(DATA_KEY$9, data); - } + var data = Data.getData(this, DATA_KEY$9) || new Tab(this); if (typeof config === 'string') { if (typeof data[config] === 'undefined') { @@ -4142,6 +4974,10 @@ }); }; + Tab._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$9); + }; + _createClass(Tab, null, [{ key: "VERSION", get: function get() { @@ -4158,24 +4994,28 @@ */ - $(document).on(Event$9.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) { + EventHandler.on(document, Event$a.CLICK_DATA_API, Selector$9.DATA_TOGGLE, function (event) { event.preventDefault(); - - Tab._jQueryInterface.call($(this), 'show'); + var data = Data.getData(this, DATA_KEY$9) || new Tab(this); + data.show(); }); /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ + * add .tab to jQuery only if jQuery is present */ - $.fn[NAME$9] = Tab._jQueryInterface; - $.fn[NAME$9].Constructor = Tab; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$9 = jQuery.fn[NAME$9]; + jQuery.fn[NAME$9] = Tab._jQueryInterface; + jQuery.fn[NAME$9].Constructor = Tab; - $.fn[NAME$9].noConflict = function () { - $.fn[NAME$9] = JQUERY_NO_CONFLICT$9; - return Tab._jQueryInterface; - }; + jQuery.fn[NAME$9].noConflict = function () { + jQuery.fn[NAME$9] = JQUERY_NO_CONFLICT$9; + return Tab._jQueryInterface; + }; + } /** * ------------------------------------------------------------------------ @@ -4187,8 +5027,7 @@ var VERSION$a = '4.3.1'; var DATA_KEY$a = 'bs.toast'; var EVENT_KEY$a = "." + DATA_KEY$a; - var JQUERY_NO_CONFLICT$a = $.fn[NAME$a]; - var Event$a = { + var Event$b = { CLICK_DISMISS: "click.dismiss" + EVENT_KEY$a, HIDE: "hide" + EVENT_KEY$a, HIDDEN: "hidden" + EVENT_KEY$a, @@ -4230,6 +5069,8 @@ this._timeout = null; this._setListeners(); + + Data.setData(element, DATA_KEY$a, this); } // Getters @@ -4239,7 +5080,7 @@ _proto.show = function show() { var _this = this; - $(this._element).trigger(Event$a.SHOW); + EventHandler.trigger(this._element, Event$b.SHOW); if (this._config.animation) { this._element.classList.add(ClassName$a.FADE); @@ -4250,7 +5091,7 @@ _this._element.classList.add(ClassName$a.SHOW); - $(_this._element).trigger(Event$a.SHOWN); + EventHandler.trigger(_this._element, Event$b.SHOWN); if (_this._config.autohide) { _this.hide(); @@ -4262,8 +5103,9 @@ this._element.classList.add(ClassName$a.SHOWING); if (this._config.animation) { - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + var transitionDuration = getTransitionDurationFromElement(this._element); + EventHandler.one(this._element, TRANSITION_END, complete); + emulateTransitionEnd(this._element, transitionDuration); } else { complete(); } @@ -4276,7 +5118,7 @@ return; } - $(this._element).trigger(Event$a.HIDE); + EventHandler.trigger(this._element, Event$b.HIDE); if (withoutTimeout) { this._close(); @@ -4295,23 +5137,23 @@ this._element.classList.remove(ClassName$a.SHOW); } - $(this._element).off(Event$a.CLICK_DISMISS); - $.removeData(this._element, DATA_KEY$a); + EventHandler.off(this._element, Event$b.CLICK_DISMISS); + Data.removeData(this._element, DATA_KEY$a); this._element = null; this._config = null; } // Private ; _proto._getConfig = function _getConfig(config) { - config = _objectSpread({}, Default$7, $(this._element).data(), typeof config === 'object' && config ? config : {}); - Util.typeCheckConfig(NAME$a, config, this.constructor.DefaultType); + config = _objectSpread({}, Default$7, Manipulator.getDataAttributes(this._element), typeof config === 'object' && config ? config : {}); + typeCheckConfig(NAME$a, config, this.constructor.DefaultType); return config; }; _proto._setListeners = function _setListeners() { var _this3 = this; - $(this._element).on(Event$a.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () { + EventHandler.on(this._element, Event$b.CLICK_DISMISS, Selector$a.DATA_DISMISS, function () { return _this3.hide(true); }); }; @@ -4322,14 +5164,15 @@ var complete = function complete() { _this4._element.classList.add(ClassName$a.HIDE); - $(_this4._element).trigger(Event$a.HIDDEN); + EventHandler.trigger(_this4._element, Event$b.HIDDEN); }; this._element.classList.remove(ClassName$a.SHOW); if (this._config.animation) { - var transitionDuration = Util.getTransitionDurationFromElement(this._element); - $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + var transitionDuration = getTransitionDurationFromElement(this._element); + EventHandler.one(this._element, TRANSITION_END, complete); + emulateTransitionEnd(this._element, transitionDuration); } else { complete(); } @@ -4338,14 +5181,12 @@ Toast._jQueryInterface = function _jQueryInterface(config) { return this.each(function () { - var $element = $(this); - var data = $element.data(DATA_KEY$a); + var data = Data.getData(this, DATA_KEY$a); var _config = typeof config === 'object' && config; if (!data) { data = new Toast(this, _config); - $element.data(DATA_KEY$a, data); } if (typeof config === 'string') { @@ -4358,6 +5199,10 @@ }); }; + Toast._getInstance = function _getInstance(element) { + return Data.getData(element, DATA_KEY$a); + }; + _createClass(Toast, null, [{ key: "VERSION", get: function get() { @@ -4381,16 +5226,20 @@ * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ + * add .toast to jQuery only if jQuery is present */ - $.fn[NAME$a] = Toast._jQueryInterface; - $.fn[NAME$a].Constructor = Toast; + if (typeof jQuery !== 'undefined') { + var JQUERY_NO_CONFLICT$a = jQuery.fn[NAME$a]; + jQuery.fn[NAME$a] = Toast._jQueryInterface; + jQuery.fn[NAME$a].Constructor = Toast; - $.fn[NAME$a].noConflict = function () { - $.fn[NAME$a] = JQUERY_NO_CONFLICT$a; - return Toast._jQueryInterface; - }; + jQuery.fn[NAME$a].noConflict = function () { + jQuery.fn[NAME$a] = JQUERY_NO_CONFLICT$a; + return Toast._jQueryInterface; + }; + } /** * -------------------------------------------------------------------------- @@ -4399,24 +5248,6 @@ * -------------------------------------------------------------------------- */ - (function () { - if (typeof $ === 'undefined') { - throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); - } - - var version = $.fn.jquery.split(' ')[0].split('.'); - var minMajor = 1; - var ltMajor = 2; - var minMinor = 9; - var minPatch = 1; - var maxMajor = 4; - - if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { - throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); - } - })(); - - exports.Util = Util; exports.Alert = Alert; exports.Button = Button; exports.Carousel = Carousel; @@ -4424,7 +5255,7 @@ exports.Dropdown = Dropdown; exports.Modal = Modal; exports.Popover = Popover; - exports.Scrollspy = ScrollSpy; + exports.ScrollSpy = ScrollSpy; exports.Tab = Tab; exports.Toast = Toast; exports.Tooltip = Tooltip; |