gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/sidebar/use-panel-toggle.ts · v0.5.0
Source
1 1eb203e Mrdn 2y ago import { useRef, useState } from "react";
2 88bdde2 Mrdn 2y ago import type { 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 88bdde2 Mrdn 2y ago return {
26 88bdde2 Mrdn 2y ago collapsed,
27 88bdde2 Mrdn 2y ago open,
28 88bdde2 Mrdn 2y ago panelRef,
29 88bdde2 Mrdn 2y ago setCollapsed,
30 88bdde2 Mrdn 2y ago setOpen,
31 88bdde2 Mrdn 2y ago toggleCollapse,
32 88bdde2 Mrdn 2y ago toggleOpen,
33 88bdde2 Mrdn 2y ago };
34 1eb203e Mrdn 2y ago };