carbon-components-angular
Version:
Next generation components
26 lines • 3.45 kB
JavaScript
let _scrollbarWidth = -1;
export function getScrollbarWidth() {
// lets not recreate this whole thing every time
if (_scrollbarWidth >= 0) {
return _scrollbarWidth;
}
// do the calculations the first time
const outer = document.createElement("div");
outer.style.visibility = "hidden";
outer.style.width = "100px";
outer.style["msOverflowStyle"] = "scrollbar"; // needed for WinJS apps
document.body.appendChild(outer);
const widthNoScroll = outer.offsetWidth;
// force scrollbars
outer.style.overflow = "scroll";
// add innerdiv
const inner = document.createElement("div");
inner.style.width = "100%";
outer.appendChild(inner);
const widthWithScroll = inner.offsetWidth;
// remove divs
outer.parentNode.removeChild(outer);
_scrollbarWidth = widthNoScroll - widthWithScroll;
return _scrollbarWidth;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LXRvb2xzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL3dpbmRvdy10b29scy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFJLGVBQWUsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUV6QixNQUFNLFVBQVUsaUJBQWlCO0lBQ2hDLGdEQUFnRDtJQUNoRCxJQUFJLGVBQWUsSUFBSSxDQUFDLEVBQUU7UUFDekIsT0FBTyxlQUFlLENBQUM7S0FDdkI7SUFFRCxxQ0FBcUM7SUFDckMsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7SUFDbEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDO0lBQzVCLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxXQUFXLENBQUMsQ0FBQyx3QkFBd0I7SUFFdEUsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7SUFFakMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztJQUN4QyxtQkFBbUI7SUFDbkIsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBRWhDLGVBQWU7SUFDZixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztJQUMzQixLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXpCLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFFMUMsY0FBYztJQUNkLEtBQUssQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBDLGVBQWUsR0FBRyxhQUFhLEdBQUcsZUFBZSxDQUFDO0lBQ2xELE9BQU8sZUFBZSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgX3Njcm9sbGJhcldpZHRoID0gLTE7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JvbGxiYXJXaWR0aCgpIHtcblx0Ly8gbGV0cyBub3QgcmVjcmVhdGUgdGhpcyB3aG9sZSB0aGluZyBldmVyeSB0aW1lXG5cdGlmIChfc2Nyb2xsYmFyV2lkdGggPj0gMCkge1xuXHRcdHJldHVybiBfc2Nyb2xsYmFyV2lkdGg7XG5cdH1cblxuXHQvLyBkbyB0aGUgY2FsY3VsYXRpb25zIHRoZSBmaXJzdCB0aW1lXG5cdGNvbnN0IG91dGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0b3V0ZXIuc3R5bGUudmlzaWJpbGl0eSA9IFwiaGlkZGVuXCI7XG5cdG91dGVyLnN0eWxlLndpZHRoID0gXCIxMDBweFwiO1xuXHRvdXRlci5zdHlsZVtcIm1zT3ZlcmZsb3dTdHlsZVwiXSA9IFwic2Nyb2xsYmFyXCI7IC8vIG5lZWRlZCBmb3IgV2luSlMgYXBwc1xuXG5cdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQob3V0ZXIpO1xuXG5cdGNvbnN0IHdpZHRoTm9TY3JvbGwgPSBvdXRlci5vZmZzZXRXaWR0aDtcblx0Ly8gZm9yY2Ugc2Nyb2xsYmFyc1xuXHRvdXRlci5zdHlsZS5vdmVyZmxvdyA9IFwic2Nyb2xsXCI7XG5cblx0Ly8gYWRkIGlubmVyZGl2XG5cdGNvbnN0IGlubmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcblx0aW5uZXIuc3R5bGUud2lkdGggPSBcIjEwMCVcIjtcblx0b3V0ZXIuYXBwZW5kQ2hpbGQoaW5uZXIpO1xuXG5cdGNvbnN0IHdpZHRoV2l0aFNjcm9sbCA9IGlubmVyLm9mZnNldFdpZHRoO1xuXG5cdC8vIHJlbW92ZSBkaXZzXG5cdG91dGVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob3V0ZXIpO1xuXG5cdF9zY3JvbGxiYXJXaWR0aCA9IHdpZHRoTm9TY3JvbGwgLSB3aWR0aFdpdGhTY3JvbGw7XG5cdHJldHVybiBfc2Nyb2xsYmFyV2lkdGg7XG59XG4iXX0=