import * as React from 'react'; import { useContext, useMemo } from 'react'; import classNames from 'classnames'; import { devUseWarning } from '../_util/warning'; import { ConfigContext } from '../config-provider'; import type { FormItemStatusContextProps } from '../form/context'; 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 [wrapCSSVar, 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], ); if (process.env.NODE_ENV !== 'production') { const warning = devUseWarning('Input.Group'); warning.deprecated(false, 'Input.Group', 'Space.Compact'); } return wrapCSSVar( {props.children} , ); }; export default Group;