react-modal-construction-kit
Version:
A flexible Modal component kit for React
37 lines (30 loc) • 1.08 kB
JavaScript
export function getScrollbarWidth() {
var scrollDiv = document.createElement('div');
scrollDiv.style.position = 'absolute';
scrollDiv.style.top = '-9999px';
scrollDiv.style.width = '50px';
scrollDiv.style.height = '50px';
scrollDiv.style.overflow = 'scroll';
document.body.appendChild(scrollDiv);
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
document.body.removeChild(scrollDiv);
return scrollbarWidth;
}
export function setScrollbarWidth(padding) {
document.body.style.paddingRight = padding > 0 ? padding + 'px' : null;
}
export function isBodyOverflowing() {
return document.body.clientWidth < window.innerWidth;
}
export function getOriginalBodyPadding() {
var style = window.getComputedStyle(document.body, null);
return parseInt(style && style.getPropertyValue('padding-right') || 0, 10);
}
export function conditionallyUpdateScrollbar() {
var scrollbarWidth = getScrollbarWidth();
var bodyPadding = 0;
if (isBodyOverflowing()) {
setScrollbarWidth(bodyPadding + scrollbarWidth);
}
}
export function noop() {}