import classNames from 'classnames'; import * as React from 'react'; import { useContext, useMemo } from 'react'; import { ConfigContext } from '../config-provider'; import { FormItemInputContext } from '../form/context'; import useStyle from './style'; export interface GroupProps { className?: string; size?: 'large' | 'small' | 'default'; children?: React.ReactNode; style?: React.CSSProperties; onMouseEnter?: React.MouseEventHandler; onMouseLeave?: React.MouseEventHandler; onFocus?: React.FocusEventHandler; onBlur?: React.FocusEventHandler; prefixCls?: string; compact?: boolean; } const Group: React.FC = props => { const { getPrefixCls, direction } = useContext(ConfigContext); const { prefixCls: customizePrefixCls, className = '' } = props; const prefixCls = getPrefixCls('input-group', customizePrefixCls); const inputPrefixCls = getPrefixCls('input'); const [wrapSSR, hashId] = useStyle(inputPrefixCls); const cls = classNames( prefixCls, { [`${prefixCls}-lg`]: props.size === 'large', [`${prefixCls}-sm`]: props.size === 'small', [`${prefixCls}-compact`]: props.compact, [`${prefixCls}-rtl`]: direction === 'rtl', }, hashId, className, ); const formItemContext = useContext(FormItemInputContext); const groupFormItemContext = useMemo( () => ({ ...formItemContext, isFormItemInput: false, }), [formItemContext], ); return wrapSSR( {props.children} , ); }; export default Group;