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,414 @@
1
+ {
2
+ "id": "transfer",
3
+ "name": "Transfer",
4
+ "displayName": "穿梭框",
5
+ "category": "form",
6
+ "description": "穿梭框组件,用于在两个列表之间进行数据选择和转移。支持搜索过滤、自定义渲染、禁用选项等功能。",
7
+ "importStatement": "import { Transfer } from '@king-design/vue';",
8
+ "props": [
9
+ {
10
+ "name": "data",
11
+ "description": "需要展示的列表数据,包含 label、key、disabled 属性",
12
+ "type": {
13
+ "raw": "TransferDataItem[]",
14
+ "kind": "array"
15
+ },
16
+ "required": true,
17
+ "usageExample": "<Transfer :data=\"data\">"
18
+ },
19
+ {
20
+ "name": "value",
21
+ "description": "已选择的 key 数组,可用 v-model 双向绑定",
22
+ "type": {
23
+ "raw": "string[]",
24
+ "kind": "array"
25
+ },
26
+ "required": false,
27
+ "default": "[]",
28
+ "usageExample": "<Transfer v-model=\"selectedKeys\">"
29
+ },
30
+ {
31
+ "name": "keyName",
32
+ "description": "指定数据的 key 属性名",
33
+ "type": {
34
+ "raw": "string",
35
+ "kind": "string"
36
+ },
37
+ "required": false,
38
+ "default": "\"key\"",
39
+ "usageExample": "<Transfer keyName=\"id\">"
40
+ },
41
+ {
42
+ "name": "labelName",
43
+ "description": "指定数据的 label 属性名",
44
+ "type": {
45
+ "raw": "string",
46
+ "kind": "string"
47
+ },
48
+ "required": false,
49
+ "default": "\"label\"",
50
+ "usageExample": "<Transfer labelName=\"name\">"
51
+ },
52
+ {
53
+ "name": "leftCheckedKeys",
54
+ "description": "左侧勾选的节点 key 数组,可用 v-model:leftCheckedKeys",
55
+ "type": {
56
+ "raw": "string[]",
57
+ "kind": "array"
58
+ },
59
+ "required": false,
60
+ "default": "[]",
61
+ "usageExample": "<Transfer v-model:leftCheckedKeys=\"leftChecked\">"
62
+ },
63
+ {
64
+ "name": "rightCheckedKeys",
65
+ "description": "右侧勾选的节点 key 数组,可用 v-model:rightCheckedKeys",
66
+ "type": {
67
+ "raw": "string[]",
68
+ "kind": "array"
69
+ },
70
+ "required": false,
71
+ "default": "[]",
72
+ "usageExample": "<Transfer v-model:rightCheckedKeys=\"rightChecked\">"
73
+ },
74
+ {
75
+ "name": "filterable",
76
+ "description": "是否启用过滤功能",
77
+ "type": {
78
+ "raw": "boolean",
79
+ "kind": "boolean"
80
+ },
81
+ "required": false,
82
+ "default": "false",
83
+ "usageExample": "<Transfer filterable>"
84
+ },
85
+ {
86
+ "name": "filter",
87
+ "description": "自定义过滤函数",
88
+ "type": {
89
+ "raw": "(data: TransferDataItem, keywords: string) => boolean",
90
+ "kind": "function",
91
+ "functionSignature": "(data: TransferDataItem, keywords: string) => boolean"
92
+ },
93
+ "required": false,
94
+ "default": "(data, keywords) => data.label.includes(keywords)",
95
+ "usageExample": "<Transfer :filter=\"customFilter\">"
96
+ },
97
+ {
98
+ "name": "placeholder",
99
+ "description": "过滤输入框的占位文案",
100
+ "type": {
101
+ "raw": "string",
102
+ "kind": "string"
103
+ },
104
+ "required": false,
105
+ "default": "\"请输入\"",
106
+ "usageExample": "<Transfer placeholder=\"搜索...\">"
107
+ },
108
+ {
109
+ "name": "leftKeywords",
110
+ "description": "左侧筛选关键字",
111
+ "type": {
112
+ "raw": "string",
113
+ "kind": "string"
114
+ },
115
+ "required": false,
116
+ "default": "undefined",
117
+ "usageExample": "<Transfer v-model:leftKeywords=\"leftSearch\">"
118
+ },
119
+ {
120
+ "name": "rightKeywords",
121
+ "description": "右侧筛选关键字",
122
+ "type": {
123
+ "raw": "string",
124
+ "kind": "string"
125
+ },
126
+ "required": false,
127
+ "default": "undefined",
128
+ "usageExample": "<Transfer v-model:rightKeywords=\"rightSearch\">"
129
+ },
130
+ {
131
+ "name": "leftTitle",
132
+ "description": "左侧标题",
133
+ "type": {
134
+ "raw": "string | VNode",
135
+ "kind": "union"
136
+ },
137
+ "required": false,
138
+ "default": "\"请选择\"",
139
+ "usageExample": "<Transfer leftTitle=\"待选列表\">"
140
+ },
141
+ {
142
+ "name": "rightTitle",
143
+ "description": "右侧标题",
144
+ "type": {
145
+ "raw": "string | VNode",
146
+ "kind": "union"
147
+ },
148
+ "required": false,
149
+ "default": "\"已选择\"",
150
+ "usageExample": "<Transfer rightTitle=\"已选列表\">"
151
+ },
152
+ {
153
+ "name": "enableAdd",
154
+ "description": "控制右箭头按钮的可用状态",
155
+ "type": {
156
+ "raw": "() => boolean",
157
+ "kind": "function",
158
+ "functionSignature": "() => boolean"
159
+ },
160
+ "required": false,
161
+ "default": "undefined",
162
+ "usageExample": "<Transfer :enableAdd=\"canAdd\">"
163
+ },
164
+ {
165
+ "name": "enableRemove",
166
+ "description": "控制左箭头按钮的可用状态",
167
+ "type": {
168
+ "raw": "() => boolean",
169
+ "kind": "function",
170
+ "functionSignature": "() => boolean"
171
+ },
172
+ "required": false,
173
+ "default": "undefined",
174
+ "usageExample": "<Transfer :enableRemove=\"canRemove\">"
175
+ }
176
+ ],
177
+ "events": [
178
+ {
179
+ "name": "add",
180
+ "vueEventName": "@add",
181
+ "description": "点击右箭头按钮时触发",
182
+ "payload": [],
183
+ "usageExample": "<Transfer @add=\"handleAdd\">",
184
+ "handlerExample": "const handleAdd = () => {\n console.log('数据已添加到右侧');\n};"
185
+ },
186
+ {
187
+ "name": "remove",
188
+ "vueEventName": "@remove",
189
+ "description": "点击左箭头按钮时触发",
190
+ "payload": [],
191
+ "usageExample": "<Transfer @remove=\"handleRemove\">",
192
+ "handlerExample": "const handleRemove = () => {\n console.log('数据已移回左侧');\n};"
193
+ }
194
+ ],
195
+ "methods": [
196
+ {
197
+ "name": "getData",
198
+ "description": "获取右侧已选择的节点数据",
199
+ "returnType": "TransferDataItem[]",
200
+ "usageExample": "const rightData = transferRef.value?.getData();"
201
+ },
202
+ {
203
+ "name": "getCheckedData",
204
+ "description": "获取勾选的节点数据",
205
+ "arguments": [
206
+ {
207
+ "name": "type",
208
+ "type": "'left' | 'right'",
209
+ "description": "指定获取左侧或右侧的勾选数据"
210
+ }
211
+ ],
212
+ "returnType": "TransferDataItem[]",
213
+ "usageExample": "const leftChecked = transferRef.value?.getCheckedData('left');"
214
+ }
215
+ ],
216
+ "slots": [
217
+ {
218
+ "name": "header",
219
+ "description": "自定义整个头部内容",
220
+ "params": "(type: 'left' | 'right') => Children"
221
+ },
222
+ {
223
+ "name": "filter",
224
+ "description": "自定义检索内容",
225
+ "params": "(type: 'left' | 'right') => Children"
226
+ },
227
+ {
228
+ "name": "list",
229
+ "description": "自定义整个列表内容",
230
+ "params": "(type: 'left' | 'right') => Children"
231
+ },
232
+ {
233
+ "name": "label",
234
+ "description": "自定义每一项的渲染函数,类似于label属性",
235
+ "params": "(data: TransferDataItem, key: string, type: 'left' | 'right') => Children"
236
+ }
237
+ ],
238
+ "typeDefinitions": [
239
+ {
240
+ "name": "TransferDataItem",
241
+ "definition": "type TransferDataItem = {\n key: string | number\n label?: string\n disabled?: boolean\n [key: string]: any\n}",
242
+ "description": "穿梭框数据项类型"
243
+ }
244
+ ],
245
+ "examples": [
246
+ {
247
+ "id": "transfer_basic",
248
+ "title": "基础用法",
249
+ "description": "基本的穿梭框",
250
+ "difficulty": "easy",
251
+ "code": "<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue';\nimport { Transfer } from '@king-design/vue';\n\nconst data = reactive([\n { label: '选项0', key: 0 },\n { label: '选项1', key: 1 },\n { label: '选项2', key: 2 },\n { label: '选项3', key: 3 },\n { label: '选项4', key: 4 }\n]);\nconst value = ref<number[]>([]);\n</script>\n<template>\n <div>\n <Transfer :data=\"data\" v-model=\"value\" />\n <p>已选择: {{ JSON.stringify(value) }}</p>\n </div>\n</template>",
252
+ "tags": [
253
+ "basic"
254
+ ],
255
+ "usedProps": [
256
+ "data",
257
+ "value"
258
+ ],
259
+ "usedEvents": [],
260
+ "usedMethods": [],
261
+ "scenario": "创建一个基本的穿梭框"
262
+ },
263
+ {
264
+ "id": "transfer_filterable",
265
+ "title": "可搜索",
266
+ "description": "支持搜索过滤的穿梭框",
267
+ "difficulty": "easy",
268
+ "code": "<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue';\nimport { Transfer } from '@king-design/vue';\n\nconst data = reactive([\n { label: '北京', key: 'beijing' },\n { label: '上海', key: 'shanghai' },\n { label: '广州', key: 'guangzhou' },\n { label: '深圳', key: 'shenzhen' },\n { label: '杭州', key: 'hangzhou' }\n]);\nconst value = ref<string[]>([]);\n</script>\n<template>\n <Transfer :data=\"data\" v-model=\"value\" filterable placeholder=\"输入城市名搜索\" />\n</template>",
269
+ "tags": [
270
+ "filterable",
271
+ "search"
272
+ ],
273
+ "usedProps": [
274
+ "data",
275
+ "value",
276
+ "filterable",
277
+ "placeholder"
278
+ ],
279
+ "usedEvents": [],
280
+ "usedMethods": [],
281
+ "scenario": "创建可搜索的穿梭框"
282
+ },
283
+ {
284
+ "id": "transfer_disabled",
285
+ "title": "禁用选项",
286
+ "description": "禁用某些选项",
287
+ "difficulty": "easy",
288
+ "code": "<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue';\nimport { Transfer } from '@king-design/vue';\n\nconst data = reactive([\n { label: '选项0', key: 0 },\n { label: '选项1(禁用)', key: 1, disabled: true },\n { label: '选项2', key: 2 },\n { label: '选项3(禁用)', key: 3, disabled: true },\n { label: '选项4', key: 4 }\n]);\nconst value = ref<number[]>([0, 1]);\n</script>\n<template>\n <Transfer :data=\"data\" v-model=\"value\" />\n</template>",
289
+ "tags": [
290
+ "disabled"
291
+ ],
292
+ "usedProps": [
293
+ "data",
294
+ "value"
295
+ ],
296
+ "usedEvents": [],
297
+ "usedMethods": [],
298
+ "scenario": "禁用某些选项"
299
+ },
300
+ {
301
+ "id": "transfer_custom_key",
302
+ "title": "自定义属性名",
303
+ "description": "使用自定义的 key 和 label 属性名",
304
+ "difficulty": "easy",
305
+ "code": "<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue';\nimport { Transfer } from '@king-design/vue';\n\nconst data = reactive([\n { id: 1, name: '张三' },\n { id: 2, name: '李四' },\n { id: 3, name: '王五' }\n]);\nconst value = ref<number[]>([]);\n</script>\n<template>\n <Transfer :data=\"data\" v-model=\"value\" keyName=\"id\" labelName=\"name\" />\n</template>",
306
+ "tags": [
307
+ "keyName",
308
+ "labelName",
309
+ "custom"
310
+ ],
311
+ "usedProps": [
312
+ "data",
313
+ "value",
314
+ "keyName",
315
+ "labelName"
316
+ ],
317
+ "usedEvents": [],
318
+ "usedMethods": [],
319
+ "scenario": "使用 id 作为 key,name 作为 label"
320
+ },
321
+ {
322
+ "id": "transfer_custom_label",
323
+ "title": "自定义渲染",
324
+ "description": "自定义列表项渲染",
325
+ "difficulty": "medium",
326
+ "code": "<script setup lang=\"ts\">\nimport { reactive, ref } from 'vue';\nimport { Transfer } from '@king-design/vue';\n\nconst data = reactive([\n { name: '主机A', desc: '前端服务器', ip: '192.168.1.1' },\n { name: '主机B', desc: '后端服务器', ip: '192.168.1.2' },\n { name: '主机C', desc: '数据库服务器', ip: '192.168.1.3' }\n]);\nconst value = ref<string[]>([]);\n</script>\n<template>\n <Transfer :data=\"data\" v-model=\"value\" keyName=\"name\">\n <template #label=\"[item]\">\n <div>\n <div style=\"font-weight: bold;\">{{ item.name }}</div>\n <div style=\"font-size: 12px; color: #999;\">{{ item.desc }} | {{ item.ip }}</div>\n </div>\n </template>\n </Transfer>\n</template>",
327
+ "tags": [
328
+ "label",
329
+ "slot",
330
+ "custom"
331
+ ],
332
+ "usedProps": [
333
+ "data",
334
+ "value",
335
+ "keyName"
336
+ ],
337
+ "usedEvents": [],
338
+ "usedMethods": [],
339
+ "scenario": "自定义列表项的渲染内容"
340
+ },
341
+ {
342
+ "id": "transfer_methods",
343
+ "title": "获取数据",
344
+ "description": "使用方法获取穿梭框数据",
345
+ "difficulty": "medium",
346
+ "code": "<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue';\nimport { Transfer, Button } from '@king-design/vue';\n\nconst transfer = ref<InstanceType<typeof Transfer>>();\nconst data = reactive([\n { label: '选项0', key: 0 },\n { label: '选项1', key: 1 },\n { label: '选项2', key: 2 }\n]);\nconst value = ref<number[]>([0]);\n\nconst handleGetData = () => {\n const rightData = transfer.value?.getData();\n console.log('右侧数据:', rightData);\n};\n</script>\n<template>\n <div>\n <Button @click=\"handleGetData\">获取右侧数据</Button>\n <Transfer ref=\"transfer\" :data=\"data\" v-model=\"value\" />\n </div>\n</template>",
347
+ "tags": [
348
+ "methods",
349
+ "getData"
350
+ ],
351
+ "usedProps": [
352
+ "data",
353
+ "value"
354
+ ],
355
+ "usedEvents": [],
356
+ "usedMethods": [
357
+ "getData"
358
+ ],
359
+ "scenario": "获取穿梭框右侧的数据"
360
+ }
361
+ ],
362
+ "commonMistakes": [
363
+ {
364
+ "id": "transfer_data_key",
365
+ "description": "data 中缺少 key 属性",
366
+ "wrongCode": "const data = [{ label: '选项1' }]; // 缺少 key",
367
+ "correctCode": "const data = [{ label: '选项1', key: 1 }];",
368
+ "explanation": "每个数据项必须有 key 属性(或通过 keyName 指定的属性)",
369
+ "relatedProps": [
370
+ "data",
371
+ "keyName"
372
+ ]
373
+ },
374
+ {
375
+ "id": "transfer_value_type",
376
+ "description": "value 类型错误",
377
+ "wrongCode": "const value = ref(0); // 应该是数组",
378
+ "correctCode": "const value = ref<number[]>([]);",
379
+ "explanation": "value 必须是数组类型",
380
+ "relatedProps": [
381
+ "value"
382
+ ]
383
+ },
384
+ {
385
+ "id": "transfer_keyname_mismatch",
386
+ "description": "keyName 与实际属性名不匹配",
387
+ "wrongCode": "const data = [{ id: 1, name: '张三' }];\n<Transfer :data=\"data\" /> <!-- 默认使用 key,但数据中是 id -->",
388
+ "correctCode": "const data = [{ id: 1, name: '张三' }];\n<Transfer :data=\"data\" keyName=\"id\" labelName=\"name\" />",
389
+ "explanation": "如果数据中使用非默认的属性名,需要通过 keyName 和 labelName 指定",
390
+ "relatedProps": [
391
+ "keyName",
392
+ "labelName"
393
+ ]
394
+ }
395
+ ],
396
+ "searchKeywords": [
397
+ "穿梭框",
398
+ "transfer",
399
+ "双列表",
400
+ "选择器",
401
+ "列表转移"
402
+ ],
403
+ "useCases": [
404
+ "权限分配",
405
+ "用户组管理",
406
+ "标签选择",
407
+ "资源分配",
408
+ "数据筛选"
409
+ ],
410
+ "relatedComponents": [
411
+ "Checkbox",
412
+ "Select"
413
+ ]
414
+ }