@oruga-ui/oruga-next
Version:
UI components for Vue.js and CSS framework agnostic
42 lines (41 loc) • 1.5 kB
JavaScript
;
/*! Oruga v0.11.0 | MIT License | github.com/oruga-ui/oruga */
const vue = require("vue");
const config = require("./config-eYBvpFOZ.cjs");
const defineClasses = require("./defineClasses-Cqhbv-UT.cjs");
function usePreventScrolling(clipScroll) {
const scrollClipClasses = defineClasses.defineClasses([
"scrollClipClass",
"o-scroll-clip"
]);
const scrollKeepClasses = defineClasses.defineClasses([
"scrollKeepClass",
"o-scroll-keep"
]);
const scrollClass = vue.computed(
() => defineClasses.getActiveClasses(
vue.toValue(clipScroll) ? scrollClipClasses.value : scrollKeepClasses.value
)
);
const savedScrollTop = vue.ref();
vue.onBeforeUnmount(() => toggleScroll(false));
function toggleScroll(active) {
if (!config.isClient) return;
if (!scrollClass.value) return;
savedScrollTop.value = savedScrollTop.value ? savedScrollTop.value : document.documentElement.scrollTop;
if (active) document.body.classList.add(...scrollClass.value);
else document.body.classList.remove(...scrollClass.value);
if (!vue.toValue(clipScroll)) {
if (active) {
document.body.style.top = `-${savedScrollTop.value}px`;
} else {
document.documentElement.scrollTop = savedScrollTop.value;
document.body.style.top = "";
savedScrollTop.value = void 0;
}
}
}
return toggleScroll;
}
exports.usePreventScrolling = usePreventScrolling;
//# sourceMappingURL=usePreventScrolling-Ct3PCoON.cjs.map