Sha256: 3eba378792631b0deb06a736ad0a1929fb633809153247b9e1b9666a8702fac7
Contents?: true
Size: 1.84 KB
Versions: 1
Compression:
Stored size: 1.84 KB
Contents
import { useState, useEffect } from 'react' export const breakpointValues = { none: 0, xs: 575, sm: 768, md: 992, lg: 1200, xl: 1400, } as const type BreakpointSize = keyof typeof breakpointValues interface UseBreakpointProps { openBreakpoint?: BreakpointSize closeBreakpoint?: BreakpointSize triggerId?: string } export const useBreakpoint = ({ openBreakpoint = 'none', closeBreakpoint = 'none', triggerId }: UseBreakpointProps) => { const [isOpenBreakpointOpen, setIsOpenBreakpointOpen] = useState(false) const [isUserClosed, setIsUserClosed] = useState(false) useEffect(() => { if (openBreakpoint === 'none' && closeBreakpoint === 'none') return const handleResize = () => { const width = window.innerWidth if (openBreakpoint !== 'none') { const openBreakpointWidth = breakpointValues[openBreakpoint] if (width >= openBreakpointWidth) { setIsOpenBreakpointOpen(true) } else { setIsOpenBreakpointOpen(false) setIsUserClosed(false) } } if (closeBreakpoint !== 'none') { const closeBreakpointWidth = breakpointValues[closeBreakpoint] if (width < closeBreakpointWidth) { setIsOpenBreakpointOpen(false) } else { setIsOpenBreakpointOpen(true) } } // Handle menu button visibility if (triggerId) { const menuButton = document.getElementById(triggerId) if (menuButton) { menuButton.style.display = isOpenBreakpointOpen ? 'none' : '' } } } window.addEventListener('resize', handleResize) handleResize() return () => window.removeEventListener('resize', handleResize) }, [openBreakpoint, closeBreakpoint, triggerId, isOpenBreakpointOpen]) return { isOpenBreakpointOpen, isUserClosed, setIsUserClosed } }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
playbook_ui-14.11.1.pre.alpha.PLAY17445539 | app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx |