Skip to content

Commit 1dd432d

Browse files
committed
fix sidebar not opening in dashboard
1 parent 4efa7a0 commit 1dd432d

File tree

1 file changed

+41
-33
lines changed

1 file changed

+41
-33
lines changed

apps/web/src/hooks/useSideBar.tsx

+41-33
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createContext, useContext, useState, useEffect } from 'react'
1+
import { createContext, useContext, useState, useEffect, useMemo } from 'react'
22

33
type SideBarWidth = number
44
const MIN_SIDEBAR_WIDTH = 300
@@ -95,39 +95,47 @@ export function SideBarProvider({ children }: { children: React.ReactNode }) {
9595
}, [width, setWidth])
9696

9797
// Create the state and API objects
98-
const state: SideBarState = {
99-
isOpen,
100-
width,
101-
}
102-
103-
const api: SideBarAPI = {
104-
toggle: (open?: boolean) => {
105-
if (open !== undefined) {
106-
setIsOpen(open)
107-
} else {
108-
setIsOpen((prevOpen) => !prevOpen)
109-
}
110-
},
111-
resize: (newWidth: SideBarWidth) => {
112-
const clampedWidth = Math.max(
113-
MIN_SIDEBAR_WIDTH,
114-
Math.min(MAX_SIDEBAR_WIDTH, newWidth)
115-
)
116-
setWidth(clampedWidth)
117-
},
118-
open: (state?: boolean) => {
119-
if (state !== undefined) {
120-
setIsOpen(state)
121-
} else {
122-
setIsOpen(true)
123-
}
124-
},
125-
close: () => {
126-
setIsOpen(false)
127-
},
128-
}
98+
const state: SideBarState = useMemo(
99+
() => ({
100+
isOpen,
101+
width,
102+
}),
103+
[isOpen, width]
104+
)
105+
106+
const api: SideBarAPI = useMemo(
107+
() => ({
108+
toggle: (open?: boolean) => {
109+
if (open !== undefined) {
110+
setIsOpen(open)
111+
} else {
112+
setIsOpen((prevOpen) => !prevOpen)
113+
}
114+
},
115+
resize: (newWidth: SideBarWidth) => {
116+
const clampedWidth = Math.max(
117+
MIN_SIDEBAR_WIDTH,
118+
Math.min(MAX_SIDEBAR_WIDTH, newWidth)
119+
)
120+
setWidth(clampedWidth)
121+
},
122+
open: (state?: boolean) => {
123+
if (state !== undefined) {
124+
setIsOpen(state)
125+
} else {
126+
setIsOpen(true)
127+
}
128+
},
129+
close: () => {
130+
setIsOpen(false)
131+
},
132+
}),
133+
[]
134+
)
135+
136+
const value = useMemo(() => ({ state, api }), [state, api])
129137

130-
return <Context.Provider value={{ state, api }}>{children}</Context.Provider>
138+
return <Context.Provider value={value}>{children}</Context.Provider>
131139
}
132140

133141
export {

0 commit comments

Comments
 (0)