import React, { useMemo } from 'react' import useTheme from '../styles/use-theme' import withDefaults from '../utils/with-defaults' import { NormalSizes, ButtonTypes } from '../utils/prop-types' import { ButtonGroupContext, ButtonGroupConfig } from './button-group-context' import { getButtonColors } from '../button/styles' interface Props { disabled?: boolean vertical?: boolean ghost?: boolean size?: NormalSizes type?: ButtonTypes className?: string } const defaultProps = { disabled: false, vertical: false, ghost: false, size: 'medium' as NormalSizes, type: 'default' as ButtonTypes, className: '', } type NativeAttrs = Omit, keyof Props> export type ButtonGroupProps = Props & typeof defaultProps & NativeAttrs const ButtonGroup: React.FC> = ({ disabled, size, type, ghost, vertical, children, className, }) => { const theme = useTheme() const initialValue = useMemo( () => ({ disabled, size, type, ghost, isButtonGroup: true, }), [disabled, size, type], ) const { border } = useMemo(() => { const results = getButtonColors(theme, type, disabled, ghost) if (!ghost && type !== 'default') return { ...results, border: theme.palette.background, } return results }, [theme, type, disabled, ghost]) return (
{children}
) } const MemoButtonGroup = React.memo(ButtonGroup) export default withDefaults(MemoButtonGroup, defaultProps)