Skip to content

Commit

Permalink
client: stop scroll on open navbar
Browse files Browse the repository at this point in the history
  • Loading branch information
Shubham-Lal committed Dec 8, 2023
1 parent c7ad773 commit 86fb3c0
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 10 deletions.
19 changes: 17 additions & 2 deletions client/src/components/Navbar.jsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
import { useEffect } from 'react'
import { Link } from 'react-router-dom'
import useWindowDimension from '../utils/useWindowDimension'
import { navData } from '../utils/navbar'
import { useAuthStore } from '../store/useAuthStore'
import { useAnimStore } from '../store/useAnimStore'
import Skeleton from 'react-loading-skeleton'
import 'react-loading-skeleton/dist/skeleton.css'

export const Navbar = () => {
const { width } = useWindowDimension();
const { verifyLoading, verifySuccess, user } = useAuthStore()
const { mobileMenu, setMobileMenu, closeMenu, openMenu, toggleDisable } =
useAnimStore()
const { menuPopup, mobileMenu, setMobileMenu, closeMenu, openMenu, toggleDisable } = useAnimStore()

function handleToggle() {
if (mobileMenu) {
closeMenu()
Expand All @@ -17,6 +20,18 @@ export const Navbar = () => {
}
setMobileMenu(!mobileMenu)
}

useEffect(() => {
if (width <= 640) {
if (menuPopup) document.body.style.overflow = "hidden";
else document.body.style.overflow = "";
}
else {
document.body.style.overflow = "";
closeMenu();
}
}, [width, menuPopup]);

return (
<div className='Navbar-container'>
<div className='Navbar-flex-container'>
Expand Down
5 changes: 2 additions & 3 deletions client/src/store/useAnimStore.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
import { create } from 'zustand'
import { toast } from 'sonner'

export const useAnimStore = create(set => ({
mobileMenu: false,
menuPopup: false,
toggleDisable: false,
mobileMenu: false,
setMobileMenu: verifyState => {
set({ mobileMenu: verifyState })
set({ toggleDisable: true })
setTimeout(() => {
set({ toggleDisable: false })
}, 1000)
},
menuPopup: false,
openMenu: () => {
set({ menuPopup: true })
set({ mobileMenu: true })
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
import { useEffect, useState } from 'react';

const useWindowHeight = () => {
const [height, setHeight] = useState(undefined);
const useWindowDimension = () => {
const [width, setWidth] = useState(window.innerWidth);
const [height, setHeight] = useState(window.innerHeight);
const [isReady, setIsReady] = useState(false);

useEffect(() => {
const handleResize = () => {
setWidth(window.innerWidth);
setHeight(window.innerHeight);
setIsReady(true);
};

window.addEventListener('resize', handleResize);
handleResize();

return () => window.removeEventListener('resize', handleResize);
}, []);

return { height, isReady };
return { width, height, isReady };
};

export default useWindowHeight;
export default useWindowDimension;

0 comments on commit 86fb3c0

Please sign in to comment.