aboutsummaryrefslogtreecommitdiff
path: root/js/dist/base-component.js
diff options
context:
space:
mode:
authorXhmikosR <[email protected]>2021-08-18 07:29:56 +0300
committerGitHub <[email protected]>2021-08-18 07:29:56 +0300
commit433a148c9e61aa942801fd8101dfa5c4045fdaed (patch)
treef41db59fd06019169df5ea0338213ec0e298f226 /js/dist/base-component.js
parentb97cfa163b5098db70e03b27c91fca5dde9c267e (diff)
parent18b3e1ac71f73d006756684a285c5a818e2d1454 (diff)
downloadbootstrap-global-focus-vars.tar.xz
bootstrap-global-focus-vars.zip
Merge branch 'main' into global-focus-varsglobal-focus-vars
Diffstat (limited to 'js/dist/base-component.js')
-rw-r--r--js/dist/base-component.js183
1 files changed, 145 insertions, 38 deletions
diff --git a/js/dist/base-component.js b/js/dist/base-component.js
index 80605b5a1..854845693 100644
--- a/js/dist/base-component.js
+++ b/js/dist/base-component.js
@@ -1,74 +1,181 @@
/*!
- * Bootstrap base-component.js v5.0.0-beta2 (https://getbootstrap.com/)
+ * Bootstrap base-component.js v5.1.0 (https://getbootstrap.com/)
* 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) {
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js')) :
- typeof define === 'function' && define.amd ? define(['./dom/data'], factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data));
-}(this, (function (Data) { 'use strict';
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('./dom/data.js'), require('./dom/event-handler.js')) :
+ typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Base = factory(global.Data, global.EventHandler));
+}(this, (function (Data, EventHandler) { 'use strict';
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var Data__default = /*#__PURE__*/_interopDefaultLegacy(Data);
+ var EventHandler__default = /*#__PURE__*/_interopDefaultLegacy(EventHandler);
- function _defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
+ /**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): util/index.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ 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;
}
- }
- function _createClass(Constructor, protoProps, staticProps) {
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
- if (staticProps) _defineProperties(Constructor, staticProps);
- return Constructor;
- }
+ 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 document.querySelector(obj);
+ }
+
+ return null;
+ };
+
+ const execute = callback => {
+ if (typeof callback === 'function') {
+ callback();
+ }
+ };
+
+ const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
+ if (!waitForTransition) {
+ execute(callback);
+ return;
+ }
+
+ const durationPadding = 5;
+ const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
+ let called = false;
+
+ const handler = ({
+ target
+ }) => {
+ if (target !== transitionElement) {
+ return;
+ }
+
+ called = true;
+ transitionElement.removeEventListener(TRANSITION_END, handler);
+ execute(callback);
+ };
+
+ transitionElement.addEventListener(TRANSITION_END, handler);
+ setTimeout(() => {
+ if (!called) {
+ triggerTransitionEnd(transitionElement);
+ }
+ }, emulatedDuration);
+ };
/**
+ * --------------------------------------------------------------------------
+ * Bootstrap (v5.1.0): base-component.js
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
+ * --------------------------------------------------------------------------
+ */
+ /**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
- var VERSION = '5.0.0-beta2';
+ const VERSION = '5.1.0';
+
+ class BaseComponent {
+ constructor(element) {
+ element = getElement(element);
- var BaseComponent = /*#__PURE__*/function () {
- function BaseComponent(element) {
if (!element) {
return;
}
this._element = element;
- Data__default['default'].setData(element, this.constructor.DATA_KEY, this);
+ Data__default['default'].set(this._element, this.constructor.DATA_KEY, this);
}
- var _proto = BaseComponent.prototype;
+ dispose() {
+ Data__default['default'].remove(this._element, this.constructor.DATA_KEY);
+ EventHandler__default['default'].off(this._element, this.constructor.EVENT_KEY);
+ Object.getOwnPropertyNames(this).forEach(propertyName => {
+ this[propertyName] = null;
+ });
+ }
- _proto.dispose = function dispose() {
- Data__default['default'].removeData(this._element, this.constructor.DATA_KEY);
- this._element = null;
+ _queueCallback(callback, element, isAnimated = true) {
+ executeAfterTransition(callback, element, isAnimated);
}
/** Static */
- ;
- BaseComponent.getInstance = function getInstance(element) {
- return Data__default['default'].getData(element, this.DATA_KEY);
- };
- _createClass(BaseComponent, null, [{
- key: "VERSION",
- get: function get() {
- return VERSION;
- }
- }]);
+ static getInstance(element) {
+ return Data__default['default'].get(getElement(element), this.DATA_KEY);
+ }
+
+ static getOrCreateInstance(element, config = {}) {
+ return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);
+ }
+
+ static get VERSION() {
+ return VERSION;
+ }
+
+ 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}`;
+ }
- return BaseComponent;
- }();
+ static get EVENT_KEY() {
+ return `.${this.DATA_KEY}`;
+ }
+
+ }
return BaseComponent;