mirror of
https://github.com/alexmickelson/canvasManagement.git
synced 2026-03-25 23:28:33 -06:00
sidebar collapsing is better
This commit is contained in:
@@ -1,25 +1,61 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useState } from "react";
|
import { useState, useEffect } from "react";
|
||||||
import CourseSettingsLink from "./CourseSettingsLink";
|
import CourseSettingsLink from "./CourseSettingsLink";
|
||||||
import ModuleList from "./modules/ModuleList";
|
import ModuleList from "./modules/ModuleList";
|
||||||
import LeftChevron from "@/components/icons/LeftChevron";
|
import LeftChevron from "@/components/icons/LeftChevron";
|
||||||
import RightChevron from "@/components/icons/RightChevron";
|
import RightChevron from "@/components/icons/RightChevron";
|
||||||
|
|
||||||
export default function CollapsableSidebar() {
|
const collapseThreshold = 1400;
|
||||||
const [isCollapsed, setIsCollapsed] = useState(false);
|
|
||||||
|
export default function CollapsableSidebar() {
|
||||||
|
const [windowCollapseRecommended, setWindowCollapseRecommended] =
|
||||||
|
useState(window.innerWidth <= collapseThreshold);
|
||||||
|
const [userCollapsed, setUserCollapsed] = useState<
|
||||||
|
"unset" | "collapsed" | "uncollapsed"
|
||||||
|
>("unset");
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
function handleResize() {
|
||||||
|
if (window.innerWidth <= collapseThreshold) {
|
||||||
|
setWindowCollapseRecommended(true);
|
||||||
|
} else {
|
||||||
|
setWindowCollapseRecommended(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handleResize(); // Set initial state
|
||||||
|
window.addEventListener("resize", handleResize);
|
||||||
|
return () => window.removeEventListener("resize", handleResize);
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
let collapsed;
|
||||||
|
if (userCollapsed === "unset") {
|
||||||
|
collapsed = windowCollapseRecommended;
|
||||||
|
} else {
|
||||||
|
collapsed = userCollapsed === "collapsed";
|
||||||
|
}
|
||||||
|
|
||||||
|
const widthClass = collapsed ? "w-0" : "w-96";
|
||||||
|
const visibilityClass = collapsed ? "invisible " : "visible";
|
||||||
|
|
||||||
const widthClass = isCollapsed ? "w-0" : "w-96";
|
|
||||||
const visibilityClass = isCollapsed ? "invisible " : "visible";
|
|
||||||
return (
|
return (
|
||||||
<div className="h-full flex flex-col">
|
<div className="h-full flex flex-col">
|
||||||
<div className="flex flex-row justify-between mb-2">
|
<div className="flex flex-row justify-between mb-2">
|
||||||
<div className="visible mx-3 mt-2">
|
<div className="visible mx-3 mt-2">
|
||||||
<button onClick={() => setIsCollapsed((i) => !i)}>
|
<button
|
||||||
{isCollapsed ? <LeftChevron /> : <RightChevron />}
|
onClick={() => {
|
||||||
|
setUserCollapsed((prev) => {
|
||||||
|
if (prev === "unset") {
|
||||||
|
return collapsed ? "uncollapsed" : "collapsed";
|
||||||
|
}
|
||||||
|
return prev === "collapsed" ? "uncollapsed" : "collapsed";
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{collapsed ? <LeftChevron /> : <RightChevron />}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className={" " + (isCollapsed ? "w-0 invisible hidden" : "")}>
|
<div className={" " + (collapsed ? "w-0 invisible hidden" : "")}>
|
||||||
<CourseSettingsLink />
|
<CourseSettingsLink />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ export default async function CoursePage() {
|
|||||||
<div className="h-full flex flex-col">
|
<div className="h-full flex flex-col">
|
||||||
<DragStyleContextProvider>
|
<DragStyleContextProvider>
|
||||||
<DraggingContextProvider>
|
<DraggingContextProvider>
|
||||||
<div className="flex sm:flex-row h-full flex-col max-w-[2400px] mx-auto">
|
<div className="flex sm:flex-row h-full flex-col max-w-[2400px] w-full mx-auto">
|
||||||
<div className="flex-1 h-full flex flex-col">
|
<div className="flex-1 h-full flex flex-col">
|
||||||
<CourseNavigation />
|
<CourseNavigation />
|
||||||
<CourseCalendar />
|
<CourseCalendar />
|
||||||
|
|||||||
Reference in New Issue
Block a user