import React, { useEffect, useState, useCallback, useRef } from 'react'; import { Text } from '../Text'; import { Constrain } from './Constrain'; export default { title: 'Components/Constrain' }; const Constrained = () => { const ref = useRef(null); const [windowWidth, setWindowWidth] = useState(window.innerWidth); const [constrainWidth, setConstrainWidth] = useState(ref.current && ref.current.offsetWidth); const handleResize = useCallback(() => { setWindowWidth(window.innerWidth); setConstrainWidth((ref.current && ref.current.offsetWidth) || 0); }, []); useEffect(() => { handleResize(); window.addEventListener('resize', handleResize, { passive: true }); return () => { window.removeEventListener('resize', handleResize); }; }, [handleResize]); return (
window: {windowWidth}px
constrained: {constrainWidth}px
); }; export const LargeViewport = () => ; LargeViewport.story = { parameters: { viewport: { defaultViewport: 'lg' } } }; export const MediumViewport = () => ; MediumViewport.story = { parameters: { viewport: { defaultViewport: 'md' } } }; export const SmallViewport = () => ; SmallViewport.story = { parameters: { viewport: { defaultViewport: 'sm' } } }; export const XSmallViewport = () => ; XSmallViewport.story = { parameters: { viewport: { defaultViewport: 'xs' } } };