@@ -5,13 +5,17 @@ import { noScrollableParent, getScrollbarWidth } from '../helper/scroll.helper'
55type ScrollParams = {
66 overlay : Ref < Element | undefined >
77 content : Ref < Element | undefined >
8+ contentActiveClass : string
89 fullscreen : boolean
10+ contentFullscreenClass : string
911}
1012
1113export const useScroll = ( {
1214 overlay,
1315 content,
16+ contentActiveClass,
1417 fullscreen,
18+ contentFullscreenClass,
1519} : ScrollParams ) => {
1620 let disabled = false
1721 let disableType : 'byEvents' | 'byOverflow'
@@ -25,15 +29,17 @@ export const useScroll = ({
2529 }
2630 }
2731
32+ const scrollbarWidth = getScrollbarWidth ( )
33+ const zeroScrollBar = scrollbarWidth === 0
34+
2835 const disableScroll = ( ) => {
2936 if ( disabled ) {
3037 return
3138 }
3239
33- const scrollbarWidth = getScrollbarWidth ( )
34-
35- // The mobile has a scroll bar width of 0
36- if ( scrollbarWidth === 0 || fullscreen ) {
40+ // The mobile has the scroll bar width of 0
41+ // hide the scroll bar for fullscreen mode
42+ if ( zeroScrollBar || fullscreen ) {
3743 disableType = 'byOverflow'
3844 document . documentElement . classList . add ( 'overflow-y-hidden' )
3945 } else {
@@ -54,7 +60,12 @@ export const useScroll = ({
5460 if ( disableType === 'byEvents' ) {
5561 window . removeEventListener ( 'wheel' , eventListener )
5662 } else if ( disableType === 'byOverflow' ) {
57- document . documentElement . classList . remove ( 'overflow-y-hidden' )
63+ const activeContentElements = document . getElementsByClassName ( contentActiveClass )
64+ const activeFullscreenContentElements = document . getElementsByClassName ( contentFullscreenClass )
65+
66+ if ( ( ! zeroScrollBar && fullscreen && activeFullscreenContentElements . length === 1 ) || activeContentElements . length === 1 ) {
67+ document . documentElement . classList . remove ( 'overflow-y-hidden' )
68+ }
5869 }
5970
6071 disabled = false
0 commit comments