From ae50bb784506b4aa6b79598c2000c1d20843b5fd Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Sat, 18 Mar 2017 18:47:57 -0700 Subject: grunt --- js/dist/modal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'js/dist/modal.js') diff --git a/js/dist/modal.js b/js/dist/modal.js index 73d203eda..8138f1949 100644 --- a/js/dist/modal.js +++ b/js/dist/modal.js @@ -436,7 +436,7 @@ var Modal = function ($) { var scrollDiv = document.createElement('div'); scrollDiv.className = ClassName.SCROLLBAR_MEASURER; document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; + var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; document.body.removeChild(scrollDiv); return scrollbarWidth; }; -- cgit v1.2.3 From 4ab06ca4534da28858c013e765a9ad34f508e4d7 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Sun, 26 Mar 2017 11:26:31 -0700 Subject: grunt --- js/dist/modal.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'js/dist/modal.js') diff --git a/js/dist/modal.js b/js/dist/modal.js index 8138f1949..8086d2ff6 100644 --- a/js/dist/modal.js +++ b/js/dist/modal.js @@ -209,6 +209,10 @@ var Modal = function ($) { this._scrollbarWidth = null; }; + Modal.prototype.handleUpdate = function handleUpdate() { + this._adjustDialog(); + }; + // private Modal.prototype._getConfig = function _getConfig(config) { @@ -290,7 +294,7 @@ var Modal = function ($) { if (this._isShown) { $(window).on(Event.RESIZE, function (event) { - return _this6._handleUpdate(event); + return _this6.handleUpdate(event); }); } else { $(window).off(Event.RESIZE); @@ -391,10 +395,6 @@ var Modal = function ($) { // todo (fat): these should probably be refactored out of modal.js // ---------------------------------------------------------------------- - Modal.prototype._handleUpdate = function _handleUpdate() { - this._adjustDialog(); - }; - Modal.prototype._adjustDialog = function _adjustDialog() { var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; -- cgit v1.2.3 From 49b6cf845d3d3bf49197a529548489f9a1a76709 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Sat, 1 Apr 2017 19:18:29 -0700 Subject: grunt --- js/dist/modal.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'js/dist/modal.js') diff --git a/js/dist/modal.js b/js/dist/modal.js index 8086d2ff6..9185ae7f2 100644 --- a/js/dist/modal.js +++ b/js/dist/modal.js @@ -89,7 +89,6 @@ var Modal = function ($) { this._isShown = false; this._isBodyOverflowing = false; this._ignoreBackdropClick = false; - this._isTransitioning = false; this._originalBodyPadding = 0; this._scrollbarWidth = 0; } @@ -106,12 +105,13 @@ var Modal = function ($) { var _this = this; if (this._isTransitioning) { - throw new Error('Modal is transitioning'); + return; } if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { this._isTransitioning = true; } + var showEvent = $.Event(Event.SHOW, { relatedTarget: relatedTarget }); @@ -156,16 +156,18 @@ var Modal = function ($) { event.preventDefault(); } - if (this._isTransitioning) { - throw new Error('Modal is transitioning'); + if (this._isTransitioning || !this._isShown) { + return; } var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); + if (transition) { this._isTransitioning = true; } var hideEvent = $.Event(Event.HIDE); + $(this._element).trigger(hideEvent); if (!this._isShown || hideEvent.isDefaultPrevented()) { @@ -185,6 +187,7 @@ var Modal = function ($) { $(this._dialog).off(Event.MOUSEDOWN_DISMISS); if (transition) { + $(this._element).one(Util.TRANSITION_END, function (event) { return _this2._hideModal(event); }).emulateTransitionEnd(TRANSITION_DURATION); @@ -305,7 +308,7 @@ var Modal = function ($) { var _this7 = this; this._element.style.display = 'none'; - this._element.setAttribute('aria-hidden', 'true'); + this._element.setAttribute('aria-hidden', true); this._isTransitioning = false; this._showBackdrop(function () { $(document.body).removeClass(ClassName.OPEN); -- cgit v1.2.3 From 364e01885fadeb341e1000d6f50291e5a5ada199 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Sat, 8 Apr 2017 13:22:53 -0700 Subject: grunt --- js/dist/modal.js | 58 ++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 48 insertions(+), 10 deletions(-) (limited to 'js/dist/modal.js') diff --git a/js/dist/modal.js b/js/dist/modal.js index 9185ae7f2..9c661e7e2 100644 --- a/js/dist/modal.js +++ b/js/dist/modal.js @@ -69,7 +69,8 @@ var Modal = function ($) { DIALOG: '.modal-dialog', DATA_TOGGLE: '[data-toggle="modal"]', DATA_DISMISS: '[data-dismiss="modal"]', - FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top' + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', + NAVBAR_TOGGLER: '.navbar-toggler' }; /** @@ -208,7 +209,6 @@ var Modal = function ($) { this._isShown = null; this._isBodyOverflowing = null; this._ignoreBackdropClick = null; - this._originalBodyPadding = null; this._scrollbarWidth = null; }; @@ -421,17 +421,55 @@ var Modal = function ($) { }; Modal.prototype._setScrollbar = function _setScrollbar() { - var bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10); - - this._originalBodyPadding = document.body.style.paddingRight || ''; + var _this9 = this; if (this._isBodyOverflowing) { - document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px'; + // 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 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'); } }; Modal.prototype._resetScrollbar = function _resetScrollbar() { - document.body.style.paddingRight = this._originalBodyPadding; + // Restore 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'); + } + }); + + // Restore navbar-toggler margin + $(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'); + } }; Modal.prototype._getScrollbarWidth = function _getScrollbarWidth() { @@ -489,7 +527,7 @@ var Modal = function ($) { */ $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - var _this9 = this; + var _this10 = this; var target = void 0; var selector = Util.getSelectorFromElement(this); @@ -511,8 +549,8 @@ var Modal = function ($) { } $target.one(Event.HIDDEN, function () { - if ($(_this9).is(':visible')) { - _this9.focus(); + if ($(_this10).is(':visible')) { + _this10.focus(); } }); }); -- cgit v1.2.3