2023-01-07 19:06:04 +01:00
|
|
|
import { useCallback, useState } from "react";
|
|
|
|
|
|
|
|
export type sidebarVisibilityOptions = "full" | "small" | "hidden";
|
|
|
|
|
|
|
|
function useSidebarVisibility() {
|
|
|
|
const [sidebarVisibility, setSideBarVisibility] =
|
|
|
|
useState<sidebarVisibilityOptions>("full");
|
|
|
|
|
|
|
|
const sidebarToggleText = getSidebarToggleText(sidebarVisibility);
|
|
|
|
|
|
|
|
const toggleSidebarVisibility = useCallback(() => {
|
2023-01-10 19:00:20 +01:00
|
|
|
if (sidebarVisibility === "full") {
|
2023-01-07 19:06:04 +01:00
|
|
|
setSideBarVisibility("small");
|
2023-01-10 19:00:20 +01:00
|
|
|
} else if (sidebarVisibility === "small") {
|
2023-01-07 19:06:04 +01:00
|
|
|
setSideBarVisibility("hidden");
|
2023-01-10 19:00:20 +01:00
|
|
|
} else if (sidebarVisibility === "hidden") {
|
2023-01-07 19:06:04 +01:00
|
|
|
setSideBarVisibility("full");
|
|
|
|
}
|
|
|
|
}, [setSideBarVisibility, sidebarVisibility, sidebarToggleText]);
|
|
|
|
|
|
|
|
return { sidebarVisibility, toggleSidebarVisibility, sidebarToggleText };
|
|
|
|
}
|
|
|
|
const getSidebarToggleText = (sidebarVisibility: sidebarVisibilityOptions) => {
|
|
|
|
if (sidebarVisibility === "full") return "<-";
|
|
|
|
if (sidebarVisibility === "small") return "<-";
|
|
|
|
if (sidebarVisibility === "hidden") return "->";
|
|
|
|
};
|
|
|
|
export default useSidebarVisibility;
|