diff --git a/.babelrc.js b/.babelrc.js index b17738f866f0..1d6404edbe5f 100644 --- a/.babelrc.js +++ b/.babelrc.js @@ -4,14 +4,11 @@ module.exports = { '@babel/preset-env', { loose: true, - modules: false, - exclude: ['transform-typeof-symbol'] + bugfixes: true, + modules: false } ] ], - plugins: [ - '@babel/plugin-proposal-object-rest-spread' - ], env: { test: { plugins: [ 'istanbul' ] diff --git a/Gemfile b/Gemfile index 5b8c4681a199..70ac52c40d1b 100644 --- a/Gemfile +++ b/Gemfile @@ -1,7 +1,7 @@ source 'https://rubygems.org' group :development, :test do - gem 'jekyll', '~> 4.1.0' + gem 'jekyll', '~> 4.1.1' gem 'jekyll-redirect-from', '~> 0.16.0' gem 'jekyll-sitemap', '~> 1.4.0' gem 'jekyll-toc', '~> 0.14.0' diff --git a/Gemfile.lock b/Gemfile.lock index 8dba56a13886..7a9e31dc9570 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -16,7 +16,7 @@ GEM http_parser.rb (0.6.0) i18n (1.8.3) concurrent-ruby (~> 1.0) - jekyll (4.1.0) + jekyll (4.1.1) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -42,7 +42,7 @@ GEM nokogiri (~> 1.10) jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (2.2.1) + kramdown (2.3.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) @@ -79,7 +79,7 @@ PLATFORMS x64-mingw32 DEPENDENCIES - jekyll (~> 4.1.0) + jekyll (~> 4.1.1) jekyll-redirect-from (~> 0.16.0) jekyll-sitemap (~> 1.4.0) jekyll-toc (~> 0.14.0) diff --git a/js/src/modal.js b/js/src/modal.js index 0a2d99a0322c..ec44929f07db 100644 --- a/js/src/modal.js +++ b/js/src/modal.js @@ -238,12 +238,25 @@ class Modal { return } + const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight + + if (!isModalOverflowing) { + this._element.style.overflowY = 'hidden' + } + this._element.classList.add(CLASS_NAME_STATIC) - const modalTransitionDuration = Util.getTransitionDurationFromElement(this._element) + const modalTransitionDuration = Util.getTransitionDurationFromElement(this._dialog) + $(this._element).off(Util.TRANSITION_END) $(this._element).one(Util.TRANSITION_END, () => { this._element.classList.remove(CLASS_NAME_STATIC) + if (!isModalOverflowing) { + $(this._element).one(Util.TRANSITION_END, () => { + this._element.style.overflowY = '' + }) + .emulateTransitionEnd(this._element, modalTransitionDuration) + } }) .emulateTransitionEnd(modalTransitionDuration) this._element.focus() diff --git a/js/tests/browsers.js b/js/tests/browsers.js index da36e497b9ee..183084fefced 100644 --- a/js/tests/browsers.js +++ b/js/tests/browsers.js @@ -28,7 +28,7 @@ const browsers = { os: 'Windows', os_version: '10', browser: 'Edge', - browser_version: 'latest' + browser_version: '15' }, ie11Win10: { base: 'BrowserStack', diff --git a/js/tests/unit/modal.js b/js/tests/unit/modal.js index 5434987d8bfe..3920fe387f6d 100644 --- a/js/tests/unit/modal.js +++ b/js/tests/unit/modal.js @@ -959,4 +959,21 @@ $(function () { keyboard: false }) }) + + QUnit.test('should not overflow when clicking outside of modal-content if backdrop = static', function (assert) { + assert.expect(1) + var done = assert.async() + var $modal = $('