Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 1x 1x 6x 6x 6x 6x 3x | import type { ReactElement } from 'react'; import useWindowResize from '@/hooks/useWidowResize'; type Props = { children: ReactElement | ReactElement[]; hideOnDesktop?: boolean; hideOnTablet?: boolean; hideOnMobile?: boolean; }; /** * @example * <VisibilityManager hideOnDesktop={true}> * * @param {boolean} hideOnDesktop - If true, the component will be hidden on desktop * @param {boolean} hideOnTablet - If true, the component will be hidden on tablet * @param {boolean} hideOnMobile - If true, the component will be hidden on mobile * @returns {ReactElement | null} */ const VisibilityManager = (props: Props): ReactElement | null => { const { children, hideOnDesktop, hideOnTablet, hideOnMobile } = props; const { isMobile, isDesktop, isTablet } = useWindowResize(); const hideBecauseOfWidth = (hideOnDesktop && isDesktop) || (hideOnTablet && isTablet) || (hideOnMobile && isMobile); Iif (hideBecauseOfWidth) { return null; } return <>{children}</>; }; export default VisibilityManager; |