jitsi-roomsv2/frontend/src/components/sidebar/useSidebarVisibility.ts

28 lines
1 KiB
TypeScript
Raw Normal View History

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