king-design-analyzer 1.0.0

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/README.md +151 -0
  2. package/components/affix.json +178 -0
  3. package/components/az.json +86 -0
  4. package/components/badge.json +162 -0
  5. package/components/billtypes.json +90 -0
  6. package/components/breadcrumb.json +220 -0
  7. package/components/button.json +511 -0
  8. package/components/card.json +334 -0
  9. package/components/cardcontent.json +144 -0
  10. package/components/carousel.json +207 -0
  11. package/components/cascader.json +373 -0
  12. package/components/checkbox.json +298 -0
  13. package/components/code.json +318 -0
  14. package/components/collapse.json +358 -0
  15. package/components/copy.json +220 -0
  16. package/components/datepicker.json +529 -0
  17. package/components/descriptions.json +309 -0
  18. package/components/dialog.json +460 -0
  19. package/components/divider.json +287 -0
  20. package/components/drawer.json +563 -0
  21. package/components/dropdown.json +407 -0
  22. package/components/editable.json +331 -0
  23. package/components/ellipsis.json +218 -0
  24. package/components/form.json +638 -0
  25. package/components/grid.json +377 -0
  26. package/components/icon.json +442 -0
  27. package/components/input.json +821 -0
  28. package/components/layoutcontent.json +210 -0
  29. package/components/menu.json +482 -0
  30. package/components/message.json +345 -0
  31. package/components/pagination.json +444 -0
  32. package/components/paginationplus.json +74 -0
  33. package/components/popover.json +456 -0
  34. package/components/progress.json +354 -0
  35. package/components/protable.json +132 -0
  36. package/components/radio.json +246 -0
  37. package/components/region.json +115 -0
  38. package/components/select.json +676 -0
  39. package/components/slider.json +422 -0
  40. package/components/spin.json +232 -0
  41. package/components/spinner.json +441 -0
  42. package/components/status.json +75 -0
  43. package/components/steps.json +292 -0
  44. package/components/switch.json +357 -0
  45. package/components/table.json +1057 -0
  46. package/components/tablecolumnid.json +217 -0
  47. package/components/tabs.json +363 -0
  48. package/components/tag.json +504 -0
  49. package/components/timepicker.json +447 -0
  50. package/components/tip.json +322 -0
  51. package/components/tooltip.json +416 -0
  52. package/components/tour.json +395 -0
  53. package/components/transfer.json +414 -0
  54. package/components/tree.json +480 -0
  55. package/components/treeselect.json +478 -0
  56. package/components/upload.json +499 -0
  57. package/components/virtuallist.json +178 -0
  58. package/dist/ast/index.d.mts +71 -0
  59. package/dist/ast/index.d.ts +71 -0
  60. package/dist/ast/index.js +15 -0
  61. package/dist/ast/index.mjs +2 -0
  62. package/dist/chunk-4BUGNH4F.mjs +62 -0
  63. package/dist/chunk-5H7N2A5X.mjs +1 -0
  64. package/dist/chunk-5IF32MBB.js +603 -0
  65. package/dist/chunk-ARWRNWDW.js +219 -0
  66. package/dist/chunk-C3L4IXJC.mjs +577 -0
  67. package/dist/chunk-GNVCC37B.js +102 -0
  68. package/dist/chunk-N4UIA6DN.js +68 -0
  69. package/dist/chunk-RAMIBZAU.mjs +216 -0
  70. package/dist/chunk-RNQHI7YG.js +64 -0
  71. package/dist/chunk-TB6BF5TJ.mjs +99 -0
  72. package/dist/chunk-UX7KGX45.mjs +66 -0
  73. package/dist/chunk-YTEYDSDW.js +2 -0
  74. package/dist/full/index.d.mts +29 -0
  75. package/dist/full/index.d.ts +29 -0
  76. package/dist/full/index.js +16 -0
  77. package/dist/full/index.mjs +3 -0
  78. package/dist/index.d.mts +5 -0
  79. package/dist/index.d.ts +5 -0
  80. package/dist/index.js +43 -0
  81. package/dist/index.mjs +6 -0
  82. package/dist/runtime/index.d.mts +14 -0
  83. package/dist/runtime/index.d.ts +14 -0
  84. package/dist/runtime/index.js +15 -0
  85. package/dist/runtime/index.mjs +2 -0
  86. package/dist/sfcCompiler-m51JOfWs.d.mts +22 -0
  87. package/dist/sfcCompiler-m51JOfWs.d.ts +22 -0
  88. package/dist/static/index.d.mts +14 -0
  89. package/dist/static/index.d.ts +14 -0
  90. package/dist/static/index.js +19 -0
  91. package/dist/static/index.mjs +2 -0
  92. package/package.json +88 -0
@@ -0,0 +1,331 @@
1
+ {
2
+ "id": "editable",
3
+ "name": "Editable",
4
+ "displayName": "可编辑文本",
5
+ "category": "data",
6
+ "description": "可编辑文本组件,用于行内编辑文本内容。支持点击切换到编辑模式、验证规则、多行编辑等功能。常用于表格行内编辑、标题编辑等场景。",
7
+ "importStatement": "import { Editable } from '@king-design/vue';",
8
+ "props": [
9
+ {
10
+ "name": "value",
11
+ "description": "编辑的内容,可用 v-model 双向绑定",
12
+ "type": {
13
+ "raw": "string",
14
+ "kind": "string"
15
+ },
16
+ "required": false,
17
+ "default": "undefined",
18
+ "usageExample": "<Editable v-model=\"text\" />"
19
+ },
20
+ {
21
+ "name": "editing",
22
+ "description": "是否为编辑状态",
23
+ "type": {
24
+ "raw": "boolean",
25
+ "kind": "boolean"
26
+ },
27
+ "required": false,
28
+ "default": "false",
29
+ "usageExample": "<Editable :editing=\"isEditing\" />"
30
+ },
31
+ {
32
+ "name": "required",
33
+ "description": "是否规定不能为空",
34
+ "type": {
35
+ "raw": "boolean",
36
+ "kind": "boolean"
37
+ },
38
+ "required": false,
39
+ "default": "true",
40
+ "usageExample": "<Editable :required=\"false\" />"
41
+ },
42
+ {
43
+ "name": "validate",
44
+ "description": "验证规则,支持函数、正则表达式或正则字符串。函数返回 true 表示验证通过",
45
+ "type": {
46
+ "raw": "((v: string) => boolean) | RegExp | string",
47
+ "kind": "union"
48
+ },
49
+ "required": false,
50
+ "default": "undefined",
51
+ "usageExample": "<Editable :validate=\"(v) => v.length >= 3\" />"
52
+ },
53
+ {
54
+ "name": "disabled",
55
+ "description": "是否禁用编辑",
56
+ "type": {
57
+ "raw": "boolean",
58
+ "kind": "boolean"
59
+ },
60
+ "required": false,
61
+ "default": "false",
62
+ "usageExample": "<Editable disabled />"
63
+ },
64
+ {
65
+ "name": "tip",
66
+ "description": "编辑按钮提示文案",
67
+ "type": {
68
+ "raw": "string",
69
+ "kind": "string"
70
+ },
71
+ "required": false,
72
+ "default": "\"编辑\"",
73
+ "usageExample": "<Editable tip=\"点击修改\" />"
74
+ },
75
+ {
76
+ "name": "trim",
77
+ "description": "是否去掉前后空白字符",
78
+ "type": {
79
+ "raw": "boolean",
80
+ "kind": "boolean"
81
+ },
82
+ "required": false,
83
+ "default": "true",
84
+ "usageExample": "<Editable :trim=\"false\" />"
85
+ },
86
+ {
87
+ "name": "invalid",
88
+ "description": "是否为验证失败状态",
89
+ "type": {
90
+ "raw": "boolean",
91
+ "kind": "boolean"
92
+ },
93
+ "required": false,
94
+ "default": "false",
95
+ "usageExample": "<Editable :invalid=\"hasError\" />"
96
+ },
97
+ {
98
+ "name": "rows",
99
+ "description": "是否自动折行及行数控制,可为数字、'auto' 或包含 min/max 的对象",
100
+ "type": {
101
+ "raw": "string | number | 'auto' | AutoRows",
102
+ "kind": "union"
103
+ },
104
+ "required": false,
105
+ "default": "1",
106
+ "usageExample": "<Editable :rows=\"3\" />"
107
+ }
108
+ ],
109
+ "events": [
110
+ {
111
+ "name": "change",
112
+ "vueEventName": "@change",
113
+ "description": "当值改变时触发",
114
+ "payload": [
115
+ {
116
+ "name": "newValue",
117
+ "type": "string",
118
+ "description": "新的值"
119
+ },
120
+ {
121
+ "name": "oldValue",
122
+ "type": "string",
123
+ "description": "旧的值"
124
+ }
125
+ ],
126
+ "usageExample": "<Editable @change=\"handleChange\" />",
127
+ "handlerExample": "const handleChange = (newValue: string, oldValue: string) => {\n console.log(`值从 ${oldValue} 变为 ${newValue}`);\n};"
128
+ },
129
+ {
130
+ "name": "error",
131
+ "vueEventName": "@error",
132
+ "description": "验证失败时触发",
133
+ "payload": [
134
+ {
135
+ "name": "value",
136
+ "type": "string",
137
+ "description": "验证失败的值"
138
+ }
139
+ ],
140
+ "usageExample": "<Editable @error=\"handleError\" />",
141
+ "handlerExample": "const handleError = (value: string) => {\n Message.error(`验证失败: ${value}`);\n};"
142
+ }
143
+ ],
144
+ "methods": [],
145
+ "typeDefinitions": [
146
+ {
147
+ "name": "AutoRows",
148
+ "definition": "type AutoRows = {\n min?: number\n max?: number\n}",
149
+ "description": "自动行数配置"
150
+ }
151
+ ],
152
+ "examples": [
153
+ {
154
+ "id": "editable_basic",
155
+ "title": "基础用法",
156
+ "description": "基本的可编辑文本",
157
+ "difficulty": "easy",
158
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Editable } from '@king-design/vue';\n\nconst text = ref('点击编辑此文本');\n</script>\n<template>\n <Editable v-model=\"text\" />\n</template>",
159
+ "tags": [
160
+ "basic"
161
+ ],
162
+ "usedProps": [
163
+ "value"
164
+ ],
165
+ "usedEvents": [],
166
+ "usedMethods": [],
167
+ "scenario": "创建一个基本的可编辑文本"
168
+ },
169
+ {
170
+ "id": "editable_validate_function",
171
+ "title": "函数验证",
172
+ "description": "使用函数验证输入",
173
+ "difficulty": "medium",
174
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Editable } from '@king-design/vue';\n\nconst phone = ref('13800138000');\n\nconst validatePhone = (value: string) => {\n return /^1[3-9]\\d{9}$/.test(value);\n};\n</script>\n<template>\n <Editable v-model=\"phone\" :validate=\"validatePhone\" />\n</template>",
175
+ "tags": [
176
+ "validate",
177
+ "function"
178
+ ],
179
+ "usedProps": [
180
+ "value",
181
+ "validate"
182
+ ],
183
+ "usedEvents": [],
184
+ "usedMethods": [],
185
+ "scenario": "使用函数验证手机号格式"
186
+ },
187
+ {
188
+ "id": "editable_validate_regex",
189
+ "title": "正则验证",
190
+ "description": "使用正则表达式验证",
191
+ "difficulty": "easy",
192
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Editable } from '@king-design/vue';\n\nconst email = ref('user@example.com');\n</script>\n<template>\n <Editable v-model=\"email\" validate=\"^[\\w-]+@[\\w-]+\\.\\w+$\" />\n</template>",
193
+ "tags": [
194
+ "validate",
195
+ "regex"
196
+ ],
197
+ "usedProps": [
198
+ "value",
199
+ "validate"
200
+ ],
201
+ "usedEvents": [],
202
+ "usedMethods": [],
203
+ "scenario": "使用正则验证邮箱格式"
204
+ },
205
+ {
206
+ "id": "editable_disabled",
207
+ "title": "禁用编辑",
208
+ "description": "禁用编辑功能",
209
+ "difficulty": "easy",
210
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Editable } from '@king-design/vue';\n\nconst text = ref('禁用编辑的文本');\n</script>\n<template>\n <Editable v-model=\"text\" disabled />\n</template>",
211
+ "tags": [
212
+ "disabled"
213
+ ],
214
+ "usedProps": [
215
+ "value",
216
+ "disabled"
217
+ ],
218
+ "usedEvents": [],
219
+ "usedMethods": [],
220
+ "scenario": "禁止用户编辑"
221
+ },
222
+ {
223
+ "id": "editable_error_event",
224
+ "title": "验证失败处理",
225
+ "description": "监听验证失败事件",
226
+ "difficulty": "medium",
227
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Editable, Message } from '@king-design/vue';\n\nconst text = ref('test');\n\nconst handleError = (value: string) => {\n Message.error(`验证失败: ${value}`);\n};\n</script>\n<template>\n <Editable v-model=\"text\" validate=\"^[a-z]+$\" @error=\"handleError\" />\n</template>",
228
+ "tags": [
229
+ "error",
230
+ "event"
231
+ ],
232
+ "usedProps": [
233
+ "value",
234
+ "validate"
235
+ ],
236
+ "usedEvents": [
237
+ "error"
238
+ ],
239
+ "usedMethods": [],
240
+ "scenario": "验证失败时显示错误提示"
241
+ },
242
+ {
243
+ "id": "editable_multiline",
244
+ "title": "多行编辑",
245
+ "description": "支持多行文本编辑",
246
+ "difficulty": "easy",
247
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Editable } from '@king-design/vue';\n\nconst content = ref('这是一段较长的文本内容...');\n</script>\n<template>\n <!-- 固定行数 -->\n <Editable v-model=\"content\" :rows=\"3\" />\n \n <!-- 自动行数 -->\n <Editable v-model=\"content\" rows=\"auto\" />\n \n <!-- 限制行数范围 -->\n <Editable v-model=\"content\" :rows=\"{min: 2, max: 5}\" />\n</template>",
248
+ "tags": [
249
+ "rows",
250
+ "multiline",
251
+ "textarea"
252
+ ],
253
+ "usedProps": [
254
+ "value",
255
+ "rows"
256
+ ],
257
+ "usedEvents": [],
258
+ "usedMethods": [],
259
+ "scenario": "创建多行可编辑文本"
260
+ },
261
+ {
262
+ "id": "editable_change_event",
263
+ "title": "监听值变化",
264
+ "description": "监听编辑值变化",
265
+ "difficulty": "easy",
266
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Editable, Message } from '@king-design/vue';\n\nconst title = ref('标题');\n\nconst handleChange = (newVal: string, oldVal: string) => {\n Message.success(`标题从 \"${oldVal}\" 改为 \"${newVal}\"`);\n};\n</script>\n<template>\n <Editable v-model=\"title\" @change=\"handleChange\" />\n</template>",
267
+ "tags": [
268
+ "change",
269
+ "event"
270
+ ],
271
+ "usedProps": [
272
+ "value"
273
+ ],
274
+ "usedEvents": [
275
+ "change"
276
+ ],
277
+ "usedMethods": [],
278
+ "scenario": "监听文本变化并做出响应"
279
+ }
280
+ ],
281
+ "commonMistakes": [
282
+ {
283
+ "id": "editable_validate_return",
284
+ "description": "验证函数返回值错误",
285
+ "wrongCode": "const validate = (v: string) => {\n if (v.length < 3) {\n return '长度不能小于3';\n }\n}",
286
+ "correctCode": "const validate = (v: string) => {\n return v.length >= 3;\n}",
287
+ "explanation": "validate 函数应返回布尔值,true 表示验证通过,false 表示失败",
288
+ "relatedProps": [
289
+ "validate"
290
+ ]
291
+ },
292
+ {
293
+ "id": "editable_rows_type",
294
+ "description": "rows 值类型错误",
295
+ "wrongCode": "<Editable rows=\"3\" />",
296
+ "correctCode": "<Editable :rows=\"3\" />",
297
+ "explanation": "当 rows 为数字时需要使用 v-bind (:rows),字符串 '3' 会被当作字符串处理",
298
+ "relatedProps": [
299
+ "rows"
300
+ ]
301
+ },
302
+ {
303
+ "id": "editable_required_allow_empty",
304
+ "description": "不了解 required 默认为 true",
305
+ "wrongCode": "<Editable v-model=\"text\" /> <!-- 用户无法保存空值 -->",
306
+ "correctCode": "<Editable v-model=\"text\" :required=\"false\" /> <!-- 允许空值 -->",
307
+ "explanation": "Editable 默认 required 为 true,如果允许空值需要显式设置 :required=\"false\"",
308
+ "relatedProps": [
309
+ "required"
310
+ ]
311
+ }
312
+ ],
313
+ "searchKeywords": [
314
+ "可编辑",
315
+ "editable",
316
+ "行内编辑",
317
+ "编辑文本",
318
+ "inline edit",
319
+ "标题编辑"
320
+ ],
321
+ "useCases": [
322
+ "表格行内编辑",
323
+ "标题编辑",
324
+ "姓名修改",
325
+ "备注编辑",
326
+ "配置项快速修改"
327
+ ],
328
+ "relatedComponents": [
329
+ "Input"
330
+ ]
331
+ }
@@ -0,0 +1,218 @@
1
+ {
2
+ "id": "ellipsis",
3
+ "name": "Ellipsis",
4
+ "displayName": "超长忽略",
5
+ "category": "data",
6
+ "description": "文本超长省略组件,用于在有限空间内显示超长文本。支持单行和多行省略,超出部分显示省略号,鼠标悬停时以 Tooltip 形式显示完整内容。",
7
+ "importStatement": "import { Ellipsis } from '@king-design/vue';",
8
+ "props": [
9
+ {
10
+ "name": "maxLines",
11
+ "description": "定义多行省略最大行数,不设置时为单行省略",
12
+ "type": {
13
+ "raw": "number",
14
+ "kind": "number"
15
+ },
16
+ "required": false,
17
+ "default": "undefined",
18
+ "usageExample": "<Ellipsis :maxLines=\"2\">长文本内容</Ellipsis>"
19
+ },
20
+ {
21
+ "name": "position",
22
+ "description": "Tooltip 弹出的位置,默认在触发器正上方向上偏移 10px",
23
+ "type": {
24
+ "raw": "Position | \"left\" | \"bottom\" | \"right\" | \"top\"",
25
+ "kind": "union",
26
+ "unionTypes": [
27
+ "left",
28
+ "bottom",
29
+ "right",
30
+ "top"
31
+ ]
32
+ },
33
+ "required": false,
34
+ "default": "{my: 'center bottom-10', at: 'center top', collision: 'flipfit'}",
35
+ "allowedValues": [
36
+ {
37
+ "value": "top",
38
+ "label": "上方显示",
39
+ "isDefault": true
40
+ },
41
+ {
42
+ "value": "bottom",
43
+ "label": "下方显示"
44
+ },
45
+ {
46
+ "value": "left",
47
+ "label": "左侧显示"
48
+ },
49
+ {
50
+ "value": "right",
51
+ "label": "右侧显示"
52
+ }
53
+ ],
54
+ "usageExample": "<Ellipsis position=\"bottom\">长文本</Ellipsis>"
55
+ },
56
+ {
57
+ "name": "disabled",
58
+ "description": "是否禁用 Tooltip 提示(禁用后悬停不会显示完整内容)",
59
+ "type": {
60
+ "raw": "boolean",
61
+ "kind": "boolean"
62
+ },
63
+ "required": false,
64
+ "default": "false",
65
+ "usageExample": "<Ellipsis disabled>长文本</Ellipsis>"
66
+ }
67
+ ],
68
+ "events": [],
69
+ "methods": [],
70
+ "examples": [
71
+ {
72
+ "id": "ellipsis_basic",
73
+ "title": "基础用法(单行省略)",
74
+ "description": "单行文本超出省略",
75
+ "difficulty": "easy",
76
+ "code": "<script setup lang=\"ts\">\nimport { Ellipsis } from '@king-design/vue';\n</script>\n<template>\n <div style=\"width: 200px;\">\n <Ellipsis>这是一段很长很长的文本,超出容器宽度后会自动省略并显示省略号</Ellipsis>\n </div>\n</template>",
77
+ "tags": [
78
+ "basic",
79
+ "single-line"
80
+ ],
81
+ "usedProps": [],
82
+ "usedEvents": [],
83
+ "usedMethods": [],
84
+ "scenario": "单行文本超出时显示省略号"
85
+ },
86
+ {
87
+ "id": "ellipsis_multiline",
88
+ "title": "多行省略",
89
+ "description": "设置最大行数进行多行省略",
90
+ "difficulty": "easy",
91
+ "code": "<script setup lang=\"ts\">\nimport { Ellipsis } from '@king-design/vue';\n</script>\n<template>\n <div style=\"width: 200px;\">\n <Ellipsis :maxLines=\"2\">\n 这是一段很长很长的文本,超出两行后会自动省略并显示省略号。\n 继续添加更多内容来测试多行省略效果。\n </Ellipsis>\n </div>\n</template>",
92
+ "tags": [
93
+ "maxLines",
94
+ "multiline"
95
+ ],
96
+ "usedProps": [
97
+ "maxLines"
98
+ ],
99
+ "usedEvents": [],
100
+ "usedMethods": [],
101
+ "scenario": "限制多行文本的显示行数"
102
+ },
103
+ {
104
+ "id": "ellipsis_disabled",
105
+ "title": "禁用 Tooltip",
106
+ "description": "禁用悬停时的完整内容提示",
107
+ "difficulty": "easy",
108
+ "code": "<script setup lang=\"ts\">\nimport { Ellipsis } from '@king-design/vue';\n</script>\n<template>\n <div style=\"width: 200px;\">\n <Ellipsis disabled>\n 这段文本省略后不会显示 tooltip\n </Ellipsis>\n </div>\n</template>",
109
+ "tags": [
110
+ "disabled"
111
+ ],
112
+ "usedProps": [
113
+ "disabled"
114
+ ],
115
+ "usedEvents": [],
116
+ "usedMethods": [],
117
+ "scenario": "省略文本但不需要悬停提示"
118
+ },
119
+ {
120
+ "id": "ellipsis_position",
121
+ "title": "自定义 Tooltip 位置",
122
+ "description": "设置 Tooltip 在下方显示",
123
+ "difficulty": "easy",
124
+ "code": "<script setup lang=\"ts\">\nimport { Ellipsis } from '@king-design/vue';\n</script>\n<template>\n <div style=\"width: 200px;\">\n <Ellipsis position=\"bottom\">\n 这段文本的 tooltip 会在下方显示\n </Ellipsis>\n </div>\n</template>",
125
+ "tags": [
126
+ "position",
127
+ "tooltip"
128
+ ],
129
+ "usedProps": [
130
+ "position"
131
+ ],
132
+ "usedEvents": [],
133
+ "usedMethods": [],
134
+ "scenario": "自定义 Tooltip 显示位置"
135
+ },
136
+ {
137
+ "id": "ellipsis_table",
138
+ "title": "表格中使用",
139
+ "description": "在表格列中使用省略",
140
+ "difficulty": "medium",
141
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Table, TableColumn, Ellipsis } from '@king-design/vue';\n\nconst data = ref([\n { name: '张三', desc: '这是一段很长的描述文本,需要在表格中省略显示' },\n { name: '李四', desc: '另一段很长的描述文本,同样需要省略处理' }\n]);\n</script>\n<template>\n <Table :data=\"data\">\n <TableColumn key=\"name\" title=\"姓名\" />\n <TableColumn key=\"desc\" title=\"描述\" :width=\"200\">\n <template #default=\"[row]\">\n <Ellipsis>{{ row.desc }}</Ellipsis>\n </template>\n </TableColumn>\n </Table>\n</template>",
142
+ "tags": [
143
+ "table",
144
+ "column"
145
+ ],
146
+ "usedProps": [],
147
+ "usedEvents": [],
148
+ "usedMethods": [],
149
+ "scenario": "在表格中处理超长文本"
150
+ },
151
+ {
152
+ "id": "ellipsis_card",
153
+ "title": "卡片描述省略",
154
+ "description": "在卡片中使用多行省略",
155
+ "difficulty": "easy",
156
+ "code": "<script setup lang=\"ts\">\nimport { Card, Ellipsis } from '@king-design/vue';\n</script>\n<template>\n <Card title=\"文章标题\" style=\"width: 300px;\">\n <Ellipsis :maxLines=\"3\">\n 这是一段很长的文章摘要内容,在卡片中只显示三行,\n 超出部分会自动省略。用户可以悬停查看完整内容,\n 或者点击查看详情按钮进入详情页面。更多内容...\n </Ellipsis>\n </Card>\n</template>",
157
+ "tags": [
158
+ "card",
159
+ "summary"
160
+ ],
161
+ "usedProps": [
162
+ "maxLines"
163
+ ],
164
+ "usedEvents": [],
165
+ "usedMethods": [],
166
+ "scenario": "在卡片中展示文章摘要"
167
+ }
168
+ ],
169
+ "commonMistakes": [
170
+ {
171
+ "id": "ellipsis_no_width",
172
+ "description": "容器未设置宽度",
173
+ "wrongCode": "<Ellipsis>长文本内容</Ellipsis>",
174
+ "correctCode": "<div style=\"width: 200px;\">\n <Ellipsis>长文本内容</Ellipsis>\n</div>",
175
+ "explanation": "Ellipsis 需要父容器有明确的宽度限制才能生效",
176
+ "relatedProps": []
177
+ },
178
+ {
179
+ "id": "ellipsis_maxlines_type",
180
+ "description": "maxLines 使用字符串而非数字",
181
+ "wrongCode": "<Ellipsis maxLines=\"2\">文本</Ellipsis>",
182
+ "correctCode": "<Ellipsis :maxLines=\"2\">文本</Ellipsis>",
183
+ "explanation": "maxLines 是数字类型,需要使用 v-bind 语法",
184
+ "relatedProps": [
185
+ "maxLines"
186
+ ]
187
+ },
188
+ {
189
+ "id": "ellipsis_disabled_meaning",
190
+ "description": "误解 disabled 属性的含义",
191
+ "wrongCode": "<Ellipsis disabled> <!-- 以为会禁用省略效果 -->",
192
+ "correctCode": "<Ellipsis disabled> <!-- 实际是禁用 Tooltip,省略效果仍然存在 -->",
193
+ "explanation": "disabled 只是禁用悬停时的 Tooltip 提示,文本省略效果仍然生效",
194
+ "relatedProps": [
195
+ "disabled"
196
+ ]
197
+ }
198
+ ],
199
+ "searchKeywords": [
200
+ "省略",
201
+ "ellipsis",
202
+ "超长",
203
+ "文本截断",
204
+ "truncate",
205
+ "多行省略",
206
+ "tooltip"
207
+ ],
208
+ "useCases": [
209
+ "表格列文本省略",
210
+ "卡片描述省略",
211
+ "列表项标题省略",
212
+ "文章摘要展示",
213
+ "商品名称省略"
214
+ ],
215
+ "relatedComponents": [
216
+ "Tooltip"
217
+ ]
218
+ }