UNPKG

12.5 kBTypeScriptView Raw
1import { ComponentType } from 'react'
2import { StandardProps, CommonEventFunction, FormItemProps } from './common'
3interface InputProps extends StandardProps, FormItemProps {
4 /** 输入框的初始内容
5 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
6 */
7 value?: string
8 /** 设置 React 非受控输入框的初始内容
9 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony_hybrid
10 * @unique
11 */
12 defaultValue?: string
13 /** input 的类型
14 * @default "text"
15 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
16 */
17 type?: keyof InputProps.Type
18 /** 是否是密码类型
19 * @default false
20 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
21 */
22 password?: boolean
23 /** 输入框为空时占位符
24 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
25 */
26 placeholder?: string
27 /** 指定 placeholder 的样式
28 * @supported weapp, alipay, swan, tt, qq, jd, rn, harmony
29 */
30 placeholderStyle?: string
31 /** 指定 placeholder 的样式类
32 * @default "input-placeholder"
33 * @supported weapp, alipay, swan, tt, qq, jd
34 */
35 placeholderClass?: string
36 /** 指定 placeholder 的文本颜色
37 * @supported rn, harmony
38 */
39 placeholderTextColor?: string
40 /** 是否禁用
41 * @default false
42 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony_hybrid
43 */
44 disabled?: boolean
45 /** 最大输入长度,设置为 -1 的时候不限制最大长度
46 * @default 140
47 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
48 */
49 maxlength?: number
50 /** 指定光标与键盘的距离,单位 px 。取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离
51 * @default 0
52 * @supported weapp, swan, tt, qq, jd
53 */
54 cursorSpacing?: number
55 /** (即将废弃,请直接使用 focus )自动聚焦,拉起键盘
56 * @default false
57 * @deprecated
58 * @supported weapp, qq, jd, h5, harmony_hybrid
59 */
60 autoFocus?: boolean
61 /** 获取焦点
62 * @default false
63 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony_hybrid
64 */
65 focus?: boolean
66 /** 设置键盘右下角按钮的文字,仅在type='text'时生效
67 * @alipay confirm-type 与 enableNative 属性冲突,若希望 confirm-type 生效,enableNative 不能设定为 false,而且不能设定 always-system
68 * @default done
69 * @supported weapp, alipay, swan, tt, qq, jd, rn, harmony
70 */
71 confirmType?: keyof InputProps.ConfirmType
72 /** 点击键盘右下角按钮时是否保持键盘不收起
73 * @default false
74 * @supported weapp, alipay, swan, tt, qq, jd
75 */
76 confirmHold?: boolean
77 /** 指定focus时的光标位置
78 * @supported weapp, alipay, swan, tt, qq, jd, rn, harmony
79 */
80 cursor?: number
81 /** 光标颜色。iOS 下的格式为十六进制颜色值 #000000,安卓下的只支持 default 和 green,Skyline 下无限制
82 * @supported weapp
83 */
84 cursorColor?: string
85 /** 光标起始位置,自动聚集时有效,需与selection-end搭配使用
86 * @default -1
87 * @supported weapp, alipay, swan, tt, qq, jd, rn
88 */
89 selectionStart?: number
90 /** 光标结束位置,自动聚集时有效,需与selection-start搭配使用
91 * @default -1
92 * @supported weapp, alipay, swan, tt, qq, jd, rn
93 */
94 selectionEnd?: number
95 /** 键盘弹起时,是否自动上推页面
96 * @default true
97 * @supported weapp, swan, tt, qq, jd, harmony
98 */
99 adjustPosition?: boolean
100 /** focus 时,点击页面的时候不收起键盘
101 * @default false
102 * @supported weapp, tt
103 */
104 holdKeyboard?: boolean
105 /**
106 * 强制 input 处于同层状态,默认 focus 时 input 会切到非同层状态 (仅在 iOS 下生效)
107 * @default false
108 * @supported weapp
109 */
110 alwaysEmbed?: boolean
111 /**
112 * 安全键盘加密公钥的路径,只支持包内路径
113 * @supported weapp
114 */
115 safePasswordCertPath?: string
116 /**
117 * 安全键盘输入密码长度
118 * @supported weapp
119 */
120 safePasswordLength?: number
121 /**
122 * 安全键盘加密时间戳
123 * @supported weapp
124 */
125 safePasswordTimeStamp?: number
126 /**
127 * 安全键盘加密盐值
128 * @supported weapp
129 */
130 safePasswordNonce?: string
131 /**
132 * 安全键盘计算hash盐值,若指定custom-hash 则无效
133 * @supported weapp
134 */
135 safePasswordSalt?: string
136 /**
137 * 安全键盘计算hash的算法表达式,如 `md5(sha1('foo' + sha256(sm3(password + 'bar'))))`
138 * @supported weapp
139 */
140 safePasswordCustomHash?: string
141 /**
142 * 当 type 为 number, digit, idcard 数字键盘是否随机排列
143 * @default false
144 * @supported alipay
145 */
146 randomNumber?: boolean
147 /**
148 * 是否为受控组件。为 true 时,value 内容会完全受 setData 控制。
149 *
150 * 建议当 type 值为 text 时不要将 controlled 设置为 true,详见 [Bugs & Tips](https://opendocs.alipay.com/mini/component/input#Bug%20%26%20Tip)
151 * @default false
152 * @supported alipay
153 */
154 controlled?: boolean
155 /** 用于透传 `WebComponents` 上的属性到内部 H5 标签上
156 * @supported h5, harmony_hybrid
157 */
158 nativeProps?: Record<string, unknown>
159 /** 组件名字,用于表单提交获取数据。
160 * @supported alipay
161 */
162 name?: string
163 /** 是否强制使用系统键盘和 Web-view 创建的 input 元素。为 true 时,confirm-type、confirm-hold 可能失效。
164 * @default false
165 * @supported alipay
166 */
167 alwaysSystem?: boolean
168 /** 无障碍访问,(属性)元素的额外描述
169 * @supported qq
170 */
171 ariaLabel?: string
172 /** 用于分发目的。取值:0 和 1,其中 0 表示默认,1 表示手机号,需要和留资分发配置一起使用,详情见留资分发配置。
173 * @supported tt
174 * @default 0
175 */
176 clueType?: number
177 /** 当键盘输入时,触发input事件,event.detail = {value, cursor, keyCode},处理函数可以直接 return 一个字符串,将替换输入框的内容。
178 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
179 */
180 onInput?: CommonEventFunction<InputProps.inputEventDetail>
181 /** 输入框聚焦时触发,event.detail = { value, height },height 为键盘高度
182 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
183 */
184 onFocus?: CommonEventFunction<InputProps.inputForceEventDetail>
185 /** 输入框失去焦点时触发
186 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
187 */
188 onBlur?: CommonEventFunction<InputProps.inputValueEventDetail>
189 /** 点击完成按钮时触发
190 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
191 */
192 onConfirm?: CommonEventFunction<InputProps.inputValueEventDetail>
193 /** 键盘高度发生变化的时候触发此事件
194 * @supported weapp, tt, qq, harmony
195 */
196 onKeyboardHeightChange?: CommonEventFunction<InputProps.onKeyboardHeightChangeEventDetail>
197 /** 用户昵称审核完毕后触发,仅在 type 为 "nickname" 时有效,event.detail = { pass, timeout }
198 * @supported weapp
199 */
200 onNickNameReview?: CommonEventFunction
201 /** 选区改变事件, {selectionStart, selectionEnd}
202 * @supported weapp
203 */
204 onSelectionChange?: CommonEventFunction
205 /** 输入法开始新的输入时触发 (仅当输入法支持时触发)
206 * @supported weapp
207 */
208 onKeyboardCompositionStart?: CommonEventFunction
209 /** 输入法输入字符时触发(仅当输入法支持时触发)
210 * @supported weapp
211 */
212 onKeyboardCompositionUpdate?: CommonEventFunction
213 /** 输入法输入结束时触发(仅当输入法支持时触发)
214 * @supported weapp
215 */
216 onKeyboardCompositionEnd?: CommonEventFunction
217 /** 键盘高度变化时触发。event.detail = {height: height, pageBottomPadding: pageBottomPadding}; height: 键盘高度,pageBottomPadding: 页面上推高度
218 * @supported weapp
219 */
220 onKeyoardHeightChangeWorklet?: string
221}
222declare namespace InputProps {
223 /** Input 类型 */
224 interface Type {
225 /** 文本输入键盘
226 * @supported weapp, alipay, h5, rn, harmony_hybrid
227 */
228 text
229 /** 数字输入键盘
230 * @supported weapp, alipay, h5, rn, harmony_hybrid
231 */
232 number
233 /** 身份证输入键盘
234 *@supported weapp, alipay, rn
235 */
236 idcard
237 /** 带小数点的数字键盘
238 * @supported weapp, alipay, h5, rn, harmony_hybrid
239 */
240 digit
241 /** 密码安全输入键盘[指引](https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/safe-password.html)
242 * @supported weapp, alipay
243 */
244 'safe-password'
245 /** 昵称输入键盘
246 * @supported weapp, alipay
247 */
248 nickname
249 /** 数字输入键盘
250 * @supported alipay
251 */
252 numberpad
253 /** 带小数点的数字键盘
254 * @supported alipay
255 */
256 digitpad
257 /** 身份证输入键盘
258 * @supported alipay
259 */
260 idcardpad
261 }
262 /** Confirm 类型 */
263 interface ConfirmType {
264 /** 右下角按钮为“发送” */
265 send
266 /** 右下角按钮为“搜索” */
267 search
268 /** 右下角按钮为“下一个” */
269 next
270 /** 右下角按钮为“前往” */
271 go
272 /** 右下角按钮为“完成” */
273 done
274 }
275 /** > 注意:React-Native 端 `inputEventDetail` 仅实现参数 `value`,若需实时获取光标位置则可通过 [`onSelectionChange`](https://reactnative.dev/docs/textinput#onselectionchange) 实现。 */
276 interface inputEventDetail {
277 /** 输入值 */
278 value: string
279 /** 光标位置 */
280 cursor: number
281 /** 键值 */
282 keyCode: number
283 }
284 interface inputForceEventDetail {
285 /** 输入值 */
286 value: string
287 /** 键盘高度 */
288 height: number
289 }
290 interface inputValueEventDetail {
291 /** 输入值 */
292 value: string
293 }
294 interface onKeyboardHeightChangeEventDetail {
295 /** 键盘高度 */
296 height: number
297 /** 持续时间 */
298 duration: number
299 }
300}
301/** 输入框。该组件是原生组件,使用时请注意相关限制
302 * @classification forms
303 * @supported weapp, alipay, swan, tt, qq, jd, h5, rn, harmony, harmony_hybrid
304 * @example_react
305 * ```tsx
306 * class App extends Component {
307 * render () {
308 * return (
309 * <View className='example-body'>
310 * <Text>可以自动聚焦的 input</Text>
311 * <Input type='text' placeholder='将会获取焦点' focus/>
312 * <Text>控制最大输入长度的 input</Text>
313 * <Input type='text' placeholder='最大输入长度为 10' maxLength='10'/>
314 * <Text>数字输入的 input</Text>
315 * <Input type='number' placeholder='这是一个数字输入框'/>
316 * <Text>密码输入的 input</Text>
317 * <Input type='password' password placeholder='这是一个密码输入框'/>
318 * <Text>带小数点的 input</Text>
319 * <Input type='digit' placeholder='带小数点的数字键盘'/>
320 * <Text>身份证输入的 input</Text>
321 * <Input type='idcard' placeholder='身份证输入键盘'/>
322 * <Text>控制占位符颜色的 input</Text>
323 * <Input type='text' placeholder='占位符字体是红色的' placeholderStyle='color:red'/>
324 * </View>
325 * )
326 * }
327 * }
328 * ```
329 * @example_vue
330 * ```html
331 * <template>
332 * <view class="example-body">
333 * <text>可以自动聚焦的 input</text>
334 * <input type="text" placeholder="将会获取焦点" :focus="true" />
335 * <text>控制最大输入长度的 input</text>
336 * <input type="text" placeholder="最大输入长度为 10" maxLength="10"/>
337 * <text>数字输入的 input</text>
338 * <input type="number" placeholder="这是一个数字输入框"/>
339 * <text>密码输入的 input</text>
340 * <input type="password" :password="true" placeholder="这是一个密码输入框"/>
341 * <text>带小数点的 input</text>
342 * <input type="digit" placeholder="带小数点的数字键盘"/>
343 * <text>身份证输入的 input</text>
344 * <input type="idcard" placeholder="身份证输入键盘"/>
345 * <text>控制占位符颜色的 input</text>
346 * <input type="text" placeholder="占位符字体是红色的" placeholder-style="color:red;"/>
347 * </view>
348 * </template>
349 * ```
350 * @see https://developers.weixin.qq.com/miniprogram/dev/component/input.html
351 */
352declare const Input: ComponentType<InputProps>
353export { Input, InputProps }