UNPKG

shineout

Version:

Shein 前端组件库

93 lines (88 loc) 2.92 kB
import { ReactNode, FocusEventHandler, KeyboardEvent, TextareaHTMLAttributes } from 'react' import { InputTitleProps } from '../InputTitle/Props' import { GetDelayProps, GetInputBorderProps } from '../hoc/Props' import { GetInputableProps } from '../Form/Props' import { ForceAdd } from '../@types/common' export interface OriginTextareaProps extends Pick<InputTitleProps, 'innerTitle' | 'placeTitle'> { /** * @en Form field, used with Form * @cn 表单字段, 配合 Form 使用 */ name?: string /** * @en Whether the height changes automatically with the content * @cn 高度是否随内容自动变化 * @default false */ autosize?: boolean /** * @en Information * @cn 提示信息 */ info?: number | ((value?: string) => ReactNode) /** * @en the maxHeight of the textarea, scroll bars appear after more than * @cn 输入框的最大高度, 超过之后会出现滚动条 */ maxHeight?: number | string /** * @en The callback when Textarea blur * @cn 失去焦点后的回调 */ onBlur?: FocusEventHandler<HTMLTextAreaElement> /** * @en The callback function for changing value * @cn 值改变回调函数 */ onChange: (value: string) => void forceChange: (value: string) => void /** * @en The callback function for enter key * @cn 回车键回调函数 */ onEnterPress?: (value: string, e: KeyboardEvent<HTMLTextAreaElement>) => void /** * @en The minimum row height. Same as native textarea rows property. * @cn 最小行高,同原生 textarea rows 属性 * @default 4 */ rows?: number /** * @en DefaultValue and value can be set at the same time and defaultValue will be overridden by value. * @cn defaultValue 和 value 可以同时设置,defaultValue 会被value覆盖 */ value?: string /** * @en support resize * @cn 是否可以伸缩高度 * @default false */ resize?: boolean /** * @en render textarea footer * @cn 渲染 textarea footer */ renderFooter?: (value?: string) => ReactNode inputFocus?: boolean /** * @en When trim is true, blank characters are automatically deleted when lose focus * @cn trim 为 true 时,失去焦点时会自动删除空白字符。 * @default false */ trim?: boolean } // hoc export type TextareaPropsWithDelay = GetDelayProps<OriginTextareaProps> type TextareaPropsWithBorder = GetInputBorderProps<TextareaPropsWithDelay> /** * @title Textarea * @en Supports all attributes of native textarea * @cn 支持原生 textarea 所有属性 */ type TextareaPropsWithInputAble = Omit< GetInputableProps<TextareaPropsWithBorder, string>, 'innerTitle' | 'placeTitle' | 'reserveAble' | 'filterSameChange' > // 增加原生属性 type TextareaPropsWithOrigin = ForceAdd<TextareaPropsWithInputAble, TextareaHTMLAttributes<HTMLTextAreaElement>> export type TextareaProps = TextareaPropsWithOrigin