UNPKG

@awsui/components-react

Version:

AWS UI is a collection of [React](https://reactjs.org/) components that help create intuitive, responsive, and accessible user experiences for web applications. It is developed by Amazon Web Services (AWS). This work is available under the terms of the [A

37 lines (36 loc) 1.43 kB
import styles from './styles.css.js'; import { browserScrollbarSize } from '../internal/utils/scrollable-containers'; var initialBodyPaddingRightStyle = undefined; export function disableBodyScrolling() { setBodyScrollbarPadding(); document.body.classList.add(styles['modal-open']); } export function enableBodyScrolling() { document.body.classList.remove(styles['modal-open']); restoreBodyScrollbarPadding(); } function setBodyScrollbarPadding() { var _a; if (bodyHasScrollbar()) { initialBodyPaddingRightStyle = document.body.style.paddingRight; var initialBodyPaddingRight = computedBodyPaddingRightPixels(); var scrollbarWidth = (_a = browserScrollbarSize()) === null || _a === void 0 ? void 0 : _a.width; var newBodyPaddingRight = initialBodyPaddingRight + scrollbarWidth; document.body.style.paddingRight = newBodyPaddingRight + 'px'; } } function computedBodyPaddingRightPixels() { return parseInt(window.getComputedStyle(document.body).paddingRight, 10); } function restoreBodyScrollbarPadding() { if (initialBodyPaddingRightStyle) { document.body.style.setProperty('padding-right', initialBodyPaddingRightStyle); } else { document.body.style.removeProperty('padding-right'); } initialBodyPaddingRightStyle = undefined; } function bodyHasScrollbar() { return document.body.clientWidth < window.innerWidth; }