@arco-design/web-react
Version:
Arco Design React UI Library.
216 lines (215 loc) • 6.34 kB
TypeScript
import { CSSProperties, ReactNode } from 'react';
import { PopoverProps } from '../Popover';
export declare type ObjectValueType = {
value?: any;
label?: ReactNode;
closable?: boolean;
};
export declare type ValueChangeReason = 'add' | 'remove' | 'clear' | 'sort';
/**
* @title InputTag
*/
export interface InputTagProps<T = any> {
className?: string | string[];
style?: CSSProperties;
/**
* @zh 不同尺寸
* @en Different sizes
*/
size?: 'mini' | 'small' | 'default' | 'large';
/**
* @zh 预设文案
* @en Placeholder of input element
*/
placeholder?: string;
/**
* @zh 是否是错误状态.(废弃,下个大版本移除,使用 status='error' 替代)
* @en Whether the input is error.(Deprecated, removed in the next major version, use status='error' instead)
* @deprecated status="error"
*/
error?: boolean;
/**
* @zh 状态
* @en Status
* @version 2.45.0
*/
status?: 'error' | 'warning';
/**
* @zh 是否禁用
* @en Whether the input is disabled
*/
disabled?: boolean;
/**
* @zh 自动聚焦
* @en Whether the input is focused by default
*/
autoFocus?: boolean;
/**
* @zh 是否只读
* @en Whether the input is read only
*/
readOnly?: boolean;
/**
* @zh 是否允许清除
* @en Whether to allow clear input value
*/
allowClear?: boolean;
/**
* @zh 是否为内部标签变化添加动画。
* @en Whether to add animation for internal label changes
* @version 2.15.0
* @defaultValue true
*/
animation?: boolean;
/**
* @zh 是否在失焦时自动存储正在输入的文本
* @en Whether to automatically store the text entering when blur InputTag
* @version 2.25.0
*/
saveOnBlur?: boolean;
/**
* @zh 默认值
* @en To set default value
*/
defaultValue?: T[];
/**
* @zh 控件值
* @en To set value
*/
value?: T[];
/**
* @zh 控件的输入框内的值
* @en To set input value
*/
inputValue?: string;
/**
* @zh 设置传入和回调出的值均为 `{ label: '', value: ''}` 格式。
* @en If true, the incoming and callback values will be `{label: '', value: '')` format
*/
labelInValue?: boolean;
/**
* @zh 是否可以通过拖拽为 Tag 排序
* @en Weather it is possible to sort tags by drag
* @version 2.27.0
*/
dragToSort?: boolean;
/**
* @zh 最多显示多少个 `tag`
* @en The maximum number of `tags` is displayed
* @version 2.59.0. `responsive ` in `2.62.0`
*/
maxTagCount?: number | 'responsive' | {
count: number | 'responsive';
render?: (invisibleTagCount: number, value: T[]) => ReactNode;
popoverProps?: Partial<PopoverProps>;
};
/**
* @zh 添加前缀文字或者图标
* @en The prefix icon or text for the input-tag
* @version 2.47.0
*/
prefix?: ReactNode;
/**
* @zh 后缀
* @en The suffix for the InputTag
*/
suffix?: ReactNode;
/**
* @zh 输入框前添加元素
* @en The label text displayed before (on the left side of) the input-tag field
* @version 2.47.0
*/
addBefore?: ReactNode;
/**
* @zh 输入框后添加元素
* @en The label text displayed after (on the right side of) the input-tag field
* @version 2.47.0
*/
addAfter?: ReactNode;
/**
* @zh 自定义图标
* @en Custom icons
*/
icon?: {
removeIcon?: ReactNode;
clearIcon?: ReactNode;
};
/**
* @zh 触发自动分词的分隔符
* @en Separator used to tokenize
* @version 2.44.0
*/
tokenSeparators?: string[];
/**
* @zh 校验函数,默认在 按下enter时候触发。
* @en Function to check user's input, which is triggered when `Enter` is pressed
* @defaultValue (inputValue, values) => inputValue && values.every((item) => item !== inputValue)
* @version return type T and `Promise<T>` in 2.37.0
*/
validate?: (inputValue: string, values: T[]) => boolean | Promise<boolean> | T | Promise<T>;
/**
* @zh 自定义标签渲染,`props` 为当前标签属性,`index` 为当前标签的顺序,`values` 为所有标签的值.
* @en Custom tag rendering, `props` is the current tag attribute, `index` is the order of the current tag, `values` is the value of all tags
* @version index、values added in 2.15.0
*/
renderTag?: (props: {
value: any;
label: ReactNode;
closable: boolean;
onClose: (event: any) => void;
}, index: number, values: ObjectValueType[]) => ReactNode;
/**
* @zh 移除某一个标签时改变时触发
* @en Callback when a tag is removed
*/
onRemove?: (value: T, index: number, event: any) => void;
/**
* @zh 控件值改变时触发
* @en Callback when value changes
* @version `reason` in 2.27.0
*/
onChange?: (value: T[], reason: ValueChangeReason) => void;
/**
* @zh 失去焦点时候触发
* @en Callback when input is blurred
*/
onBlur?: (e: any) => void;
/**
* @zh 聚焦时触发
* @en Callback when input is focused
*/
onFocus?: (e: any) => void;
/**
* @zh 按 enter 键触发
* @en Callback when `Enter` key is pressed
*/
onPressEnter?: (e: any) => void;
/**
* @zh 输入框文本改变的回调。
* @en Callback when the value of input changes
*/
onInputChange?: (inputValue: string, event?: any) => void;
/**
* @zh 键盘事件回调
* @en Callback when the keyboard is pressed
*/
onKeyDown?: (e: any) => void;
/**
* @zh 输入框文本粘贴的回调。
* @en Callback when you paste text in input box
*/
onPaste?: (e: any) => void;
/**
* @zh 点击清除按钮的回调
* @en Callback when clear button is clicked
* @version 2.20.0
*/
onClear?: () => void;
/**
* @zh 单击组件的回调。
* @en Callback when the component is clicked
*/
onClick?: (e: any) => void;
tagClassName?: string;
disableInput?: boolean;
}