uui/components/pickers/PickerBodyMobileView.tsx (35 lines of code) (raw):
import React, { ReactNode } from 'react';
import { IDropdownBodyProps, IHasCX, IHasRawProps, isMobile } from '@epam/uui-core';
import { LinkButton, LinkButtonProps } from '../buttons';
import { ControlSize } from '../types';
import { DataPickerHeader } from './DataPickerHeader';
import { DropdownContainer } from '../overlays';
import { i18n } from '../../i18n';
import { settings } from '../../settings';
import css from './PickerBodyMobileView.module.scss';
interface IMobileDropdownWrapperProps extends IHasCX, IHasRawProps<React.HTMLAttributes<HTMLDivElement>>, IDropdownBodyProps {
children: ReactNode;
size?: ControlSize;
title?: string;
onKeyDown?(e: React.KeyboardEvent<HTMLElement>): void;
focusLock?: boolean;
width?: number | 'auto';
maxWidth?: number | 'auto';
maxHeight?: number;
}
export const PickerBodyMobileView: React.FC<IMobileDropdownWrapperProps> = (props) => {
const isMobileView = isMobile();
const maxWidth = isMobileView ? 'auto' : props.maxWidth;
const maxHeight = isMobileView ? 'auto' : props.maxHeight;
return (
<DropdownContainer
{ ...props }
maxWidth={ maxWidth }
maxHeight={ maxHeight }
cx={ [css.container, props.cx] }
autoFocus={ true }
>
{isMobileView && <DataPickerHeader title={ props.title } close={ props.onClose } />}
{props.children}
{isMobileView && <LinkButton caption={ i18n.pickerInput.doneButton } onClick={ () => props.onClose?.() } cx={ css.done } size={ settings.sizes.pickerInput.body.mobile.footer.linkButton as LinkButtonProps['size'] } />}
</DropdownContainer>
);
};