@next-bricks/form 1.21.11 → 1.21.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/bricks.json +35 -35
  2. package/dist/chunks/2537.be4cf82c.js.map +1 -1
  3. package/dist/chunks/845.2f598dd9.js +3 -0
  4. package/dist/chunks/845.2f598dd9.js.map +1 -0
  5. package/dist/chunks/{9949.753e2720.js → 9949.3d28a915.js} +3 -3
  6. package/dist/chunks/9949.3d28a915.js.map +1 -0
  7. package/dist/chunks/eo-auto-complete.0ed854e4.js.map +1 -1
  8. package/dist/chunks/eo-checkbox.2d0a8dbc.js.map +1 -1
  9. package/dist/chunks/eo-color-picker.ecf0c4c0.js.map +1 -1
  10. package/dist/chunks/eo-date-picker.faa60507.js.map +1 -1
  11. package/dist/chunks/eo-dynamic-form-item.aa5f7d9e.js.map +1 -1
  12. package/dist/chunks/eo-form.9db78cdb.js.map +1 -1
  13. package/dist/chunks/eo-icon-select.6a7f7e12.js +3 -0
  14. package/dist/chunks/eo-icon-select.6a7f7e12.js.map +1 -0
  15. package/dist/chunks/eo-radio.b2ed57db.js.map +1 -1
  16. package/dist/chunks/eo-search.206dd65e.js.map +1 -1
  17. package/dist/chunks/eo-select.cd00c791.js.map +1 -1
  18. package/dist/chunks/eo-switch.f0a27c08.js.map +1 -1
  19. package/dist/chunks/eo-textarea.405851dd.js.map +1 -1
  20. package/dist/chunks/eo-time-picker.46e7a667.js.map +1 -1
  21. package/dist/chunks/eo-time-range-picker.5afbad69.js.map +1 -1
  22. package/dist/chunks/eo-upload-file.27a4288d.js.map +1 -1
  23. package/dist/chunks/eo-upload-image.b43c2329.js.map +1 -1
  24. package/dist/chunks/{main.8c394d3e.js → main.59f7a796.js} +2 -2
  25. package/dist/chunks/{main.8c394d3e.js.map → main.59f7a796.js.map} +1 -1
  26. package/dist/examples.json +27 -24
  27. package/dist/index.2c92cf90.js +2 -0
  28. package/dist/{index.7917bac6.js.map → index.2c92cf90.js.map} +1 -1
  29. package/dist/manifest.json +451 -385
  30. package/dist/types.json +2699 -2649
  31. package/dist-types/auto-complete/index.d.ts +4 -0
  32. package/dist-types/checkbox/index.d.ts +2 -2
  33. package/dist-types/color-picker/index.d.ts +2 -1
  34. package/dist-types/date-picker/index.d.ts +1 -1
  35. package/dist-types/form/index.d.ts +16 -1
  36. package/dist-types/form-item/index.d.ts +31 -2
  37. package/dist-types/general-switch/index.d.ts +1 -1
  38. package/dist-types/icon-select/index.d.ts +1 -1
  39. package/dist-types/input/index.d.ts +2 -2
  40. package/dist-types/radio/index.d.ts +4 -4
  41. package/dist-types/select/index.d.ts +1 -0
  42. package/dist-types/textarea/index.d.ts +1 -1
  43. package/dist-types/time-range-picker/index.d.ts +7 -4
  44. package/dist-types/upload/upload-file/index.d.ts +1 -1
  45. package/docs/eo-auto-complete.md +158 -8
  46. package/docs/eo-auto-complete.react.md +229 -0
  47. package/docs/eo-checkbox.md +107 -4
  48. package/docs/eo-checkbox.react.md +369 -0
  49. package/docs/eo-color-picker.md +102 -22
  50. package/docs/eo-color-picker.react.md +160 -0
  51. package/docs/eo-date-picker.md +82 -50
  52. package/docs/eo-date-picker.react.md +146 -0
  53. package/docs/eo-dynamic-form-item.md +60 -15
  54. package/docs/eo-dynamic-form-item.react.md +186 -0
  55. package/docs/eo-form-item.md +194 -0
  56. package/docs/eo-form-item.react.md +163 -0
  57. package/docs/eo-form.md +144 -3
  58. package/docs/eo-form.react.md +330 -0
  59. package/docs/eo-icon-select.md +80 -1
  60. package/docs/eo-icon-select.react.md +97 -0
  61. package/docs/eo-input.md +147 -22
  62. package/docs/eo-input.react.md +275 -0
  63. package/docs/eo-radio.md +145 -8
  64. package/docs/eo-radio.react.md +492 -0
  65. package/docs/eo-search.md +94 -1
  66. package/docs/eo-search.react.md +122 -0
  67. package/docs/eo-select.md +157 -9
  68. package/docs/eo-select.react.md +411 -0
  69. package/docs/eo-submit-buttons.md +120 -7
  70. package/docs/eo-submit-buttons.react.md +129 -0
  71. package/docs/eo-switch.md +57 -3
  72. package/docs/eo-switch.react.md +136 -0
  73. package/docs/eo-textarea.md +101 -22
  74. package/docs/eo-textarea.react.md +193 -0
  75. package/docs/eo-time-picker.md +70 -42
  76. package/docs/eo-time-picker.react.md +106 -0
  77. package/docs/eo-time-range-picker.md +89 -35
  78. package/docs/eo-time-range-picker.react.md +163 -0
  79. package/docs/eo-upload-file.md +101 -9
  80. package/docs/eo-upload-file.react.md +126 -0
  81. package/docs/eo-upload-image.md +70 -6
  82. package/docs/eo-upload-image.react.md +92 -0
  83. package/package.json +2 -2
  84. package/dist/chunks/845.c8b5b1e8.js +0 -3
  85. package/dist/chunks/845.c8b5b1e8.js.map +0 -1
  86. package/dist/chunks/9949.753e2720.js.map +0 -1
  87. package/dist/chunks/eo-icon-select.6ea15888.js +0 -3
  88. package/dist/chunks/eo-icon-select.6ea15888.js.map +0 -1
  89. package/dist/index.7917bac6.js +0 -2
  90. /package/dist/chunks/{845.c8b5b1e8.js.LICENSE.txt → 845.2f598dd9.js.LICENSE.txt} +0 -0
  91. /package/dist/chunks/{9949.753e2720.js.LICENSE.txt → 9949.3d28a915.js.LICENSE.txt} +0 -0
  92. /package/dist/chunks/{eo-icon-select.6ea15888.js.LICENSE.txt → eo-icon-select.6a7f7e12.js.LICENSE.txt} +0 -0
@@ -0,0 +1,97 @@
1
+ ---
2
+ tagName: eo-icon-select
3
+ displayName: WrappedEoIconSelect
4
+ description: 图标选择构件
5
+ category: form-input-basic
6
+ source: "@next-bricks/form"
7
+ ---
8
+
9
+ # WrappedEoIconSelect
10
+
11
+ > 图标选择构件
12
+
13
+ ## 导入
14
+
15
+ ```tsx
16
+ import { WrappedEoIconSelect } from "@easyops/wrapped-components";
17
+ ```
18
+
19
+ ## Props
20
+
21
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
22
+ | ------------ | ------------------------ | ---- | ------ | ---------------- |
23
+ | name | `string` | 否 | - | 字段名称 |
24
+ | label | `string` | 否 | - | 字段说明 |
25
+ | value | `Icon` | 否 | - | 值 |
26
+ | disabled | `boolean` | 否 | - | 是否禁用 |
27
+ | required | `boolean` | 否 | - | 是否必填 |
28
+ | message | `Record<string, string>` | 否 | - | 校验错误提示信息 |
29
+ | themeVariant | `"default" \| "elevo"` | 否 | - | 主题变体 |
30
+
31
+ ## Events
32
+
33
+ | 事件 | detail | 说明 |
34
+ | -------- | ------------------------------------------------------------------------------------------------------- | ------------ |
35
+ | onChange | `Icon \| undefined` — { lib: 图标库, icon: 图标名称, category: 图标分类, color: 图标颜色 } \| undefined | 值变化时触发 |
36
+
37
+ ## Examples
38
+
39
+ ### Basic
40
+
41
+ 基础用法,点击图标选择器后打开图标选择弹窗,确认后通过 onChange 事件获取选中的图标。
42
+
43
+ ```tsx
44
+ <WrappedEoIconSelect onChange={(e) => console.log(e.detail)} />
45
+ ```
46
+
47
+ ### With Value
48
+
49
+ 设置初始值,展示已选中的图标。
50
+
51
+ ```tsx
52
+ <WrappedEoIconSelect
53
+ value={{ lib: "antd", icon: "star", theme: "filled", color: "#faad14" }}
54
+ onChange={(e) => console.log(e.detail)}
55
+ />
56
+ ```
57
+
58
+ ### Disabled
59
+
60
+ 设置 disabled 为 true 禁用图标选择器,用户无法打开选择弹窗。
61
+
62
+ ```tsx
63
+ <WrappedEoIconSelect
64
+ disabled={true}
65
+ value={{ lib: "antd", icon: "heart", theme: "filled", color: "#ff4d4f" }}
66
+ />
67
+ ```
68
+
69
+ ### With Form
70
+
71
+ 在表单中使用图标选择器,配合 name、label、required、message 进行表单校验。
72
+
73
+ ```tsx
74
+ <WrappedEoForm
75
+ onValidateSuccess={(e) => console.log(e.detail)}
76
+ onValuesChange={(e) => console.log(e.detail)}
77
+ >
78
+ <WrappedEoIconSelect
79
+ name="icon"
80
+ label="图标"
81
+ required={true}
82
+ message={{ required: "请选择一个图标" }}
83
+ />
84
+ <WrappedEoSubmitButtons />
85
+ </WrappedEoForm>
86
+ ```
87
+
88
+ ### ThemeVariant
89
+
90
+ 通过 themeVariant 属性切换图标选择弹窗的主题样式。
91
+
92
+ ```tsx
93
+ <WrappedEoIconSelect
94
+ themeVariant="elevo"
95
+ onChange={(e) => console.log(e.detail)}
96
+ />
97
+ ```
package/docs/eo-input.md CHANGED
@@ -1,13 +1,88 @@
1
- 表单输入框构件。
1
+ ---
2
+ tagName: eo-input
3
+ displayName: WrappedEoInput
4
+ description: 通用输入框构件
5
+ category: form-input-basic
6
+ source: "@next-bricks/form"
7
+ ---
8
+
9
+ # eo-input
10
+
11
+ > 通用输入框构件
12
+
13
+ ## Props
14
+
15
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
16
+ | ----------- | ----------------------------- | ---- | ---------- | ---------------------------------------------------- |
17
+ | name | `string` | 否 | - | 字段名称 |
18
+ | label | `string` | 否 | - | 标签文字 |
19
+ | value | `string` | 否 | - | 输入框值 |
20
+ | placeholder | `string` | 否 | - | 占位说明 |
21
+ | disabled | `boolean` | 否 | - | 是否禁用 |
22
+ | readonly | `boolean` | 否 | - | 是否只读 |
23
+ | clearable | `boolean` | 否 | - | 是否显示清除按钮 |
24
+ | autoFocus | `boolean` | 否 | - | 是否自动聚焦 |
25
+ | type | `InputType` | 否 | `"text"` | 类型 |
26
+ | size | `ComponentSize` | 否 | `"medium"` | 大小 |
27
+ | minLength | `number` | 否 | - | 最小长度 |
28
+ | maxLength | `number` | 否 | - | 最大长度(用户无法输入超过此最大长度的字符串) |
29
+ | min | `number` | 否 | - | 表单校验最小长度(当 type 为 number 时,表示最小值) |
30
+ | max | `number` | 否 | - | 表单校验最大长度(当 type 为 number 时,表示最大值) |
31
+ | pattern | `string` | 否 | - | 正则校验规则 |
32
+ | required | `boolean` | 否 | - | 是否必填 |
33
+ | message | `Record<string, string>` | 否 | - | 错误时显示消息 |
34
+ | inputStyle | `React.CSSProperties` | 否 | - | 输入框样式 |
35
+ | validator | `(value: any) => MessageBody` | 否 | - | 表单项校验方法 |
36
+
37
+ ## Events
38
+
39
+ | 事件 | detail | 说明 |
40
+ | ------ | --------------------- | ---------- |
41
+ | change | `string` — 当前输入值 | 值改变事件 |
42
+
43
+ ## Methods
44
+
45
+ | 方法 | 签名 | 说明 |
46
+ | ---------- | ------------ | ---------------- |
47
+ | focusInput | `() => void` | 使输入框获得焦点 |
48
+ | blurInput | `() => void` | 使输入框失去焦点 |
49
+
50
+ ## Slots
51
+
52
+ | 名称 | 说明 |
53
+ | ----------- | -------------- |
54
+ | addonBefore | 输入框前置标签 |
55
+ | addonAfter | 输入框后置标签 |
56
+ | prefix | 输入框前缀图标 |
57
+ | suffix | 输入框后缀图标 |
58
+
59
+ ## CSS Parts
60
+
61
+ | 名称 | 说明 |
62
+ | ------------- | ------------------------------------------ |
63
+ | addon-wrapper | 包裹输入组件、前缀、后缀、前置和后置的容器 |
64
+ | affix-wrapper | 包裹输入组件、前缀和后缀的容器 |
65
+ | input | 输入组件 |
66
+ | clear-icon | 清除按钮 |
67
+ | prefix | 输入框前缀容器 |
68
+ | suffix | 输入框后缀容器 |
69
+ | before-addon | 输入框前置容器 |
70
+ | after-addon | 输入框后置容器 |
71
+
72
+ ## Examples
73
+
74
+ ### Basic
75
+
76
+ 展示通用输入框的最基本用法。
2
77
 
3
78
  ```yaml preview
4
79
  - brick: eo-input
5
80
  ```
6
81
 
7
- ## Examples
8
-
9
82
  ### Label
10
83
 
84
+ 通过 `label` 属性为输入框设置标签文字。
85
+
11
86
  ```yaml preview
12
87
  - brick: eo-input
13
88
  properties:
@@ -16,14 +91,28 @@
16
91
 
17
92
  ### Value
18
93
 
94
+ 通过 `value` 属性设置输入框的默认值。
95
+
19
96
  ```yaml preview
20
97
  - brick: eo-input
21
98
  properties:
22
99
  value: Default Value
23
100
  ```
24
101
 
102
+ ### Placeholder
103
+
104
+ 通过 `placeholder` 属性设置占位提示文字。
105
+
106
+ ```yaml preview
107
+ - brick: eo-input
108
+ properties:
109
+ placeholder: This is placeholder...
110
+ ```
111
+
25
112
  ### Disabled
26
113
 
114
+ 设置 `disabled` 属性禁用输入框。
115
+
27
116
  ```yaml preview
28
117
  - brick: eo-input
29
118
  properties:
@@ -31,24 +120,31 @@
31
120
  disabled: true
32
121
  ```
33
122
 
34
- ### Clearable
123
+ ### Readonly
124
+
125
+ 设置 `readonly` 属性使输入框只读。
35
126
 
36
127
  ```yaml preview
37
128
  - brick: eo-input
38
129
  properties:
39
- value: Default Value
40
- clearable: true
130
+ value: Read only value
131
+ readonly: true
41
132
  ```
42
133
 
43
- ### Placeholder
134
+ ### Clearable
135
+
136
+ 设置 `clearable` 属性在输入框非空时显示清除按钮。
44
137
 
45
138
  ```yaml preview
46
139
  - brick: eo-input
47
140
  properties:
48
- placeholder: This is placeholder...
141
+ value: Default Value
142
+ clearable: true
49
143
  ```
50
144
 
51
- ### max length
145
+ ### Max Length
146
+
147
+ 通过 `maxLength` 属性限制用户最多输入的字符数。
52
148
 
53
149
  ```yaml preview
54
150
  - brick: eo-input
@@ -59,6 +155,8 @@
59
155
 
60
156
  ### Type
61
157
 
158
+ 通过 `type` 属性切换输入框类型,支持 `password`、`date`、`color`、`number`、`search` 等。
159
+
62
160
  ```yaml preview
63
161
  - brick: eo-input
64
162
  properties:
@@ -74,12 +172,16 @@
74
172
  type: color
75
173
  - brick: eo-input
76
174
  properties:
77
- label: search
78
- type: search
175
+ label: number
176
+ type: number
177
+ min: 0
178
+ max: 100
79
179
  ```
80
180
 
81
181
  ### Size
82
182
 
183
+ 通过 `size` 属性控制输入框大小,支持 `large`、`medium`(默认)和 `small`。
184
+
83
185
  ```yaml preview
84
186
  - brick: eo-input
85
187
  properties:
@@ -97,6 +199,8 @@
97
199
 
98
200
  ### Input Style
99
201
 
202
+ 通过 `inputStyle` 属性自定义输入框的内联样式。
203
+
100
204
  ```yaml preview
101
205
  - brick: eo-input
102
206
  properties:
@@ -115,27 +219,24 @@
115
219
  border: "1px solid #8b2121"
116
220
  ```
117
221
 
118
- ### Event
222
+ ### Events
223
+
224
+ 监听 `change` 事件获取输入框值变化。
119
225
 
120
226
  ```yaml preview
121
227
  - brick: eo-input
122
- events:
228
+ properties:
123
229
  label: Event
230
+ events:
124
231
  change:
125
232
  action: message.success
126
233
  args:
127
234
  - <% EVENT.detail %>
128
- focus:
129
- action: message.success
130
- args:
131
- - focus
132
- blur:
133
- action: message.success
134
- args:
135
- - blur
136
235
  ```
137
236
 
138
- ### Slot
237
+ ### Slots
238
+
239
+ 通过 `prefix`、`suffix`、`addonBefore`、`addonAfter` 插槽在输入框不同位置插入自定义内容。
139
240
 
140
241
  ```yaml preview gap
141
242
  - brick: eo-input
@@ -180,6 +281,8 @@
180
281
 
181
282
  ### With Form
182
283
 
284
+ 在 `eo-form` 中使用,通过 `name`、`label` 属性集成表单功能,并可配合 `required`、`pattern`、`message` 属性实现表单校验。
285
+
183
286
  ```yaml preview
184
287
  - brick: eo-form
185
288
  events:
@@ -193,5 +296,27 @@
193
296
  label: 输入框
194
297
  name: text
195
298
  required: true
299
+ pattern: "^[A-Za-z]+"
300
+ message:
301
+ required: 请输入内容
302
+ pattern: 只能输入字母
303
+ - brick: eo-submit-buttons
304
+ ```
305
+
306
+ ### Validator
307
+
308
+ 通过 `validator` 属性自定义表单项校验逻辑,返回 `null` 表示校验通过,返回包含 `message` 的对象表示校验失败。
309
+
310
+ ```yaml preview
311
+ - brick: eo-form
312
+ events:
313
+ validate.success:
314
+ - action: console.log
315
+ children:
316
+ - brick: eo-input
317
+ properties:
318
+ name: username
319
+ label: 用户名
320
+ validator: "<% (value) => value && value.length > 10 ? { message: '用户名不能超过10个字符' } : null %>"
196
321
  - brick: eo-submit-buttons
197
322
  ```
@@ -0,0 +1,275 @@
1
+ ---
2
+ tagName: eo-input
3
+ displayName: WrappedEoInput
4
+ description: 通用输入框构件
5
+ category: form-input-basic
6
+ source: "@next-bricks/form"
7
+ ---
8
+
9
+ # WrappedEoInput
10
+
11
+ > 通用输入框构件
12
+
13
+ ## 导入
14
+
15
+ ```tsx
16
+ import { WrappedEoInput } from "@easyops/wrapped-components";
17
+ ```
18
+
19
+ ## Props
20
+
21
+ | 属性 | 类型 | 必填 | 默认值 | 说明 |
22
+ | ----------- | ----------------------------- | ---- | ---------- | ---------------------------------------------------- |
23
+ | name | `string` | 否 | - | 字段名称 |
24
+ | label | `string` | 否 | - | 标签文字 |
25
+ | value | `string` | 否 | - | 输入框值 |
26
+ | placeholder | `string` | 否 | - | 占位说明 |
27
+ | disabled | `boolean` | 否 | - | 是否禁用 |
28
+ | readonly | `boolean` | 否 | - | 是否只读 |
29
+ | clearable | `boolean` | 否 | - | 是否显示清除按钮 |
30
+ | autoFocus | `boolean` | 否 | - | 是否自动聚焦 |
31
+ | type | `InputType` | 否 | `"text"` | 类型 |
32
+ | size | `ComponentSize` | 否 | `"medium"` | 大小 |
33
+ | minLength | `number` | 否 | - | 最小长度 |
34
+ | maxLength | `number` | 否 | - | 最大长度(用户无法输入超过此最大长度的字符串) |
35
+ | min | `number` | 否 | - | 表单校验最小长度(当 type 为 number 时,表示最小值) |
36
+ | max | `number` | 否 | - | 表单校验最大长度(当 type 为 number 时,表示最大值) |
37
+ | pattern | `string` | 否 | - | 正则校验规则 |
38
+ | required | `boolean` | 否 | - | 是否必填 |
39
+ | message | `Record<string, string>` | 否 | - | 错误时显示消息 |
40
+ | inputStyle | `React.CSSProperties` | 否 | - | 输入框样式 |
41
+ | validator | `(value: any) => MessageBody` | 否 | - | 表单项校验方法 |
42
+
43
+ ## Events
44
+
45
+ | 事件 | detail | 说明 |
46
+ | -------- | --------------------- | ---------- |
47
+ | onChange | `string` — 当前输入值 | 值改变事件 |
48
+
49
+ ## Methods
50
+
51
+ | 方法 | 签名 | 说明 |
52
+ | ---------- | ------------ | ---------------- |
53
+ | focusInput | `() => void` | 使输入框获得焦点 |
54
+ | blurInput | `() => void` | 使输入框失去焦点 |
55
+
56
+ ## Slots
57
+
58
+ | 名称 | 说明 |
59
+ | ----------- | -------------- |
60
+ | addonBefore | 输入框前置标签 |
61
+ | addonAfter | 输入框后置标签 |
62
+ | prefix | 输入框前缀图标 |
63
+ | suffix | 输入框后缀图标 |
64
+
65
+ ## CSS Parts
66
+
67
+ | 名称 | 说明 |
68
+ | ------------- | ------------------------------------------ |
69
+ | addon-wrapper | 包裹输入组件、前缀、后缀、前置和后置的容器 |
70
+ | affix-wrapper | 包裹输入组件、前缀和后缀的容器 |
71
+ | input | 输入组件 |
72
+ | clear-icon | 清除按钮 |
73
+ | prefix | 输入框前缀容器 |
74
+ | suffix | 输入框后缀容器 |
75
+ | before-addon | 输入框前置容器 |
76
+ | after-addon | 输入框后置容器 |
77
+
78
+ ## Examples
79
+
80
+ ### Basic
81
+
82
+ 展示通用输入框的最基本用法。
83
+
84
+ ```tsx
85
+ <WrappedEoInput />
86
+ ```
87
+
88
+ ### Label
89
+
90
+ 通过 `label` 属性为输入框设置标签文字。
91
+
92
+ ```tsx
93
+ <WrappedEoInput label="输入框" />
94
+ ```
95
+
96
+ ### Value
97
+
98
+ 通过 `value` 属性设置输入框的默认值。
99
+
100
+ ```tsx
101
+ <WrappedEoInput value="Default Value" />
102
+ ```
103
+
104
+ ### Placeholder
105
+
106
+ 通过 `placeholder` 属性设置占位提示文字。
107
+
108
+ ```tsx
109
+ <WrappedEoInput placeholder="This is placeholder..." />
110
+ ```
111
+
112
+ ### Disabled
113
+
114
+ 设置 `disabled` 属性禁用输入框。
115
+
116
+ ```tsx
117
+ <WrappedEoInput value="Default Value" disabled />
118
+ ```
119
+
120
+ ### Readonly
121
+
122
+ 设置 `readonly` 属性使输入框只读。
123
+
124
+ ```tsx
125
+ <WrappedEoInput value="Read only value" readonly />
126
+ ```
127
+
128
+ ### Clearable
129
+
130
+ 设置 `clearable` 属性在输入框非空时显示清除按钮。
131
+
132
+ ```tsx
133
+ <WrappedEoInput value="Default Value" clearable />
134
+ ```
135
+
136
+ ### Max Length
137
+
138
+ 通过 `maxLength` 属性限制用户最多输入的字符数。
139
+
140
+ ```tsx
141
+ <WrappedEoInput placeholder="max length = 5" maxLength={5} />
142
+ ```
143
+
144
+ ### Type
145
+
146
+ 通过 `type` 属性切换输入框类型,支持 `password`、`date`、`color`、`number`、`search` 等。
147
+
148
+ ```tsx
149
+ <>
150
+ <WrappedEoInput label="password" type="password" />
151
+ <WrappedEoInput label="date" type="date" />
152
+ <WrappedEoInput label="color" type="color" />
153
+ <WrappedEoInput label="number" type="number" min={0} max={100} />
154
+ </>
155
+ ```
156
+
157
+ ### Size
158
+
159
+ 通过 `size` 属性控制输入框大小,支持 `large`、`medium`(默认)和 `small`。
160
+
161
+ ```tsx
162
+ <>
163
+ <WrappedEoInput size="large" placeholder="large" />
164
+ <WrappedEoInput size="medium" placeholder="medium" />
165
+ <WrappedEoInput size="small" placeholder="small" />
166
+ </>
167
+ ```
168
+
169
+ ### Input Style
170
+
171
+ 通过 `inputStyle` 属性自定义输入框的内联样式。
172
+
173
+ ```tsx
174
+ <>
175
+ <WrappedEoInput placeholder="width: 180px" inputStyle={{ width: "180px" }} />
176
+ <WrappedEoInput placeholder="width: 250px" inputStyle={{ width: "250px" }} />
177
+ <WrappedEoInput
178
+ placeholder="border style"
179
+ inputStyle={{ border: "1px solid #8b2121" }}
180
+ />
181
+ </>
182
+ ```
183
+
184
+ ### Events
185
+
186
+ 监听 `onChange` 事件获取输入框值变化。
187
+
188
+ ```tsx
189
+ function Demo() {
190
+ const [value, setValue] = React.useState("");
191
+ return (
192
+ <WrappedEoInput
193
+ label="Event"
194
+ value={value}
195
+ onChange={(e) => setValue(e.detail)}
196
+ />
197
+ );
198
+ }
199
+ ```
200
+
201
+ ### Slots
202
+
203
+ 通过 `prefix`、`suffix`、`addonBefore`、`addonAfter` 插槽在输入框不同位置插入自定义内容。
204
+
205
+ ```tsx
206
+ <>
207
+ <WrappedEoInput placeholder="prefix slot">
208
+ <WrappedEoIcon slot="prefix" lib="antd" icon="search" theme="outlined" />
209
+ </WrappedEoInput>
210
+ <WrappedEoInput placeholder="suffix slot">
211
+ <WrappedEoIcon slot="suffix" lib="antd" icon="search" theme="outlined" />
212
+ </WrappedEoInput>
213
+ <WrappedEoInput placeholder="addon slot">
214
+ <span slot="addonBefore">https://</span>
215
+ <span slot="addonAfter">.com</span>
216
+ </WrappedEoInput>
217
+ </>
218
+ ```
219
+
220
+ ### With Form
221
+
222
+ 在 `WrappedEoForm` 中使用,通过 `name`、`label` 属性集成表单功能,并可配合 `required`、`pattern`、`message` 属性实现表单校验。
223
+
224
+ ```tsx
225
+ <WrappedEoForm
226
+ onValidateSuccess={(e) => console.log(e.detail)}
227
+ onValuesChange={(e) => console.log(e.detail)}
228
+ >
229
+ <WrappedEoInput
230
+ name="text"
231
+ label="输入框"
232
+ required
233
+ pattern="^[A-Za-z]+"
234
+ message={{
235
+ required: "请输入内容",
236
+ pattern: "只能输入字母",
237
+ }}
238
+ />
239
+ <WrappedEoSubmitButtons />
240
+ </WrappedEoForm>
241
+ ```
242
+
243
+ ### Validator
244
+
245
+ 通过 `validator` 属性自定义表单项校验逻辑,返回 `null` 表示校验通过,返回包含 `message` 的对象表示校验失败。
246
+
247
+ ```tsx
248
+ <WrappedEoForm onValidateSuccess={(e) => console.log(e.detail)}>
249
+ <WrappedEoInput
250
+ name="username"
251
+ label="用户名"
252
+ validator={(value) =>
253
+ value && value.length > 10 ? { message: "用户名不能超过10个字符" } : null
254
+ }
255
+ />
256
+ <WrappedEoSubmitButtons />
257
+ </WrappedEoForm>
258
+ ```
259
+
260
+ ### Methods
261
+
262
+ 通过 `ref` 调用 `focusInput` 和 `blurInput` 方法控制输入框的焦点状态。
263
+
264
+ ```tsx
265
+ function Demo() {
266
+ const ref = React.useRef(null);
267
+ return (
268
+ <>
269
+ <WrappedEoInput ref={ref} placeholder="点击按钮控制焦点" />
270
+ <button onClick={() => ref.current?.focusInput()}>获取焦点</button>
271
+ <button onClick={() => ref.current?.blurInput()}>失去焦点</button>
272
+ </>
273
+ );
274
+ }
275
+ ```