diff options
Diffstat (limited to 'assets/javascripts/bootstrap/modal.js')
-rw-r--r-- | assets/javascripts/bootstrap/modal.js | 262 |
1 files changed, 153 insertions, 109 deletions
diff --git a/assets/javascripts/bootstrap/modal.js b/assets/javascripts/bootstrap/modal.js index 4f631a5..2cd83e9 100644 --- a/assets/javascripts/bootstrap/modal.js +++ b/assets/javascripts/bootstrap/modal.js @@ -1,11 +1,11 @@ /*! - * Bootstrap modal.js v5.0.0-alpha3 (https://getbootstrap.com/) + * Bootstrap modal.js v5.0.0-beta1 (https://getbootstrap.com/) * Copyright 2011-2020 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'), require('./dom/event-handler.js'), require('./dom/manipulator.js'), require('./dom/selector-engine.js')) : - typeof define === 'function' && define.amd ? define(['./dom/data.js', './dom/event-handler.js', './dom/manipulator.js', './dom/selector-engine.js'], factory) : + typeof define === 'function' && define.amd ? define(['./dom/data', './dom/event-handler', './dom/manipulator', './dom/selector-engine'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.Data, global.EventHandler, global.Manipulator, global.SelectorEngine)); }(this, (function (Data, EventHandler, Manipulator, SelectorEngine) { 'use strict'; @@ -18,7 +18,7 @@ /** * -------------------------------------------------------------------------- - * Bootstrap (v5.0.0-alpha3): util/index.js + * Bootstrap (v5.0.0-beta1): util/index.js * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * -------------------------------------------------------------------------- */ @@ -34,7 +34,7 @@ }; var getSelector = function getSelector(element) { - var selector = element.getAttribute('data-target'); + var selector = element.getAttribute('data-bs-target'); if (!selector || selector === '#') { var hrefAttr = element.getAttribute('href'); @@ -59,8 +59,8 @@ 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 + var floatTransitionDuration = Number.parseFloat(transitionDuration); + var floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found if (!floatTransitionDuration && !floatTransitionDelay) { return 0; @@ -69,7 +69,7 @@ transitionDuration = transitionDuration.split(',')[0]; transitionDelay = transitionDelay.split(',')[0]; - return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; + return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER; }; var triggerTransitionEnd = function triggerTransitionEnd(element) { @@ -132,7 +132,7 @@ var _window = window, jQuery = _window.jQuery; - if (jQuery && !document.body.hasAttribute('data-no-jquery')) { + if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) { return jQuery; } @@ -147,7 +147,7 @@ } }; - function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + var isRTL = document.documentElement.dir === 'rtl'; 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); } } @@ -158,8 +158,55 @@ * ------------------------------------------------------------------------ */ + var VERSION = '5.0.0-beta1'; + + var BaseComponent = /*#__PURE__*/function () { + function BaseComponent(element) { + if (!element) { + return; + } + + this._element = element; + Data__default['default'].setData(element, this.constructor.DATA_KEY, this); + } + + var _proto = BaseComponent.prototype; + + _proto.dispose = function dispose() { + Data__default['default'].removeData(this._element, this.constructor.DATA_KEY); + this._element = null; + } + /** 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; + } + }]); + + return BaseComponent; + }(); + + function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } + + function _defineProperties$1(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } + + function _createClass$1(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties$1(Constructor.prototype, protoProps); if (staticProps) _defineProperties$1(Constructor, staticProps); return Constructor; } + + function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; } + /** + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ + */ + var NAME = 'modal'; - var VERSION = '5.0.0-alpha3'; var DATA_KEY = 'bs.modal'; var EVENT_KEY = "." + DATA_KEY; var DATA_API_KEY = '.data-api'; @@ -167,14 +214,12 @@ var Default = { backdrop: true, keyboard: true, - focus: true, - show: true + focus: true }; var DefaultType = { backdrop: '(boolean|string)', keyboard: 'boolean', - focus: 'boolean', - show: 'boolean' + focus: 'boolean' }; var EVENT_HIDE = "hide" + EVENT_KEY; var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY; @@ -196,8 +241,8 @@ var CLASS_NAME_STATIC = 'modal-static'; var SELECTOR_DIALOG = '.modal-dialog'; var SELECTOR_MODAL_BODY = '.modal-body'; - var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]'; - var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]'; + var SELECTOR_DATA_TOGGLE = '[data-bs-toggle="modal"]'; + var SELECTOR_DATA_DISMISS = '[data-bs-dismiss="modal"]'; var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'; var SELECTOR_STICKY_CONTENT = '.sticky-top'; /** @@ -206,18 +251,22 @@ * ------------------------------------------------------------------------ */ - var Modal = /*#__PURE__*/function () { + var Modal = /*#__PURE__*/function (_BaseComponent) { + _inheritsLoose(Modal, _BaseComponent); + function Modal(element, config) { - this._config = this._getConfig(config); - this._element = element; - this._dialog = SelectorEngine__default['default'].findOne(SELECTOR_DIALOG, element); - this._backdrop = null; - this._isShown = false; - this._isBodyOverflowing = false; - this._ignoreBackdropClick = false; - this._isTransitioning = false; - this._scrollbarWidth = 0; - Data__default['default'].setData(element, DATA_KEY, this); + var _this; + + _this = _BaseComponent.call(this, element) || this; + _this._config = _this._getConfig(config); + _this._dialog = SelectorEngine__default['default'].findOne(SELECTOR_DIALOG, element); + _this._backdrop = null; + _this._isShown = false; + _this._isBodyOverflowing = false; + _this._ignoreBackdropClick = false; + _this._isTransitioning = false; + _this._scrollbarWidth = 0; + return _this; } // Getters @@ -229,7 +278,7 @@ }; _proto.show = function show(relatedTarget) { - var _this = this; + var _this2 = this; if (this._isShown || this._isTransitioning) { return; @@ -260,23 +309,23 @@ this._setResizeEvent(); EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) { - return _this.hide(event); + return _this2.hide(event); }); EventHandler__default['default'].on(this._dialog, EVENT_MOUSEDOWN_DISMISS, function () { - EventHandler__default['default'].one(_this._element, EVENT_MOUSEUP_DISMISS, function (event) { - if (event.target === _this._element) { - _this._ignoreBackdropClick = true; + EventHandler__default['default'].one(_this2._element, EVENT_MOUSEUP_DISMISS, function (event) { + if (event.target === _this2._element) { + _this2._ignoreBackdropClick = true; } }); }); this._showBackdrop(function () { - return _this._showElement(relatedTarget); + return _this2._showElement(relatedTarget); }); }; _proto.hide = function hide(event) { - var _this2 = this; + var _this3 = this; if (event) { event.preventDefault(); @@ -314,7 +363,7 @@ if (transition) { var transitionDuration = getTransitionDurationFromElement(this._element); EventHandler__default['default'].one(this._element, TRANSITION_END, function (event) { - return _this2._hideModal(event); + return _this3._hideModal(event); }); emulateTransitionEnd(this._element, transitionDuration); } else { @@ -326,16 +375,17 @@ [window, this._element, this._dialog].forEach(function (htmlElement) { return EventHandler__default['default'].off(htmlElement, EVENT_KEY); }); + + _BaseComponent.prototype.dispose.call(this); /** * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API` * Do not move `document` in `htmlElements` array * It will remove `EVENT_CLICK_DATA_API` event that should remain */ + EventHandler__default['default'].off(document, EVENT_FOCUSIN); - Data__default['default'].removeData(this._element, DATA_KEY); this._config = null; - this._element = null; this._dialog = null; this._backdrop = null; this._isShown = null; @@ -357,7 +407,7 @@ }; _proto._showElement = function _showElement(relatedTarget) { - var _this3 = this; + var _this4 = this; var transition = this._element.classList.contains(CLASS_NAME_FADE); @@ -393,12 +443,12 @@ } var transitionComplete = function transitionComplete() { - if (_this3._config.focus) { - _this3._element.focus(); + if (_this4._config.focus) { + _this4._element.focus(); } - _this3._isTransitioning = false; - EventHandler__default['default'].trigger(_this3._element, EVENT_SHOWN, { + _this4._isTransitioning = false; + EventHandler__default['default'].trigger(_this4._element, EVENT_SHOWN, { relatedTarget: relatedTarget }); }; @@ -413,28 +463,28 @@ }; _proto._enforceFocus = function _enforceFocus() { - var _this4 = this; + var _this5 = this; EventHandler__default['default'].off(document, EVENT_FOCUSIN); // guard against infinite focus loop EventHandler__default['default'].on(document, EVENT_FOCUSIN, function (event) { - if (document !== event.target && _this4._element !== event.target && !_this4._element.contains(event.target)) { - _this4._element.focus(); + if (document !== event.target && _this5._element !== event.target && !_this5._element.contains(event.target)) { + _this5._element.focus(); } }); }; _proto._setEscapeEvent = function _setEscapeEvent() { - var _this5 = this; + var _this6 = this; if (this._isShown) { EventHandler__default['default'].on(this._element, EVENT_KEYDOWN_DISMISS, function (event) { - if (_this5._config.keyboard && event.key === ESCAPE_KEY) { + if (_this6._config.keyboard && event.key === ESCAPE_KEY) { event.preventDefault(); - _this5.hide(); - } else if (!_this5._config.keyboard && event.key === ESCAPE_KEY) { - _this5._triggerBackdropTransition(); + _this6.hide(); + } else if (!_this6._config.keyboard && event.key === ESCAPE_KEY) { + _this6._triggerBackdropTransition(); } }); } else { @@ -443,11 +493,11 @@ }; _proto._setResizeEvent = function _setResizeEvent() { - var _this6 = this; + var _this7 = this; if (this._isShown) { EventHandler__default['default'].on(window, EVENT_RESIZE, function () { - return _this6._adjustDialog(); + return _this7._adjustDialog(); }); } else { EventHandler__default['default'].off(window, EVENT_RESIZE); @@ -455,7 +505,7 @@ }; _proto._hideModal = function _hideModal() { - var _this7 = this; + var _this8 = this; this._element.style.display = 'none'; @@ -470,11 +520,11 @@ this._showBackdrop(function () { document.body.classList.remove(CLASS_NAME_OPEN); - _this7._resetAdjustments(); + _this8._resetAdjustments(); - _this7._resetScrollbar(); + _this8._resetScrollbar(); - EventHandler__default['default'].trigger(_this7._element, EVENT_HIDDEN); + EventHandler__default['default'].trigger(_this8._element, EVENT_HIDDEN); }); }; @@ -485,7 +535,7 @@ }; _proto._showBackdrop = function _showBackdrop(callback) { - var _this8 = this; + var _this9 = this; var animate = this._element.classList.contains(CLASS_NAME_FADE) ? CLASS_NAME_FADE : ''; @@ -499,8 +549,8 @@ document.body.appendChild(this._backdrop); EventHandler__default['default'].on(this._element, EVENT_CLICK_DISMISS, function (event) { - if (_this8._ignoreBackdropClick) { - _this8._ignoreBackdropClick = false; + if (_this9._ignoreBackdropClick) { + _this9._ignoreBackdropClick = false; return; } @@ -508,7 +558,11 @@ return; } - _this8._triggerBackdropTransition(); + if (_this9._config.backdrop === 'static') { + _this9._triggerBackdropTransition(); + } else { + _this9.hide(); + } }); if (animate) { @@ -529,7 +583,7 @@ this._backdrop.classList.remove(CLASS_NAME_SHOW); var callbackRemove = function callbackRemove() { - _this8._removeBackdrop(); + _this9._removeBackdrop(); callback(); }; @@ -548,41 +602,37 @@ }; _proto._triggerBackdropTransition = function _triggerBackdropTransition() { - var _this9 = this; + var _this10 = this; - if (this._config.backdrop === 'static') { - var hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE_PREVENTED); + var hideEvent = EventHandler__default['default'].trigger(this._element, EVENT_HIDE_PREVENTED); - if (hideEvent.defaultPrevented) { - return; - } + if (hideEvent.defaultPrevented) { + return; + } - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - if (!isModalOverflowing) { - this._element.style.overflowY = 'hidden'; - } + if (!isModalOverflowing) { + this._element.style.overflowY = 'hidden'; + } - this._element.classList.add(CLASS_NAME_STATIC); + this._element.classList.add(CLASS_NAME_STATIC); - var modalTransitionDuration = getTransitionDurationFromElement(this._dialog); - EventHandler__default['default'].off(this._element, TRANSITION_END); - EventHandler__default['default'].one(this._element, TRANSITION_END, function () { - _this9._element.classList.remove(CLASS_NAME_STATIC); + var modalTransitionDuration = getTransitionDurationFromElement(this._dialog); + EventHandler__default['default'].off(this._element, TRANSITION_END); + EventHandler__default['default'].one(this._element, TRANSITION_END, function () { + _this10._element.classList.remove(CLASS_NAME_STATIC); - if (!isModalOverflowing) { - EventHandler__default['default'].one(_this9._element, TRANSITION_END, function () { - _this9._element.style.overflowY = ''; - }); - emulateTransitionEnd(_this9._element, modalTransitionDuration); - } - }); - emulateTransitionEnd(this._element, modalTransitionDuration); + if (!isModalOverflowing) { + EventHandler__default['default'].one(_this10._element, TRANSITION_END, function () { + _this10._element.style.overflowY = ''; + }); + emulateTransitionEnd(_this10._element, modalTransitionDuration); + } + }); + emulateTransitionEnd(this._element, modalTransitionDuration); - this._element.focus(); - } else { - this.hide(); - } + this._element.focus(); } // ---------------------------------------------------------------------- // the following methods are used to handle overflowing modals // ---------------------------------------------------------------------- @@ -591,11 +641,11 @@ _proto._adjustDialog = function _adjustDialog() { var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - if (!this._isBodyOverflowing && isModalOverflowing) { + if (!this._isBodyOverflowing && isModalOverflowing && !isRTL || this._isBodyOverflowing && !isModalOverflowing && isRTL) { this._element.style.paddingLeft = this._scrollbarWidth + "px"; } - if (this._isBodyOverflowing && !isModalOverflowing) { + if (this._isBodyOverflowing && !isModalOverflowing && !isRTL || !this._isBodyOverflowing && isModalOverflowing && isRTL) { this._element.style.paddingRight = this._scrollbarWidth + "px"; } }; @@ -612,7 +662,7 @@ }; _proto._setScrollbar = function _setScrollbar() { - var _this10 = this; + var _this11 = this; if (this._isBodyOverflowing) { // Note: DOMNode.style.paddingRight returns the actual value or '' if not set @@ -622,20 +672,20 @@ var actualPadding = element.style.paddingRight; var calculatedPadding = window.getComputedStyle(element)['padding-right']; Manipulator__default['default'].setDataAttribute(element, 'padding-right', actualPadding); - element.style.paddingRight = parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px"; + element.style.paddingRight = Number.parseFloat(calculatedPadding) + _this11._scrollbarWidth + "px"; }); // Adjust sticky content margin SelectorEngine__default['default'].find(SELECTOR_STICKY_CONTENT).forEach(function (element) { var actualMargin = element.style.marginRight; var calculatedMargin = window.getComputedStyle(element)['margin-right']; Manipulator__default['default'].setDataAttribute(element, 'margin-right', actualMargin); - element.style.marginRight = parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px"; + element.style.marginRight = Number.parseFloat(calculatedMargin) - _this11._scrollbarWidth + "px"; }); // Adjust body padding var actualPadding = document.body.style.paddingRight; var calculatedPadding = window.getComputedStyle(document.body)['padding-right']; Manipulator__default['default'].setDataAttribute(document.body, 'padding-right', actualPadding); - document.body.style.paddingRight = parseFloat(calculatedPadding) + this._scrollbarWidth + "px"; + document.body.style.paddingRight = Number.parseFloat(calculatedPadding) + this._scrollbarWidth + "px"; } document.body.classList.add(CLASS_NAME_OPEN); @@ -698,30 +748,24 @@ } data[config](relatedTarget); - } else if (_config.show) { - data.show(relatedTarget); } }); }; - Modal.getInstance = function getInstance(element) { - return Data__default['default'].getData(element, DATA_KEY); - }; - - _createClass(Modal, null, [{ - key: "VERSION", + _createClass$1(Modal, null, [{ + key: "Default", get: function get() { - return VERSION; + return Default; } }, { - key: "Default", + key: "DATA_KEY", get: function get() { - return Default; + return DATA_KEY; } }]); return Modal; - }(); + }(BaseComponent); /** * ------------------------------------------------------------------------ * Data Api implementation @@ -730,7 +774,7 @@ EventHandler__default['default'].on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) { - var _this11 = this; + var _this12 = this; var target = getElementFromSelector(this); @@ -745,8 +789,8 @@ } EventHandler__default['default'].one(target, EVENT_HIDDEN, function () { - if (isVisible(_this11)) { - _this11.focus(); + if (isVisible(_this12)) { + _this12.focus(); } }); }); |