@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
JavaScript
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;
}