1
0
mirror of https://github.com/robonen/lorem-blog.git synced 2026-08-19 18:02:01 +00:00
Files
lorem-blog/src/shared/composables/useBodyScrollLock.ts
T
2025-07-14 02:48:28 +07:00

37 lines
738 B
TypeScript

import type { MaybeRefOrGetter } from 'vue';
import { onScopeDispose, toValue, watchEffect } from 'vue';
export function useBodyScrollLock(isLocked: MaybeRefOrGetter<boolean>) {
let originalOverflow: string | null = null;
const lock = () => {
if (originalOverflow === null)
originalOverflow = document.body.style.overflow || '';
document.body.style.overflow = 'hidden';
};
const unlock = () => {
if (originalOverflow !== null) {
document.body.style.overflow = originalOverflow;
originalOverflow = null;
}
};
watchEffect(() => {
if (toValue(isLocked))
lock();
else
unlock();
});
onScopeDispose(() => {
unlock();
});
return {
lock,
unlock,
};
}