king-design-analyzer 2.1.9 → 2.2.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 (305) hide show
  1. package/components/actions.json +101 -0
  2. package/components/advancedset.json +127 -0
  3. package/components/affix.json +7 -0
  4. package/components/aksk.json +172 -0
  5. package/components/az.json +15 -2
  6. package/components/badge.json +7 -0
  7. package/components/billtypes.json +14 -2
  8. package/components/breadcrumb.json +7 -0
  9. package/components/button.json +191 -0
  10. package/components/buttonlink.json +73 -0
  11. package/components/card.json +8 -1
  12. package/components/cardcol.json +142 -0
  13. package/components/cardcols.json +121 -0
  14. package/components/cardcontent.json +15 -3
  15. package/components/cardtabs.json +172 -0
  16. package/components/carousel.json +7 -0
  17. package/components/cascader.json +520 -368
  18. package/components/checkbox.json +51 -4
  19. package/components/cidrinput.json +140 -0
  20. package/components/code.json +8 -1
  21. package/components/collapse.json +7 -0
  22. package/components/colorpicker.json +217 -0
  23. package/components/copy.json +7 -0
  24. package/components/copyhover.json +111 -0
  25. package/components/copyrow.json +124 -0
  26. package/components/datepicker.json +656 -524
  27. package/components/description.json +98 -0
  28. package/components/dialog.json +522 -455
  29. package/components/divider.json +8 -1
  30. package/components/drawer.json +571 -558
  31. package/components/dropdown.json +464 -384
  32. package/components/duration.json +125 -0
  33. package/components/editable.json +66 -0
  34. package/components/ellipsis.json +34 -1
  35. package/components/filtertablefieldsdialog.json +128 -0
  36. package/components/flex.json +151 -0
  37. package/components/form.json +131 -0
  38. package/components/formiteminput.json +214 -0
  39. package/components/formitemspinner.json +213 -0
  40. package/components/formitemswitch.json +185 -0
  41. package/components/formitemtableconfigs.json +210 -0
  42. package/components/grid.json +7 -0
  43. package/components/header.json +161 -0
  44. package/components/icon.json +13 -1
  45. package/components/icontooltip.json +19 -1
  46. package/components/input.json +188 -4
  47. package/components/instancelist.json +194 -0
  48. package/components/instancenum.json +196 -0
  49. package/components/ipinput.json +117 -0
  50. package/components/kspstatus.json +205 -0
  51. package/components/kvcode.json +120 -0
  52. package/components/layoutcontent.json +15 -3
  53. package/components/layoutlistcontent.json +148 -0
  54. package/components/layoutpermissioncontent.json +155 -0
  55. package/components/layoutstandardlist.json +275 -0
  56. package/components/layouttabs.json +168 -0
  57. package/components/lazymount.json +86 -0
  58. package/components/lazyteleport.json +118 -0
  59. package/components/menu.json +7 -0
  60. package/components/pagination.json +12 -0
  61. package/components/paginationplus.json +30 -3
  62. package/components/password.json +121 -0
  63. package/components/popover.json +457 -437
  64. package/components/projects.json +129 -0
  65. package/components/protable.json +97 -8
  66. package/components/queuevisualrange.json +110 -0
  67. package/components/radio.json +82 -2
  68. package/components/rate.json +199 -0
  69. package/components/region.json +14 -2
  70. package/components/search.json +221 -0
  71. package/components/searchinput.json +132 -0
  72. package/components/searchitems.json +215 -0
  73. package/components/searchselect.json +195 -0
  74. package/components/select.json +686 -666
  75. package/components/sidebar.json +198 -0
  76. package/components/skeleton.json +233 -0
  77. package/components/spin.json +8 -1
  78. package/components/split.json +260 -0
  79. package/components/sshkeys.json +138 -0
  80. package/components/status.json +60 -3
  81. package/components/steps.json +7 -0
  82. package/components/switch.json +8 -1
  83. package/components/table.json +18 -1
  84. package/components/tablecolumnid.json +14 -2
  85. package/components/tabs.json +12 -0
  86. package/components/timeline.json +213 -0
  87. package/components/timepicker.json +147 -3
  88. package/components/timerange.json +262 -0
  89. package/components/tip.json +7 -0
  90. package/components/tooltip.json +484 -395
  91. package/components/tour.json +418 -372
  92. package/components/transfer.json +27 -3
  93. package/components/tree.json +6 -4
  94. package/components/treeselect.json +556 -475
  95. package/components/upload.json +474 -473
  96. package/components/vdialog.json +308 -0
  97. package/components/vdrawer.json +331 -0
  98. package/components/virtuallist.json +7 -0
  99. package/dist/ast/index.d.mts +35 -1
  100. package/dist/ast/index.d.ts +35 -1
  101. package/dist/ast/index.js +4 -3
  102. package/dist/ast/index.mjs +2 -1
  103. package/dist/{chunk-DSWKLUIX.mjs → chunk-3LYQ5XFM.mjs} +1 -1
  104. package/dist/chunk-BI5TIQID.mjs +330 -0
  105. package/dist/{chunk-F26GUCGG.js → chunk-CJGGFVQJ.js} +8 -8
  106. package/dist/chunk-CR3GC4H3.js +353 -0
  107. package/dist/{chunk-NZ6TLWMD.mjs → chunk-D2SXGGTX.mjs} +28 -17
  108. package/dist/{chunk-D3Y6FGWA.js → chunk-EYKZY2F3.js} +29 -18
  109. package/dist/chunk-KF5YBEM5.js +143 -0
  110. package/dist/{chunk-H2ET6MMM.mjs → chunk-KMIDURUR.mjs} +42 -47
  111. package/dist/chunk-QC6VTSA3.mjs +117 -0
  112. package/dist/{chunk-2W6OCG2S.js → chunk-SZYVGYKK.js} +42 -48
  113. package/dist/{chunk-WYSRJVX4.js → chunk-TA3SV4SP.js} +2 -2
  114. package/dist/{chunk-OJOHB64C.mjs → chunk-XGPHQHLR.mjs} +4 -4
  115. package/dist/full/index.js +7 -6
  116. package/dist/full/index.mjs +5 -4
  117. package/dist/index.d.mts +1 -0
  118. package/dist/index.d.ts +1 -0
  119. package/dist/index.js +14 -13
  120. package/dist/index.mjs +6 -5
  121. package/dist/metadata/index.d.mts +22 -2
  122. package/dist/metadata/index.d.ts +22 -2
  123. package/dist/metadata/index.js +26 -16
  124. package/dist/metadata/index.mjs +26 -15
  125. package/dist/resolve-BsLBxlBi.d.mts +24 -0
  126. package/dist/resolve-BsLBxlBi.d.ts +24 -0
  127. package/dist/runtime/index.js +4 -4
  128. package/dist/runtime/index.mjs +2 -2
  129. package/dist/shared/index.d.mts +10 -0
  130. package/dist/shared/index.d.ts +10 -0
  131. package/dist/shared/index.js +23 -0
  132. package/dist/shared/index.mjs +2 -0
  133. package/dist/static/index.js +5 -5
  134. package/dist/static/index.mjs +2 -2
  135. package/docs_for_llm/actions.doc.md +77 -0
  136. package/docs_for_llm/advancedset.doc.md +89 -0
  137. package/docs_for_llm/affix.doc.md +15 -7
  138. package/docs_for_llm/aksk.doc.md +111 -0
  139. package/docs_for_llm/az.doc.md +17 -11
  140. package/docs_for_llm/badge.doc.md +6 -5
  141. package/docs_for_llm/billtypes.doc.md +17 -11
  142. package/docs_for_llm/breadcrumb.doc.md +6 -3
  143. package/docs_for_llm/button.doc.md +34 -18
  144. package/docs_for_llm/buttonlink.doc.md +55 -0
  145. package/docs_for_llm/card.doc.md +8 -5
  146. package/docs_for_llm/cardcol.doc.md +78 -0
  147. package/docs_for_llm/cardcols.doc.md +84 -0
  148. package/docs_for_llm/cardcontent.doc.md +10 -10
  149. package/docs_for_llm/cardtabs.doc.md +106 -0
  150. package/docs_for_llm/carousel.doc.md +8 -7
  151. package/docs_for_llm/cascader.doc.md +46 -25
  152. package/docs_for_llm/checkbox.doc.md +25 -13
  153. package/docs_for_llm/cidrinput.doc.md +83 -0
  154. package/docs_for_llm/code.doc.md +22 -11
  155. package/docs_for_llm/collapse.doc.md +9 -6
  156. package/docs_for_llm/colorpicker.doc.md +104 -0
  157. package/docs_for_llm/copy.doc.md +15 -13
  158. package/docs_for_llm/copyhover.doc.md +59 -0
  159. package/docs_for_llm/copyrow.doc.md +71 -0
  160. package/docs_for_llm/datepicker.doc.md +51 -39
  161. package/docs_for_llm/description.doc.md +75 -0
  162. package/docs_for_llm/descriptions.doc.md +9 -6
  163. package/docs_for_llm/dialog.doc.md +48 -77
  164. package/docs_for_llm/divider.doc.md +9 -7
  165. package/docs_for_llm/drawer.doc.md +43 -84
  166. package/docs_for_llm/dropdown.doc.md +52 -21
  167. package/docs_for_llm/duration.doc.md +76 -0
  168. package/docs_for_llm/editable.doc.md +36 -14
  169. package/docs_for_llm/ellipsis.doc.md +10 -5
  170. package/docs_for_llm/filtertablefieldsdialog.doc.md +99 -0
  171. package/docs_for_llm/flex.doc.md +74 -0
  172. package/docs_for_llm/form.doc.md +33 -14
  173. package/docs_for_llm/formiteminput.doc.md +128 -0
  174. package/docs_for_llm/formitemspinner.doc.md +105 -0
  175. package/docs_for_llm/formitemswitch.doc.md +113 -0
  176. package/docs_for_llm/formitemtableconfigs.doc.md +95 -0
  177. package/docs_for_llm/grid.doc.md +7 -5
  178. package/docs_for_llm/header.doc.md +85 -0
  179. package/docs_for_llm/icon.doc.md +12 -8
  180. package/docs_for_llm/icontooltip.doc.md +121 -0
  181. package/docs_for_llm/input.doc.md +90 -39
  182. package/docs_for_llm/instancelist.doc.md +113 -0
  183. package/docs_for_llm/instancenum.doc.md +95 -0
  184. package/docs_for_llm/ipinput.doc.md +77 -0
  185. package/docs_for_llm/kspstatus.doc.md +82 -0
  186. package/docs_for_llm/kvcode.doc.md +76 -0
  187. package/docs_for_llm/layoutcontent.doc.md +17 -17
  188. package/docs_for_llm/layoutlistcontent.doc.md +95 -0
  189. package/docs_for_llm/layoutpermissioncontent.doc.md +84 -0
  190. package/docs_for_llm/layoutstandardlist.doc.md +120 -0
  191. package/docs_for_llm/layouttabs.doc.md +101 -0
  192. package/docs_for_llm/lazymount.doc.md +73 -0
  193. package/docs_for_llm/lazyteleport.doc.md +76 -0
  194. package/docs_for_llm/menu.doc.md +14 -11
  195. package/docs_for_llm/message.doc.md +48 -10
  196. package/docs_for_llm/pagination.doc.md +30 -17
  197. package/docs_for_llm/paginationplus.doc.md +31 -10
  198. package/docs_for_llm/password.doc.md +86 -0
  199. package/docs_for_llm/popover.doc.md +24 -55
  200. package/docs_for_llm/progress.doc.md +13 -10
  201. package/docs_for_llm/projects.doc.md +91 -0
  202. package/docs_for_llm/protable.doc.md +89 -15
  203. package/docs_for_llm/queuevisualrange.doc.md +78 -0
  204. package/docs_for_llm/radio.doc.md +23 -8
  205. package/docs_for_llm/rate.doc.md +122 -0
  206. package/docs_for_llm/region.doc.md +25 -13
  207. package/docs_for_llm/search.doc.md +120 -0
  208. package/docs_for_llm/searchinput.doc.md +111 -0
  209. package/docs_for_llm/searchitems.doc.md +116 -0
  210. package/docs_for_llm/searchselect.doc.md +126 -0
  211. package/docs_for_llm/select.doc.md +40 -55
  212. package/docs_for_llm/sidebar.doc.md +133 -0
  213. package/docs_for_llm/skeleton.doc.md +117 -0
  214. package/docs_for_llm/slider.doc.md +31 -21
  215. package/docs_for_llm/spin.doc.md +8 -5
  216. package/docs_for_llm/spinner.doc.md +28 -18
  217. package/docs_for_llm/split.doc.md +157 -0
  218. package/docs_for_llm/sshkeys.doc.md +88 -0
  219. package/docs_for_llm/status.doc.md +14 -9
  220. package/docs_for_llm/steps.doc.md +10 -7
  221. package/docs_for_llm/switch.doc.md +17 -14
  222. package/docs_for_llm/table.doc.md +118 -51
  223. package/docs_for_llm/tablecolumnid.doc.md +36 -16
  224. package/docs_for_llm/tabs.doc.md +19 -10
  225. package/docs_for_llm/tag.doc.md +19 -10
  226. package/docs_for_llm/timeline.doc.md +109 -0
  227. package/docs_for_llm/timepicker.doc.md +57 -38
  228. package/docs_for_llm/timerange.doc.md +157 -0
  229. package/docs_for_llm/tip.doc.md +20 -11
  230. package/docs_for_llm/tooltip.doc.md +55 -29
  231. package/docs_for_llm/tour.doc.md +48 -29
  232. package/docs_for_llm/transfer.doc.md +40 -29
  233. package/docs_for_llm/tree.doc.md +65 -23
  234. package/docs_for_llm/treeselect.doc.md +37 -48
  235. package/docs_for_llm/upload.doc.md +56 -32
  236. package/docs_for_llm/useCRUD.doc.md +49 -0
  237. package/docs_for_llm/useCountdown.doc.md +43 -0
  238. package/docs_for_llm/useDetail.doc.md +48 -0
  239. package/docs_for_llm/useDialog.doc.md +46 -0
  240. package/docs_for_llm/useEntity.doc.md +45 -0
  241. package/docs_for_llm/useEventListener.doc.md +44 -0
  242. package/docs_for_llm/useFalseUntilTruthy.doc.md +41 -0
  243. package/docs_for_llm/useGetCopyAuthText.doc.md +35 -0
  244. package/docs_for_llm/useGetUserPermission.doc.md +43 -0
  245. package/docs_for_llm/useGroup.doc.md +48 -0
  246. package/docs_for_llm/useIdEntities.doc.md +48 -0
  247. package/docs_for_llm/useIdEntity.doc.md +103 -0
  248. package/docs_for_llm/useInterval.doc.md +43 -0
  249. package/docs_for_llm/useLayoutStandardList.doc.md +38 -0
  250. package/docs_for_llm/useMessage.doc.md +46 -0
  251. package/docs_for_llm/useModifyCache.doc.md +37 -0
  252. package/docs_for_llm/useOpenDialog.doc.md +41 -0
  253. package/docs_for_llm/usePagination.doc.md +60 -0
  254. package/docs_for_llm/usePersist.doc.md +54 -0
  255. package/docs_for_llm/usePoll.doc.md +41 -0
  256. package/docs_for_llm/useRoutePlus.doc.md +34 -0
  257. package/docs_for_llm/useRouterPlus.doc.md +34 -0
  258. package/docs_for_llm/useSearch.doc.md +68 -0
  259. package/docs_for_llm/useShell.doc.md +43 -0
  260. package/docs_for_llm/useSkip.doc.md +41 -0
  261. package/docs_for_llm/useStorageIdEntity.doc.md +46 -0
  262. package/docs_for_llm/useStore.doc.md +34 -0
  263. package/docs_for_llm/useTable.doc.md +57 -0
  264. package/docs_for_llm/useTableGroup.doc.md +47 -0
  265. package/docs_for_llm/useTableSort.doc.md +40 -0
  266. package/docs_for_llm/useToState.doc.md +112 -0
  267. package/docs_for_llm/useUser.doc.md +38 -0
  268. package/docs_for_llm/useValidForm.doc.md +41 -0
  269. package/docs_for_llm/vdialog.doc.md +129 -0
  270. package/docs_for_llm/vdrawer.doc.md +119 -0
  271. package/docs_for_llm/virtuallist.doc.md +6 -3
  272. package/hooks/useCRUD.json +61 -0
  273. package/hooks/useCountdown.json +49 -0
  274. package/hooks/useDetail.json +67 -0
  275. package/hooks/useDialog.json +49 -0
  276. package/hooks/useEntity.json +61 -0
  277. package/hooks/useEventListener.json +61 -0
  278. package/hooks/useFalseUntilTruthy.json +43 -0
  279. package/hooks/useGetCopyAuthText.json +36 -0
  280. package/hooks/useGetUserPermission.json +55 -0
  281. package/hooks/useGroup.json +49 -0
  282. package/hooks/useIdEntities.json +61 -0
  283. package/hooks/useInterval.json +55 -0
  284. package/hooks/useLayoutStandardList.json +36 -0
  285. package/hooks/useMessage.json +73 -0
  286. package/hooks/useModifyCache.json +36 -0
  287. package/hooks/useOpenDialog.json +43 -0
  288. package/hooks/usePagination.json +49 -0
  289. package/hooks/usePersist.json +61 -0
  290. package/hooks/usePoll.json +43 -0
  291. package/hooks/useRoutePlus.json +36 -0
  292. package/hooks/useRouterPlus.json +36 -0
  293. package/hooks/useSearch.json +56 -0
  294. package/hooks/useShell.json +49 -0
  295. package/hooks/useSkip.json +43 -0
  296. package/hooks/useStorageIdEntity.json +67 -0
  297. package/hooks/useStore.json +36 -0
  298. package/hooks/useTable.json +49 -0
  299. package/hooks/useTableGroup.json +43 -0
  300. package/hooks/useTableSort.json +43 -0
  301. package/hooks/useUser.json +36 -0
  302. package/hooks/useValidForm.json +43 -0
  303. package/package.json +12 -6
  304. package/dist/chunk-HPAUCD5I.js +0 -156
  305. package/dist/chunk-L4DS3EXI.mjs +0 -133
@@ -1,563 +1,576 @@
1
1
  {
2
- "id": "drawer",
3
- "name": "Drawer",
4
- "displayName": "抽屉",
5
- "category": "feedback",
6
- "description": "抽屉组件,从屏幕边缘滑出的浮层面板。支持从四个方向弹出,常用于承载详情信息、表单编辑等场景。与 Dialog 类似但更适合承载较多内容。",
7
- "importStatement": "import { Drawer } from '@king-design/vue';",
8
- "props": [
9
- {
10
- "name": "value",
11
- "description": "抽屉是否展示,可用 v-model 双向绑定",
12
- "type": {
13
- "raw": "boolean",
14
- "kind": "boolean"
15
- },
16
- "required": false,
17
- "default": "false",
18
- "usageExample": "<Drawer v-model=\"visible\"></Drawer>"
19
- },
20
- {
21
- "name": "title",
22
- "description": "抽屉标题",
23
- "type": {
24
- "raw": "string",
25
- "kind": "string"
26
- },
27
- "required": false,
28
- "default": "\"提示\"",
29
- "usageExample": "<Drawer title=\"抽屉标题\"></Drawer>"
30
- },
31
- {
32
- "name": "placement",
33
- "description": "抽屉弹出的位置",
34
- "type": {
35
- "raw": "\"top\" | \"bottom\" | \"left\" | \"right\"",
36
- "kind": "union",
37
- "unionTypes": [
38
- "top",
39
- "bottom",
40
- "left",
41
- "right"
42
- ]
43
- },
44
- "required": false,
45
- "default": "\"right\"",
46
- "allowedValues": [
47
- {
48
- "value": "right",
49
- "label": "从右侧弹出",
50
- "isDefault": true
51
- },
52
- {
53
- "value": "left",
54
- "label": "从左侧弹出"
55
- },
56
- {
57
- "value": "top",
58
- "label": "从顶部弹出"
59
- },
60
- {
61
- "value": "bottom",
62
- "label": "从底部弹出"
2
+ "id": "drawer",
3
+ "name": "Drawer",
4
+ "displayName": "抽屉",
5
+ "category": "feedback",
6
+ "description": "抽屉组件,从屏幕边缘滑出的浮层面板。支持从四个方向弹出,常用于承载详情信息、表单编辑等场景。与 Dialog 类似但更适合承载较多内容。",
7
+ "importStatement": "import { Drawer } from '@king-design/vue';",
8
+ "props": [
9
+ {
10
+ "name": "value",
11
+ "description": "抽屉是否展示,可用 v-model 双向绑定",
12
+ "type": {
13
+ "raw": "boolean",
14
+ "kind": "boolean"
15
+ },
16
+ "required": false,
17
+ "default": "false",
18
+ "usageExample": "<Drawer v-model=\"visible\">"
19
+ },
20
+ {
21
+ "name": "title",
22
+ "description": "抽屉标题",
23
+ "type": {
24
+ "raw": "string",
25
+ "kind": "string"
26
+ },
27
+ "required": false,
28
+ "default": "\"提示\"",
29
+ "usageExample": "<Drawer title=\"抽屉标题\">"
30
+ },
31
+ {
32
+ "name": "placement",
33
+ "description": "抽屉弹出的位置",
34
+ "type": {
35
+ "raw": "\"top\" | \"bottom\" | \"left\" | \"right\"",
36
+ "kind": "union",
37
+ "unionTypes": [
38
+ "top",
39
+ "bottom",
40
+ "left",
41
+ "right"
42
+ ]
43
+ },
44
+ "required": false,
45
+ "default": "\"right\"",
46
+ "allowedValues": [
47
+ {
48
+ "value": "right",
49
+ "label": "从右侧弹出",
50
+ "isDefault": true
51
+ },
52
+ {
53
+ "value": "left",
54
+ "label": "从左侧弹出"
55
+ },
56
+ {
57
+ "value": "top",
58
+ "label": "从顶部弹出"
59
+ },
60
+ {
61
+ "value": "bottom",
62
+ "label": "从底部弹出"
63
+ }
64
+ ],
65
+ "usageExample": "<Drawer placement=\"left\">"
66
+ },
67
+ {
68
+ "name": "size",
69
+ "description": "抽屉尺寸",
70
+ "type": {
71
+ "raw": "\"large\" | \"default\" | \"small\" | \"mini\"",
72
+ "kind": "union",
73
+ "unionTypes": [
74
+ "large",
75
+ "default",
76
+ "small",
77
+ "mini"
78
+ ]
79
+ },
80
+ "required": false,
81
+ "default": "\"default\"",
82
+ "allowedValues": [
83
+ {
84
+ "value": "large",
85
+ "label": "大尺寸"
86
+ },
87
+ {
88
+ "value": "default",
89
+ "label": "默认尺寸",
90
+ "isDefault": true
91
+ },
92
+ {
93
+ "value": "small",
94
+ "label": "小尺寸"
95
+ },
96
+ {
97
+ "value": "mini",
98
+ "label": "迷你尺寸"
99
+ }
100
+ ],
101
+ "usageExample": "<Drawer size=\"large\">"
102
+ },
103
+ {
104
+ "name": "width",
105
+ "description": "指定抽屉宽度,number 类型时单位为 px,string 类型需指定单位",
106
+ "type": {
107
+ "raw": "number | string",
108
+ "kind": "union"
109
+ },
110
+ "required": false,
111
+ "default": "undefined",
112
+ "usageExample": "<Drawer :width=\"500\">"
113
+ },
114
+ {
115
+ "name": "loading",
116
+ "description": "\"确定\"按钮是否为加载状态",
117
+ "type": {
118
+ "raw": "boolean",
119
+ "kind": "boolean"
120
+ },
121
+ "required": false,
122
+ "default": "false",
123
+ "usageExample": "<Drawer :loading=\"isSubmitting\">"
124
+ },
125
+ {
126
+ "name": "disabledOk",
127
+ "description": "\"确定\"按钮是否为禁用状态",
128
+ "type": {
129
+ "raw": "boolean",
130
+ "kind": "boolean"
131
+ },
132
+ "required": false,
133
+ "default": "false",
134
+ "usageExample": "<Drawer :disabledOk=\"!isFormValid\">"
135
+ },
136
+ {
137
+ "name": "okText",
138
+ "description": "\"确定\"按钮文案",
139
+ "type": {
140
+ "raw": "string",
141
+ "kind": "string"
142
+ },
143
+ "required": false,
144
+ "default": "\"确定\"",
145
+ "usageExample": "<Drawer okText=\"保存\">"
146
+ },
147
+ {
148
+ "name": "cancelText",
149
+ "description": "\"取消\"按钮文案",
150
+ "type": {
151
+ "raw": "string",
152
+ "kind": "string"
153
+ },
154
+ "required": false,
155
+ "default": "\"取消\"",
156
+ "usageExample": "<Drawer cancelText=\"关闭\">"
157
+ },
158
+ {
159
+ "name": "ok",
160
+ "description": "\"确定\"按钮点击后自定义回调函数",
161
+ "type": {
162
+ "raw": "() => void",
163
+ "kind": "function",
164
+ "functionSignature": "() => void"
165
+ },
166
+ "required": false,
167
+ "default": "undefined",
168
+ "usageExample": "<Drawer :ok=\"handleOk\">"
169
+ },
170
+ {
171
+ "name": "cancel",
172
+ "description": "\"取消\"按钮点击后自定义回调函数",
173
+ "type": {
174
+ "raw": "() => void",
175
+ "kind": "function",
176
+ "functionSignature": "() => void"
177
+ },
178
+ "required": false,
179
+ "default": "undefined",
180
+ "usageExample": "<Drawer :cancel=\"handleCancel\">"
181
+ },
182
+ {
183
+ "name": "hideClose",
184
+ "description": "是否隐藏右上角关闭按钮",
185
+ "type": {
186
+ "raw": "boolean",
187
+ "kind": "boolean"
188
+ },
189
+ "required": false,
190
+ "default": "false",
191
+ "usageExample": "<Drawer hideClose>"
192
+ },
193
+ {
194
+ "name": "overlay",
195
+ "description": "是否展示遮罩层",
196
+ "type": {
197
+ "raw": "boolean",
198
+ "kind": "boolean"
199
+ },
200
+ "required": false,
201
+ "default": "true",
202
+ "usageExample": "<Drawer :overlay=\"false\">"
203
+ },
204
+ {
205
+ "name": "closable",
206
+ "description": "点击遮罩层是否可以关闭抽屉",
207
+ "type": {
208
+ "raw": "boolean",
209
+ "kind": "boolean"
210
+ },
211
+ "required": false,
212
+ "default": "true",
213
+ "usageExample": "<Drawer :closable=\"false\">"
214
+ },
215
+ {
216
+ "name": "escClosable",
217
+ "description": "是否按 ESC 键时关闭抽屉",
218
+ "type": {
219
+ "raw": "boolean",
220
+ "kind": "boolean"
221
+ },
222
+ "required": false,
223
+ "default": "true",
224
+ "usageExample": "<Drawer :escClosable=\"false\">"
225
+ },
226
+ {
227
+ "name": "draggable",
228
+ "description": "抽屉是否可拖拽",
229
+ "type": {
230
+ "raw": "boolean",
231
+ "kind": "boolean"
232
+ },
233
+ "required": false,
234
+ "default": "true",
235
+ "usageExample": "<Drawer :draggable=\"false\">"
236
+ },
237
+ {
238
+ "name": "terminate",
239
+ "description": "用户点击关闭按钮、遮罩层或按 ESC 键时的回调函数",
240
+ "type": {
241
+ "raw": "() => void",
242
+ "kind": "function",
243
+ "functionSignature": "() => void"
244
+ },
245
+ "required": false,
246
+ "default": "undefined",
247
+ "usageExample": "<Drawer :terminate=\"handleTerminate\">"
248
+ },
249
+ {
250
+ "name": "container",
251
+ "description": "指定抽屉插入的位置,默认追加到 body",
252
+ "type": {
253
+ "raw": "string | ((parentDom: Element, anchor: Node | null) => Element)",
254
+ "kind": "union"
255
+ },
256
+ "required": false,
257
+ "default": "undefined",
258
+ "usageExample": "<Drawer :container=\"() => document.body\">"
259
+ },
260
+ {
261
+ "name": "mode",
262
+ "description": "指定关闭状态下的渲染方式",
263
+ "type": {
264
+ "raw": "\"destroy\" | \"hide\"",
265
+ "kind": "union",
266
+ "unionTypes": [
267
+ "destroy",
268
+ "hide"
269
+ ]
270
+ },
271
+ "required": false,
272
+ "default": "\"hide\"",
273
+ "allowedValues": [
274
+ {
275
+ "value": "hide",
276
+ "label": "隐藏但保留 DOM",
277
+ "isDefault": true
278
+ },
279
+ {
280
+ "value": "destroy",
281
+ "label": "销毁 DOM"
282
+ }
283
+ ],
284
+ "usageExample": "<Drawer mode=\"destroy\">"
63
285
  }
64
- ],
65
- "usageExample": "<Drawer placement=\"left\"></Drawer>"
66
- },
67
- {
68
- "name": "size",
69
- "description": "抽屉尺寸",
70
- "type": {
71
- "raw": "\"large\" | \"default\" | \"small\" | \"mini\"",
72
- "kind": "union",
73
- "unionTypes": [
74
- "large",
75
- "default",
76
- "small",
77
- "mini"
78
- ]
79
- },
80
- "required": false,
81
- "default": "\"default\"",
82
- "allowedValues": [
83
- {
84
- "value": "large",
85
- "label": "大尺寸"
86
- },
87
- {
88
- "value": "default",
89
- "label": "默认尺寸",
90
- "isDefault": true
91
- },
92
- {
93
- "value": "small",
94
- "label": "小尺寸"
95
- },
96
- {
97
- "value": "mini",
98
- "label": "迷你尺寸"
286
+ ],
287
+ "events": [
288
+ {
289
+ "name": "open",
290
+ "vueEventName": "@open",
291
+ "description": "抽屉打开后触发",
292
+ "payload": [],
293
+ "usageExample": "<Drawer @open=\"handleOpen\">",
294
+ "handlerExample": "const handleOpen = () => {\n console.log('抽屉已打开');\n};"
295
+ },
296
+ {
297
+ "name": "close",
298
+ "vueEventName": "@close",
299
+ "description": "抽屉关闭后触发,不管是什么原因导致的关闭",
300
+ "payload": [],
301
+ "usageExample": "<Drawer @close=\"handleClose\">",
302
+ "handlerExample": "const handleClose = () => {\n console.log('抽屉已关闭');\n};"
303
+ },
304
+ {
305
+ "name": "ok",
306
+ "vueEventName": "@ok",
307
+ "description": "点击确定按钮时触发",
308
+ "payload": [],
309
+ "usageExample": "<Drawer @ok=\"handleOk\">",
310
+ "handlerExample": "const handleOk = () => {\n console.log('点击了确定');\n};"
311
+ },
312
+ {
313
+ "name": "cancel",
314
+ "vueEventName": "@cancel",
315
+ "description": "点击取消按钮时触发",
316
+ "payload": [],
317
+ "usageExample": "<Drawer @cancel=\"handleCancel\">",
318
+ "handlerExample": "const handleCancel = () => {\n console.log('点击了取消');\n};"
319
+ },
320
+ {
321
+ "name": "terminate",
322
+ "vueEventName": "@terminate",
323
+ "description": "用户强行关闭抽屉时触发(点击关闭按钮、遮罩层或按 ESC)",
324
+ "payload": [],
325
+ "usageExample": "<Drawer @terminate=\"handleTerminate\">",
326
+ "handlerExample": "const handleTerminate = () => {\n console.log('用户强行关闭');\n};"
327
+ },
328
+ {
329
+ "name": "afterClose",
330
+ "vueEventName": "@afterClose",
331
+ "description": "抽屉退出动画执行完成后触发",
332
+ "payload": [],
333
+ "usageExample": "<Drawer @afterClose=\"handleAfterClose\">",
334
+ "handlerExample": "const handleAfterClose = () => {\n console.log('动画完成');\n};"
99
335
  }
100
- ],
101
- "usageExample": "<Drawer size=\"large\"></Drawer>"
102
- },
103
- {
104
- "name": "width",
105
- "description": "指定抽屉宽度,number 类型时单位为 px,string 类型需指定单位",
106
- "type": {
107
- "raw": "number | string",
108
- "kind": "union"
109
- },
110
- "required": false,
111
- "default": "undefined",
112
- "usageExample": "<Drawer :width=\"500\"></Drawer>"
113
- },
114
- {
115
- "name": "loading",
116
- "description": "\"确定\"按钮是否为加载状态",
117
- "type": {
118
- "raw": "boolean",
119
- "kind": "boolean"
120
- },
121
- "required": false,
122
- "default": "false",
123
- "usageExample": "<Drawer :loading=\"isSubmitting\"></Drawer>"
124
- },
125
- {
126
- "name": "disabledOk",
127
- "description": "\"确定\"按钮是否为禁用状态",
128
- "type": {
129
- "raw": "boolean",
130
- "kind": "boolean"
131
- },
132
- "required": false,
133
- "default": "false",
134
- "usageExample": "<Drawer :disabledOk=\"!isFormValid\"></Drawer>"
135
- },
136
- {
137
- "name": "okText",
138
- "description": "\"确定\"按钮文案",
139
- "type": {
140
- "raw": "string",
141
- "kind": "string"
142
- },
143
- "required": false,
144
- "default": "\"确定\"",
145
- "usageExample": "<Drawer okText=\"保存\"></Drawer>"
146
- },
147
- {
148
- "name": "cancelText",
149
- "description": "\"取消\"按钮文案",
150
- "type": {
151
- "raw": "string",
152
- "kind": "string"
153
- },
154
- "required": false,
155
- "default": "\"取消\"",
156
- "usageExample": "<Drawer cancelText=\"关闭\"></Drawer>"
157
- },
158
- {
159
- "name": "ok",
160
- "description": "\"确定\"按钮点击后自定义回调函数",
161
- "type": {
162
- "raw": "() => void",
163
- "kind": "function",
164
- "functionSignature": "() => void"
165
- },
166
- "required": false,
167
- "default": "undefined",
168
- "usageExample": "<Drawer :ok=\"handleOk\"></Drawer>"
169
- },
170
- {
171
- "name": "cancel",
172
- "description": "\"取消\"按钮点击后自定义回调函数",
173
- "type": {
174
- "raw": "() => void",
175
- "kind": "function",
176
- "functionSignature": "() => void"
177
- },
178
- "required": false,
179
- "default": "undefined",
180
- "usageExample": "<Drawer :cancel=\"handleCancel\"></Drawer>"
181
- },
182
- {
183
- "name": "hideClose",
184
- "description": "是否隐藏右上角关闭按钮",
185
- "type": {
186
- "raw": "boolean",
187
- "kind": "boolean"
188
- },
189
- "required": false,
190
- "default": "false",
191
- "usageExample": "<Drawer hideClose></Drawer>"
192
- },
193
- {
194
- "name": "overlay",
195
- "description": "是否展示遮罩层",
196
- "type": {
197
- "raw": "boolean",
198
- "kind": "boolean"
199
- },
200
- "required": false,
201
- "default": "true",
202
- "usageExample": "<Drawer :overlay=\"false\"></Drawer>"
203
- },
204
- {
205
- "name": "closable",
206
- "description": "点击遮罩层是否可以关闭抽屉",
207
- "type": {
208
- "raw": "boolean",
209
- "kind": "boolean"
210
- },
211
- "required": false,
212
- "default": "true",
213
- "usageExample": "<Drawer :closable=\"false\"></Drawer>"
214
- },
215
- {
216
- "name": "escClosable",
217
- "description": "是否按 ESC 键时关闭抽屉",
218
- "type": {
219
- "raw": "boolean",
220
- "kind": "boolean"
221
- },
222
- "required": false,
223
- "default": "true",
224
- "usageExample": "<Drawer :escClosable=\"false\"></Drawer>"
225
- },
226
- {
227
- "name": "terminate",
228
- "description": "用户点击关闭按钮、遮罩层或按 ESC 键时的回调函数",
229
- "type": {
230
- "raw": "() => void",
231
- "kind": "function",
232
- "functionSignature": "() => void"
233
- },
234
- "required": false,
235
- "default": "undefined",
236
- "usageExample": "<Drawer :terminate=\"handleTerminate\"></Drawer>"
237
- },
238
- {
239
- "name": "container",
240
- "description": "指定抽屉插入的位置,默认追加到 body",
241
- "type": {
242
- "raw": "string | ((parentDom: Element, anchor: Node | null) => Element)",
243
- "kind": "union"
244
- },
245
- "required": false,
246
- "default": "undefined",
247
- "usageExample": "<Drawer :container=\"() => document.body\"></Drawer>"
248
- },
249
- {
250
- "name": "mode",
251
- "description": "指定关闭状态下的渲染方式",
252
- "type": {
253
- "raw": "\"destroy\" | \"hide\"",
254
- "kind": "union",
255
- "unionTypes": [
256
- "destroy",
257
- "hide"
258
- ]
259
- },
260
- "required": false,
261
- "default": "\"hide\"",
262
- "allowedValues": [
263
- {
264
- "value": "hide",
265
- "label": "隐藏但保留 DOM",
266
- "isDefault": true
267
- },
268
- {
269
- "value": "destroy",
270
- "label": "销毁 DOM"
336
+ ],
337
+ "methods": [
338
+ {
339
+ "name": "show",
340
+ "description": "弹出抽屉",
341
+ "params": [
342
+ {
343
+ "name": "props",
344
+ "type": "DrawerProps",
345
+ "description": "可选的临时抽屉配置,会在本次显示时覆盖标题、方向、宽度或按钮状态。",
346
+ "optional": true
347
+ }
348
+ ],
349
+ "returnType": "Promise",
350
+ "usageExample": "drawerRef.value?.show();"
351
+ },
352
+ {
353
+ "name": "close",
354
+ "description": "关闭抽屉",
355
+ "params": [],
356
+ "returnType": "void",
357
+ "usageExample": "drawerRef.value?.close();"
358
+ },
359
+ {
360
+ "name": "showLoading",
361
+ "description": "\"确定\"按钮变为加载状态",
362
+ "params": [],
363
+ "returnType": "void",
364
+ "usageExample": "drawerRef.value?.showLoading();"
365
+ },
366
+ {
367
+ "name": "hideLoading",
368
+ "description": "\"确定\"按钮变为正常状态",
369
+ "params": [],
370
+ "returnType": "void",
371
+ "usageExample": "drawerRef.value?.hideLoading();"
372
+ },
373
+ {
374
+ "name": "disableOk",
375
+ "description": "\"确定\"按钮变为禁用状态",
376
+ "params": [],
377
+ "returnType": "void",
378
+ "usageExample": "drawerRef.value?.disableOk();"
379
+ },
380
+ {
381
+ "name": "enableOk",
382
+ "description": "\"确定\"按钮变为正常状态",
383
+ "params": [],
384
+ "returnType": "void",
385
+ "usageExample": "drawerRef.value?.enableOk();"
386
+ }
387
+ ],
388
+ "examples": [
389
+ {
390
+ "id": "drawer_basic",
391
+ "title": "基础用法",
392
+ "description": "基本的抽屉",
393
+ "difficulty": "easy",
394
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\n</script>\n<template>\n <Button @click=\"visible = true\">打开抽屉</Button>\n <Drawer v-model=\"visible\" title=\"抽屉标题\">\n <p>抽屉内容</p>\n </Drawer>\n</template>",
395
+ "tags": [
396
+ "basic"
397
+ ],
398
+ "usedProps": [
399
+ "value",
400
+ "title"
401
+ ],
402
+ "usedEvents": [],
403
+ "usedMethods": [],
404
+ "scenario": "创建一个基本的抽屉"
405
+ },
406
+ {
407
+ "id": "drawer_placement",
408
+ "title": "不同方向",
409
+ "description": "从四个方向弹出的抽屉",
410
+ "difficulty": "easy",
411
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\nconst placement = ref<'left' | 'right' | 'top' | 'bottom'>('right');\n\nconst openDrawer = (pos: typeof placement.value) => {\n placement.value = pos;\n visible.value = true;\n};\n</script>\n<template>\n <Button @click=\"openDrawer('left')\">左侧</Button>\n <Button @click=\"openDrawer('right')\">右侧</Button>\n <Button @click=\"openDrawer('top')\">顶部</Button>\n <Button @click=\"openDrawer('bottom')\">底部</Button>\n <Drawer v-model=\"visible\" :placement=\"placement\" title=\"抽屉\">\n <p>从 {{ placement }} 方向弹出</p>\n </Drawer>\n</template>",
412
+ "tags": [
413
+ "placement",
414
+ "direction"
415
+ ],
416
+ "usedProps": [
417
+ "value",
418
+ "placement",
419
+ "title"
420
+ ],
421
+ "usedEvents": [],
422
+ "usedMethods": [],
423
+ "scenario": "从不同方向弹出抽屉"
424
+ },
425
+ {
426
+ "id": "drawer_width",
427
+ "title": "自定义宽度",
428
+ "description": "指定抽屉宽度",
429
+ "difficulty": "easy",
430
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\n</script>\n<template>\n <Button @click=\"visible = true\">打开宽抽屉</Button>\n <Drawer v-model=\"visible\" title=\"宽抽屉\" :width=\"500\">\n <p>这是一个 500px 宽的抽屉</p>\n </Drawer>\n</template>",
431
+ "tags": [
432
+ "width",
433
+ "custom"
434
+ ],
435
+ "usedProps": [
436
+ "value",
437
+ "title",
438
+ "width"
439
+ ],
440
+ "usedEvents": [],
441
+ "usedMethods": [],
442
+ "scenario": "自定义抽屉宽度"
443
+ },
444
+ {
445
+ "id": "drawer_footer",
446
+ "title": "自定义底部",
447
+ "description": "自定义抽屉底部按钮",
448
+ "difficulty": "medium",
449
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\n</script>\n<template>\n <Button @click=\"visible = true\">打开抽屉</Button>\n <Drawer v-model=\"visible\" title=\"自定义底部\">\n <p>抽屉内容</p>\n <template #footer>\n <Button @click=\"visible = false\">关闭</Button>\n <Button type=\"primary\" @click=\"visible = false\">保存</Button>\n </template>\n </Drawer>\n</template>",
450
+ "tags": [
451
+ "footer",
452
+ "slot",
453
+ "custom"
454
+ ],
455
+ "usedProps": [
456
+ "value",
457
+ "title"
458
+ ],
459
+ "usedEvents": [],
460
+ "usedSlots": [
461
+ "footer"
462
+ ],
463
+ "usedMethods": [],
464
+ "scenario": "自定义抽屉底部按钮区域"
465
+ },
466
+ {
467
+ "id": "drawer_no_overlay",
468
+ "title": "无遮罩层",
469
+ "description": "隐藏遮罩层的抽屉",
470
+ "difficulty": "easy",
471
+ "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\n</script>\n<template>\n <Button @click=\"visible = true\">打开无遮罩抽屉</Button>\n <Drawer v-model=\"visible\" title=\"无遮罩\" :overlay=\"false\">\n <p>没有遮罩层的抽屉</p>\n </Drawer>\n</template>",
472
+ "tags": [
473
+ "overlay",
474
+ "no-mask"
475
+ ],
476
+ "usedProps": [
477
+ "value",
478
+ "title",
479
+ "overlay"
480
+ ],
481
+ "usedEvents": [],
482
+ "usedMethods": [],
483
+ "scenario": "创建无遮罩层的抽屉"
484
+ },
485
+ {
486
+ "id": "drawer_form",
487
+ "title": "抽屉表单",
488
+ "description": "在抽屉中放置表单",
489
+ "difficulty": "medium",
490
+ "code": "<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue';\nimport { Drawer, Button, Form, FormItem, Input } from '@king-design/vue';\n\nconst visible = ref(false);\nconst loading = ref(false);\nconst form = reactive({\n name: '',\n email: ''\n});\n\nconst handleOk = async () => {\n loading.value = true;\n // 模拟提交\n await new Promise(r => setTimeout(r, 1000));\n loading.value = false;\n visible.value = false;\n};\n</script>\n<template>\n <Button @click=\"visible = true\">打开表单</Button>\n <Drawer v-model=\"visible\" title=\"编辑信息\" :loading=\"loading\" @ok=\"handleOk\">\n <Form>\n <FormItem label=\"姓名\">\n <Input v-model=\"form.name\" />\n </FormItem>\n <FormItem label=\"邮箱\">\n <Input v-model=\"form.email\" />\n </FormItem>\n </Form>\n </Drawer>\n</template>",
491
+ "tags": [
492
+ "form",
493
+ "submit",
494
+ "loading"
495
+ ],
496
+ "usedProps": [
497
+ "value",
498
+ "title",
499
+ "loading"
500
+ ],
501
+ "usedEvents": [
502
+ "ok"
503
+ ],
504
+ "usedMethods": [],
505
+ "scenario": "在抽屉中放置编辑表单"
506
+ }
507
+ ],
508
+ "commonMistakes": [
509
+ {
510
+ "id": "drawer_placement_typo",
511
+ "description": "placement 值拼写错误",
512
+ "wrongCode": "<Drawer placement=\"center\">",
513
+ "correctCode": "<Drawer placement=\"right\">",
514
+ "explanation": "placement 只支持 top, bottom, left, right,不存在 center 值",
515
+ "relatedProps": [
516
+ "placement"
517
+ ]
518
+ },
519
+ {
520
+ "id": "drawer_vmodel_name",
521
+ "description": "使用错误的 v-model 属性名",
522
+ "wrongCode": "<Drawer v-model:visible=\"visible\">",
523
+ "correctCode": "<Drawer v-model=\"visible\">",
524
+ "explanation": "Drawer 使用 v-model 控制显示状态,不是 v-model:visible",
525
+ "relatedProps": [
526
+ "value"
527
+ ]
528
+ },
529
+ {
530
+ "id": "drawer_closable_vs_hideclose",
531
+ "description": "混淆 closable 和 hideClose",
532
+ "wrongCode": "<Drawer :closable=\"true\"> <!-- 想隐藏关闭按钮 -->",
533
+ "correctCode": "<Drawer hideClose> <!-- 隐藏关闭按钮 -->\n<Drawer :closable=\"false\"> <!-- 禁止点击遮罩关闭 -->",
534
+ "explanation": "closable 控制点击遮罩是否关闭,hideClose 控制是否显示关闭按钮",
535
+ "relatedProps": [
536
+ "closable",
537
+ "hideClose"
538
+ ]
539
+ }
540
+ ],
541
+ "searchKeywords": [
542
+ "抽屉",
543
+ "drawer",
544
+ "侧边栏",
545
+ "滑出",
546
+ "面板",
547
+ "详情"
548
+ ],
549
+ "useCases": [
550
+ "详情信息展示",
551
+ "表单编辑面板",
552
+ "配置设置面板",
553
+ "多级菜单操作",
554
+ "预览查看面板"
555
+ ],
556
+ "typeDefinitions": [
557
+ {
558
+ "name": "DrawerPlacement",
559
+ "definition": "type DrawerPlacement = 'top' | 'bottom' | 'left' | 'right'",
560
+ "description": "抽屉弹出方向枚举,决定抽屉从哪个边缘进入页面。"
561
+ },
562
+ {
563
+ "name": "DrawerSize",
564
+ "definition": "type DrawerSize = string | number",
565
+ "description": "抽屉尺寸类型,可传具体像素值、百分比字符串或预设尺寸。"
566
+ },
567
+ {
568
+ "name": "DrawerProps",
569
+ "definition": "type DrawerProps = {\n title?: string\n value?: boolean\n placement?: 'top' | 'bottom' | 'left' | 'right'\n width?: string | number\n loading?: boolean\n disabledOk?: boolean\n}",
570
+ "description": "实例 `show` 方法常用的抽屉属性配置片段,可覆盖标题、方向、宽度和按钮状态。"
271
571
  }
272
- ],
273
- "usageExample": "<Drawer mode=\"destroy\"></Drawer>"
274
- }
275
- ],
276
- "events": [
277
- {
278
- "name": "open",
279
- "vueEventName": "@open",
280
- "description": "抽屉打开后触发",
281
- "payload": [],
282
- "usageExample": "<Drawer @open=\"handleOpen\"></Drawer>",
283
- "handlerExample": "const handleOpen = () => {\n console.log('抽屉已打开');\n};"
284
- },
285
- {
286
- "name": "close",
287
- "vueEventName": "@close",
288
- "description": "抽屉关闭后触发,不管是什么原因导致的关闭",
289
- "payload": [],
290
- "usageExample": "<Drawer @close=\"handleClose\"></Drawer>",
291
- "handlerExample": "const handleClose = () => {\n console.log('抽屉已关闭');\n};"
292
- },
293
- {
294
- "name": "ok",
295
- "vueEventName": "@ok",
296
- "description": "点击确定按钮时触发",
297
- "payload": [],
298
- "usageExample": "<Drawer @ok=\"handleOk\"></Drawer>",
299
- "handlerExample": "const handleOk = () => {\n console.log('点击了确定');\n};"
300
- },
301
- {
302
- "name": "cancel",
303
- "vueEventName": "@cancel",
304
- "description": "点击取消按钮时触发",
305
- "payload": [],
306
- "usageExample": "<Drawer @cancel=\"handleCancel\"></Drawer>",
307
- "handlerExample": "const handleCancel = () => {\n console.log('点击了取消');\n};"
308
- },
309
- {
310
- "name": "terminate",
311
- "vueEventName": "@terminate",
312
- "description": "用户强行关闭抽屉时触发(点击关闭按钮、遮罩层或按 ESC)",
313
- "payload": [],
314
- "usageExample": "<Drawer @terminate=\"handleTerminate\"></Drawer>",
315
- "handlerExample": "const handleTerminate = () => {\n console.log('用户强行关闭');\n};"
316
- },
317
- {
318
- "name": "afterClose",
319
- "vueEventName": "@afterClose",
320
- "description": "抽屉退出动画执行完成后触发",
321
- "payload": [],
322
- "usageExample": "<Drawer @afterClose=\"handleAfterClose\"></Drawer>",
323
- "handlerExample": "const handleAfterClose = () => {\n console.log('动画完成');\n};"
324
- }
325
- ],
326
- "methods": [
327
- {
328
- "name": "show",
329
- "description": "弹出抽屉",
330
- "params": [],
331
- "returnType": "Promise",
332
- "usageExample": "drawerRef.value?.show();"
333
- },
334
- {
335
- "name": "close",
336
- "description": "关闭抽屉",
337
- "params": [],
338
- "returnType": "void",
339
- "usageExample": "drawerRef.value?.close();"
340
- },
341
- {
342
- "name": "showLoading",
343
- "description": "\"确定\"按钮变为加载状态",
344
- "params": [],
345
- "returnType": "void",
346
- "usageExample": "drawerRef.value?.showLoading();"
347
- },
348
- {
349
- "name": "hideLoading",
350
- "description": "\"确定\"按钮变为正常状态",
351
- "params": [],
352
- "returnType": "void",
353
- "usageExample": "drawerRef.value?.hideLoading();"
354
- },
355
- {
356
- "name": "disableOk",
357
- "description": "\"确定\"按钮变为禁用状态",
358
- "params": [],
359
- "returnType": "void",
360
- "usageExample": "drawerRef.value?.disableOk();"
361
- },
362
- {
363
- "name": "enableOk",
364
- "description": "\"确定\"按钮变为正常状态",
365
- "params": [],
366
- "returnType": "void",
367
- "usageExample": "drawerRef.value?.enableOk();"
368
- }
369
- ],
370
- "slots": [
371
- {
372
- "name": "content",
373
- "description": "定义整个弹窗体,包括header,body,footer"
374
- },
375
- {
376
- "name": "header",
377
- "description": "扩展弹窗头部"
378
- },
379
- {
380
- "name": "body",
381
- "description": "扩展弹窗主体部分"
382
- },
383
- {
384
- "name": "footer",
385
- "description": "扩展弹窗底部"
386
- },
387
- {
388
- "name": "footer-wrapper",
389
- "description": "扩展弹窗整个底部,上述footer是它下面一个子扩展点"
390
- }
391
- ],
392
- "examples": [
393
- {
394
- "id": "drawer_basic",
395
- "title": "基础用法",
396
- "description": "基本的抽屉",
397
- "difficulty": "easy",
398
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\n</script>\n<template>\n <Button @click=\"visible = true\">打开抽屉</Button>\n <Drawer v-model=\"visible\" title=\"抽屉标题\">\n <p>抽屉内容</p>\n </Drawer>\n</template>",
399
- "tags": [
400
- "basic"
401
- ],
402
- "usedProps": [
403
- "value",
404
- "title"
405
- ],
406
- "usedEvents": [],
407
- "usedMethods": [],
408
- "scenario": "创建一个基本的抽屉"
409
- },
410
- {
411
- "id": "drawer_placement",
412
- "title": "不同方向",
413
- "description": "从四个方向弹出的抽屉",
414
- "difficulty": "easy",
415
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\nconst placement = ref<'left' | 'right' | 'top' | 'bottom'>('right');\n\nconst openDrawer = (pos: typeof placement.value) => {\n placement.value = pos;\n visible.value = true;\n};\n</script>\n<template>\n <Button @click=\"openDrawer('left')\">左侧</Button>\n <Button @click=\"openDrawer('right')\">右侧</Button>\n <Button @click=\"openDrawer('top')\">顶部</Button>\n <Button @click=\"openDrawer('bottom')\">底部</Button>\n <Drawer v-model=\"visible\" :placement=\"placement\" title=\"抽屉\">\n <p>从 {{ placement }} 方向弹出</p>\n </Drawer>\n</template>",
416
- "tags": [
417
- "placement",
418
- "direction"
419
- ],
420
- "usedProps": [
421
- "value",
422
- "placement",
423
- "title"
424
- ],
425
- "usedEvents": [],
426
- "usedMethods": [],
427
- "scenario": "从不同方向弹出抽屉"
428
- },
429
- {
430
- "id": "drawer_width",
431
- "title": "自定义宽度",
432
- "description": "指定抽屉宽度",
433
- "difficulty": "easy",
434
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\n</script>\n<template>\n <Button @click=\"visible = true\">打开宽抽屉</Button>\n <Drawer v-model=\"visible\" title=\"宽抽屉\" :width=\"500\">\n <p>这是一个 500px 宽的抽屉</p>\n </Drawer>\n</template>",
435
- "tags": [
436
- "width",
437
- "custom"
438
- ],
439
- "usedProps": [
440
- "value",
441
- "title",
442
- "width"
443
- ],
444
- "usedEvents": [],
445
- "usedMethods": [],
446
- "scenario": "自定义抽屉宽度"
447
- },
448
- {
449
- "id": "drawer_footer",
450
- "title": "自定义底部",
451
- "description": "自定义抽屉底部按钮",
452
- "difficulty": "medium",
453
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\n</script>\n<template>\n <Button @click=\"visible = true\">打开抽屉</Button>\n <Drawer v-model=\"visible\" title=\"自定义底部\">\n <p>抽屉内容</p>\n <template #footer>\n <Button @click=\"visible = false\">关闭</Button>\n <Button type=\"primary\" @click=\"visible = false\">保存</Button>\n </template>\n </Drawer>\n</template>",
454
- "tags": [
455
- "footer",
456
- "slot",
457
- "custom"
458
- ],
459
- "usedProps": [
460
- "value",
461
- "title"
462
- ],
463
- "usedEvents": [],
464
- "usedSlots": [
465
- "footer"
466
- ],
467
- "usedMethods": [],
468
- "scenario": "自定义抽屉底部按钮区域"
469
- },
470
- {
471
- "id": "drawer_no_overlay",
472
- "title": "无遮罩层",
473
- "description": "隐藏遮罩层的抽屉",
474
- "difficulty": "easy",
475
- "code": "<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Drawer, Button } from '@king-design/vue';\n\nconst visible = ref(false);\n</script>\n<template>\n <Button @click=\"visible = true\">打开无遮罩抽屉</Button>\n <Drawer v-model=\"visible\" title=\"无遮罩\" :overlay=\"false\">\n <p>没有遮罩层的抽屉</p>\n </Drawer>\n</template>",
476
- "tags": [
477
- "overlay",
478
- "no-mask"
479
- ],
480
- "usedProps": [
481
- "value",
482
- "title",
483
- "overlay"
484
- ],
485
- "usedEvents": [],
486
- "usedMethods": [],
487
- "scenario": "创建无遮罩层的抽屉"
488
- },
489
- {
490
- "id": "drawer_form",
491
- "title": "抽屉表单",
492
- "description": "在抽屉中放置表单",
493
- "difficulty": "medium",
494
- "code": "<script setup lang=\"ts\">\nimport { ref, reactive } from 'vue';\nimport { Drawer, Button, Form, FormItem, Input } from '@king-design/vue';\n\nconst visible = ref(false);\nconst loading = ref(false);\nconst form = reactive({\n name: '',\n email: ''\n});\n\nconst handleOk = async () => {\n loading.value = true;\n // 模拟提交\n await new Promise(r => setTimeout(r, 1000));\n loading.value = false;\n visible.value = false;\n};\n</script>\n<template>\n <Button @click=\"visible = true\">打开表单</Button>\n <Drawer v-model=\"visible\" title=\"编辑信息\" :loading=\"loading\" @ok=\"handleOk\">\n <Form>\n <FormItem label=\"姓名\">\n <Input v-model=\"form.name\" />\n </FormItem>\n <FormItem label=\"邮箱\">\n <Input v-model=\"form.email\" />\n </FormItem>\n </Form>\n </Drawer>\n</template>",
495
- "tags": [
496
- "form",
497
- "submit",
498
- "loading"
499
- ],
500
- "usedProps": [
501
- "value",
502
- "title",
503
- "loading"
504
- ],
505
- "usedEvents": [
506
- "ok"
507
- ],
508
- "usedMethods": [],
509
- "scenario": "在抽屉中放置编辑表单"
510
- }
511
- ],
512
- "commonMistakes": [
513
- {
514
- "id": "drawer_placement_typo",
515
- "description": "placement 值拼写错误",
516
- "wrongCode": "<Drawer placement=\"center\">",
517
- "correctCode": "<Drawer placement=\"right\">",
518
- "explanation": "placement 只支持 top, bottom, left, right,不存在 center 值",
519
- "relatedProps": [
520
- "placement"
521
- ]
522
- },
523
- {
524
- "id": "drawer_vmodel_name",
525
- "description": "使用错误的 v-model 属性名",
526
- "wrongCode": "<Drawer v-model:visible=\"visible\">",
527
- "correctCode": "<Drawer v-model=\"visible\">",
528
- "explanation": "Drawer 使用 v-model 控制显示状态,不是 v-model:visible",
529
- "relatedProps": [
530
- "value"
531
- ]
532
- },
533
- {
534
- "id": "drawer_closable_vs_hideclose",
535
- "description": "混淆 closable 和 hideClose",
536
- "wrongCode": "<Drawer :closable=\"true\"> <!-- 想隐藏关闭按钮 -->",
537
- "correctCode": "<Drawer hideClose> <!-- 隐藏关闭按钮 -->\n<Drawer :closable=\"false\"> <!-- 禁止点击遮罩关闭 -->",
538
- "explanation": "closable 控制点击遮罩是否关闭,hideClose 控制是否显示关闭按钮",
539
- "relatedProps": [
540
- "closable",
541
- "hideClose"
542
- ]
543
- }
544
- ],
545
- "searchKeywords": [
546
- "抽屉",
547
- "drawer",
548
- "侧边栏",
549
- "滑出",
550
- "面板",
551
- "详情"
552
- ],
553
- "useCases": [
554
- "详情信息展示",
555
- "表单编辑面板",
556
- "配置设置面板",
557
- "多级菜单操作",
558
- "预览查看面板"
559
- ],
560
- "relatedComponents": [
561
- "Dialog"
562
- ]
572
+ ],
573
+ "relatedComponents": [
574
+ "Dialog"
575
+ ]
563
576
  }