A HoC to connect your components to screen size changes
If your component logic depends on screen size then you need this.
const Container = ({ isTablet, isMobile, isDesktop }) => (
...
)
const mapScreenSizeToProps = ({ sm, xs, gtXs }) => {
return {
isTablet: sm,
isMobile: xs,
isDesktop: gtSm
}
}
export default connectScreenSize(mapScreenSizeToProps)(Container);Components declared inside of a MediaProvider will be listening to screen changes.
medias(Object?): Extend definitions for screen size criterias. Default values are:
{
xs: '(max-width: 600px)',
sm: '(max-width: 960px) and (min-width: 601px)',
md: '(max-width: 1280px) and (min-width: 961px)',
lg: '(max-width: 1920px) and (min-width: 1281px)',
gtXs: '(min-width: 601px)',
gtSm: '(min-width: 961px)',
gtMd: '(min-width: 1281px)',
gtLg: '(min-width: 1921px)',
}screenSize(Object?): Set initial value of the screenSize passed to connected components, useful this for server side rendering. Default values are:
{
xs: false,
gtXs: true,
sm: false,
gtSm: true,
md: true,
gtMd: true,
lg: false,
gtLg: false
}Subscribes a React component to screen size changes.
mapScreenSizeToProps(screenSize): screenSizeProps(Function): Any time the screen size updatesmapScreenSizeToPropswill be called with the active media queries as an object structure, these are the possible valuesscreenSize.xsscreenSize.smscreenSize.mdscreenSize.lgscreenSize.gtXsscreenSize.gtSmscreenSize.gtMdscreenSize.gtLg
A react component that will inject the resulting object of calls to mapScreenSizeToProps as props
into your component