All checks were successful
continuous-integration/drone/push Build is passing
28 lines
1 KiB
TypeScript
28 lines
1 KiB
TypeScript
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(() => {
|
|
if (sidebarVisibility === 'full') {
|
|
setSideBarVisibility('small')
|
|
} else if (sidebarVisibility === 'small') {
|
|
setSideBarVisibility('hidden')
|
|
} else if (sidebarVisibility === 'hidden') {
|
|
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
|