UNPKG

react-modal-construction-kit

Version:
37 lines (30 loc) 1.08 kB
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() {}