2021-02-10 17:14:51 +01:00
|
|
|
/*!
|
2021-05-13 18:22:20 +02:00
|
|
|
* Bootstrap base-component.js v5.0.1 (https://getbootstrap.com/)
|
2021-02-10 17:14:51 +01:00
|
|
|
* Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
|
|
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
|
|
*/
|
|
|
|
(function (global, factory) {
|
2021-05-13 18:22:20 +02:00
|
|
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/selector-engine.js'), require('./dom/event-handler.js')) :
|
|
|
|
typeof define === 'function' && define.amd ? define(['./dom/data', './dom/selector-engine', './dom/event-handler'], factory) :
|
|
|
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.SelectorEngine, global.EventHandler));
|
|
|
|
}(this, (function (Data, SelectorEngine, EventHandler) { 'use strict';
|
2021-02-10 17:14:51 +01:00
|
|
|
|
|
|
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
|
|
|
|
|
|
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
|
2021-05-13 18:22:20 +02:00
|
|
|
var SelectorEngine__default = /*#__PURE__*/_interopDefaultLegacy(SelectorEngine);
|
2021-05-05 21:32:12 +02:00
|
|
|
var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
|
2021-02-10 17:14:51 +01:00
|
|
|
|
2021-05-13 18:22:20 +02:00
|
|
|
const MILLISECONDS_MULTIPLIER = 1000;
|
|
|
|
const TRANSITION_END = 'transitionend'; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
|
|
|
|
|
|
|
const getTransitionDurationFromElement = element => {
|
|
|
|
if (!element) {
|
|
|
|
return 0;
|
|
|
|
} // Get transition-duration of the element
|
|
|
|
|
|
|
|
|
|
|
|
let {
|
|
|
|
transitionDuration,
|
|
|
|
transitionDelay
|
|
|
|
} = window.getComputedStyle(element);
|
|
|
|
const floatTransitionDuration = Number.parseFloat(transitionDuration);
|
|
|
|
const floatTransitionDelay = Number.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 (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
|
|
|
|
};
|
|
|
|
|
|
|
|
const triggerTransitionEnd = element => {
|
|
|
|
element.dispatchEvent(new Event(TRANSITION_END));
|
|
|
|
};
|
|
|
|
|
|
|
|
const isElement = obj => {
|
|
|
|
if (!obj || typeof obj !== 'object') {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (typeof obj.jquery !== 'undefined') {
|
|
|
|
obj = obj[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
return typeof obj.nodeType !== 'undefined';
|
|
|
|
};
|
|
|
|
|
|
|
|
const getElement = obj => {
|
|
|
|
if (isElement(obj)) {
|
|
|
|
// it's a jQuery object or a node element
|
|
|
|
return obj.jquery ? obj[0] : obj;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (typeof obj === 'string' && obj.length > 0) {
|
|
|
|
return SelectorEngine__default['default'].findOne(obj);
|
|
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
|
|
};
|
|
|
|
|
|
|
|
const emulateTransitionEnd = (element, duration) => {
|
|
|
|
let called = false;
|
|
|
|
const durationPadding = 5;
|
|
|
|
const emulatedDuration = duration + durationPadding;
|
|
|
|
|
|
|
|
function listener() {
|
|
|
|
called = true;
|
|
|
|
element.removeEventListener(TRANSITION_END, listener);
|
|
|
|
}
|
|
|
|
|
|
|
|
element.addEventListener(TRANSITION_END, listener);
|
|
|
|
setTimeout(() => {
|
|
|
|
if (!called) {
|
|
|
|
triggerTransitionEnd(element);
|
|
|
|
}
|
|
|
|
}, emulatedDuration);
|
|
|
|
};
|
|
|
|
|
|
|
|
const execute = callback => {
|
|
|
|
if (typeof callback === 'function') {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2021-03-23 17:26:54 +01:00
|
|
|
/**
|
|
|
|
* --------------------------------------------------------------------------
|
2021-05-13 18:22:20 +02:00
|
|
|
* Bootstrap (v5.0.1): base-component.js
|
2021-03-23 17:26:54 +01:00
|
|
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
|
|
* --------------------------------------------------------------------------
|
|
|
|
*/
|
2021-02-10 17:14:51 +01:00
|
|
|
/**
|
|
|
|
* ------------------------------------------------------------------------
|
|
|
|
* Constants
|
|
|
|
* ------------------------------------------------------------------------
|
|
|
|
*/
|
|
|
|
|
2021-05-13 18:22:20 +02:00
|
|
|
const VERSION = '5.0.1';
|
2021-03-23 17:26:54 +01:00
|
|
|
|
|
|
|
class BaseComponent {
|
|
|
|
constructor(element) {
|
2021-05-13 18:22:20 +02:00
|
|
|
element = getElement(element);
|
2021-02-10 17:14:51 +01:00
|
|
|
|
|
|
|
if (!element) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
this._element = element;
|
2021-03-23 17:26:54 +01:00
|
|
|
Data__default['default'].set(this._element, this.constructor.DATA_KEY, this);
|
2021-02-10 17:14:51 +01:00
|
|
|
}
|
|
|
|
|
2021-03-23 17:26:54 +01:00
|
|
|
dispose() {
|
|
|
|
Data__default['default'].remove(this._element, this.constructor.DATA_KEY);
|
2021-05-13 18:22:20 +02:00
|
|
|
EventHandler__default['default'].off(this._element, this.constructor.EVENT_KEY);
|
|
|
|
Object.getOwnPropertyNames(this).forEach(propertyName => {
|
|
|
|
this[propertyName] = null;
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
_queueCallback(callback, element, isAnimated = true) {
|
|
|
|
if (!isAnimated) {
|
|
|
|
execute(callback);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
const transitionDuration = getTransitionDurationFromElement(element);
|
|
|
|
EventHandler__default['default'].one(element, 'transitionend', () => execute(callback));
|
|
|
|
emulateTransitionEnd(element, transitionDuration);
|
2021-02-10 17:14:51 +01:00
|
|
|
}
|
|
|
|
/** Static */
|
|
|
|
|
|
|
|
|
2021-03-23 17:26:54 +01:00
|
|
|
static getInstance(element) {
|
|
|
|
return Data__default['default'].get(element, this.DATA_KEY);
|
|
|
|
}
|
2021-02-10 17:14:51 +01:00
|
|
|
|
2021-03-23 17:26:54 +01:00
|
|
|
static get VERSION() {
|
|
|
|
return VERSION;
|
|
|
|
}
|
|
|
|
|
2021-05-13 18:22:20 +02:00
|
|
|
static get NAME() {
|
|
|
|
throw new Error('You have to implement the static method "NAME", for each component!');
|
|
|
|
}
|
|
|
|
|
|
|
|
static get DATA_KEY() {
|
|
|
|
return `bs.${this.NAME}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
static get EVENT_KEY() {
|
|
|
|
return `.${this.DATA_KEY}`;
|
|
|
|
}
|
|
|
|
|
2021-03-23 17:26:54 +01:00
|
|
|
}
|
2021-02-10 17:14:51 +01:00
|
|
|
|
|
|
|
return BaseComponent;
|
|
|
|
|
|
|
|
})));
|
|
|
|
//# sourceMappingURL=base-component.js.map
|