@@ -11,11 +11,13 @@ const Modal = {
1111 previousNavPaddingRight : undefined ,
1212 trappedElement : null ,
1313 trappedFocus : null ,
14+ bodyResizeDisableScrollLockHandler : null ,
1415
1516 defaultSettings : {
1617 reserveScrollBarGap : true ,
1718 reserveNavScrollBarGap : true ,
1819 disableFocusTrap : false ,
20+ disableScrollLockAtWidth : null ,
1921 } ,
2022
2123 disableBodyScroll ( scrollable , settings = { } ) {
@@ -59,6 +61,23 @@ const Modal = {
5961 this . trapFocus ( scrollable ) ;
6062 }
6163 } , 50 ) ;
64+
65+ if ( settings . disableScrollLockAtWidth !== null ) {
66+ this . bodyResizeDisableScrollLockHandler = ( ) => {
67+ settings = Object . assign ( { } , this . defaultSettings , settings ) ;
68+
69+ if ( window . innerWidth >= settings . disableScrollLockAtWidth ) {
70+ enableBodyScroll ( scrollable , settings ) ;
71+ } else {
72+ disableBodyScroll ( scrollable , settings ) ;
73+ }
74+ } ;
75+
76+ window . addEventListener (
77+ "resize" ,
78+ this . bodyResizeDisableScrollLockHandler
79+ ) ;
80+ }
6281 } ,
6382
6483 onModalClosed ( scrollable , settings = { } ) {
@@ -69,6 +88,15 @@ const Modal = {
6988 if ( ! document . querySelectorAll ( "[data-modal]" ) . length ) {
7089 clearAllBodyScrollLocks ( ) ;
7190 }
91+
92+ if ( this . bodyResizeDisableScrollLockHandler !== null ) {
93+ window . removeEventListener (
94+ "resize" ,
95+ this . bodyResizeDisableScrollLockHandler
96+ ) ;
97+
98+ this . bodyResizeDisableScrollLockHandler = null ;
99+ }
72100 } ,
73101
74102 trapFocus ( el ) {
0 commit comments