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
@@ -12,108 +12,67 @@ import { Drawer } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | value | `boolean` | `false` | 否 | 抽屉是否展示,可用 v-model 双向绑定 | `<Drawer v-model="visible"></Drawer>` |
18
- | title | `string` | `"提示"` | 否 | 抽屉标题 | `<Drawer title="抽屉标题"></Drawer>` |
19
- | placement | `"top" | "bottom" | "left" | "right"` | `"right"` | 否 | 抽屉弹出的位置 | `<Drawer placement="left"></Drawer>` |
20
- | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 抽屉尺寸 | `<Drawer size="large"></Drawer>` |
21
- | width | `number | string` | `undefined` | 否 | 指定抽屉宽度,number 类型时单位为 px,string 类型需指定单位 | `<Drawer :width="500"></Drawer>` |
22
- | loading | `boolean` | `false` | 否 | "确定"按钮是否为加载状态 | `<Drawer :loading="isSubmitting"></Drawer>` |
23
- | disabledOk | `boolean` | `false` | 否 | "确定"按钮是否为禁用状态 | `<Drawer :disabledOk="!isFormValid"></Drawer>` |
24
- | okText | `string` | `"确定"` | 否 | "确定"按钮文案 | `<Drawer okText="保存"></Drawer>` |
25
- | cancelText | `string` | `"取消"` | 否 | "取消"按钮文案 | `<Drawer cancelText="关闭"></Drawer>` |
26
- | ok | `() => void` | `undefined` | 否 | "确定"按钮点击后自定义回调函数 | `<Drawer :ok="handleOk"></Drawer>` |
27
- | cancel | `() => void` | `undefined` | 否 | "取消"按钮点击后自定义回调函数 | `<Drawer :cancel="handleCancel"></Drawer>` |
28
- | hideClose | `boolean` | `false` | 否 | 是否隐藏右上角关闭按钮 | `<Drawer hideClose></Drawer>` |
29
- | overlay | `boolean` | `true` | 否 | 是否展示遮罩层 | `<Drawer :overlay="false"></Drawer>` |
30
- | closable | `boolean` | `true` | 否 | 点击遮罩层是否可以关闭抽屉 | `<Drawer :closable="false"></Drawer>` |
31
- | escClosable | `boolean` | `true` | 否 | 是否按 ESC 键时关闭抽屉 | `<Drawer :escClosable="false"></Drawer>` |
32
- | terminate | `() => void` | `undefined` | 否 | 用户点击关闭按钮、遮罩层或按 ESC 键时的回调函数 | `<Drawer :terminate="handleTerminate"></Drawer>` |
33
- | container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定抽屉插入的位置,默认追加到 body | `<Drawer :container="() => document.body"></Drawer>` |
34
- | mode | `"destroy" | "hide"` | `"hide"` | 否 | 指定关闭状态下的渲染方式 | `<Drawer mode="destroy"></Drawer>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | value | `boolean` | `false` | 否 | 抽屉是否展示,可用 v-model 双向绑定 | - | `<Drawer v-model="visible">` |
18
+ | title | `string` | `"提示"` | 否 | 抽屉标题 | - | `<Drawer title="抽屉标题">` |
19
+ | placement | `"top" | "bottom" | "left" | "right"` | `"right"` | 否 | 抽屉弹出的位置 | - | `<Drawer placement="left">` |
20
+ | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 抽屉尺寸 | - | `<Drawer size="large">` |
21
+ | width | `number | string` | `undefined` | 否 | 指定抽屉宽度,number 类型时单位为 px,string 类型需指定单位 | - | `<Drawer :width="500">` |
22
+ | loading | `boolean` | `false` | 否 | "确定"按钮是否为加载状态 | - | `<Drawer :loading="isSubmitting">` |
23
+ | disabledOk | `boolean` | `false` | 否 | "确定"按钮是否为禁用状态 | - | `<Drawer :disabledOk="!isFormValid">` |
24
+ | okText | `string` | `"确定"` | 否 | "确定"按钮文案 | - | `<Drawer okText="保存">` |
25
+ | cancelText | `string` | `"取消"` | 否 | "取消"按钮文案 | - | `<Drawer cancelText="关闭">` |
26
+ | ok | `() => void` | `undefined` | 否 | "确定"按钮点击后自定义回调函数 | - | `<Drawer :ok="handleOk">` |
27
+ | cancel | `() => void` | `undefined` | 否 | "取消"按钮点击后自定义回调函数 | - | `<Drawer :cancel="handleCancel">` |
28
+ | hideClose | `boolean` | `false` | 否 | 是否隐藏右上角关闭按钮 | - | `<Drawer hideClose>` |
29
+ | overlay | `boolean` | `true` | 否 | 是否展示遮罩层 | - | `<Drawer :overlay="false">` |
30
+ | closable | `boolean` | `true` | 否 | 点击遮罩层是否可以关闭抽屉 | - | `<Drawer :closable="false">` |
31
+ | escClosable | `boolean` | `true` | 否 | 是否按 ESC 键时关闭抽屉 | - | `<Drawer :escClosable="false">` |
32
+ | draggable | `boolean` | `true` | 否 | 抽屉是否可拖拽 | - | `<Drawer :draggable="false">` |
33
+ | terminate | `() => void` | `undefined` | 否 | 用户点击关闭按钮、遮罩层或按 ESC 键时的回调函数 | - | `<Drawer :terminate="handleTerminate">` |
34
+ | container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定抽屉插入的位置,默认追加到 body | - | `<Drawer :container="() => document.body">` |
35
+ | mode | `"destroy" | "hide"` | `"hide"` | 否 | 指定关闭状态下的渲染方式 | - | `<Drawer mode="destroy">` |
35
36
 
36
37
  ## 事件 (Events)
37
38
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
38
39
  | --- | --- | --- | --- | --- |
39
- | open | `@open` | 抽屉打开后触发 | `-` | `<Drawer @open="handleOpen"></Drawer>` |
40
- | close | `@close` | 抽屉关闭后触发,不管是什么原因导致的关闭 | `-` | `<Drawer @close="handleClose"></Drawer>` |
41
- | ok | `@ok` | 点击确定按钮时触发 | `-` | `<Drawer @ok="handleOk"></Drawer>` |
42
- | cancel | `@cancel` | 点击取消按钮时触发 | `-` | `<Drawer @cancel="handleCancel"></Drawer>` |
43
- | terminate | `@terminate` | 用户强行关闭抽屉时触发(点击关闭按钮、遮罩层或按 ESC) | `-` | `<Drawer @terminate="handleTerminate"></Drawer>` |
44
- | afterClose | `@afterClose` | 抽屉退出动画执行完成后触发 | `-` | `<Drawer @afterClose="handleAfterClose"></Drawer>` |
45
-
46
- ### 事件处理函数示例
47
- **open**:
48
- ```typescript
49
- const handleOpen = () => {
50
- console.log('抽屉已打开');
51
- };
52
- ```
53
-
54
- **close**:
55
- ```typescript
56
- const handleClose = () => {
57
- console.log('抽屉已关闭');
58
- };
59
- ```
60
-
61
- **ok**:
62
- ```typescript
63
- const handleOk = () => {
64
- console.log('点击了确定');
65
- };
66
- ```
67
-
68
- **cancel**:
69
- ```typescript
70
- const handleCancel = () => {
71
- console.log('点击了取消');
72
- };
73
- ```
74
-
75
- **terminate**:
76
- ```typescript
77
- const handleTerminate = () => {
78
- console.log('用户强行关闭');
79
- };
80
- ```
81
-
82
- **afterClose**:
83
- ```typescript
84
- const handleAfterClose = () => {
85
- console.log('动画完成');
86
- };
87
- ```
88
-
89
- ## 插槽 (Slots)
90
- | 插槽名 | 说明 | 模板写法 | 示例 |
91
- | --- | --- | --- | --- |
92
- | content | 定义整个弹窗体,包括header,body,footer | `undefined` | - |
93
- | header | 扩展弹窗头部 | `undefined` | - |
94
- | body | 扩展弹窗主体部分 | `undefined` | - |
95
- | footer | 扩展弹窗底部 | `undefined` | - |
96
- | footer-wrapper | 扩展弹窗整个底部,上述footer是它下面一个子扩展点 | `undefined` | - |
40
+ | open | `@open` | 抽屉打开后触发 | `-` | `<Drawer @open="handleOpen">` |
41
+ | close | `@close` | 抽屉关闭后触发,不管是什么原因导致的关闭 | `-` | `<Drawer @close="handleClose">` |
42
+ | ok | `@ok` | 点击确定按钮时触发 | `-` | `<Drawer @ok="handleOk">` |
43
+ | cancel | `@cancel` | 点击取消按钮时触发 | `-` | `<Drawer @cancel="handleCancel">` |
44
+ | terminate | `@terminate` | 用户强行关闭抽屉时触发(点击关闭按钮、遮罩层或按 ESC) | `-` | `<Drawer @terminate="handleTerminate">` |
45
+ | afterClose | `@afterClose` | 抽屉退出动画执行完成后触发 | `-` | `<Drawer @afterClose="handleAfterClose">` |
97
46
 
98
47
  ## 方法 (Methods)
99
48
  | 方法名 | 说明 | 参数 | 返回值 |
100
49
  | --- | --- | --- | --- |
101
- | show | 弹出抽屉 | `` | `Promise` |
102
- | close | 关闭抽屉 | `` | `void` |
103
- | showLoading | "确定"按钮变为加载状态 | `` | `void` |
104
- | hideLoading | "确定"按钮变为正常状态 | `` | `void` |
105
- | disableOk | "确定"按钮变为禁用状态 | `` | `void` |
106
- | enableOk | "确定"按钮变为正常状态 | `` | `void` |
50
+ | show | 弹出抽屉 | `props?: DrawerProps` | `Promise` |
51
+ | close | 关闭抽屉 | `-` | `void` |
52
+ | showLoading | "确定"按钮变为加载状态 | `-` | `void` |
53
+ | hideLoading | "确定"按钮变为正常状态 | `-` | `void` |
54
+ | disableOk | "确定"按钮变为禁用状态 | `-` | `void` |
55
+ | enableOk | "确定"按钮变为正常状态 | `-` | `void` |
56
+
57
+ ### 方法参数说明
58
+ **show**
59
+
60
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
61
+ | --- | --- | --- | --- | --- |
62
+ | props | `DrawerProps` | 否 | - | 可选的临时抽屉配置,会在本次显示时覆盖标题、方向、宽度或按钮状态。 |
107
63
 
108
64
  ## 常见错误与正确用法 (Anti-Hallucination)
65
+ ### placement 值拼写错误
109
66
  > **错误用法**: `<Drawer placement="center">`
110
67
  > **正确写法**: `<Drawer placement="right">`
111
68
  > **说明**: placement 只支持 top, bottom, left, right,不存在 center 值
112
69
 
70
+ ### 使用错误的 v-model 属性名
113
71
  > **错误用法**: `<Drawer v-model:visible="visible">`
114
72
  > **正确写法**: `<Drawer v-model="visible">`
115
73
  > **说明**: Drawer 使用 v-model 控制显示状态,不是 v-model:visible
116
74
 
75
+ ### 混淆 closable 和 hideClose
117
76
  > **错误用法**: `<Drawer :closable="true"> <!-- 想隐藏关闭按钮 -->`
118
77
  > **正确写法**: `<Drawer hideClose> <!-- 隐藏关闭按钮 -->
119
78
  <Drawer :closable="false"> <!-- 禁止点击遮罩关闭 -->`
@@ -12,37 +12,65 @@ import { Dropdown, DropdownMenu, DropdownItem } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | trigger | `"hover" | "click" | "contextmenu" | "focus"` | `"hover"` | 否 | 触发方式 | `<Dropdown trigger="click"></Dropdown>` |
18
- | value | `boolean` | `false` | 否 | 是否展示菜单,可用 v-model 双向绑定 | `<Dropdown v-model="visible"></Dropdown>` |
19
- | disabled | `boolean` | `false` | 否 | 是否禁用整个菜单 | `<Dropdown disabled></Dropdown>` |
20
- | position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'left top+8', at: 'left bottom'}` | 否 | 菜单弹出的位置 | `<Dropdown position="right"></Dropdown>` |
21
- | of | `"self" | "parent" | Event` | `"self"` | 否 | 弹出菜单的位置是相对当前触发元素还是触发元素所在的菜单元素 | `<Dropdown of="parent"></Dropdown>` |
22
- | container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定弹出菜单追加的位置,默认追加到 body | `<Dropdown :container="() => document.body"></Dropdown>` |
23
- | alwaysShowOnClick | `boolean` | `false` | 否 | 不管什么触发方式,重复点击触发器都不隐藏弹层 | `<Dropdown alwaysShowOnClick></Dropdown>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | trigger | `"hover" | "click" | "contextmenu" | "focus"` | `"hover"` | 否 | 触发方式 | - | `<Dropdown trigger="click">` |
18
+ | value | `boolean` | `false` | 否 | 是否展示菜单,可用 v-model 双向绑定 | - | `<Dropdown v-model="visible">` |
19
+ | disabled | `boolean` | `false` | 否 | 是否禁用整个菜单 | - | `<Dropdown disabled>` |
20
+ | position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'left top+8', at: 'left bottom'}` | 否 | 菜单弹出的位置 | - | `<Dropdown position="right">` |
21
+ | collison | `Collision | [Collision, Collision]` | `undefined` | 否 | 碰撞检测策略,控制弹层超出边界时的处理方式。注意源码字段名拼写为 collison。 | - | `<Dropdown :collison="'flipfit'">` |
22
+ | of | `"self" | "parent" | Event` | `"self"` | 否 | 弹出菜单的位置是相对当前触发元素还是触发元素所在的菜单元素 | - | `<Dropdown of="parent">` |
23
+ | container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定弹出菜单追加的位置,默认追加到 body | - | `<Dropdown :container="() => document.body">` |
24
+ | alwaysShowOnClick | `boolean` | `false` | 否 | 不管什么触发方式,重复点击触发器都不隐藏弹层 | - | `<Dropdown alwaysShowOnClick>` |
24
25
 
25
26
  ## 事件 (Events)
26
27
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
27
28
  | --- | --- | --- | --- | --- |
28
- | show | `@show` | 菜单展示时触发 | `-` | `<Dropdown @show="handleShow"></Dropdown>` |
29
- | hide | `@hide` | 菜单隐藏时触发 | `-` | `<Dropdown @hide="handleHide"></Dropdown>` |
29
+ | show | `@show` | 菜单展示时触发 | `-` | `<Dropdown @show="handleShow">` |
30
+ | hide | `@hide` | 菜单隐藏时触发 | `-` | `<Dropdown @hide="handleHide">` |
31
+ | positioned | `@positioned` | 下拉菜单完成定位计算后触发,可用于读取最终落位方向和坐标。 | `feedback: Feedback` | `<Dropdown @positioned="handlePositioned">` |
30
32
 
31
- ### 事件处理函数示例
32
- **show**:
33
- ```typescript
34
- const handleShow = () => {
35
- console.log('菜单已展示');
36
- };
37
- ```
33
+ ### 事件参数说明
34
+ **positioned**
35
+
36
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
37
+ | --- | --- | --- | --- | --- |
38
+ | feedback | `Feedback` | 是 | - | 定位反馈对象,描述当前菜单的最终 placement 和坐标信息。 |
38
39
 
39
- **hide**:
40
+ 事件处理示例:
40
41
  ```typescript
41
- const handleHide = () => {
42
- console.log('菜单已隐藏');
42
+ const handlePositioned = (feedback: Feedback) => {
43
+ console.log('最终位置', feedback.placement);
43
44
  };
44
45
  ```
45
46
 
47
+ ## 方法 (Methods)
48
+ | 方法名 | 说明 | 参数 | 返回值 |
49
+ | --- | --- | --- | --- |
50
+ | show | 主动展开下拉菜单。 | `shouldFocus?: boolean` | `void` |
51
+ | hide | 主动隐藏下拉菜单。 | `immediately?: boolean` | `void` |
52
+ | focusFirst | 把焦点移动到菜单中的第一个可聚焦项。 | `-` | `void` |
53
+ | position | 重新计算当前下拉菜单的位置。 | `callback?: (feedback: Feedback) => void` | `void` |
54
+
55
+ ### 方法参数说明
56
+ **show**
57
+
58
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
59
+ | --- | --- | --- | --- | --- |
60
+ | shouldFocus | `boolean` | 否 | - | 展开后是否尝试把焦点移动到菜单内容,用于键盘可访问性场景。 |
61
+
62
+ **hide**
63
+
64
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
65
+ | --- | --- | --- | --- | --- |
66
+ | immediately | `boolean` | 否 | - | 是否立即隐藏并跳过延迟关闭逻辑。 |
67
+
68
+ **position**
69
+
70
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
71
+ | --- | --- | --- | --- | --- |
72
+ | callback | `(feedback: Feedback) => void` | 否 | - | 定位完成后的回调,可读取最终 placement 和坐标。 |
73
+
46
74
  ## 子组件 (Sub-Components)
47
75
  ### DropdownMenu
48
76
  下拉菜单容器,用于包裹菜单项
@@ -60,6 +88,7 @@ const handleHide = () => {
60
88
  - `@click`: 菜单项被点击时触发
61
89
 
62
90
  ## 常见错误与正确用法 (Anti-Hallucination)
91
+ ### 未使用 #menu 插槽
63
92
  > **错误用法**: `<Dropdown>
64
93
  <Button>菜单</Button>
65
94
  <DropdownMenu>
@@ -76,10 +105,12 @@ const handleHide = () => {
76
105
  </Dropdown>`
77
106
  > **说明**: DropdownMenu 必须放在 #menu 插槽中
78
107
 
108
+ ### trigger 值拼写错误
79
109
  > **错误用法**: `<Dropdown trigger="rightclick">`
80
110
  > **正确写法**: `<Dropdown trigger="contextmenu">`
81
111
  > **说明**: 右键触发应使用 contextmenu,不是 rightclick
82
112
 
113
+ ### DropdownItem 未放在 DropdownMenu 中
83
114
  > **错误用法**: `<Dropdown>
84
115
  <Button>菜单</Button>
85
116
  <template #menu>
@@ -0,0 +1,76 @@
1
+ # 时长选择 (Duration)
2
+
3
+ 用于购买、续费和策略配置场景的时长选择器,支持按月或按小时切换,并可配合内置刻度快速选择常用周期。
4
+
5
+ **关键词**: duration, period, 时长选择, 购买时长, 按小时时长, 续费周期
6
+
7
+ **使用场景**: 购买链路时长选择、资源续费时长选择、按小时设置临时资源周期
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { Duration } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | modelValue | `number` | `undefined` | 否 | 当前选中的时长值 | - | - |
18
+ | marksType | `string` | `"month"` | 否 | 刻度类型,控制内置 marks 的生成方式 | - | - |
19
+ | type | `string` | `"month"` | 否 | 时长类型,通常为 month 或 hour | - | - |
20
+
21
+ ## 事件 (Events)
22
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
23
+ | --- | --- | --- | --- | --- |
24
+ | update:modelValue | `@update:modelValue` | 用户选择新的时长后触发,通常用于联动价格或到期时间计算。 | `value?: number` | - |
25
+
26
+ ### 事件参数说明
27
+ **update:modelValue**
28
+
29
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
30
+ | --- | --- | --- | --- | --- |
31
+ | value | `number` | 否 | - | 当前选中的时长值。 |
32
+
33
+ ## 使用示例
34
+ ### 续费时长选择
35
+ **场景**: 在购买或续费流程中选择资源有效时长。
36
+
37
+ 按月展示常用刻度,并把结果同步到续费表单。
38
+
39
+ **使用的 API**: 属性: modelValue, type, marksType | 事件: update:modelValue
40
+
41
+ ```vue
42
+ <script setup lang="ts">
43
+ import { ref } from 'vue';
44
+ import { Duration } from '@ksyun-internal/versatile';
45
+
46
+ const duration = ref(3);
47
+ </script>
48
+
49
+ <template>
50
+ <Duration v-model="duration" type="month" marks-type="month" />
51
+ </template>
52
+ ```
53
+
54
+ ### 按小时选择时长
55
+ **场景**: 在临时测试机或弹性资源场景中按小时设置有效时长。
56
+
57
+ 在临时资源场景中切换到按小时的时长选择。
58
+
59
+ **使用的 API**: 属性: modelValue, type, marksType | 事件: update:modelValue
60
+
61
+ ```vue
62
+ <script setup lang="ts">
63
+ import { ref } from 'vue';
64
+ import { Duration } from '@ksyun-internal/versatile';
65
+
66
+ const duration = ref(12);
67
+ </script>
68
+
69
+ <template>
70
+ <Duration v-model="duration" type="hour" marks-type="hour" />
71
+ </template>
72
+ ```
73
+
74
+ ## 相关组件
75
+ Slider, TimeRange
76
+
@@ -12,17 +12,23 @@ import { Editable } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | value | `string` | `undefined` | 否 | 编辑的内容,可用 v-model 双向绑定 | `<Editable v-model="text" />` |
18
- | editing | `boolean` | `false` | 否 | 是否为编辑状态 | `<Editable :editing="isEditing" />` |
19
- | required | `boolean` | `true` | 否 | 是否规定不能为空 | `<Editable :required="false" />` |
20
- | validate | `((v: string) => boolean) | RegExp | string` | `undefined` | 否 | 验证规则,支持函数、正则表达式或正则字符串。函数返回 true 表示验证通过 | `<Editable :validate="(v) => v.length >= 3" /></Editable>` |
21
- | disabled | `boolean` | `false` | 否 | 是否禁用编辑 | `<Editable disabled />` |
22
- | tip | `string` | `"编辑"` | 否 | 编辑按钮提示文案 | `<Editable tip="点击修改" />` |
23
- | trim | `boolean` | `true` | 否 | 是否去掉前后空白字符 | `<Editable :trim="false" />` |
24
- | invalid | `boolean` | `false` | 否 | 是否为验证失败状态 | `<Editable :invalid="hasError" />` |
25
- | rows | `string | number | 'auto' | AutoRows` | `1` | 否 | 是否自动折行及行数控制,可为数字、'auto' 或包含 min/max 的对象 | `<Editable :rows="3" />` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | value | `string` | `undefined` | 否 | 编辑的内容,可用 v-model 双向绑定 | - | `<Editable v-model="text" />` |
18
+ | editing | `boolean` | `false` | 否 | 是否为编辑状态 | - | `<Editable :editing="isEditing" />` |
19
+ | required | `boolean` | `true` | 否 | 是否规定不能为空 | - | `<Editable :required="false" />` |
20
+ | validate | `((v: string) => boolean) | RegExp | string` | `undefined` | 否 | 验证规则,支持函数、正则表达式或正则字符串。函数返回 true 表示验证通过 | - | `<Editable :validate="(v) => v.length >= 3" /></Editable>` |
21
+ | disabled | `boolean` | `false` | 否 | 是否禁用编辑 | - | `<Editable disabled />` |
22
+ | placeholder | `string` | `undefined` | 否 | 编辑态输入框的占位提示文本 | - | `<Editable placeholder="请输入内容" />` |
23
+ | title | `string` | `"编辑"` | 否 | 编辑按钮或输入区域的标题提示文本 | - | `<Editable title="修改名称" />` |
24
+ | tip | `string` | `"编辑"` | 否 | 编辑按钮提示文案 | - | `<Editable tip="点击修改" />` |
25
+ | trim | `boolean` | `true` | 否 | 是否去掉前后空白字符 | - | `<Editable :trim="false" />` |
26
+ | invalid | `boolean` | `false` | 否 | 是否为验证失败状态 | - | `<Editable :invalid="hasError" />` |
27
+ | errorTip | `string` | `"输入有误"` | 否 | 验证失败时显示的错误提示文案 | - | `<Editable error-tip="名称格式不正确" />` |
28
+ | okText | `string` | `"确定"` | 否 | 确认按钮文案 | - | `<Editable ok-text="保存" />` |
29
+ | cancelText | `string` | `"取消"` | 否 | 取消按钮文案 | - | `<Editable cancel-text="放弃" />` |
30
+ | type | `string` | `undefined` | 否 | 编辑输入框类型,通常用于切换单行或其他输入模式 | - | `<Editable type="textarea" />` |
31
+ | rows | `string | number | 'auto' | AutoRows` | `1` | 否 | 是否自动折行及行数控制,可为数字、'auto' 或包含 min/max 的对象 | - | `<Editable :rows="3" />` |
26
32
 
27
33
  ## 事件 (Events)
28
34
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
@@ -30,15 +36,28 @@ import { Editable } from '@king-design/vue';
30
36
  | change | `@change` | 当值改变时触发 | `newValue: string, oldValue: string` | `<Editable @change="handleChange" />` |
31
37
  | error | `@error` | 验证失败时触发 | `value: string` | `<Editable @error="handleError" />` |
32
38
 
33
- ### 事件处理函数示例
34
- **change**:
39
+ ### 事件参数说明
40
+ **change**
41
+
42
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
43
+ | --- | --- | --- | --- | --- |
44
+ | newValue | `string` | 是 | - | 新的值 |
45
+ | oldValue | `string` | 是 | - | 旧的值 |
46
+
47
+ 事件处理示例:
35
48
  ```typescript
36
49
  const handleChange = (newValue: string, oldValue: string) => {
37
50
  console.log(`值从 ${oldValue} 变为 ${newValue}`);
38
51
  };
39
52
  ```
40
53
 
41
- **error**:
54
+ **error**
55
+
56
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
57
+ | --- | --- | --- | --- | --- |
58
+ | value | `string` | 是 | - | 验证失败的值 |
59
+
60
+ 事件处理示例:
42
61
  ```typescript
43
62
  const handleError = (value: string) => {
44
63
  Message.error(`验证失败: ${value}`);
@@ -46,6 +65,7 @@ const handleError = (value: string) => {
46
65
  ```
47
66
 
48
67
  ## 常见错误与正确用法 (Anti-Hallucination)
68
+ ### 验证函数返回值错误
49
69
  > **错误用法**: `const validate = (v: string) => {
50
70
  if (v.length < 3) {
51
71
  return '长度不能小于3';
@@ -56,10 +76,12 @@ const handleError = (value: string) => {
56
76
  }`
57
77
  > **说明**: validate 函数应返回布尔值,true 表示验证通过,false 表示失败
58
78
 
79
+ ### rows 值类型错误
59
80
  > **错误用法**: `<Editable rows="3" />`
60
81
  > **正确写法**: `<Editable :rows="3" />`
61
82
  > **说明**: 当 rows 为数字时需要使用 v-bind (:rows),字符串 '3' 会被当作字符串处理
62
83
 
84
+ ### 不了解 required 默认为 true
63
85
  > **错误用法**: `<Editable v-model="text" /> <!-- 用户无法保存空值 -->`
64
86
  > **正确写法**: `<Editable v-model="text" :required="false" /> <!-- 允许空值 -->`
65
87
  > **说明**: Editable 默认 required 为 true,如果允许空值需要显式设置 :required="false"
@@ -12,23 +12,28 @@ import { Ellipsis } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | maxLines | `number` | `undefined` | 否 | 定义多行省略最大行数,不设置时为单行省略 | `<Ellipsis :maxLines="2">长文本内容</Ellipsis>` |
18
- | position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'center bottom-10', at: 'center top', collision: 'flipfit'}` | 否 | Tooltip 弹出的位置,默认在触发器正上方向上偏移 10px | `<Ellipsis position="bottom">长文本</Ellipsis>` |
19
- | disabled | `boolean` | `false` | 否 | 是否禁用 Tooltip 提示(禁用后悬停不会显示完整内容) | `<Ellipsis disabled>长文本</Ellipsis>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | maxLines | `number` | `undefined` | 否 | 定义多行省略最大行数,不设置时为单行省略 | - | `<Ellipsis :maxLines="2">长文本内容</Ellipsis>` |
18
+ | position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'center bottom-10', at: 'center top', collision: 'flipfit'}` | 否 | Tooltip 弹出的位置,默认在触发器正上方向上偏移 10px | - | `<Ellipsis position="bottom">长文本</Ellipsis>` |
19
+ | theme | `"dark" | "light"` | `"light"` | 否 | Tooltip 主题 | - | `<Ellipsis theme="dark">长文本</Ellipsis>` |
20
+ | hoverable | `boolean` | `false` | 否 | 悬浮提示层是否在鼠标移入 Tooltip 内容时仍然保持显示 | - | `<Ellipsis hoverable>长文本</Ellipsis>` |
21
+ | disabled | `boolean` | `false` | 否 | 是否禁用 Tooltip 提示(禁用后悬停不会显示完整内容) | - | `<Ellipsis disabled>长文本</Ellipsis>` |
20
22
 
21
23
  ## 常见错误与正确用法 (Anti-Hallucination)
24
+ ### 容器未设置宽度
22
25
  > **错误用法**: `<Ellipsis>长文本内容</Ellipsis>`
23
26
  > **正确写法**: `<div style="width: 200px;">
24
27
  <Ellipsis>长文本内容</Ellipsis>
25
28
  </div>`
26
29
  > **说明**: Ellipsis 需要父容器有明确的宽度限制才能生效
27
30
 
31
+ ### maxLines 使用字符串而非数字
28
32
  > **错误用法**: `<Ellipsis maxLines="2">文本</Ellipsis>`
29
33
  > **正确写法**: `<Ellipsis :maxLines="2">文本</Ellipsis>`
30
34
  > **说明**: maxLines 是数字类型,需要使用 v-bind 语法
31
35
 
36
+ ### 误解 disabled 属性的含义
32
37
  > **错误用法**: `<Ellipsis disabled> <!-- 以为会禁用省略效果 -->`
33
38
  > **正确写法**: `<Ellipsis disabled> <!-- 实际是禁用 Tooltip,省略效果仍然存在 -->`
34
39
  > **说明**: disabled 只是禁用悬停时的 Tooltip 提示,文本省略效果仍然生效
@@ -0,0 +1,99 @@
1
+ # 表格字段筛选弹窗 (FilterTableFieldsDialog)
2
+
3
+ 用于自定义表格可见列的配置弹窗,常与 ProTable、标准列表页联动,让用户自行决定展示哪些字段。
4
+
5
+ **关键词**: filter table fields dialog, column settings, 列筛选弹窗, 字段配置, 列展示设置, column chooser, 表格列管理, 隐藏列
6
+
7
+ **使用场景**: 表格字段自定义、列表列设置、列显示偏好持久化、用户自定义列表展示字段
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { FilterTableFieldsDialog } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | modelValue | `boolean` | `undefined` | 否 | 弹窗显示状态 | - | - |
18
+ | fields | `TableFieldItem[]` | `undefined` | 是 | 可配置字段列表 | - | - |
19
+
20
+ ## 事件 (Events)
21
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
22
+ | --- | --- | --- | --- | --- |
23
+ | update:modelValue | `@update:modelValue` | 弹窗开关状态变化时触发,用于控制列设置面板显隐。 | `value?: boolean` | - |
24
+ | change:noCheckedColFields | `@change:noCheckedColFields` | 未勾选列集合变化时触发,便于把列配置持久化到本地或服务端。 | `value?: string[]` | - |
25
+
26
+ ### 事件参数说明
27
+ **update:modelValue**
28
+
29
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
30
+ | --- | --- | --- | --- | --- |
31
+ | value | `boolean` | 否 | - | 当前列设置弹窗是否显示。 |
32
+
33
+ **change:noCheckedColFields**
34
+
35
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
36
+ | --- | --- | --- | --- | --- |
37
+ | value | `string[]` | 否 | - | 当前未勾选字段的 key 列表。 |
38
+
39
+ ## 使用示例
40
+ ### 列表列展示配置
41
+ **场景**: 让用户自主配置列表页中要显示的列。
42
+
43
+ 通过字段列表控制表格哪些列默认展示。
44
+
45
+ **使用的 API**: 属性: modelValue, fields | 事件: update:modelValue, change:noCheckedColFields
46
+
47
+ ```vue
48
+ <script setup lang="ts">
49
+ import { ref } from 'vue';
50
+ import { FilterTableFieldsDialog } from '@ksyun-internal/versatile';
51
+
52
+ const visible = ref(true);
53
+ const fields = [
54
+ { key: 'id', label: '实例 ID', checked: true },
55
+ { key: 'name', label: '实例名称', checked: true },
56
+ { key: 'privateIp', label: '内网 IP', checked: false },
57
+ ];
58
+ </script>
59
+
60
+ <template>
61
+ <FilterTableFieldsDialog v-model="visible" :fields="fields" />
62
+ </template>
63
+ ```
64
+
65
+ ### 持久化隐藏列配置
66
+ **场景**: 让用户的列显示偏好在刷新页面后仍然保留。
67
+
68
+ 监听未勾选字段变化并保存到本地缓存。
69
+
70
+ **使用的 API**: 属性: modelValue, fields | 事件: change:noCheckedColFields
71
+
72
+ ```vue
73
+ <script setup lang="ts">
74
+ import { ref } from 'vue';
75
+ import { FilterTableFieldsDialog } from '@ksyun-internal/versatile';
76
+
77
+ const visible = ref(true);
78
+ const fields = [
79
+ { key: 'id', label: '实例 ID', checked: true },
80
+ { key: 'zone', label: '可用区', checked: true },
81
+ { key: 'privateIp', label: '内网 IP', checked: false },
82
+ ];
83
+ const handleChange = (hiddenFields: string[]) => {
84
+ localStorage.setItem('instance-hidden-fields', JSON.stringify(hiddenFields));
85
+ };
86
+ </script>
87
+
88
+ <template>
89
+ <FilterTableFieldsDialog
90
+ v-model="visible"
91
+ :fields="fields"
92
+ @change:noCheckedColFields="handleChange"
93
+ />
94
+ </template>
95
+ ```
96
+
97
+ ## 相关组件
98
+ ProTable, LayoutStandardList
99
+
@@ -0,0 +1,74 @@
1
+ # 弹性布局 (Flex)
2
+
3
+ 对 Flexbox 的业务友好封装,适合快速实现工具栏、卡片头部、表单辅助区等横向或纵向弹性布局。
4
+
5
+ **关键词**: flex, layout, 弹性布局, 对齐, gap
6
+
7
+ **使用场景**: 工具栏布局、信息块横向或纵向排列、纵向摘要区排版
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { Flex } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | align | `'normal' | 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'` | `'normal'` | 否 | 交叉轴对齐方式 | - | - |
18
+ | justify | `'normal' | 'flex-start' | 'flex-end' | 'center' | 'space-between' | 'space-around'` | `'normal'` | 否 | 主轴对齐方式 | - | - |
19
+ | wrap | `'nowrap' | 'wrap' | 'wrap-reverse' | boolean` | `'nowrap'` | 否 | 换行方式 | - | - |
20
+ | inline | `boolean` | `false` | 否 | 是否以行内 flex 容器渲染 | - | - |
21
+ | vertical | `boolean` | `false` | 否 | 是否启用纵向布局 | - | - |
22
+ | gap | `'small' | 'middle' | 'large' | string` | `'small'` | 否 | 子元素间距,支持预设值或自定义字符串 | - | - |
23
+ | component | `string | Component` | `'div'` | 否 | 容器渲染的标签或组件类型 | - | - |
24
+
25
+ ## 插槽 (Slots)
26
+ | 插槽名 | 说明 | 模板写法 | 示例 |
27
+ | --- | --- | --- | --- |
28
+ | default | Flex 容器内容 | `<Flex>...</Flex>` | - |
29
+
30
+ ## 使用示例
31
+ ### 工具栏左右分布布局
32
+ **场景**: 搭建列表页顶部的标题和操作区。
33
+
34
+ 用 Flex 快速搭建常见的左右两端对齐工具栏。
35
+
36
+ **使用的 API**: 属性: justify, align, gap
37
+
38
+ ```vue
39
+ <script setup lang="ts">
40
+ import { Flex } from '@ksyun-internal/versatile';
41
+ </script>
42
+
43
+ <template>
44
+ <Flex justify="space-between" align="center" gap="middle">
45
+ <div>实例列表</div>
46
+ <div>刷新 / 导出 / 新建</div>
47
+ </Flex>
48
+ </template>
49
+ ```
50
+
51
+ ### 纵向信息堆叠
52
+ **场景**: 在详情摘要区纵向排列多条关键信息。
53
+
54
+ 使用 vertical 和 gap 快速搭建纵向信息区。
55
+
56
+ **使用的 API**: 属性: vertical, gap
57
+
58
+ ```vue
59
+ <script setup lang="ts">
60
+ import { Flex } from '@ksyun-internal/versatile';
61
+ </script>
62
+
63
+ <template>
64
+ <Flex vertical gap="large">
65
+ <div>实例规格:4C8G</div>
66
+ <div>系统盘:100GB SSD</div>
67
+ <div>网络:经典网络</div>
68
+ </Flex>
69
+ </template>
70
+ ```
71
+
72
+ ## 相关组件
73
+ LayoutContent, LayoutListContent
74
+