@neosjs/vitepress-theme
Version:
NeosJS VitePress theme
29 lines (28 loc) • 791 B
JavaScript
import { ref, watch } from "vue";
import { inBrowser, useRoute } from "vitepress";
export function useNav() {
const isScreenOpen = ref(false);
function openScreen() {
isScreenOpen.value = true;
inBrowser && window.addEventListener("resize", closeScreenOnTabletWindow);
}
function closeScreen() {
isScreenOpen.value = false;
inBrowser && window.removeEventListener("resize", closeScreenOnTabletWindow);
}
function toggleScreen() {
isScreenOpen.value ? closeScreen() : openScreen();
}
function closeScreenOnTabletWindow() {
if (!inBrowser) return;
window.outerWidth >= 768 && closeScreen();
}
const route = useRoute();
watch(() => route.path, closeScreen);
return {
isScreenOpen,
openScreen,
closeScreen,
toggleScreen
};
}