Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/twbs/bootstrap-rubygem.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'assets/javascripts/bootstrap/modal.js')
-rw-r--r--assets/javascripts/bootstrap/modal.js756
1 files changed, 361 insertions, 395 deletions
diff --git a/assets/javascripts/bootstrap/modal.js b/assets/javascripts/bootstrap/modal.js
index 781f9a3..4873d05 100644
--- a/assets/javascripts/bootstrap/modal.js
+++ b/assets/javascripts/bootstrap/modal.js
@@ -1,10 +1,6 @@
-'use strict';
+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); } }
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
-var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
-
-function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
/**
* --------------------------------------------------------------------------
@@ -12,19 +8,16 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* --------------------------------------------------------------------------
*/
-
var Modal = function () {
-
/**
* ------------------------------------------------------------------------
* Constants
* ------------------------------------------------------------------------
*/
-
var NAME = 'modal';
var VERSION = '4.0.0-beta';
var DATA_KEY = 'bs.modal';
- var EVENT_KEY = '.' + DATA_KEY;
+ var EVENT_KEY = "." + DATA_KEY;
var DATA_API_KEY = '.data-api';
var JQUERY_NO_CONFLICT = $.fn[NAME];
var TRANSITION_DURATION = 300;
@@ -37,28 +30,25 @@ var Modal = function () {
focus: true,
show: true
};
-
var DefaultType = {
backdrop: '(boolean|string)',
keyboard: 'boolean',
focus: 'boolean',
show: 'boolean'
};
-
var Event = {
- HIDE: 'hide' + EVENT_KEY,
- HIDDEN: 'hidden' + EVENT_KEY,
- SHOW: 'show' + EVENT_KEY,
- SHOWN: 'shown' + EVENT_KEY,
- FOCUSIN: 'focusin' + EVENT_KEY,
- RESIZE: 'resize' + EVENT_KEY,
- CLICK_DISMISS: 'click.dismiss' + EVENT_KEY,
- KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY,
- MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY,
- MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY,
- CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
+ HIDE: "hide" + EVENT_KEY,
+ HIDDEN: "hidden" + EVENT_KEY,
+ SHOW: "show" + EVENT_KEY,
+ SHOWN: "shown" + EVENT_KEY,
+ FOCUSIN: "focusin" + EVENT_KEY,
+ RESIZE: "resize" + EVENT_KEY,
+ CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
+ KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
+ MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
+ MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
+ CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
};
-
var ClassName = {
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
BACKDROP: 'modal-backdrop',
@@ -66,7 +56,6 @@ var Modal = function () {
FADE: 'fade',
SHOW: 'show'
};
-
var Selector = {
DIALOG: '.modal-dialog',
DATA_TOGGLE: '[data-toggle="modal"]',
@@ -74,18 +63,18 @@ var Modal = function () {
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
STICKY_CONTENT: '.sticky-top',
NAVBAR_TOGGLER: '.navbar-toggler'
- };
+ /**
+ * ------------------------------------------------------------------------
+ * Class Definition
+ * ------------------------------------------------------------------------
+ */
- /**
- * ------------------------------------------------------------------------
- * Class Definition
- * ------------------------------------------------------------------------
- */
+ };
- var Modal = function () {
+ var Modal =
+ /*#__PURE__*/
+ function () {
function Modal(element, config) {
- _classCallCheck(this, Modal);
-
this._config = this._getConfig(config);
this._element = element;
this._dialog = $(element).find(Selector.DIALOG)[0];
@@ -95,462 +84,439 @@ var Modal = function () {
this._ignoreBackdropClick = false;
this._originalBodyPadding = 0;
this._scrollbarWidth = 0;
- }
+ } // getters
- // getters
- _createClass(Modal, [{
- key: 'toggle',
+ var _proto = Modal.prototype;
+ // public
+ _proto.toggle = function toggle(relatedTarget) {
+ return this._isShown ? this.hide() : this.show(relatedTarget);
+ };
- // public
+ _proto.show = function show(relatedTarget) {
+ var _this = this;
- value: function toggle(relatedTarget) {
- return this._isShown ? this.hide() : this.show(relatedTarget);
+ if (this._isTransitioning) {
+ return;
}
- }, {
- key: 'show',
- value: function show(relatedTarget) {
- var _this = this;
- if (this._isTransitioning) {
- return;
- }
+ if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
+ this._isTransitioning = true;
+ }
- if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
- this._isTransitioning = true;
- }
+ var showEvent = $.Event(Event.SHOW, {
+ relatedTarget: relatedTarget
+ });
+ $(this._element).trigger(showEvent);
- var showEvent = $.Event(Event.SHOW, {
- relatedTarget: relatedTarget
- });
+ if (this._isShown || showEvent.isDefaultPrevented()) {
+ return;
+ }
- $(this._element).trigger(showEvent);
+ this._isShown = true;
- if (this._isShown || showEvent.isDefaultPrevented()) {
- return;
- }
+ this._checkScrollbar();
- this._isShown = true;
+ this._setScrollbar();
- this._checkScrollbar();
- this._setScrollbar();
+ this._adjustDialog();
- this._adjustDialog();
+ $(document.body).addClass(ClassName.OPEN);
- $(document.body).addClass(ClassName.OPEN);
+ this._setEscapeEvent();
- this._setEscapeEvent();
- this._setResizeEvent();
+ this._setResizeEvent();
- $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
- return _this.hide(event);
+ $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
+ return _this.hide(event);
+ });
+ $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
+ $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
+ if ($(event.target).is(_this._element)) {
+ _this._ignoreBackdropClick = true;
+ }
});
+ });
- $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
- $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
- if ($(event.target).is(_this._element)) {
- _this._ignoreBackdropClick = true;
- }
- });
- });
+ this._showBackdrop(function () {
+ return _this._showElement(relatedTarget);
+ });
+ };
- this._showBackdrop(function () {
- return _this._showElement(relatedTarget);
- });
+ _proto.hide = function hide(event) {
+ var _this2 = this;
+
+ if (event) {
+ event.preventDefault();
}
- }, {
- key: 'hide',
- value: function hide(event) {
- var _this2 = this;
- if (event) {
- event.preventDefault();
- }
+ if (this._isTransitioning || !this._isShown) {
+ return;
+ }
- if (this._isTransitioning || !this._isShown) {
- return;
- }
+ var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
- var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
+ if (transition) {
+ this._isTransitioning = true;
+ }
- if (transition) {
- this._isTransitioning = true;
- }
+ var hideEvent = $.Event(Event.HIDE);
+ $(this._element).trigger(hideEvent);
- var hideEvent = $.Event(Event.HIDE);
+ if (!this._isShown || hideEvent.isDefaultPrevented()) {
+ return;
+ }
- $(this._element).trigger(hideEvent);
+ this._isShown = false;
- if (!this._isShown || hideEvent.isDefaultPrevented()) {
- return;
- }
+ this._setEscapeEvent();
- this._isShown = false;
+ this._setResizeEvent();
- this._setEscapeEvent();
- this._setResizeEvent();
+ $(document).off(Event.FOCUSIN);
+ $(this._element).removeClass(ClassName.SHOW);
+ $(this._element).off(Event.CLICK_DISMISS);
+ $(this._dialog).off(Event.MOUSEDOWN_DISMISS);
- $(document).off(Event.FOCUSIN);
+ if (transition) {
+ $(this._element).one(Util.TRANSITION_END, function (event) {
+ return _this2._hideModal(event);
+ }).emulateTransitionEnd(TRANSITION_DURATION);
+ } else {
+ this._hideModal();
+ }
+ };
+
+ _proto.dispose = function dispose() {
+ $.removeData(this._element, DATA_KEY);
+ $(window, document, this._element, this._backdrop).off(EVENT_KEY);
+ this._config = null;
+ this._element = null;
+ this._dialog = null;
+ this._backdrop = null;
+ this._isShown = null;
+ this._isBodyOverflowing = null;
+ this._ignoreBackdropClick = null;
+ this._scrollbarWidth = null;
+ };
- $(this._element).removeClass(ClassName.SHOW);
+ _proto.handleUpdate = function handleUpdate() {
+ this._adjustDialog();
+ }; // private
- $(this._element).off(Event.CLICK_DISMISS);
- $(this._dialog).off(Event.MOUSEDOWN_DISMISS);
- if (transition) {
+ _proto._getConfig = function _getConfig(config) {
+ config = $.extend({}, Default, config);
+ Util.typeCheckConfig(NAME, config, DefaultType);
+ return config;
+ };
- $(this._element).one(Util.TRANSITION_END, function (event) {
- return _this2._hideModal(event);
- }).emulateTransitionEnd(TRANSITION_DURATION);
- } else {
- this._hideModal();
- }
- }
- }, {
- key: 'dispose',
- value: function dispose() {
- $.removeData(this._element, DATA_KEY);
+ _proto._showElement = function _showElement(relatedTarget) {
+ var _this3 = this;
- $(window, document, this._element, this._backdrop).off(EVENT_KEY);
+ var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
- this._config = null;
- this._element = null;
- this._dialog = null;
- this._backdrop = null;
- this._isShown = null;
- this._isBodyOverflowing = null;
- this._ignoreBackdropClick = null;
- this._scrollbarWidth = null;
+ if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
+ // don't move modals dom position
+ document.body.appendChild(this._element);
}
- }, {
- key: 'handleUpdate',
- value: function handleUpdate() {
- this._adjustDialog();
+
+ this._element.style.display = 'block';
+
+ this._element.removeAttribute('aria-hidden');
+
+ this._element.scrollTop = 0;
+
+ if (transition) {
+ Util.reflow(this._element);
}
- // private
+ $(this._element).addClass(ClassName.SHOW);
- }, {
- key: '_getConfig',
- value: function _getConfig(config) {
- config = $.extend({}, Default, config);
- Util.typeCheckConfig(NAME, config, DefaultType);
- return config;
+ if (this._config.focus) {
+ this._enforceFocus();
}
- }, {
- key: '_showElement',
- value: function _showElement(relatedTarget) {
- var _this3 = this;
- var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
+ var shownEvent = $.Event(Event.SHOWN, {
+ relatedTarget: relatedTarget
+ });
- if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
- // don't move modals dom position
- document.body.appendChild(this._element);
+ var transitionComplete = function transitionComplete() {
+ if (_this3._config.focus) {
+ _this3._element.focus();
}
- this._element.style.display = 'block';
- this._element.removeAttribute('aria-hidden');
- this._element.scrollTop = 0;
+ _this3._isTransitioning = false;
+ $(_this3._element).trigger(shownEvent);
+ };
- if (transition) {
- Util.reflow(this._element);
- }
+ if (transition) {
+ $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
+ } else {
+ transitionComplete();
+ }
+ };
- $(this._element).addClass(ClassName.SHOW);
+ _proto._enforceFocus = function _enforceFocus() {
+ var _this4 = this;
- if (this._config.focus) {
- this._enforceFocus();
+ $(document).off(Event.FOCUSIN) // guard against infinite focus loop
+ .on(Event.FOCUSIN, function (event) {
+ if (document !== event.target && _this4._element !== event.target && !$(_this4._element).has(event.target).length) {
+ _this4._element.focus();
}
+ });
+ };
- var shownEvent = $.Event(Event.SHOWN, {
- relatedTarget: relatedTarget
- });
+ _proto._setEscapeEvent = function _setEscapeEvent() {
+ var _this5 = this;
- var transitionComplete = function transitionComplete() {
- if (_this3._config.focus) {
- _this3._element.focus();
- }
- _this3._isTransitioning = false;
- $(_this3._element).trigger(shownEvent);
- };
+ if (this._isShown && this._config.keyboard) {
+ $(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
+ if (event.which === ESCAPE_KEYCODE) {
+ event.preventDefault();
- if (transition) {
- $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
- } else {
- transitionComplete();
- }
- }
- }, {
- key: '_enforceFocus',
- value: function _enforceFocus() {
- var _this4 = this;
-
- $(document).off(Event.FOCUSIN) // guard against infinite focus loop
- .on(Event.FOCUSIN, function (event) {
- if (document !== event.target && _this4._element !== event.target && !$(_this4._element).has(event.target).length) {
- _this4._element.focus();
+ _this5.hide();
}
});
+ } else if (!this._isShown) {
+ $(this._element).off(Event.KEYDOWN_DISMISS);
}
- }, {
- key: '_setEscapeEvent',
- value: function _setEscapeEvent() {
- var _this5 = this;
-
- if (this._isShown && this._config.keyboard) {
- $(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
- if (event.which === ESCAPE_KEYCODE) {
- event.preventDefault();
- _this5.hide();
- }
- });
- } else if (!this._isShown) {
- $(this._element).off(Event.KEYDOWN_DISMISS);
- }
- }
- }, {
- key: '_setResizeEvent',
- value: function _setResizeEvent() {
- var _this6 = this;
-
- if (this._isShown) {
- $(window).on(Event.RESIZE, function (event) {
- return _this6.handleUpdate(event);
- });
- } else {
- $(window).off(Event.RESIZE);
- }
- }
- }, {
- key: '_hideModal',
- value: function _hideModal() {
- var _this7 = this;
-
- this._element.style.display = 'none';
- this._element.setAttribute('aria-hidden', true);
- this._isTransitioning = false;
- this._showBackdrop(function () {
- $(document.body).removeClass(ClassName.OPEN);
- _this7._resetAdjustments();
- _this7._resetScrollbar();
- $(_this7._element).trigger(Event.HIDDEN);
+ };
+
+ _proto._setResizeEvent = function _setResizeEvent() {
+ var _this6 = this;
+
+ if (this._isShown) {
+ $(window).on(Event.RESIZE, function (event) {
+ return _this6.handleUpdate(event);
});
+ } else {
+ $(window).off(Event.RESIZE);
}
- }, {
- key: '_removeBackdrop',
- value: function _removeBackdrop() {
- if (this._backdrop) {
- $(this._backdrop).remove();
- this._backdrop = null;
- }
- }
- }, {
- key: '_showBackdrop',
- value: function _showBackdrop(callback) {
- var _this8 = this;
+ };
- var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
+ _proto._hideModal = function _hideModal() {
+ var _this7 = this;
- if (this._isShown && this._config.backdrop) {
- var doAnimate = Util.supportsTransitionEnd() && animate;
+ this._element.style.display = 'none';
- this._backdrop = document.createElement('div');
- this._backdrop.className = ClassName.BACKDROP;
+ this._element.setAttribute('aria-hidden', true);
- if (animate) {
- $(this._backdrop).addClass(animate);
- }
+ this._isTransitioning = false;
- $(this._backdrop).appendTo(document.body);
-
- $(this._element).on(Event.CLICK_DISMISS, function (event) {
- if (_this8._ignoreBackdropClick) {
- _this8._ignoreBackdropClick = false;
- return;
- }
- if (event.target !== event.currentTarget) {
- return;
- }
- if (_this8._config.backdrop === 'static') {
- _this8._element.focus();
- } else {
- _this8.hide();
- }
- });
-
- if (doAnimate) {
- Util.reflow(this._backdrop);
- }
+ this._showBackdrop(function () {
+ $(document.body).removeClass(ClassName.OPEN);
+
+ _this7._resetAdjustments();
+
+ _this7._resetScrollbar();
+
+ $(_this7._element).trigger(Event.HIDDEN);
+ });
+ };
+
+ _proto._removeBackdrop = function _removeBackdrop() {
+ if (this._backdrop) {
+ $(this._backdrop).remove();
+ this._backdrop = null;
+ }
+ };
+
+ _proto._showBackdrop = function _showBackdrop(callback) {
+ var _this8 = this;
+
+ var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
- $(this._backdrop).addClass(ClassName.SHOW);
+ if (this._isShown && this._config.backdrop) {
+ var doAnimate = Util.supportsTransitionEnd() && animate;
+ this._backdrop = document.createElement('div');
+ this._backdrop.className = ClassName.BACKDROP;
- if (!callback) {
+ if (animate) {
+ $(this._backdrop).addClass(animate);
+ }
+
+ $(this._backdrop).appendTo(document.body);
+ $(this._element).on(Event.CLICK_DISMISS, function (event) {
+ if (_this8._ignoreBackdropClick) {
+ _this8._ignoreBackdropClick = false;
return;
}
- if (!doAnimate) {
- callback();
+ if (event.target !== event.currentTarget) {
return;
}
- $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
- } else if (!this._isShown && this._backdrop) {
- $(this._backdrop).removeClass(ClassName.SHOW);
-
- var callbackRemove = function callbackRemove() {
- _this8._removeBackdrop();
- if (callback) {
- callback();
- }
- };
-
- if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
- $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
+ if (_this8._config.backdrop === 'static') {
+ _this8._element.focus();
} else {
- callbackRemove();
+ _this8.hide();
}
- } else if (callback) {
- callback();
+ });
+
+ if (doAnimate) {
+ Util.reflow(this._backdrop);
}
- }
- // ----------------------------------------------------------------------
- // the following methods are used to handle overflowing modals
- // todo (fat): these should probably be refactored out of modal.js
- // ----------------------------------------------------------------------
+ $(this._backdrop).addClass(ClassName.SHOW);
- }, {
- key: '_adjustDialog',
- value: function _adjustDialog() {
- var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+ if (!callback) {
+ return;
+ }
- if (!this._isBodyOverflowing && isModalOverflowing) {
- this._element.style.paddingLeft = this._scrollbarWidth + 'px';
+ if (!doAnimate) {
+ callback();
+ return;
}
- if (this._isBodyOverflowing && !isModalOverflowing) {
- this._element.style.paddingRight = this._scrollbarWidth + 'px';
+ $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
+ } else if (!this._isShown && this._backdrop) {
+ $(this._backdrop).removeClass(ClassName.SHOW);
+
+ var callbackRemove = function callbackRemove() {
+ _this8._removeBackdrop();
+
+ if (callback) {
+ callback();
+ }
+ };
+
+ if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
+ $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
+ } else {
+ callbackRemove();
}
+ } else if (callback) {
+ callback();
}
- }, {
- key: '_resetAdjustments',
- value: function _resetAdjustments() {
- this._element.style.paddingLeft = '';
- this._element.style.paddingRight = '';
- }
- }, {
- key: '_checkScrollbar',
- value: function _checkScrollbar() {
- var rect = document.body.getBoundingClientRect();
- this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
- this._scrollbarWidth = this._getScrollbarWidth();
+ }; // ----------------------------------------------------------------------
+ // the following methods are used to handle overflowing modals
+ // todo (fat): these should probably be refactored out of modal.js
+ // ----------------------------------------------------------------------
+
+
+ _proto._adjustDialog = function _adjustDialog() {
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
+
+ if (!this._isBodyOverflowing && isModalOverflowing) {
+ this._element.style.paddingLeft = this._scrollbarWidth + "px";
}
- }, {
- key: '_setScrollbar',
- value: function _setScrollbar() {
- var _this9 = this;
-
- 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
-
- // Adjust fixed content padding
- $(Selector.FIXED_CONTENT).each(function (index, element) {
- var actualPadding = $(element)[0].style.paddingRight;
- var calculatedPadding = $(element).css('padding-right');
- $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + 'px');
- });
-
- // Adjust sticky content margin
- $(Selector.STICKY_CONTENT).each(function (index, element) {
- var actualMargin = $(element)[0].style.marginRight;
- var calculatedMargin = $(element).css('margin-right');
- $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + 'px');
- });
-
- // Adjust navbar-toggler margin
- $(Selector.NAVBAR_TOGGLER).each(function (index, element) {
- var actualMargin = $(element)[0].style.marginRight;
- var calculatedMargin = $(element).css('margin-right');
- $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + 'px');
- });
-
- // Adjust body padding
- var actualPadding = document.body.style.paddingRight;
- var calculatedPadding = $('body').css('padding-right');
- $('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + 'px');
- }
+
+ if (this._isBodyOverflowing && !isModalOverflowing) {
+ this._element.style.paddingRight = this._scrollbarWidth + "px";
}
- }, {
- key: '_resetScrollbar',
- value: function _resetScrollbar() {
- // Restore fixed content padding
+ };
+
+ _proto._resetAdjustments = function _resetAdjustments() {
+ this._element.style.paddingLeft = '';
+ this._element.style.paddingRight = '';
+ };
+
+ _proto._checkScrollbar = function _checkScrollbar() {
+ var rect = document.body.getBoundingClientRect();
+ this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
+ this._scrollbarWidth = this._getScrollbarWidth();
+ };
+
+ _proto._setScrollbar = function _setScrollbar() {
+ var _this9 = this;
+
+ 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
+ // Adjust fixed content padding
$(Selector.FIXED_CONTENT).each(function (index, element) {
- var padding = $(element).data('padding-right');
- if (typeof padding !== 'undefined') {
- $(element).css('padding-right', padding).removeData('padding-right');
- }
- });
+ var actualPadding = $(element)[0].style.paddingRight;
+ var calculatedPadding = $(element).css('padding-right');
+ $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
+ }); // Adjust sticky content margin
+
+ $(Selector.STICKY_CONTENT).each(function (index, element) {
+ var actualMargin = $(element)[0].style.marginRight;
+ var calculatedMargin = $(element).css('margin-right');
+ $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
+ }); // Adjust navbar-toggler margin
+
+ $(Selector.NAVBAR_TOGGLER).each(function (index, element) {
+ var actualMargin = $(element)[0].style.marginRight;
+ var calculatedMargin = $(element).css('margin-right');
+ $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px");
+ }); // Adjust body padding
+
+ var actualPadding = document.body.style.paddingRight;
+ var calculatedPadding = $('body').css('padding-right');
+ $('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
+ }
+ };
- // Restore sticky content and navbar-toggler margin
- $(Selector.STICKY_CONTENT + ', ' + Selector.NAVBAR_TOGGLER).each(function (index, element) {
- var margin = $(element).data('margin-right');
- if (typeof margin !== 'undefined') {
- $(element).css('margin-right', margin).removeData('margin-right');
- }
- });
+ _proto._resetScrollbar = function _resetScrollbar() {
+ // Restore fixed content padding
+ $(Selector.FIXED_CONTENT).each(function (index, element) {
+ var padding = $(element).data('padding-right');
- // Restore body padding
- var padding = $('body').data('padding-right');
if (typeof padding !== 'undefined') {
- $('body').css('padding-right', padding).removeData('padding-right');
+ $(element).css('padding-right', padding).removeData('padding-right');
}
+ }); // Restore sticky content and navbar-toggler margin
+
+ $(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) {
+ var margin = $(element).data('margin-right');
+
+ if (typeof margin !== 'undefined') {
+ $(element).css('margin-right', margin).removeData('margin-right');
+ }
+ }); // Restore body padding
+
+ var padding = $('body').data('padding-right');
+
+ if (typeof padding !== 'undefined') {
+ $('body').css('padding-right', padding).removeData('padding-right');
}
- }, {
- key: '_getScrollbarWidth',
- value: function _getScrollbarWidth() {
- // thx d.walsh
- var scrollDiv = document.createElement('div');
- scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
- document.body.appendChild(scrollDiv);
- var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
- document.body.removeChild(scrollDiv);
- return scrollbarWidth;
- }
+ };
- // static
+ _proto._getScrollbarWidth = function _getScrollbarWidth() {
+ // thx d.walsh
+ var scrollDiv = document.createElement('div');
+ scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
+ document.body.appendChild(scrollDiv);
+ var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
+ document.body.removeChild(scrollDiv);
+ return scrollbarWidth;
+ }; // static
- }], [{
- key: '_jQueryInterface',
- value: function _jQueryInterface(config, relatedTarget) {
- return this.each(function () {
- var data = $(this).data(DATA_KEY);
- var _config = $.extend({}, Modal.Default, $(this).data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);
- if (!data) {
- data = new Modal(this, _config);
- $(this).data(DATA_KEY, data);
- }
+ Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
+ return this.each(function () {
+ var data = $(this).data(DATA_KEY);
- if (typeof config === 'string') {
- if (typeof data[config] === 'undefined') {
- throw new Error('No method named "' + config + '"');
- }
- data[config](relatedTarget);
- } else if (_config.show) {
- data.show(relatedTarget);
+ var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config);
+
+ if (!data) {
+ data = new Modal(this, _config);
+ $(this).data(DATA_KEY, data);
+ }
+
+ if (typeof config === 'string') {
+ if (typeof data[config] === 'undefined') {
+ throw new Error("No method named \"" + config + "\"");
}
- });
- }
- }, {
- key: 'VERSION',
+
+ data[config](relatedTarget);
+ } else if (_config.show) {
+ data.show(relatedTarget);
+ }
+ });
+ };
+
+ _createClass(Modal, null, [{
+ key: "VERSION",
get: function get() {
return VERSION;
}
}, {
- key: 'Default',
+ key: "Default",
get: function get() {
return Default;
}
@@ -558,17 +524,17 @@ var Modal = function () {
return Modal;
}();
-
/**
* ------------------------------------------------------------------------
* Data Api implementation
* ------------------------------------------------------------------------
*/
+
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
var _this10 = this;
- var target = void 0;
+ var target;
var selector = Util.getSelectorFromElement(this);
if (selector) {
@@ -596,7 +562,6 @@ var Modal = function () {
Modal._jQueryInterface.call($(target), config, this);
});
-
/**
* ------------------------------------------------------------------------
* jQuery
@@ -605,6 +570,7 @@ var Modal = function () {
$.fn[NAME] = Modal._jQueryInterface;
$.fn[NAME].Constructor = Modal;
+
$.fn[NAME].noConflict = function () {
$.fn[NAME] = JQUERY_NO_CONFLICT;
return Modal._jQueryInterface;