@oruga-ui/oruga-next
Version:
UI components for Vue.js and CSS framework agnostic
43 lines (42 loc) • 1.48 kB
JavaScript
/*! Oruga v0.11.0 | MIT License | github.com/oruga-ui/oruga */
import { computed, toValue, ref, onBeforeUnmount } from "vue";
import { i as isClient } from "./config-Dl7tu_Ly.mjs";
import { d as defineClasses, g as getActiveClasses } from "./defineClasses-CWB9NuS-.mjs";
function usePreventScrolling(clipScroll) {
const scrollClipClasses = defineClasses([
"scrollClipClass",
"o-scroll-clip"
]);
const scrollKeepClasses = defineClasses([
"scrollKeepClass",
"o-scroll-keep"
]);
const scrollClass = computed(
() => getActiveClasses(
toValue(clipScroll) ? scrollClipClasses.value : scrollKeepClasses.value
)
);
const savedScrollTop = ref();
onBeforeUnmount(() => toggleScroll(false));
function toggleScroll(active) {
if (!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 (!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;
}
export {
usePreventScrolling as u
};
//# sourceMappingURL=usePreventScrolling-CRyyOkPi.mjs.map