import React, { AnchorHTMLAttributes, ElementType, HTMLAttributes, InputHTMLAttributes, useContext } from 'react'; import { classNames } from '../../lib/classNames'; import { getClassName } from '../../helpers/getClassName'; import Tappable from '../Tappable/Tappable'; import { usePlatform } from '../../hooks/usePlatform'; import { hasReactNode, noop } from '../../lib/utils'; import Subhead from '../Typography/Subhead/Subhead'; import Title from '../Typography/Title/Title'; import Text from '../Typography/Text/Text'; import { ANDROID, VKCOM } from '../../lib/platform'; import { Icon16Done, Icon24Done } from '@vkontakte/icons'; import { ActionSheetContext } from '../ActionSheet/ActionSheetContext'; import Caption from '../Typography/Caption/Caption'; import { withAdaptivity, AdaptivityProps, SizeType } from '../../hoc/withAdaptivity'; export interface ActionSheetItemProps extends HTMLAttributes, AnchorHTMLAttributes, Pick, 'name' | 'checked' | 'value'>, AdaptivityProps { mode?: 'default' | 'destructive' | 'cancel'; before?: React.ReactNode; meta?: React.ReactNode; subtitle?: React.ReactNode; autoclose?: boolean; selectable?: boolean; disabled?: boolean; } const ActionSheetItem: React.FunctionComponent = ({ className, children, autoclose, mode, meta, subtitle, before, selectable, value, name, checked, defaultChecked, onChange, onClick, sizeY, ...restProps }: ActionSheetItemProps) => { const platform = usePlatform(); const { onItemClick = () => noop, isDesktop } = useContext(ActionSheetContext); let Component: ElementType = 'div'; if (restProps.href) { Component = 'a'; } else if (selectable) { Component = 'label'; } const isCompact = hasReactNode(subtitle) || hasReactNode(meta) || selectable; return ( {hasReactNode(before) &&
{before}
}
{sizeY === SizeType.COMPACT ? <> {children} {hasReactNode(meta) && {meta} } : <> {children} {hasReactNode(meta) && {meta} } }
{hasReactNode(subtitle) && (sizeY === SizeType.COMPACT ? {subtitle} : {subtitle} )}
{selectable &&
{platform === VKCOM ? : }
}
); }; ActionSheetItem.defaultProps = { mode: 'default', }; export default withAdaptivity(ActionSheetItem, { sizeY: true });