import React, { MouseEvent, useMemo } from 'react' import useTheme from '../use-theme' import { getColor } from './styles' import { useButtonDropdown } from './button-dropdown-context' import Loading from '../loading' import { NormalTypes } from '../utils/prop-types' export type ButtonDropdownItemTypes = NormalTypes interface Props { main?: boolean type?: ButtonDropdownItemTypes onClick?: React.MouseEventHandler className?: string } const defaultProps = { main: false, type: 'default' as ButtonDropdownItemTypes, onClick: () => { return }, className: '' } type NativeAttrs = Omit, keyof Props> export type ButtonDropdownItemProps = Props & NativeAttrs const ButtonDropdownItem: React.FC> = ({ children, onClick, className, main, type: selfType, ...props }: ButtonDropdownItemProps) => { const theme = useTheme() const { type: parentType, disabled, loading } = useButtonDropdown() const type = main ? parentType : selfType const colors = getColor(theme.palette, type, disabled) const clickHandler = (event: MouseEvent) => { if (disabled || loading) return onClick && onClick(event) } const cursor = useMemo(() => { if (loading) return 'default' return disabled ? 'not-allowed' : 'pointer' }, [loading, disabled]) return ( ) } ButtonDropdownItem.defaultProps = defaultProps ButtonDropdownItem.displayName = 'HuiButtonDropdownItem' export default ButtonDropdownItem