From c9d073b8c78aa4f2104ededfd1c2898215d9a201 Mon Sep 17 00:00:00 2001 From: David Bailey Date: Fri, 25 Aug 2017 07:37:06 +0100 Subject: [PATCH 1/3] Adjust margin for sticky elements on modal Previously white space was visible to the right of sticky elements due to right padding being added to the body. This fixes #23661. --- js/src/modal.js | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/js/src/modal.js b/js/src/modal.js index d21a137fb6e3..831670497476 100644 --- a/js/src/modal.js +++ b/js/src/modal.js @@ -68,6 +68,7 @@ const Modal = (($) => { DATA_TOGGLE : '[data-toggle="modal"]', DATA_DISMISS : '[data-dismiss="modal"]', FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', + STICKY_CONTENT : '.sticky-top', NAVBAR_TOGGLER : '.navbar-toggler' } @@ -441,6 +442,13 @@ const Modal = (($) => { $(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`) }) + // Adjust sticky content margin + $(Selector.STICKY_CONTENT).each((index, element) => { + const actualMargin = $(element)[0].style.marginRight + const calculatedMargin = $(element).css('margin-right') + $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`) + }) + // Adjust navbar-toggler margin $(Selector.NAVBAR_TOGGLER).each((index, element) => { const actualMargin = $(element)[0].style.marginRight @@ -464,8 +472,8 @@ const Modal = (($) => { } }) - // Restore navbar-toggler margin - $(Selector.NAVBAR_TOGGLER).each((index, element) => { + // Restore sticky content and navbar-toggler margin + $(Selector.STICKY_CONTENT).add(Selector.NAVBAR_TOGGLER).each((index, element) => { const margin = $(element).data('margin-right') if (typeof margin !== 'undefined') { $(element).css('margin-right', margin).removeData('margin-right') From 93c123e77ba0fcbcde8cb08fca2bcf7fcb45c7cf Mon Sep 17 00:00:00 2001 From: David Bailey Date: Fri, 25 Aug 2017 10:31:35 +0100 Subject: [PATCH 2/3] Add unit tests for margin of sticky elements on modal --- js/tests/unit/modal.js | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/js/tests/unit/modal.js b/js/tests/unit/modal.js index 09c3524434dd..3b028dc1000f 100644 --- a/js/tests/unit/modal.js +++ b/js/tests/unit/modal.js @@ -433,6 +433,48 @@ $(function () { .bootstrapModal('show') }) + QUnit.test('should adjust the inline margin of sticky elements when opening and restore when closing', function (assert) { + assert.expect(2) + var done = assert.async() + var $element = $('
').appendTo('#qunit-fixture') + var originalPadding = $element.css('margin-right') + + $('