Sha256: c83fc4295fda285c994b6401dd76daa5f4e788c8c1e2715695ded2d2d956f9dd

Contents?: true

Size: 1.4 KB

Versions: 31

Compression:

Stored size: 1.4 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 {
  breakpoint?: BreakpointSize
  triggerId?: string
}

export const useBreakpoint = ({ 
  breakpoint = 'none',
  triggerId 
}: UseBreakpointProps) => {
  const [isOpenBreakpointOpen, setIsOpenBreakpointOpen] = useState(false)
  const [isUserClosed, setIsUserClosed] = useState(false)

  useEffect(() => {
    if (breakpoint === 'none') return

    const handleResize = () => {
      const width = window.innerWidth
      
        const openBreakpointWidth = breakpointValues[breakpoint]
        if (width >= openBreakpointWidth) {
          setIsOpenBreakpointOpen(true)
        } else {
          setIsOpenBreakpointOpen(false)
          setIsUserClosed(false)
        }

      // 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)
  }, [breakpoint, triggerId, isOpenBreakpointOpen])

  return {
    isOpenBreakpointOpen,
    isUserClosed,
    setIsUserClosed
  }
} 

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
playbook_ui-14.12.0.pre.alpha.PBNTR779railsdraggablecrosscontainer5863 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.play1790darkaudittable5802 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.play1752updatecontenttag5801 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.13.0.pre.rc.6 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.13.0.pre.rc.5 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.PLAY1602lightboxoverlapnitrobug5781 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.13.0.pre.rc.4 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.playrailsinputmaskissue5775 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.PBNTR456fixedconftoastrailsautoclose5757 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.PBNTR456fixedconftoastrailsautoclose5754 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.PLAY1602lightboxoverlapnitrobugzindextoken5751 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.PBNTR456fixedconftoastrailsautoclose5738 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.13.0.pre.rc.3 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.PLAY1865reactdatepickerreinitializingbug5732 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.PBNTR456fixedconftoastrailsautoclose5728 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.play1862buttondisabledlinkbug5716 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.12.0.pre.alpha.play1862buttondisabledlinkbug5714 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.13.0.pre.rc.2 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.13.0.pre.rc.1 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx
playbook_ui-14.13.0.pre.rc.0 app/pb_kits/playbook/pb_drawer/hooks/useBreakpoint.tsx