|
13 | 13 | import {AriaModalOverlayProps, DismissButton, Overlay, useIsSSR, useModalOverlay} from 'react-aria';
|
14 | 14 | import {ContextValue, Provider, RenderProps, SlotProps, useContextProps, useRenderProps} from './utils';
|
15 | 15 | import {DOMAttributes, forwardRefType, GlobalDOMAttributes, RefObject} from '@react-types/shared';
|
16 |
| -import {filterDOMProps, mergeProps, mergeRefs, useEnterAnimation, useExitAnimation, useObjectRef, useViewportSize} from '@react-aria/utils'; |
| 16 | +import {filterDOMProps, isScrollable, mergeProps, mergeRefs, useEnterAnimation, useExitAnimation, useObjectRef, useViewportSize} from '@react-aria/utils'; |
17 | 17 | import {OverlayTriggerProps, OverlayTriggerState, useOverlayTriggerState} from 'react-stately';
|
18 | 18 | import {OverlayTriggerStateContext} from './Dialog';
|
19 | 19 | import React, {createContext, ForwardedRef, forwardRef, useContext, useMemo, useRef} from 'react';
|
@@ -171,10 +171,18 @@ function ModalOverlayInner({UNSTABLE_portalContainer, ...props}: ModalOverlayInn
|
171 | 171 | });
|
172 | 172 |
|
173 | 173 | let viewport = useViewportSize();
|
| 174 | + let pageHeight: number | undefined = undefined; |
| 175 | + if (typeof document !== 'undefined') { |
| 176 | + let scrollingElement = isScrollable(document.body) ? document.body : document.scrollingElement || document.documentElement; |
| 177 | + // Prevent Firefox from adding scrollbars when the page has a fractional height. |
| 178 | + let fractionalHeightDifference = scrollingElement.getBoundingClientRect().height % 1; |
| 179 | + pageHeight = scrollingElement.scrollHeight - fractionalHeightDifference; |
| 180 | + } |
| 181 | + |
174 | 182 | let style = {
|
175 | 183 | ...renderProps.style,
|
176 | 184 | '--visual-viewport-height': viewport.height + 'px',
|
177 |
| - '--page-height': typeof document !== 'undefined' ? document.body.getBoundingClientRect().height + 'px' : undefined |
| 185 | + '--page-height': pageHeight !== undefined ? pageHeight + 'px' : undefined |
178 | 186 | };
|
179 | 187 |
|
180 | 188 | return (
|
|
0 commit comments