xt-element-ui 2.1.5 → 2.1.6

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 (30) hide show
  1. package/docs/components/base/xt-date-picker.md +127 -37
  2. package/docs/components/base/xt-form-schema.md +358 -0
  3. package/docs/components/base/xt-grid-box.md +4 -4
  4. package/docs/components/base/xt-input.md +204 -42
  5. package/docs/components/base/xt-list.md +458 -458
  6. package/docs/components/base/xt-text.md +1 -0
  7. package/docs/components/utils/config.md +285 -0
  8. package/docs/components/utils/format.md +445 -0
  9. package/lib/index.common.js +2303 -8625
  10. package/lib/index.css +1 -1
  11. package/lib/index.umd.js +2303 -8625
  12. package/lib/index.umd.min.js +1 -1
  13. package/package.json +4 -2
  14. package/src/components/xt-date-picker/component/Picker.vue +196 -0
  15. package/src/components/xt-date-picker/component/RangeDate.vue +136 -0
  16. package/src/components/xt-date-picker/index.vue +164 -144
  17. package/src/components/xt-flex-box/index.vue +1 -1
  18. package/src/components/xt-form-schema/index.js +8 -0
  19. package/src/components/xt-form-schema/index.vue +328 -0
  20. package/src/components/xt-grid-item/index.vue +2 -2
  21. package/src/components/xt-input/index.vue +224 -28
  22. package/src/components/xt-input/style/index.scss +10 -0
  23. package/src/components/xt-list/index.js +7 -7
  24. package/src/components/xt-list/index.vue +885 -885
  25. package/src/components/xt-transfer-tree/index.js +7 -7
  26. package/src/components/xt-transfer-tree/index.vue +493 -493
  27. package/src/index.js +5 -2
  28. package/src/components/xt-date-picker/SearchDate.vue +0 -45
  29. package/src/components/xt-date-picker/quarter.vue +0 -154
  30. package/src/components/xt-table/index copy.vue +0 -663
@@ -1,6 +1,6 @@
1
1
  ## XtInput 输入框组件
2
2
 
3
- 输入框组件用于收集用户输入的信息。
3
+ 输入框组件用于收集用户输入的信息,支持多种输入场景和格式校验。
4
4
 
5
5
  ## 基本用法
6
6
 
@@ -23,26 +23,67 @@ export default {
23
23
  :::
24
24
 
25
25
  ## 属性说明
26
- | 属性 | 类型 | 默认值 | 说明 |
27
- |------|------|--------|------|
28
- | `value` | String / Number | - | 输入值(支持 v-model) |
29
- | `placeholder` | String | '请输入内容' | 占位提示文本 |
30
- | `color` | String | - | 自定义聚焦颜色 |
26
+
27
+ | 属性 | 类型 | 默认值 | 可选值 | 说明 |
28
+ |------|------|--------|--------|------|
29
+ | `value` | String / Number | - | - | 输入值(支持 v-model) |
30
+ | `placeholder` | String | '请输入内容' | - | 占位提示文本 |
31
+ | `type` | String | 'text' | 见下表 | 输入类型 |
32
+ | `size` | String | - | 'small'、'medium'、'large' | 输入框尺寸 |
33
+ | `disabled` | Boolean | false | - | 是否禁用 |
34
+ | `readonly` | Boolean | false | - | 是否只读 |
35
+ | `color` | String | - | - | 自定义聚焦颜色 |
36
+ | `precision` | Number | 2 | 0-10 | 小数位数(数字类型) |
37
+ | `min` | Number | undefined | - | 最小值(数字类型) |
38
+ | `max` | Number | undefined | - | 最大值(数字类型) |
39
+ | `allowNegative` | Boolean | false | - | 是否允许负数(数字类型) |
40
+ | `thousandSeparator` | Boolean | false | - | 是否显示千分位分隔符 |
41
+ | `maxlength` | Number | undefined | - | 最大输入长度 |
42
+ | `showWordLimit` | Boolean | false | - | 是否显示字数统计 |
43
+ | `prefixIcon` | String | - | - | 前缀图标 |
44
+ | `suffixIcon` | String | - | - | 后缀图标 |
45
+ | `trim` | Boolean | false | - | 是否自动去除首尾空格 |
46
+
47
+ ## 支持的输入类型
48
+
49
+ | 类型 | 说明 | 特性 |
50
+ |------|------|------|
51
+ | `text` | 普通文本 | 默认类型,支持所有字符 |
52
+ | `number` | 数字输入 | 支持整数和小数,可配置精度 |
53
+ | `integer` | 整数输入 | 仅允许整数,自动过滤小数 |
54
+ | `decimal` | 小数输入 | 支持小数,精度可配置 |
55
+ | `money` | 金额输入 | 支持小数,默认2位精度,适合金额场景 |
56
+ | `phone` | 手机号输入 | 自动过滤非数字,校验手机号格式 |
57
+ | `email` | 邮箱输入 | 实时校验邮箱格式,错误时标红 |
58
+ | `idcard` | 身份证输入 | 自动过滤非法字符,校验身份证格式 |
59
+ | `password` | 密码输入 | 密码隐藏显示 |
60
+ | `textarea` | 多行文本 | 多行输入框 |
61
+
62
+ ## 事件说明
63
+
64
+ | 事件名 | 参数 | 说明 |
65
+ |--------|------|------|
66
+ | `input` | `value` | 输入值变化时触发 |
67
+ | `change` | `value` | 输入框失去焦点且值变化时触发 |
68
+ | `focus` | `event` | 输入框获得焦点时触发 |
69
+ | `blur` | `value, event` | 输入框失去焦点时触发 |
70
+ | `clear` | - | 点击清除按钮时触发 |
31
71
 
32
72
  ## 示例
33
73
 
34
- ### 基础输入框
35
- ::: demo 基础输入框
74
+ ### 整数输入
75
+
76
+ ::: demo 整数输入
36
77
  ```vue
37
78
  <template>
38
- <XtInput v-model="username" placeholder="请输入用户名"></XtInput>
79
+ <XtInput v-model="count" type="integer" placeholder="请输入整数"></XtInput>
39
80
  </template>
40
81
 
41
82
  <script>
42
83
  export default {
43
84
  data() {
44
85
  return {
45
- username: ''
86
+ count: ''
46
87
  }
47
88
  }
48
89
  }
@@ -50,12 +91,92 @@ export default {
50
91
  ```
51
92
  :::
52
93
 
53
- ### 自定义占位符
94
+ ### 小数输入(自定义精度)
54
95
 
55
- ::: demo 自定义占位符
96
+ ::: demo 小数输入
56
97
  ```vue
57
98
  <template>
58
- <XtInput v-model="email" placeholder="请输入您的邮箱地址"></XtInput>
99
+ <XtInput v-model="price" type="decimal" :precision="4" placeholder="最多4位小数"></XtInput>
100
+ </template>
101
+
102
+ <script>
103
+ export default {
104
+ data() {
105
+ return {
106
+ price: ''
107
+ }
108
+ }
109
+ }
110
+ </script>
111
+ ```
112
+ :::
113
+
114
+ ### 金额输入(带千分位)
115
+
116
+ ::: demo 金额输入
117
+ ```vue
118
+ <template>
119
+ <XtInput v-model="amount" type="money" thousandSeparator placeholder="请输入金额"></XtInput>
120
+ </template>
121
+
122
+ <script>
123
+ export default {
124
+ data() {
125
+ return {
126
+ amount: ''
127
+ }
128
+ }
129
+ }
130
+ </script>
131
+ ```
132
+ :::
133
+
134
+ ### 数字输入(带范围限制)
135
+
136
+ ::: demo 数字输入范围限制
137
+ ```vue
138
+ <template>
139
+ <XtInput v-model="score" type="number" :min="0" :max="100" placeholder="0-100"></XtInput>
140
+ </template>
141
+
142
+ <script>
143
+ export default {
144
+ data() {
145
+ return {
146
+ score: ''
147
+ }
148
+ }
149
+ }
150
+ </script>
151
+ ```
152
+ :::
153
+
154
+ ### 手机号输入
155
+
156
+ ::: demo 手机号输入
157
+ ```vue
158
+ <template>
159
+ <XtInput v-model="phone" type="phone" placeholder="请输入手机号"></XtInput>
160
+ </template>
161
+
162
+ <script>
163
+ export default {
164
+ data() {
165
+ return {
166
+ phone: ''
167
+ }
168
+ }
169
+ }
170
+ </script>
171
+ ```
172
+ :::
173
+
174
+ ### 邮箱输入(格式校验)
175
+
176
+ ::: demo 邮箱输入
177
+ ```vue
178
+ <template>
179
+ <XtInput v-model="email" type="email" placeholder="请输入邮箱"></XtInput>
59
180
  </template>
60
181
 
61
182
  <script>
@@ -70,7 +191,68 @@ export default {
70
191
  ```
71
192
  :::
72
193
 
194
+ ### 身份证输入
195
+
196
+ ::: demo 身份证输入
197
+ ```vue
198
+ <template>
199
+ <XtInput v-model="idcard" type="idcard" placeholder="请输入身份证号"></XtInput>
200
+ </template>
201
+
202
+ <script>
203
+ export default {
204
+ data() {
205
+ return {
206
+ idcard: ''
207
+ }
208
+ }
209
+ }
210
+ </script>
211
+ ```
212
+ :::
213
+
214
+ ### 密码输入
215
+
216
+ ::: demo 密码输入
217
+ ```vue
218
+ <template>
219
+ <XtInput v-model="password" type="password" placeholder="请输入密码"></XtInput>
220
+ </template>
221
+
222
+ <script>
223
+ export default {
224
+ data() {
225
+ return {
226
+ password: ''
227
+ }
228
+ }
229
+ }
230
+ </script>
231
+ ```
232
+ :::
233
+
234
+ ### 多行文本
235
+
236
+ ::: demo 多行文本
237
+ ```vue
238
+ <template>
239
+ <XtInput v-model="content" type="textarea" :maxlength="200" showWordLimit placeholder="请输入内容"></XtInput>
240
+ </template>
241
+
242
+ <script>
243
+ export default {
244
+ data() {
245
+ return {
246
+ content: ''
247
+ }
248
+ }
249
+ }
250
+ </script>
251
+ ```
252
+ :::
253
+
73
254
  ### 自定义聚焦颜色
255
+
74
256
  ::: demo 自定义聚焦颜色
75
257
  ```vue
76
258
  <template>
@@ -102,8 +284,8 @@ export default {
102
284
  <template>
103
285
  <div style="display: flex; flex-direction: column; gap: 12px;">
104
286
  <XtInput v-model="name" placeholder="姓名"></XtInput>
105
- <XtInput v-model="phone" placeholder="手机"></XtInput>
106
- <XtInput v-model="address" placeholder="地址"></XtInput>
287
+ <XtInput v-model="phone" type="phone" placeholder="手机"></XtInput>
288
+ <XtInput v-model="email" type="email" placeholder="邮箱"></XtInput>
107
289
  </div>
108
290
  </template>
109
291
 
@@ -113,7 +295,7 @@ export default {
113
295
  return {
114
296
  name: '',
115
297
  phone: '',
116
- address: ''
298
+ email: ''
117
299
  }
118
300
  }
119
301
  }
@@ -121,30 +303,10 @@ export default {
121
303
  ```
122
304
  :::
123
305
 
124
- ### 监听输入事件
306
+ ## 注意事项
125
307
 
126
- ::: demo 监听输入事件
127
- ```vue
128
- <template>
129
- <div>
130
- <XtInput :value="inputValue" placeholder="实时监听输入" @input="handleInput"></XtInput>
131
- <p style="margin-top: 12px;">输入长度: {{ inputValue.length }}</p>
132
- </div>
133
- </template>
134
-
135
- <script>
136
- export default {
137
- data() {
138
- return {
139
- inputValue: ''
140
- }
141
- },
142
- methods: {
143
- handleInput(value) {
144
- this.inputValue = value
145
- }
146
- }
147
- }
148
- </script>
149
- ```
150
- :::
308
+ 1. **数字类型输入**:`type="number"`、`type="integer"`、`type="decimal"`、`type="money"` 返回的是 Number 类型,空值时返回 undefined
309
+ 2. **小数精度**:`precision` 属性控制小数位数,blur 时自动四舍五入
310
+ 3. **千分位显示**:`thousandSeparator` 仅影响显示,实际绑定的值不包含千分位分隔符
311
+ 4. **负数控制**:`allowNegative` 默认 false,数字类型输入不允许负数
312
+ 5. **范围限制**:`min` `max` 在输入时自动限制,超出范围自动修正