gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/sidebar/use-panel-toggle.ts · v0.3.0-alpha10
Source
1 1eb203e Mrdn 2y ago import { useRef, useState } from "react";
2 1eb203e Mrdn 2y ago import { ImperativePanelHandle } from "react-resizable-panels";
3 1eb203e Mrdn 2y ago
4 1eb203e Mrdn 2y ago export const usePanelToggle = (isDesktop: boolean) => {
5 1eb203e Mrdn 2y ago const [collapsed, setCollapsed] = useState(false);
6 1eb203e Mrdn 2y ago const panelRef = useRef<ImperativePanelHandle>(null);
7 1eb203e Mrdn 2y ago const [open, setOpen] = useState(false);
8 1eb203e Mrdn 2y ago
9 1eb203e Mrdn 2y ago const toggleCollapse = () => {
10 1eb203e Mrdn 2y ago const panel = panelRef.current;
11 1eb203e Mrdn 2y ago if (isDesktop && panel) {
12 1eb203e Mrdn 2y ago collapsed ? panel.expand() : panel.collapse();
13 1eb203e Mrdn 2y ago setCollapsed(!collapsed);
14 1eb203e Mrdn 2y ago setOpen(false);
15 1eb203e Mrdn 2y ago }
16 1eb203e Mrdn 2y ago };
17 1eb203e Mrdn 2y ago
18 1eb203e Mrdn 2y ago const toggleOpen = () => {
19 1eb203e Mrdn 2y ago if (!isDesktop) {
20 1eb203e Mrdn 2y ago setCollapsed(false);
21 1eb203e Mrdn 2y ago setOpen(!open);
22 1eb203e Mrdn 2y ago }
23 1eb203e Mrdn 2y ago };
24 1eb203e Mrdn 2y ago
25 1eb203e Mrdn 2y ago return { collapsed, open, panelRef, setCollapsed, setOpen, toggleCollapse, toggleOpen };
26 1eb203e Mrdn 2y ago };