Files
ant-design/components/input/Group.tsx
EmilyyyLiu bbef6f8752 feat[Input.Search]: Abandoning the use of addon * in the Search component (#55705)
* refactor: Search component refactoring using compact

* test: update snap

* test: update snap

* test: update snap

* chore: fix style

* chore: fix search style

* test: update snapshot

* test: update snapshot

* test: update snapshot

---------

Co-authored-by: 刘欢 <lh01217311@antgroup.com>
Co-authored-by: 二货机器人 <smith3816@gmail.com>
2025-11-14 16:16:23 +08:00

78 lines
2.3 KiB
TypeScript

import * as React from 'react';
import { useContext, useMemo } from 'react';
import { clsx } from 'clsx';
import { devUseWarning } from '../_util/warning';
import { ConfigContext } from '../config-provider';
import type { FormItemStatusContextProps } from '../form/context';
import { FormItemInputContext } from '../form/context';
import Space from '../space';
import useStyle from './style';
export interface GroupProps {
className?: string;
size?: 'large' | 'small' | 'default';
children?: React.ReactNode;
style?: React.CSSProperties;
onMouseEnter?: React.MouseEventHandler<HTMLSpanElement>;
onMouseLeave?: React.MouseEventHandler<HTMLSpanElement>;
onFocus?: React.FocusEventHandler<HTMLSpanElement>;
onBlur?: React.FocusEventHandler<HTMLSpanElement>;
prefixCls?: string;
compact?: boolean;
}
/** @deprecated Please use `Space.Compact` */
const Group: React.FC<GroupProps> = (props) => {
const { getPrefixCls, direction } = useContext(ConfigContext);
const { prefixCls: customizePrefixCls, className } = props;
const prefixCls = getPrefixCls('input-group', customizePrefixCls);
const inputPrefixCls = getPrefixCls('input');
const [hashId, cssVarCls] = useStyle(inputPrefixCls);
const cls = clsx(
prefixCls,
cssVarCls,
{
[`${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<FormItemStatusContextProps>(
() => ({
...formItemContext,
isFormItemInput: false,
}),
[formItemContext],
);
if (process.env.NODE_ENV !== 'production') {
const warning = devUseWarning('Input.Group');
warning.deprecated(false, 'Input.Group', 'Space.Compact');
}
return (
<FormItemInputContext.Provider value={groupFormItemContext}>
<Space.Compact
className={cls}
style={props.style}
onMouseEnter={props.onMouseEnter}
onMouseLeave={props.onMouseLeave}
onFocus={props.onFocus}
onBlur={props.onBlur}
>
{props.children}
</Space.Compact>
</FormItemInputContext.Provider>
);
};
export default Group;