diff --git a/app/components/home.module.scss b/app/components/home.module.scss index a21bbb82f..006ce50b9 100644 --- a/app/components/home.module.scss +++ b/app/components/home.module.scss @@ -48,6 +48,7 @@ display: flex; flex-direction: column; box-shadow: inset -2px 0px 2px 0px rgb(0, 0, 0, 0.05); + transition: width ease 0.1s; } .sidebar { top: 0; @@ -108,16 +109,26 @@ border-radius: 0; } + @keyframes slideRight { + from { + left: -100%; + } + to { + left: 0%; + } + } + .sidebar { position: absolute; - //left: -100%; z-index: 1000; height: var(--full-height); - transition: all ease 0.3s; + transition: all ease 0.1s; box-shadow: none; + animation: slideRight 0.1s forwards; } .sidebar-collapse { - display: none; + animation: slideRight 0.1s backwards; + //display: none; } .window-content-collapse { diff --git a/app/components/home.tsx b/app/components/home.tsx index 950419672..54dc61fb2 100644 --- a/app/components/home.tsx +++ b/app/components/home.tsx @@ -158,6 +158,38 @@ function _Home() { useSwitchTheme(); + // the two useEffects are for enable animation of the sidebar collapse in mobile screen + const [width, setWidth] = useState(window.innerWidth); + + useEffect(() => { + const handleResize = () => { + setWidth(window.innerWidth); + }; + + window.addEventListener("resize", handleResize); + + return () => { + window.removeEventListener("resize", handleResize); + }; + }, []); + + const [sidebarStyle, setSidebarStyles] = useState({}); + useEffect(() => { + if (sidebarCollapse && isMobileScreen()) { + setTimeout(() => { + setSidebarStyles({ + display: "none", + }); + }, 100); + } else { + setTimeout(() => { + setSidebarStyles({ + display: "flex", + }); + }, 100); + } + }, [sidebarCollapse, width]); + if (loading) { return ; } @@ -171,6 +203,7 @@ function _Home() { }`} >
- {sidebarCollapse ? ( - } - onClick={() => { - setSideBarCollapse(false); - }} - /> - ) : ( - } - onClick={() => { - setSideBarCollapse(true); - }} - /> - )} + {!isMobileScreen() ? ( + sidebarCollapse ? ( + } + onClick={() => { + setSideBarCollapse(false); + }} + /> + ) : ( + } + onClick={() => { + setSideBarCollapse(true); + }} + /> + ) + ) : null}