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,482 @@
1
+ {
2
+ "id": "menu",
3
+ "name": "Menu",
4
+ "displayName": "菜单",
5
+ "category": "navigation",
6
+ "description": "菜单导航组件,用于网站和应用的侧边栏或顶部导航。支持垂直/水平布局、多级嵌套、折叠展开、主题切换、手风琴模式等功能。配合 MenuItem 子组件使用。",
7
+ "importStatement": "import { Menu, MenuItem } from '@king-design/vue';",
8
+ "props": [
9
+ {
10
+ "name": "selectedKey",
11
+ "description": "当前选中项的 key,可用 v-model:selectedKey 双向绑定",
12
+ "type": {
13
+ "raw": "string | number",
14
+ "kind": "union"
15
+ },
16
+ "required": false,
17
+ "default": "undefined",
18
+ "usageExample": "<Menu v-model:selectedKey=\"selectedKey\">"
19
+ },
20
+ {
21
+ "name": "expandedKeys",
22
+ "description": "展开的子菜单 key 数组,可用 v-model:expandedKeys 双向绑定",
23
+ "type": {
24
+ "raw": "(string | number)[]",
25
+ "kind": "array"
26
+ },
27
+ "required": false,
28
+ "default": "[]",
29
+ "usageExample": "<Menu v-model:expandedKeys=\"expandedKeys\">"
30
+ },
31
+ {
32
+ "name": "theme",
33
+ "description": "菜单主题",
34
+ "type": {
35
+ "raw": "\"light\" | \"dark\"",
36
+ "kind": "union",
37
+ "unionTypes": [
38
+ "light",
39
+ "dark"
40
+ ]
41
+ },
42
+ "required": false,
43
+ "default": "\"dark\"",
44
+ "allowedValues": [
45
+ {
46
+ "value": "dark",
47
+ "label": "深色主题",
48
+ "isDefault": true
49
+ },
50
+ {
51
+ "value": "light",
52
+ "label": "浅色主题"
53
+ }
54
+ ],
55
+ "usageExample": "<Menu theme=\"light\">"
56
+ },
57
+ {
58
+ "name": "type",
59
+ "description": "菜单排列方式",
60
+ "type": {
61
+ "raw": "\"vertical\" | \"horizontal\"",
62
+ "kind": "union",
63
+ "unionTypes": [
64
+ "vertical",
65
+ "horizontal"
66
+ ]
67
+ },
68
+ "required": false,
69
+ "default": "\"vertical\"",
70
+ "allowedValues": [
71
+ {
72
+ "value": "vertical",
73
+ "label": "垂直排列",
74
+ "isDefault": true
75
+ },
76
+ {
77
+ "value": "horizontal",
78
+ "label": "水平排列"
79
+ }
80
+ ],
81
+ "usageExample": "<Menu type=\"horizontal\">"
82
+ },
83
+ {
84
+ "name": "collapse",
85
+ "description": "菜单是否折叠(只显示图标)",
86
+ "type": {
87
+ "raw": "boolean",
88
+ "kind": "boolean"
89
+ },
90
+ "required": false,
91
+ "default": "false",
92
+ "usageExample": "<Menu :collapse=\"isCollapsed\">"
93
+ },
94
+ {
95
+ "name": "size",
96
+ "description": "菜单尺寸",
97
+ "type": {
98
+ "raw": "\"large\" | \"default\" | \"small\"",
99
+ "kind": "union",
100
+ "unionTypes": [
101
+ "large",
102
+ "default",
103
+ "small"
104
+ ]
105
+ },
106
+ "required": false,
107
+ "default": "\"default\"",
108
+ "allowedValues": [
109
+ {
110
+ "value": "large",
111
+ "label": "大尺寸"
112
+ },
113
+ {
114
+ "value": "default",
115
+ "label": "默认尺寸",
116
+ "isDefault": true
117
+ },
118
+ {
119
+ "value": "small",
120
+ "label": "小尺寸"
121
+ }
122
+ ],
123
+ "usageExample": "<Menu size=\"small\">"
124
+ },
125
+ {
126
+ "name": "accordion",
127
+ "description": "是否每次只能展开一项(手风琴模式)",
128
+ "type": {
129
+ "raw": "boolean",
130
+ "kind": "boolean"
131
+ },
132
+ "required": false,
133
+ "default": "false",
134
+ "usageExample": "<Menu accordion>"
135
+ },
136
+ {
137
+ "name": "dot",
138
+ "description": "是否给菜单项前面添加圆点",
139
+ "type": {
140
+ "raw": "boolean",
141
+ "kind": "boolean"
142
+ },
143
+ "required": false,
144
+ "default": "false",
145
+ "usageExample": "<Menu dot>"
146
+ },
147
+ {
148
+ "name": "showCollapseArrow",
149
+ "description": "是否展示折叠按钮",
150
+ "type": {
151
+ "raw": "boolean",
152
+ "kind": "boolean"
153
+ },
154
+ "required": false,
155
+ "default": "false",
156
+ "usageExample": "<Menu showCollapseArrow>"
157
+ }
158
+ ],
159
+ "events": [],
160
+ "slots": [
161
+ {
162
+ "name": "header",
163
+ "description": "扩展菜单头部"
164
+ }
165
+ ],
166
+ "methods": [],
167
+ "subComponents": [
168
+ {
169
+ "name": "MenuItem",
170
+ "description": "菜单项组件,可嵌套使用形成子菜单",
171
+ "props": [
172
+ {
173
+ "name": "key",
174
+ "description": "全局唯一的标识,用于标识和控制选中状态",
175
+ "type": {
176
+ "raw": "string | number",
177
+ "kind": "union"
178
+ },
179
+ "required": true,
180
+ "usageExample": "<MenuItem key=\"home\">首页</MenuItem>"
181
+ },
182
+ {
183
+ "name": "to",
184
+ "description": "超链接菜单项,点击直接跳转,支持字符串路径或路由对象",
185
+ "type": {
186
+ "raw": "string | object",
187
+ "kind": "union"
188
+ },
189
+ "required": false,
190
+ "default": "undefined",
191
+ "usageExample": "<MenuItem key=\"home\" to=\"/home\">首页</MenuItem>"
192
+ },
193
+ {
194
+ "name": "disabled",
195
+ "description": "是否禁用当前项",
196
+ "type": {
197
+ "raw": "boolean",
198
+ "kind": "boolean"
199
+ },
200
+ "required": false,
201
+ "default": "false",
202
+ "usageExample": "<MenuItem key=\"disabled\" disabled>禁用项</MenuItem>"
203
+ },
204
+ {
205
+ "name": "dot",
206
+ "description": "是否给当前菜单项前面添加圆点",
207
+ "type": {
208
+ "raw": "boolean",
209
+ "kind": "boolean"
210
+ },
211
+ "required": false,
212
+ "default": "false",
213
+ "usageExample": "<MenuItem key=\"item\" dot>带圆点</MenuItem>"
214
+ }
215
+ ],
216
+ "events": [
217
+ {
218
+ "name": "select",
219
+ "vueEventName": "@select",
220
+ "description": "选中没有子菜单的菜单项时触发",
221
+ "payload": [
222
+ {
223
+ "name": "menuItem",
224
+ "type": "MenuItem",
225
+ "description": "被选中的菜单项实例"
226
+ },
227
+ {
228
+ "name": "e",
229
+ "type": "MouseEvent",
230
+ "description": "原生鼠标事件"
231
+ }
232
+ ],
233
+ "usageExample": "<MenuItem @select=\"handleSelect\">",
234
+ "handlerExample": "const handleSelect = (menuItem, e: MouseEvent) => {\n console.log('选中了:', menuItem.key);\n};"
235
+ }
236
+ ]
237
+ }
238
+ ],
239
+ "examples": [
240
+ {
241
+ "id": "menu_basic",
242
+ "title": "基础用法",
243
+ "description": "基本的垂直菜单",
244
+ "difficulty": "easy",
245
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem } from '@king-design/vue';\n\nconst selectedKey = ref('home');\n</script>\n<template>\n <Menu v-model:selectedKey=\"selectedKey\">\n <MenuItem key=\"home\">首页</MenuItem>\n <MenuItem key=\"products\">产品</MenuItem>\n <MenuItem key=\"about\">关于我们</MenuItem>\n </Menu>\n</template>",
246
+ "tags": [
247
+ "basic"
248
+ ],
249
+ "usedProps": [
250
+ "selectedKey"
251
+ ],
252
+ "usedEvents": [],
253
+ "usedMethods": [],
254
+ "scenario": "创建一个基本的垂直导航菜单"
255
+ },
256
+ {
257
+ "id": "menu_submenu",
258
+ "title": "多级菜单",
259
+ "description": "带子菜单的嵌套结构",
260
+ "difficulty": "medium",
261
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem } from '@king-design/vue';\n\nconst selectedKey = ref('');\nconst expandedKeys = ref<string[]>([]);\n</script>\n<template>\n <Menu v-model:selectedKey=\"selectedKey\" v-model:expandedKeys=\"expandedKeys\">\n <MenuItem key=\"dashboard\">控制台</MenuItem>\n <MenuItem key=\"products\" title=\"产品管理\">\n <MenuItem key=\"list\">产品列表</MenuItem>\n <MenuItem key=\"add\">添加产品</MenuItem>\n </MenuItem>\n <MenuItem key=\"settings\">设置</MenuItem>\n </Menu>\n</template>",
262
+ "tags": [
263
+ "submenu",
264
+ "nested"
265
+ ],
266
+ "usedProps": [
267
+ "selectedKey",
268
+ "expandedKeys"
269
+ ],
270
+ "usedEvents": [],
271
+ "usedMethods": [],
272
+ "scenario": "创建带子菜单的多级导航"
273
+ },
274
+ {
275
+ "id": "menu_horizontal",
276
+ "title": "水平菜单",
277
+ "description": "顶部导航水平菜单",
278
+ "difficulty": "easy",
279
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem } from '@king-design/vue';\n\nconst selectedKey = ref('home');\n</script>\n<template>\n <Menu v-model:selectedKey=\"selectedKey\" type=\"horizontal\">\n <MenuItem key=\"home\">首页</MenuItem>\n <MenuItem key=\"products\">产品</MenuItem>\n <MenuItem key=\"docs\">文档</MenuItem>\n <MenuItem key=\"about\">关于</MenuItem>\n </Menu>\n</template>",
280
+ "tags": [
281
+ "horizontal",
282
+ "top-nav"
283
+ ],
284
+ "usedProps": [
285
+ "selectedKey",
286
+ "type"
287
+ ],
288
+ "usedEvents": [],
289
+ "usedMethods": [],
290
+ "scenario": "创建顶部水平导航菜单"
291
+ },
292
+ {
293
+ "id": "menu_collapse",
294
+ "title": "可折叠菜单",
295
+ "description": "支持折叠展开的侧边菜单",
296
+ "difficulty": "medium",
297
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem, Button, Icon } from '@king-design/vue';\n\nconst collapsed = ref(false);\nconst selectedKey = ref('');\n</script>\n<template>\n <Button @click=\"collapsed = !collapsed\">\n <Icon :class=\"collapsed ? 'k-icon-right' : 'k-icon-left'\" />\n </Button>\n <Menu v-model:selectedKey=\"selectedKey\" :collapse=\"collapsed\">\n <MenuItem key=\"home\"><Icon class=\"k-icon-home\" /> 首页</MenuItem>\n <MenuItem key=\"products\"><Icon class=\"k-icon-folder\" /> 产品</MenuItem>\n <MenuItem key=\"settings\"><Icon class=\"k-icon-settings\" /> 设置</MenuItem>\n </Menu>\n</template>",
298
+ "tags": [
299
+ "collapse",
300
+ "sidebar"
301
+ ],
302
+ "usedProps": [
303
+ "selectedKey",
304
+ "collapse"
305
+ ],
306
+ "usedEvents": [],
307
+ "usedMethods": [],
308
+ "scenario": "创建可折叠的侧边栏菜单"
309
+ },
310
+ {
311
+ "id": "menu_theme",
312
+ "title": "主题切换",
313
+ "description": "浅色和深色主题",
314
+ "difficulty": "easy",
315
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem } from '@king-design/vue';\n\nconst selectedKey = ref('');\n</script>\n<template>\n <Menu v-model:selectedKey=\"selectedKey\" theme=\"light\">\n <MenuItem key=\"home\">首页</MenuItem>\n <MenuItem key=\"products\">产品</MenuItem>\n </Menu>\n</template>",
316
+ "tags": [
317
+ "theme",
318
+ "light",
319
+ "dark"
320
+ ],
321
+ "usedProps": [
322
+ "selectedKey",
323
+ "theme"
324
+ ],
325
+ "usedEvents": [],
326
+ "usedMethods": [],
327
+ "scenario": "使用浅色主题的菜单"
328
+ },
329
+ {
330
+ "id": "menu_accordion",
331
+ "title": "手风琴模式",
332
+ "description": "每次只展开一个子菜单",
333
+ "difficulty": "easy",
334
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem } from '@king-design/vue';\n\nconst selectedKey = ref('');\n</script>\n<template>\n <Menu v-model:selectedKey=\"selectedKey\" accordion>\n <MenuItem key=\"group1\" title=\"分组1\">\n <MenuItem key=\"item1\">子项1</MenuItem>\n <MenuItem key=\"item2\">子项2</MenuItem>\n </MenuItem>\n <MenuItem key=\"group2\" title=\"分组2\">\n <MenuItem key=\"item3\">子项3</MenuItem>\n <MenuItem key=\"item4\">子项4</MenuItem>\n </MenuItem>\n </Menu>\n</template>",
335
+ "tags": [
336
+ "accordion"
337
+ ],
338
+ "usedProps": [
339
+ "selectedKey",
340
+ "accordion"
341
+ ],
342
+ "usedEvents": [],
343
+ "usedMethods": [],
344
+ "scenario": "每次只能展开一个子菜单"
345
+ },
346
+ {
347
+ "id": "menu_router",
348
+ "title": "路由集成",
349
+ "description": "配合 Vue Router 使用",
350
+ "difficulty": "medium",
351
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem } from '@king-design/vue';\n\nconst selectedKey = ref('home');\n</script>\n<template>\n <Menu v-model:selectedKey=\"selectedKey\">\n <MenuItem key=\"home\" to=\"/\">首页</MenuItem>\n <MenuItem key=\"products\" to=\"/products\">产品</MenuItem>\n <MenuItem key=\"docs\" :to=\"{name: 'docs'}\">文档</MenuItem>\n </Menu>\n</template>",
352
+ "tags": [
353
+ "router",
354
+ "navigation"
355
+ ],
356
+ "usedProps": [
357
+ "selectedKey",
358
+ "to"
359
+ ],
360
+ "usedEvents": [],
361
+ "usedMethods": [],
362
+ "scenario": "配合 Vue Router 进行页面导航"
363
+ },
364
+ {
365
+ "id": "menu_dot_header",
366
+ "title": "带圆点和头部",
367
+ "description": "使用 dot 属性和 header 插槽",
368
+ "difficulty": "medium",
369
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem } from '@king-design/vue';\n\nconst selectedKey = ref('1');\nconst expandedKeys = ref<string[]>([]);\n</script>\n<template>\n <Menu \n v-model:selectedKey=\"selectedKey\"\n v-model:expandedKeys=\"expandedKeys\"\n :dot=\"true\" \n theme=\"light\"\n >\n <template #header>管理面板</template>\n <MenuItem key=\"1\">菜单项 1</MenuItem>\n <MenuItem key=\"2\">菜单项 2</MenuItem>\n <MenuItem key=\"3\" :dot=\"false\">无圆点菜单项</MenuItem>\n </Menu>\n</template>",
370
+ "tags": [
371
+ "dot",
372
+ "header",
373
+ "slot"
374
+ ],
375
+ "usedProps": [
376
+ "selectedKey",
377
+ "expandedKeys",
378
+ "dot",
379
+ "theme"
380
+ ],
381
+ "usedEvents": [],
382
+ "usedMethods": [],
383
+ "scenario": "使用 dot 属性给菜单项添加圆点,使用 header 插槽自定义头部"
384
+ },
385
+ {
386
+ "id": "menu_icon_nested",
387
+ "title": "带图标的嵌套菜单",
388
+ "description": "图标和多级嵌套子菜单",
389
+ "difficulty": "medium",
390
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem, Icon } from '@king-design/vue';\n\nconst selectedKey = ref('');\nconst expandedKeys = ref<string[]>(['3']);\n\nconst onSelect = (menuItem: any) => {\n console.log('选中:', menuItem.key);\n};\n</script>\n<template>\n <Menu \n v-model:selectedKey=\"selectedKey\"\n v-model:expandedKeys=\"expandedKeys\"\n theme=\"light\"\n >\n <MenuItem key=\"1\" @select=\"onSelect\">菜单 1</MenuItem>\n <MenuItem key=\"2\" disabled>菜单 2(禁用)</MenuItem>\n <MenuItem key=\"3\">\n <Icon class=\"k-icon-heart\" /> 菜单 3\n <Menu>\n <MenuItem key=\"3-1\" @select=\"onSelect\">子菜单 1</MenuItem>\n <MenuItem key=\"3-2\" @select=\"onSelect\">子菜单 2</MenuItem>\n <MenuItem key=\"3-3\" disabled>子菜单 3(禁用)</MenuItem>\n <MenuItem key=\"3-4\">子菜单 4</MenuItem>\n </Menu>\n </MenuItem>\n <MenuItem key=\"4\" to=\"/\">菜单 4(路由)</MenuItem>\n </Menu>\n</template>",
391
+ "tags": [
392
+ "icon",
393
+ "nested",
394
+ "submenu",
395
+ "disabled"
396
+ ],
397
+ "usedProps": [
398
+ "selectedKey",
399
+ "expandedKeys",
400
+ "theme",
401
+ "disabled",
402
+ "to"
403
+ ],
404
+ "usedEvents": [
405
+ "select"
406
+ ],
407
+ "usedMethods": [],
408
+ "scenario": "创建带图标的多级嵌套菜单,包含禁用项和路由跳转"
409
+ },
410
+ {
411
+ "id": "menu_select_event",
412
+ "title": "选中事件处理",
413
+ "description": "监听菜单项选中事件",
414
+ "difficulty": "easy",
415
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Menu, MenuItem, Message } from '@king-design/vue';\n\nconst selectedKey = ref('');\n\nconst handleSelect = (menuItem: any, e: MouseEvent) => {\n Message.success(`选中了: ${menuItem.key}`);\n};\n</script>\n<template>\n <Menu v-model:selectedKey=\"selectedKey\">\n <MenuItem key=\"home\" @select=\"handleSelect\">首页</MenuItem>\n <MenuItem key=\"products\" @select=\"handleSelect\">产品</MenuItem>\n <MenuItem key=\"about\" @select=\"handleSelect\">关于</MenuItem>\n </Menu>\n</template>",
416
+ "tags": [
417
+ "select",
418
+ "event"
419
+ ],
420
+ "usedProps": [
421
+ "selectedKey"
422
+ ],
423
+ "usedEvents": [
424
+ "select"
425
+ ],
426
+ "usedMethods": [],
427
+ "scenario": "监听并处理菜单项选中事件"
428
+ }
429
+ ],
430
+ "commonMistakes": [
431
+ {
432
+ "id": "menu_missing_key",
433
+ "description": "MenuItem 未设置 key",
434
+ "wrongCode": "<Menu v-model:selectedKey=\"selectedKey\">\n <MenuItem>首页</MenuItem>\n</Menu>",
435
+ "correctCode": "<Menu v-model:selectedKey=\"selectedKey\">\n <MenuItem key=\"home\">首页</MenuItem>\n</Menu>",
436
+ "explanation": "每个 MenuItem 必须设置唯一的 key 用于标识和控制选中状态",
437
+ "relatedProps": [
438
+ "key"
439
+ ]
440
+ },
441
+ {
442
+ "id": "menu_selectedkey_vmodel",
443
+ "description": "使用错误的 v-model 语法",
444
+ "wrongCode": "<Menu v-model=\"selectedKey\">",
445
+ "correctCode": "<Menu v-model:selectedKey=\"selectedKey\">",
446
+ "explanation": "Menu 使用 v-model:selectedKey 而非 v-model 来绑定选中项",
447
+ "relatedProps": [
448
+ "selectedKey"
449
+ ]
450
+ },
451
+ {
452
+ "id": "menu_type_typo",
453
+ "description": "type 值拼写错误",
454
+ "wrongCode": "<Menu type=\"horizonal\">",
455
+ "correctCode": "<Menu type=\"horizontal\">",
456
+ "explanation": "type 只支持 vertical 和 horizontal,注意拼写",
457
+ "relatedProps": [
458
+ "type"
459
+ ]
460
+ }
461
+ ],
462
+ "searchKeywords": [
463
+ "菜单",
464
+ "menu",
465
+ "导航",
466
+ "navigation",
467
+ "侧边栏",
468
+ "sidebar",
469
+ "顶部导航"
470
+ ],
471
+ "useCases": [
472
+ "后台管理系统侧边菜单",
473
+ "顶部导航菜单",
474
+ "网站导航",
475
+ "多级分类导航",
476
+ "设置页面菜单"
477
+ ],
478
+ "relatedComponents": [
479
+ "MenuItem",
480
+ "Dropdown"
481
+ ]
482
+ }