hide collapse button, and enable animation of sidebar collapsing in mobile screen

This commit is contained in:
dakai 2023-04-16 17:22:00 +08:00
parent 37c62e1b7e
commit 63544300f5
2 changed files with 64 additions and 18 deletions

View File

@ -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 {

View File

@ -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 <Loading />;
}
@ -171,6 +203,7 @@ function _Home() {
}`}
>
<div
style={{ ...sidebarStyle }}
className={
sidebarCollapse ? styles["sidebar-collapse"] : styles["sidebar"]
}
@ -248,7 +281,8 @@ function _Home() {
<div className={styles["sidebar-tail"]}>
<div className={styles["sidebar-actions"]}>
<div className={styles["sidebar-action"]}>
{sidebarCollapse ? (
{!isMobileScreen() ? (
sidebarCollapse ? (
<IconButton
icon={<RightIcon />}
onClick={() => {
@ -262,7 +296,8 @@ function _Home() {
setSideBarCollapse(true);
}}
/>
)}
)
) : null}
</div>
<div className={styles["sidebar-action"]}>
<IconButton