import * as React from 'react'; import useMediaQuery from '@material-ui/core/useMediaQuery'; import { IS_TOUCH_DEVICE_MEDIA } from '../constants/dimensions'; import { MobileWrapperProps, MobileWrapper } from './MobileWrapper'; import { DesktopWrapperProps, DesktopWrapper } from './DesktopWrapper'; import { DesktopTooltipWrapperProps, DesktopTooltipWrapper } from './DesktopTooltipWrapper'; export interface ResponsiveWrapperProps extends DesktopWrapperProps, DesktopTooltipWrapperProps, MobileWrapperProps { /** * CSS media query when `Mobile` mode will be changed to `Desktop`. * * @default "@media (pointer: fine)" * @example "@media (min-width: 720px)" or theme.breakpoints.up("sm") */ desktopModeMediaQuery?: string; } export const makeResponsiveWrapper = ( DesktopWrapperComponent: React.FC, MobileWrapperComponent: React.FC ) => { const ResponsiveWrapper: React.FC = ({ cancelText, clearable, clearText, desktopModeMediaQuery = IS_TOUCH_DEVICE_MEDIA, DialogProps, displayStaticWrapperAs, okText, PopperProps, showTodayButton, todayText, TransitionComponent, ...other }) => { const isDesktop = useMediaQuery(desktopModeMediaQuery); return isDesktop ? ( ) : ( ); }; return ResponsiveWrapper; }; export const ResponsiveWrapper = makeResponsiveWrapper(DesktopWrapper, MobileWrapper); export const ResponsiveTooltipWrapper = makeResponsiveWrapper(DesktopTooltipWrapper, MobileWrapper);