/// import * as React from 'react'; import CommonProps from '../util'; interface HTMLAttributesWeak extends React.InputHTMLAttributes { defaultValue?: any; onChange?: any; onKeyDown?: any; size?: any; } export interface TextAreaProps extends HTMLAttributesWeak, CommonProps { /** * 当前值 */ value?: string | number; /** * 初始化值 */ defaultValue?: string | number; /** * 发生改变的时候触发的回调 */ onChange?: (value: string, e: React.ChangeEvent) => void; /** * 键盘按下的时候触发的回调 */ onKeyDown?: (e: React.KeyboardEvent, opts: {}) => void; /** * 禁用状态 */ disabled?: boolean; /** * 最大长度 */ maxLength?: number; /** * 是否展现最大长度样式 */ hasLimitHint?: boolean; showLimitHint?: boolean; /** * 当设置了maxLength时,是否截断超出字符串 */ cutString?: boolean; /** * 只读 */ readOnly?: boolean; /** * onChange返回会自动去除头尾空字符 */ trim?: boolean; /** * 输入提示 */ placeholder?: string; /** * 获取焦点时候触发的回调 */ onFocus?: (e: React.FocusEvent) => void; /** * 失去焦点时候触发的回调 */ onBlur?: (e: React.FocusEvent) => void; /** * 自定义字符串计算长度方式 */ getValueLength?: (value: string) => number; /** * 自定义class */ className?: string; /** * 自定义内联样式 */ style?: React.CSSProperties; /** * 原生type */ htmlType?: string; /** * name */ name?: string; /** * 状态 */ state?: 'error' | 'warning'; /** * 是否有边框 */ hasBorder?: boolean; /** * 自动高度 true / {minRows: 2, maxRows: 4} */ autoHeight?: boolean | {}; /** * 多行文本框高度
(不要直接用height设置多行文本框的高度, ie9 10会有兼容性问题) */ rows?: number; /** * 是否为预览态 */ isPreview?: boolean; renderPreview?: (value: string | number) => React.ReactNode; /** * 开启后会过滤输入法中间字母状态,文字输入完成后才会触发 onChange */ composition?: boolean; } export class TextArea extends React.Component {} export interface GroupProps extends React.HTMLAttributes, CommonProps { /** * 样式前缀 */ prefix?: string; /** * 输入框前附加内容 */ addonBefore?: React.ReactNode; /** * 输入框前附加内容css */ addonBeforeClassName?: string; /** * 输入框后附加内容 */ addonAfter?: React.ReactNode; /** * 输入框后额外css */ addonAfterClassName?: string; /** * rtl */ rtl?: boolean; } export class Group extends React.Component {} export interface InputProps extends HTMLAttributesWeak, CommonProps { /** * 当前值 */ value?: string | number; /** * 初始化值 */ defaultValue?: string | number; /** * 发生改变的时候触发的回调 */ onChange?: (value: string, e: React.ChangeEvent) => void; /** * 键盘按下的时候触发的回调 */ onKeyDown?: (e: React.KeyboardEvent, opts: {}) => void; /** * 禁用状态 */ disabled?: boolean; /** * 最大长度 */ maxLength?: number; /** * 是否展现最大长度样式 */ hasLimitHint?: boolean; showLimitHint?: boolean; /** * 当设置了maxLength时,是否截断超出字符串 */ cutString?: boolean; /** * 只读 */ readOnly?: boolean; /** * onChange返回会自动去除头尾空字符 */ trim?: boolean; /** * 输入提示 */ placeholder?: string; /** * 获取焦点时候触发的回调 */ onFocus?: (e: React.FocusEvent) => void; /** * 失去焦点时候触发的回调 */ onBlur?: (e: React.FocusEvent) => void; /** * 自定义字符串计算长度方式 */ getValueLength?: (value: string) => number; /** * 自定义class */ className?: string; /** * 自定义内联样式 */ style?: React.CSSProperties; /** * 原生type */ htmlType?: string; /** * name */ name?: string; /** * 状态 */ state?: 'error' | 'loading' | 'success' | 'warning'; /** * label */ label?: React.ReactNode; /** * 是否出现clear按钮 */ hasClear?: boolean; /** * 是否有边框 */ hasBorder?: boolean; /** * 尺寸 */ size?: 'small' | 'medium' | 'large'; /** * 按下回车的回调 */ onPressEnter?: (e: React.KeyboardEvent) => void; /** * 水印 (Icon的type类型,和hasClear占用一个地方) */ hint?: string | React.ReactNode; /** * 文字前附加内容 */ innerBefore?: React.ReactNode; /** * 文字后附加内容 */ innerAfter?: React.ReactNode; /** * 输入框前附加内容 */ addonBefore?: React.ReactNode; /** * 输入框后附加内容 */ addonAfter?: React.ReactNode; /** * 输入框前附加文字 */ addonTextBefore?: React.ReactNode; /** * 输入框后附加文字 */ addonTextAfter?: React.ReactNode; /** * (原生input支持) */ autoComplete?: string; /** * 自动聚焦(原生input支持) */ autoFocus?: boolean; /** * 是否为预览态 */ isPreview?: boolean; renderPreview?: (value: string | number) => React.ReactNode; /** * hover展示clear (配合 hasClear=true使用) * @version 1.24 */ hoverShowClear?: boolean; } export interface PasswordProps extends InputProps { /** * 是否展示切换按钮 */ showToggle?: boolean; } export class Password extends React.Component {} export default class Input extends React.Component { static TextArea: typeof TextArea; static Group: typeof Group; static Password: typeof Password; getInputNode: () => HTMLInputElement; }