import React from 'react' import useTheme from '../use-theme' import useScale, { withScale } from '../use-scale' import { usePopoverContext } from './popover-context' import useClasses from '../use-classes' interface Props { line?: boolean title?: boolean disableAutoClose?: boolean onClick?: (e: React.MouseEvent) => void } const defaultProps = { line: false, title: false, disableAutoClose: false, className: '' } type NativeAttrs = Omit, keyof Props> export type PopoverItemProps = Props & NativeAttrs const PopoverItemComponent: React.FC> = ({ children, line, title, className, onClick, disableAutoClose, ...props }) => { const theme = useTheme() const { SCALES } = useScale() const { disableItemsAutoClose, onItemClick } = usePopoverContext() const hasHandler = Boolean(onClick) const dontCloseByClick = disableAutoClose || disableItemsAutoClose || title || line const classes = useClasses('item', { line, title }, className) const clickHandler = (event: React.MouseEvent) => { onClick && onClick(event) if (dontCloseByClick) { return event.stopPropagation() } onItemClick(event) } return ( <>
{children}
{title && } ) } PopoverItemComponent.defaultProps = defaultProps PopoverItemComponent.displayName = 'HuiPopoverItem' const PopoverItem = withScale(PopoverItemComponent) export default PopoverItem