king-design-analyzer 2.1.7 → 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 (311) 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 +5 -3
  102. package/dist/ast/index.mjs +3 -1
  103. package/dist/{chunk-DSWKLUIX.mjs → chunk-3LYQ5XFM.mjs} +1 -1
  104. package/dist/chunk-BI5TIQID.mjs +330 -0
  105. package/dist/{chunk-6QS5IGS6.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-JSBRDJBE.js +30 -0
  110. package/dist/chunk-KF5YBEM5.js +143 -0
  111. package/dist/chunk-KMIDURUR.mjs +33324 -0
  112. package/dist/chunk-QC6VTSA3.mjs +117 -0
  113. package/dist/chunk-SZYVGYKK.js +33350 -0
  114. package/dist/{chunk-WYSRJVX4.js → chunk-TA3SV4SP.js} +2 -2
  115. package/dist/chunk-UJCSKKID.mjs +27 -0
  116. package/dist/{chunk-FVSQ6BU6.mjs → chunk-XGPHQHLR.mjs} +4 -4
  117. package/dist/docs/index.js +1 -1
  118. package/dist/docs/index.mjs +1 -1
  119. package/dist/full/index.js +8 -6
  120. package/dist/full/index.mjs +6 -4
  121. package/dist/index.d.mts +1 -0
  122. package/dist/index.d.ts +1 -0
  123. package/dist/index.js +15 -13
  124. package/dist/index.mjs +7 -5
  125. package/dist/metadata/index.d.mts +22 -2
  126. package/dist/metadata/index.d.ts +22 -2
  127. package/dist/metadata/index.js +27 -17
  128. package/dist/metadata/index.mjs +27 -16
  129. package/dist/resolve-BsLBxlBi.d.mts +24 -0
  130. package/dist/resolve-BsLBxlBi.d.ts +24 -0
  131. package/dist/runtime/index.js +5 -4
  132. package/dist/runtime/index.mjs +3 -2
  133. package/dist/shared/index.d.mts +10 -0
  134. package/dist/shared/index.d.ts +10 -0
  135. package/dist/shared/index.js +23 -0
  136. package/dist/shared/index.mjs +2 -0
  137. package/dist/static/index.js +6 -5
  138. package/dist/static/index.mjs +3 -2
  139. package/docs_for_llm/actions.doc.md +77 -0
  140. package/docs_for_llm/advancedset.doc.md +89 -0
  141. package/docs_for_llm/affix.doc.md +15 -7
  142. package/docs_for_llm/aksk.doc.md +111 -0
  143. package/docs_for_llm/az.doc.md +17 -11
  144. package/docs_for_llm/badge.doc.md +6 -5
  145. package/docs_for_llm/billtypes.doc.md +17 -11
  146. package/docs_for_llm/breadcrumb.doc.md +6 -3
  147. package/docs_for_llm/button.doc.md +34 -18
  148. package/docs_for_llm/buttonlink.doc.md +55 -0
  149. package/docs_for_llm/card.doc.md +8 -5
  150. package/docs_for_llm/cardcol.doc.md +78 -0
  151. package/docs_for_llm/cardcols.doc.md +84 -0
  152. package/docs_for_llm/cardcontent.doc.md +10 -10
  153. package/docs_for_llm/cardtabs.doc.md +106 -0
  154. package/docs_for_llm/carousel.doc.md +8 -7
  155. package/docs_for_llm/cascader.doc.md +46 -25
  156. package/docs_for_llm/checkbox.doc.md +25 -13
  157. package/docs_for_llm/cidrinput.doc.md +83 -0
  158. package/docs_for_llm/code.doc.md +22 -11
  159. package/docs_for_llm/collapse.doc.md +9 -6
  160. package/docs_for_llm/colorpicker.doc.md +104 -0
  161. package/docs_for_llm/copy.doc.md +15 -13
  162. package/docs_for_llm/copyhover.doc.md +59 -0
  163. package/docs_for_llm/copyrow.doc.md +71 -0
  164. package/docs_for_llm/datepicker.doc.md +51 -39
  165. package/docs_for_llm/description.doc.md +75 -0
  166. package/docs_for_llm/descriptions.doc.md +9 -6
  167. package/docs_for_llm/dialog.doc.md +48 -77
  168. package/docs_for_llm/divider.doc.md +9 -7
  169. package/docs_for_llm/drawer.doc.md +43 -84
  170. package/docs_for_llm/dropdown.doc.md +52 -21
  171. package/docs_for_llm/duration.doc.md +76 -0
  172. package/docs_for_llm/editable.doc.md +36 -14
  173. package/docs_for_llm/ellipsis.doc.md +10 -5
  174. package/docs_for_llm/filtertablefieldsdialog.doc.md +99 -0
  175. package/docs_for_llm/flex.doc.md +74 -0
  176. package/docs_for_llm/form.doc.md +33 -14
  177. package/docs_for_llm/formiteminput.doc.md +128 -0
  178. package/docs_for_llm/formitemspinner.doc.md +105 -0
  179. package/docs_for_llm/formitemswitch.doc.md +113 -0
  180. package/docs_for_llm/formitemtableconfigs.doc.md +95 -0
  181. package/docs_for_llm/grid.doc.md +7 -5
  182. package/docs_for_llm/header.doc.md +85 -0
  183. package/docs_for_llm/icon.doc.md +12 -8
  184. package/docs_for_llm/icontooltip.doc.md +121 -0
  185. package/docs_for_llm/input.doc.md +90 -39
  186. package/docs_for_llm/instancelist.doc.md +113 -0
  187. package/docs_for_llm/instancenum.doc.md +95 -0
  188. package/docs_for_llm/ipinput.doc.md +77 -0
  189. package/docs_for_llm/kspstatus.doc.md +82 -0
  190. package/docs_for_llm/kvcode.doc.md +76 -0
  191. package/docs_for_llm/layoutcontent.doc.md +17 -17
  192. package/docs_for_llm/layoutlistcontent.doc.md +95 -0
  193. package/docs_for_llm/layoutpermissioncontent.doc.md +84 -0
  194. package/docs_for_llm/layoutstandardlist.doc.md +120 -0
  195. package/docs_for_llm/layouttabs.doc.md +101 -0
  196. package/docs_for_llm/lazymount.doc.md +73 -0
  197. package/docs_for_llm/lazyteleport.doc.md +76 -0
  198. package/docs_for_llm/menu.doc.md +14 -11
  199. package/docs_for_llm/message.doc.md +48 -10
  200. package/docs_for_llm/pagination.doc.md +30 -17
  201. package/docs_for_llm/paginationplus.doc.md +31 -10
  202. package/docs_for_llm/password.doc.md +86 -0
  203. package/docs_for_llm/popover.doc.md +24 -55
  204. package/docs_for_llm/progress.doc.md +13 -10
  205. package/docs_for_llm/projects.doc.md +91 -0
  206. package/docs_for_llm/protable.doc.md +89 -15
  207. package/docs_for_llm/queuevisualrange.doc.md +78 -0
  208. package/docs_for_llm/radio.doc.md +23 -8
  209. package/docs_for_llm/rate.doc.md +122 -0
  210. package/docs_for_llm/region.doc.md +25 -13
  211. package/docs_for_llm/search.doc.md +120 -0
  212. package/docs_for_llm/searchinput.doc.md +111 -0
  213. package/docs_for_llm/searchitems.doc.md +116 -0
  214. package/docs_for_llm/searchselect.doc.md +126 -0
  215. package/docs_for_llm/select.doc.md +40 -55
  216. package/docs_for_llm/sidebar.doc.md +133 -0
  217. package/docs_for_llm/skeleton.doc.md +117 -0
  218. package/docs_for_llm/slider.doc.md +31 -21
  219. package/docs_for_llm/spin.doc.md +8 -5
  220. package/docs_for_llm/spinner.doc.md +28 -18
  221. package/docs_for_llm/split.doc.md +157 -0
  222. package/docs_for_llm/sshkeys.doc.md +88 -0
  223. package/docs_for_llm/status.doc.md +14 -9
  224. package/docs_for_llm/steps.doc.md +10 -7
  225. package/docs_for_llm/switch.doc.md +17 -14
  226. package/docs_for_llm/table.doc.md +118 -51
  227. package/docs_for_llm/tablecolumnid.doc.md +36 -16
  228. package/docs_for_llm/tabs.doc.md +19 -10
  229. package/docs_for_llm/tag.doc.md +19 -10
  230. package/docs_for_llm/timeline.doc.md +109 -0
  231. package/docs_for_llm/timepicker.doc.md +57 -38
  232. package/docs_for_llm/timerange.doc.md +157 -0
  233. package/docs_for_llm/tip.doc.md +20 -11
  234. package/docs_for_llm/tooltip.doc.md +55 -29
  235. package/docs_for_llm/tour.doc.md +48 -29
  236. package/docs_for_llm/transfer.doc.md +40 -29
  237. package/docs_for_llm/tree.doc.md +65 -23
  238. package/docs_for_llm/treeselect.doc.md +37 -48
  239. package/docs_for_llm/upload.doc.md +56 -32
  240. package/docs_for_llm/useCRUD.doc.md +49 -0
  241. package/docs_for_llm/useCountdown.doc.md +43 -0
  242. package/docs_for_llm/useDetail.doc.md +48 -0
  243. package/docs_for_llm/useDialog.doc.md +46 -0
  244. package/docs_for_llm/useEntity.doc.md +45 -0
  245. package/docs_for_llm/useEventListener.doc.md +44 -0
  246. package/docs_for_llm/useFalseUntilTruthy.doc.md +41 -0
  247. package/docs_for_llm/useGetCopyAuthText.doc.md +35 -0
  248. package/docs_for_llm/useGetUserPermission.doc.md +43 -0
  249. package/docs_for_llm/useGroup.doc.md +48 -0
  250. package/docs_for_llm/useIdEntities.doc.md +48 -0
  251. package/docs_for_llm/useIdEntity.doc.md +103 -0
  252. package/docs_for_llm/useInterval.doc.md +43 -0
  253. package/docs_for_llm/useLayoutStandardList.doc.md +38 -0
  254. package/docs_for_llm/useMessage.doc.md +46 -0
  255. package/docs_for_llm/useModifyCache.doc.md +37 -0
  256. package/docs_for_llm/useOpenDialog.doc.md +41 -0
  257. package/docs_for_llm/usePagination.doc.md +60 -0
  258. package/docs_for_llm/usePersist.doc.md +54 -0
  259. package/docs_for_llm/usePoll.doc.md +41 -0
  260. package/docs_for_llm/useRoutePlus.doc.md +34 -0
  261. package/docs_for_llm/useRouterPlus.doc.md +34 -0
  262. package/docs_for_llm/useSearch.doc.md +68 -0
  263. package/docs_for_llm/useShell.doc.md +43 -0
  264. package/docs_for_llm/useSkip.doc.md +41 -0
  265. package/docs_for_llm/useStorageIdEntity.doc.md +46 -0
  266. package/docs_for_llm/useStore.doc.md +34 -0
  267. package/docs_for_llm/useTable.doc.md +57 -0
  268. package/docs_for_llm/useTableGroup.doc.md +47 -0
  269. package/docs_for_llm/useTableSort.doc.md +40 -0
  270. package/docs_for_llm/useToState.doc.md +112 -0
  271. package/docs_for_llm/useUser.doc.md +38 -0
  272. package/docs_for_llm/useValidForm.doc.md +41 -0
  273. package/docs_for_llm/vdialog.doc.md +129 -0
  274. package/docs_for_llm/vdrawer.doc.md +119 -0
  275. package/docs_for_llm/virtuallist.doc.md +6 -3
  276. package/hooks/useCRUD.json +61 -0
  277. package/hooks/useCountdown.json +49 -0
  278. package/hooks/useDetail.json +67 -0
  279. package/hooks/useDialog.json +49 -0
  280. package/hooks/useEntity.json +61 -0
  281. package/hooks/useEventListener.json +61 -0
  282. package/hooks/useFalseUntilTruthy.json +43 -0
  283. package/hooks/useGetCopyAuthText.json +36 -0
  284. package/hooks/useGetUserPermission.json +55 -0
  285. package/hooks/useGroup.json +49 -0
  286. package/hooks/useIdEntities.json +61 -0
  287. package/hooks/useInterval.json +55 -0
  288. package/hooks/useLayoutStandardList.json +36 -0
  289. package/hooks/useMessage.json +73 -0
  290. package/hooks/useModifyCache.json +36 -0
  291. package/hooks/useOpenDialog.json +43 -0
  292. package/hooks/usePagination.json +49 -0
  293. package/hooks/usePersist.json +61 -0
  294. package/hooks/usePoll.json +43 -0
  295. package/hooks/useRoutePlus.json +36 -0
  296. package/hooks/useRouterPlus.json +36 -0
  297. package/hooks/useSearch.json +56 -0
  298. package/hooks/useShell.json +49 -0
  299. package/hooks/useSkip.json +43 -0
  300. package/hooks/useStorageIdEntity.json +67 -0
  301. package/hooks/useStore.json +36 -0
  302. package/hooks/useTable.json +49 -0
  303. package/hooks/useTableGroup.json +43 -0
  304. package/hooks/useTableSort.json +43 -0
  305. package/hooks/useUser.json +36 -0
  306. package/hooks/useValidForm.json +43 -0
  307. package/package.json +12 -6
  308. package/dist/chunk-HDV7ETXE.mjs +0 -1055
  309. package/dist/chunk-HPAUCD5I.js +0 -156
  310. package/dist/chunk-L4DS3EXI.mjs +0 -133
  311. package/dist/chunk-YWY3D4J7.js +0 -1082
@@ -12,11 +12,11 @@ import { Card, CardColumn } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | title | `string | VNode` | `undefined` | 否 | 卡片标题 | `<Card title="卡片标题">内容</Card>` |
18
- | type | `"shadow" | "border" | "none"` | `"shadow"` | 否 | 卡片类型,决定卡片的视觉样式 | `<Card type="border" title="边框卡片">内容</Card>` |
19
- | size | `"default" | "small" | "mini"` | `"default"` | 否 | 卡片尺寸 | `<Card size="small" title="小卡片">内容</Card>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | title | `string | VNode` | `undefined` | 否 | 卡片标题 | - | `<Card title="卡片标题">内容</Card>` |
18
+ | type | `"shadow" | "border" | "none"` | `"shadow"` | 否 | 卡片类型,决定卡片的视觉样式 | - | `<Card type="border" title="边框卡片">内容</Card>` |
19
+ | size | `"default" | "small" | "mini"` | `"default"` | 否 | 卡片尺寸 | - | `<Card size="small" title="小卡片">内容</Card>` |
20
20
 
21
21
  ## 插槽 (Slots)
22
22
  | 插槽名 | 说明 | 模板写法 | 示例 |
@@ -35,14 +35,17 @@ import { Card, CardColumn } from '@king-design/vue';
35
35
  | center | `boolean` | 该列内容是否居中 | `<CardColumn center>居中内容</CardColumn>` |
36
36
 
37
37
  ## 常见错误与正确用法 (Anti-Hallucination)
38
+ ### 使用不存在的 type 值
38
39
  > **错误用法**: `<Card type="bordered">内容</Card>`
39
40
  > **正确写法**: `<Card type="border">内容</Card>`
40
41
  > **说明**: Card 的 type 只支持 shadow, border, none,注意 border 不是 bordered
41
42
 
43
+ ### CardColumn width 未带单位
42
44
  > **错误用法**: `<CardColumn width="100">内容</CardColumn>`
43
45
  > **正确写法**: `<CardColumn width="100px">内容</CardColumn>`
44
46
  > **说明**: CardColumn 的 width 必须带单位,如 px、em、%
45
47
 
48
+ ### 使用不存在的 size 值 (Card)
46
49
  > **错误用法**: `<Card size="large">内容</Card>`
47
50
  > **正确写法**: `<Card size="default">内容</Card>`
48
51
  > **说明**: Card 的 size 只支持 default, small, mini。Card 组件目前不支持 large 尺寸。
@@ -0,0 +1,78 @@
1
+ # 卡片列项 (CardCol)
2
+
3
+ 详情卡片中的单个字段展示组件,适合渲染基础文本、状态、可复制内容或带确认操作的字段项。
4
+
5
+ **关键词**: card col, detail field, 卡片列, 详情字段, 详情项, 卡片字段, 单字段展示, 详情单元
6
+
7
+ **使用场景**: 详情页字段展示、卡片型信息布局、单字段 loading 占位、支持复制和状态展示的详情项
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { CardCol } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | label | `string` | `undefined` | 否 | 列标题 | - | - |
18
+ | col | `Record<string, any>` | `{}` | 否 | 列配置对象 | - | - |
19
+ | loading | `boolean` | `undefined` | 否 | 是否处于加载状态 | - | - |
20
+ | gap | `number` | `undefined` | 否 | 列内容与标题间距 | - | - |
21
+
22
+ ## 事件 (Events)
23
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
24
+ | --- | --- | --- | --- | --- |
25
+ | change:value | `@change:value` | 字段内部值发生变更时触发,常用于可编辑字段回写。 | `value?: CardColValue` | - |
26
+ | confirmPopover | `@confirmPopover` | 用户确认 Popover 内的二次操作时触发,适合承接危险操作确认。 | `-` | - |
27
+ | hidePopover | `@hidePopover` | 字段上的确认弹层关闭时触发,可用于清理临时状态。 | `-` | - |
28
+
29
+ ### 事件参数说明
30
+ **change:value**
31
+
32
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
33
+ | --- | --- | --- | --- | --- |
34
+ | value | `CardColValue` | 否 | - | 当前字段最新值,具体类型取决于该列使用的编辑控件。 |
35
+
36
+ ## 使用示例
37
+ ### 详情页中的单字段展示
38
+ **场景**: 在实例详情卡片中展示单条字段并开启复制能力。
39
+
40
+ 用 CardCol 渲染一条实例属性,保持与详情卡片布局一致。
41
+
42
+ **使用的 API**: 属性: label, col, gap
43
+
44
+ ```vue
45
+ <script setup lang="ts">
46
+ import { CardCol } from '@ksyun-internal/versatile';
47
+
48
+ const instanceCol = {
49
+ value: 'i-2ze7x5a4',
50
+ copyable: true,
51
+ };
52
+ </script>
53
+
54
+ <template>
55
+ <CardCol label="实例 ID" :col="instanceCol" :gap="12" />
56
+ </template>
57
+ ```
58
+
59
+ ### 字段加载占位
60
+ **场景**: 在详情页分段加载数据时先渲染单字段占位。
61
+
62
+ 在详情数据尚未返回时先渲染字段级 loading 状态。
63
+
64
+ **使用的 API**: 属性: label, loading
65
+
66
+ ```vue
67
+ <script setup lang="ts">
68
+ import { CardCol } from '@ksyun-internal/versatile';
69
+ </script>
70
+
71
+ <template>
72
+ <CardCol label="公网 IP" :loading="true" />
73
+ </template>
74
+ ```
75
+
76
+ ## 相关组件
77
+ CardCols, CardTabs, CopyHover, Editable
78
+
@@ -0,0 +1,84 @@
1
+ # 卡片列容器 (CardCols)
2
+
3
+ 用于批量组织多个详情字段的卡片列容器,适合把实例、网络、计费等信息按栅格方式排布。
4
+
5
+ **关键词**: card cols, detail grid, 卡片列容器, 详情布局, 字段栅格, 卡片详情区, 多字段展示, 详情栅格
6
+
7
+ **使用场景**: 详情页字段排版、卡片信息栅格布局、两列或三列详情分布、批量渲染多条详情字段
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { CardCols } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | cols | `CardColItem[]` | `undefined` | 否 | 列配置列表 | - | - |
18
+ | colLength | `number` | `3` | 否 | 每行列数 | - | - |
19
+
20
+ ## 事件 (Events)
21
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
22
+ | --- | --- | --- | --- | --- |
23
+ | change:value | `@change:value` | 任一字段值变化时统一向外抛出,便于父级集中处理。 | `value?: CardColItem[]` | - |
24
+ | confirmPopover | `@confirmPopover` | 列项中的确认弹层完成确认时触发。 | `-` | - |
25
+ | hidePopover | `@hidePopover` | 列项中的确认弹层关闭时触发。 | `-` | - |
26
+
27
+ ### 事件参数说明
28
+ **change:value**
29
+
30
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
31
+ | --- | --- | --- | --- | --- |
32
+ | value | `CardColItem[]` | 否 | - | 当前卡片字段配置数组,包含每一列的最新值和展示配置。 |
33
+
34
+ ## 使用示例
35
+ ### 实例详情字段栅格布局
36
+ **场景**: 在资源详情页中以三列布局展示基础信息。
37
+
38
+ 通过 cols 配置一次性渲染多条详情字段。
39
+
40
+ **使用的 API**: 属性: cols, colLength
41
+
42
+ ```vue
43
+ <script setup lang="ts">
44
+ import { CardCols } from '@ksyun-internal/versatile';
45
+
46
+ const cols = [
47
+ { label: '实例 ID', value: 'i-2ze7x5a4', copyable: true },
48
+ { label: '可用区', value: 'cn-beijing-6a' },
49
+ { label: '运行状态', value: '运行中' },
50
+ ];
51
+ </script>
52
+
53
+ <template>
54
+ <CardCols :cols="cols" :col-length="3" />
55
+ </template>
56
+ ```
57
+
58
+ ### 两列详情布局
59
+ **场景**: 在字段较长的详情页中改用两列布局提升可读性。
60
+
61
+ 通过 colLength 控制更宽松的两列详情排版。
62
+
63
+ **使用的 API**: 属性: cols, colLength
64
+
65
+ ```vue
66
+ <script setup lang="ts">
67
+ import { CardCols } from '@ksyun-internal/versatile';
68
+
69
+ const cols = [
70
+ { label: '项目名称', value: '核心项目' },
71
+ { label: '计费方式', value: '包年包月' },
72
+ { label: '到期时间', value: '2026-12-31 23:59:59' },
73
+ { label: '可用区', value: 'cn-beijing-6a' },
74
+ ];
75
+ </script>
76
+
77
+ <template>
78
+ <CardCols :cols="cols" :col-length="2" />
79
+ </template>
80
+ ```
81
+
82
+ ## 相关组件
83
+ CardCol, CardTabs
84
+
@@ -2,9 +2,9 @@
2
2
 
3
3
  LayoutContent 内部使用的卡片容器,通常用于包裹具体业务内容。
4
4
 
5
- **关键词**: card, panel, container, 卡片
5
+ **关键词**: card, panel, container, 卡片, 内容卡片, 详情卡片, 卡片容器
6
6
 
7
- **使用场景**: 页面主体内容包裹
7
+ **使用场景**: 页面主体内容包裹、详情页分块信息卡片、带头部操作区的业务内容容器
8
8
 
9
9
  ## 导入语句
10
10
  ```typescript
@@ -12,14 +12,14 @@ import { CardContent } from '@ksyun-internal/versatile';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | title | `string | VNode` | `""` | 否 | 卡片标题 | - |
18
- | type | `"shadow" | "border" | "none"` | `"none"` | 否 | 卡片类型 | - |
19
- | size | `"default" | "small" | "mini"` | `"default"` | 否 | 卡片尺寸 | - |
20
- | scroll | `boolean` | `false` | 否 | 是否支持滚动条 | - |
21
- | halfRadius | `boolean` | `false` | 否 | 卡片顶部是否支持平角,默认支持圆角样式 | - |
22
- | loading | `boolean` | `false` | 否 | 是否为加载中状态 | - |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | title | `string | VNode` | `""` | 否 | 卡片标题 | - | - |
18
+ | type | `"shadow" | "border" | "none"` | `"none"` | 否 | 卡片类型 | - | - |
19
+ | size | `"default" | "small" | "mini"` | `"default"` | 否 | 卡片尺寸 | - | - |
20
+ | scroll | `boolean` | `false` | 否 | 是否支持滚动条 | - | - |
21
+ | halfRadius | `boolean` | `false` | 否 | 卡片顶部是否支持平角,默认支持圆角样式 | - | - |
22
+ | loading | `boolean` | `false` | 否 | 是否为加载中状态 | - | - |
23
23
 
24
24
  ## 插槽 (Slots)
25
25
  | 插槽名 | 说明 | 模板写法 | 示例 |
@@ -0,0 +1,106 @@
1
+ # 卡片标签页 (CardTabs)
2
+
3
+ 带卡片视觉风格的标签切换组件,适合详情页顶部在“概览、监控、操作日志”等信息块之间切换。
4
+
5
+ **关键词**: card tabs, detail tabs, 卡片标签, 卡片页签, 详情页签, 信息块切换, tabs, tab switch
6
+
7
+ **使用场景**: 详情页卡片切换、多块信息切换、基于后端字段映射的标签切换、概览与监控等内容分区
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { CardTabs } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | modelValue | `string | number` | `undefined` | 否 | 当前选中的标签值 | - | - |
18
+ | tabs | `any[]` | `undefined` | 否 | 标签数据列表 | - | - |
19
+ | tabLabelName | `string` | `"label"` | 否 | 标签文案字段名 | - | - |
20
+ | tabValueName | `string` | `"value"` | 否 | 标签值字段名 | - | - |
21
+ | data | `any[]` | `undefined` | 否 | 每个标签对应的卡片内容数据 | - | - |
22
+
23
+ ## 事件 (Events)
24
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
25
+ | --- | --- | --- | --- | --- |
26
+ | update:modelValue | `@update:modelValue` | 当前激活标签值变化时触发,可直接驱动外层 `v-model`。 | `value?: string | number` | - |
27
+ | change:value | `@change:value` | 标签切换并得到新的 value 时触发,通常用于请求对应数据。 | `value?: string | number` | - |
28
+ | update:tab | `@update:tab` | 当前选中的完整 tab 对象变化时触发,便于读取 tab 上的额外配置。 | `value?: CardTabItem` | - |
29
+
30
+ ### 事件参数说明
31
+ **update:modelValue**
32
+
33
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
34
+ | --- | --- | --- | --- | --- |
35
+ | value | `string | number` | 否 | - | 当前激活标签的 value。 |
36
+
37
+ **change:value**
38
+
39
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
40
+ | --- | --- | --- | --- | --- |
41
+ | value | `string | number` | 否 | - | 当前切换后的标签值。 |
42
+
43
+ **update:tab**
44
+
45
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
46
+ | --- | --- | --- | --- | --- |
47
+ | value | `CardTabItem` | 否 | - | 当前激活的完整标签项对象。 |
48
+
49
+ ## 使用示例
50
+ ### 详情页中的卡片标签切换
51
+ **场景**: 在详情卡片头部切换不同业务分区。
52
+
53
+ 用 CardTabs 在卡片区域切换不同信息块。
54
+
55
+ **使用的 API**: 属性: modelValue, tabs | 事件: update:modelValue
56
+
57
+ ```vue
58
+ <script setup lang="ts">
59
+ import { ref } from 'vue';
60
+ import { CardTabs } from '@ksyun-internal/versatile';
61
+
62
+ const activeTab = ref('base');
63
+ const tabs = [
64
+ { label: '基本信息', value: 'base' },
65
+ { label: '监控图表', value: 'monitor' },
66
+ { label: '变更记录', value: 'logs' },
67
+ ];
68
+ </script>
69
+
70
+ <template>
71
+ <CardTabs v-model="activeTab" :tabs="tabs" />
72
+ </template>
73
+ ```
74
+
75
+ ### 自定义标签字段名
76
+ **场景**: 直接复用后端返回的 tab 数据结构而不做额外转换。
77
+
78
+ 当后端返回的字段名不是 label/value 时,可通过映射字段使用。
79
+
80
+ **使用的 API**: 属性: modelValue, tabs, tabLabelName, tabValueName | 事件: update:modelValue
81
+
82
+ ```vue
83
+ <script setup lang="ts">
84
+ import { ref } from 'vue';
85
+ import { CardTabs } from '@ksyun-internal/versatile';
86
+
87
+ const activeTab = ref('network');
88
+ const tabs = [
89
+ { name: '基础信息', id: 'base' },
90
+ { name: '网络配置', id: 'network' },
91
+ ];
92
+ </script>
93
+
94
+ <template>
95
+ <CardTabs
96
+ v-model="activeTab"
97
+ :tabs="tabs"
98
+ tab-label-name="name"
99
+ tab-value-name="id"
100
+ />
101
+ </template>
102
+ ```
103
+
104
+ ## 相关组件
105
+ LayoutTabs, CardCols, CardCol
106
+
@@ -12,13 +12,13 @@ import { Carousel, CarouselItem } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | value | `string` | `"$0"` | 否 | 当前展示的内容块对应的值。默认为索引字符串 "$0", "$1" 等 | `<Carousel v-model="currentValue"></Carousel>` |
18
- | autoplay | `boolean | number` | `false` | 否 | 是否自动切换。如果传入数字,则表示自动切换的时间间隔(毫秒)。为 0 或 false 则不自动切换。 | `<Carousel :autoplay="3000"></Carousel>` |
19
- | arrow | `"hover" | "always" | "never"` | `"hover"` | 否 | 左右切换箭头的展示方式 | `<Carousel arrow="always"></Carousel>` |
20
- | effect | `"slide" | "fade"` | `"slide"` | 否 | 切换动画效果 | `<Carousel effect="fade"></Carousel>` |
21
- | clonedAmount | `number` | `1` | 否 | slide 模式下,指定前后克隆的内容块数量,用于无缝循环轮播 | `<Carousel :clonedAmount="2"></Carousel>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | value | `string` | `"$0"` | 否 | 当前展示的内容块对应的值。默认为索引字符串 "$0", "$1" 等 | - | `<Carousel v-model="currentValue"></Carousel>` |
18
+ | autoplay | `boolean | number` | `false` | 否 | 是否自动切换。如果传入数字,则表示自动切换的时间间隔(毫秒)。为 0 或 false 则不自动切换。 | - | `<Carousel :autoplay="3000"></Carousel>` |
19
+ | arrow | `"hover" | "always" | "never"` | `"hover"` | 否 | 左右切换箭头的展示方式 | - | `<Carousel arrow="always"></Carousel>` |
20
+ | effect | `"slide" | "fade"` | `"slide"` | 否 | 切换动画效果 | - | `<Carousel effect="fade"></Carousel>` |
21
+ | clonedAmount | `number` | `1` | 否 | slide 模式下,指定前后克隆的内容块数量,用于无缝循环轮播 | - | `<Carousel :clonedAmount="2"></Carousel>` |
22
22
 
23
23
  ## 子组件 (Sub-Components)
24
24
  ### CarouselItem
@@ -29,6 +29,7 @@ import { Carousel, CarouselItem } from '@king-design/vue';
29
29
  | value | `string` | 定义该项的唯一值,若不设置默认为索引 "$0", "$1"... | `<CarouselItem value="item1"></CarouselItem>` |
30
30
 
31
31
  ## 常见错误与正确用法 (Anti-Hallucination)
32
+ ### 未设置 Carousel 高度
32
33
  > **错误用法**: `<Carousel>...</Carousel>`
33
34
  > **正确写法**: `<Carousel style="height: 300px;">...</Carousel>`
34
35
  > **说明**: Carousel 默认可能没有高度或者高度为 0,需要显式设置高度。
@@ -12,43 +12,64 @@ import { Cascader } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | value | `any` | `""` | 否 | 当前选中的值。多选模式下为数组。 | `<Cascader v-model="selectedCity"></Cascader>` |
18
- | data | `CascaderData[]` | `[]` | 是 | 级联数据源。结构为 {value, label, children}[] | `<Cascader :data="options"></Cascader>` |
19
- | multiple | `boolean` | `false` | 否 | 是否开启多选模式 | `<Cascader multiple></Cascader>` |
20
- | filterable | `boolean` | `false` | 否 | 是否可搜索 | `<Cascader filterable></Cascader>` |
21
- | clearable | `boolean` | `false` | 否 | 是否显示清空按钮 | `<Cascader clearable></Cascader>` |
22
- | disabled | `boolean` | `false` | 否 | 是否禁用 | `<Cascader disabled></Cascader>` |
23
- | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 尺寸 | `<Cascader size="small"></Cascader>` |
24
- | trigger | `"click" | "hover"` | `"click"` | 否 | 子菜单触发方式 | `<Cascader trigger="hover"></Cascader>` |
25
- | changeOnSelect | `boolean` | `false` | 否 | 是否选中父级即改变 value(允许选择任意一级) | `<Cascader changeOnSelect></Cascader>` |
26
- | format | `(values: any[]) => string` | `undefined` | 否 | 自定义选中项的显示格式,参数为选中的数据项数组,返回显示的字符串。 | `<Cascader :format="(v) => v.map(i => i.label).join(' > ')"></Cascader>` |
27
- | loadData | `(item: any) => Promise<void> | void` | `undefined` | 否 | 动态加载数据函数。当子节点为空时调用。 | `<Cascader :loadData="loadMore"></Cascader>` |
28
- | loading | `boolean` | `false` | 否 | 是否显示加载中状态 | `<Cascader loading></Cascader>` |
29
- | placeholder | `string` | `"请选择"` | 否 | 占位文本 | `<Cascader placeholder="请选择城市"></Cascader>` |
30
- | fields | `object` | `undefined` | 否 | 自定义字段名映射,默认 {value:'value', label:'label', children:'children', disabled:'disabled'} | `<Cascader :fields="{value: 'code', label: 'name'}"></Cascader>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | value | `any` | `""` | 否 | 当前选中的值。多选模式下为数组。 | - | `<Cascader v-model="selectedCity">` |
18
+ | data | `CascaderData[]` | `[]` | 是 | 级联数据源。结构为 {value, label, children}[] | - | `<Cascader :data="options">` |
19
+ | multiple | `boolean` | `false` | 否 | 是否开启多选模式 | - | `<Cascader multiple>` |
20
+ | filterable | `boolean` | `false` | 否 | 是否可搜索 | - | `<Cascader filterable>` |
21
+ | filter | `(keywords: string, data: CascaderData) => boolean` | `undefined` | 否 | 自定义筛选规则函数 | - | `<Cascader filterable :filter="(kw, item) => item.label.includes(kw)">` |
22
+ | clearable | `boolean` | `false` | 否 | 是否显示清空按钮 | - | `<Cascader clearable>` |
23
+ | disabled | `boolean` | `false` | 否 | 是否禁用 | - | `<Cascader disabled>` |
24
+ | name | `string` | `undefined` | 否 | 表单元素的 name 属性 | - | `<Cascader name="city">` |
25
+ | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 尺寸 | - | `<Cascader size="small">` |
26
+ | hideIcon | `boolean` | `false` | 否 | 是否隐藏后面的下拉图标 | - | `<Cascader hideIcon>` |
27
+ | trigger | `"click" | "hover"` | `"click"` | 否 | 子菜单触发方式 | - | `<Cascader trigger="hover">` |
28
+ | changeOnSelect | `boolean` | `false` | 否 | 是否选中父级即改变 value(允许选择任意一级) | - | `<Cascader changeOnSelect>` |
29
+ | format | `(values: any[]) => string` | `undefined` | 否 | 自定义选中项的显示格式,参数为选中的数据项数组,返回显示的字符串。 | - | `<Cascader :format="(v) => v.map(i => i.label).join(' > ')">` |
30
+ | loadData | `(item: any) => Promise<void> | void` | `undefined` | 否 | 动态加载数据函数。当子节点为空时调用。 | - | `<Cascader :loadData="loadMore">` |
31
+ | loading | `boolean` | `false` | 否 | 是否显示加载中状态 | - | `<Cascader loading>` |
32
+ | fluid | `boolean` | `false` | 否 | 是否宽度 100% | - | `<Cascader fluid>` |
33
+ | inline | `boolean` | `false` | 否 | 展示内联模式,该模式下组件没有边框,宽度和高度由内容撑开 | - | `<Cascader inline>` |
34
+ | placeholder | `string` | `"请选择"` | 否 | 占位文本 | - | `<Cascader placeholder="请选择城市">` |
35
+ | container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定弹出菜单追加的位置,默认 Dialog 组件会追加到 Dialog 中,其他追加到 body | - | `<Cascader :container="() => document.body">` |
36
+ | width | `number | string` | `undefined` | 否 | 指定宽度,组件自动添加单位 px | - | `<Cascader :width="240">` |
37
+ | show | `boolean` | `false` | 否 | 是否展示菜单项(受控模式) | - | `<Cascader :show="visible">` |
38
+ | position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'left top+8', at: 'left bottom'}` | 否 | 菜单弹出的位置 | - | `<Cascader position="top">` |
39
+ | flat | `boolean` | `false` | 否 | 是否展示扁平样式 | - | `<Cascader flat>` |
40
+ | nowrap | `boolean` | `false` | 否 | 选中值区域是否不换行展示,适合单行紧凑布局 | - | `<Cascader nowrap>` |
41
+ | draggable | `boolean` | `false` | 否 | 多选值是否支持拖动排序 | - | `<Cascader multiple draggable>` |
42
+ | virtual | `boolean` | `false` | 否 | 是否开启虚拟列表,用于大数据量场景 | - | `<Cascader virtual>` |
43
+ | fields | `object` | `undefined` | 否 | 自定义字段名映射,默认 {value:'value', label:'label', children:'children', disabled:'disabled'} | - | `<Cascader :fields="{value: 'code', label: 'name'}">` |
31
44
 
32
45
  ## 事件 (Events)
33
46
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
34
47
  | --- | --- | --- | --- | --- |
35
- | change | `@change` | 值发生变化时触发 | `value: any` | `<Cascader @change="handleChange"></Cascader>` |
36
- | show | `@show` | 菜单显示时触发 | `-` | `<Cascader @show="onShow"></Cascader>` |
37
- | hide | `@hide` | 菜单隐藏时触发 | `-` | `<Cascader @hide="onHide"></Cascader>` |
48
+ | change | `@change` | 值发生变化时触发 | `value: any` | `<Cascader @change="handleChange">` |
49
+ | show | `@show` | 菜单显示时触发 | `-` | `<Cascader @show="onShow">` |
50
+ | hide | `@hide` | 菜单隐藏时触发 | `-` | `<Cascader @hide="onHide">` |
38
51
 
39
- ## 插槽 (Slots)
40
- | 插槽名 | 说明 | 模板写法 | 示例 |
52
+ ### 事件参数说明
53
+ **change**
54
+
55
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
56
+ | --- | --- | --- | --- | --- |
57
+ | value | `any` | 是 | - | 当前选中的值 |
58
+
59
+ ## 方法 (Methods)
60
+ | 方法名 | 说明 | 参数 | 返回值 |
41
61
  | --- | --- | --- | --- |
42
- | value | 自定义选择结果的展示 | `undefined` | - |
43
- | values | 自定义多选的选择结果的展示 | `undefined` | - |
44
- | prefix | 自定义输入框前面展示的内容 | `undefined` | - |
45
- | suffix | 自定义输入框后面展示的内容 | `undefined` | - |
62
+ | show | 主动展开级联选择面板。 | `-` | `void` |
63
+ | hide | 主动关闭级联选择面板。 | `-` | `void` |
64
+ | position | 重新计算级联选择面板的位置。 | `-` | `void` |
46
65
 
47
66
  ## 常见错误与正确用法 (Anti-Hallucination)
67
+ ### 数据未加载时显示空白
48
68
  > **错误用法**: `<Cascader :data="[]" />`
49
69
  > **正确写法**: `<Cascader :data="options" :loading="isLoading" />`
50
70
  > **说明**: 如果数据为空,建议设置 loading 状态或者提供数据源。
51
71
 
72
+ ### value 格式错误
52
73
  > **错误用法**: `const value = ref('beijing')`
53
74
  > **正确写法**: `const value = ref(['beijing', 'chaoyang'])`
54
75
  > **说明**: Cascader 的 value 通常是一个数组(表示路径),如果是多选则为二维数组。
@@ -12,25 +12,34 @@ import { Checkbox } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | value | `any` | `false` | 否 | 复选框的取值,可用 v-model 双向绑定。单独使用时为布尔值,组合使用时为数组 | `<Checkbox v-model="checked">选项</Checkbox>` |
18
- | trueValue | `any` | `true` | 否 | 选中时的值 | `<Checkbox trueValue="yes" falseValue="no"></Checkbox>` |
19
- | falseValue | `any` | `false` | 否 | 未选中时的值 | `<Checkbox trueValue="active" falseValue="inactive"></Checkbox>` |
20
- | disabled | `boolean` | `false` | 否 | 是否禁用 | `<Checkbox disabled>禁用</Checkbox>` |
21
- | indeterminate | `boolean` | `false` | 否 | 是否半选中状态,用于实现全选功能时表示部分选中 | `<Checkbox :indeterminate="isPartialChecked"></Checkbox>` |
22
- | name | `string` | `undefined` | 否 | 原生 name 属性 | `<Checkbox name="agreement"></Checkbox>` |
23
- | required | `boolean` | `undefined` | 否 | 原生 required 属性 | `<Checkbox required></Checkbox>` |
24
- | form | `string` | `undefined` | 否 | 原生 form 属性 | `<Checkbox form="myForm"></Checkbox>` |
25
- | autofocus | `boolean` | `undefined` | 否 | 原生 autofocus 属性 | `<Checkbox autofocus></Checkbox>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | value | `any` | `false` | 否 | 复选框的取值,可用 v-model 双向绑定。单独使用时为布尔值,组合使用时为数组 | - | `<Checkbox v-model="checked">选项</Checkbox>` |
18
+ | trueValue | `any` | `true` | 否 | 选中时的值 | - | `<Checkbox trueValue="yes" falseValue="no"></Checkbox>` |
19
+ | falseValue | `any` | `false` | 否 | 未选中时的值 | - | `<Checkbox trueValue="active" falseValue="inactive"></Checkbox>` |
20
+ | disabled | `boolean` | `false` | 否 | 是否禁用 | - | `<Checkbox disabled>禁用</Checkbox>` |
21
+ | indeterminate | `boolean` | `false` | 否 | 是否半选中状态,用于实现全选功能时表示部分选中 | - | `<Checkbox :indeterminate="isPartialChecked"></Checkbox>` |
22
+ | name | `string` | `undefined` | 否 | 原生 name 属性 | `native` | `<Checkbox name="agreement"></Checkbox>` |
23
+ | required | `boolean` | `undefined` | 否 | 原生 required 属性 | `native` | `<Checkbox required></Checkbox>` |
24
+ | form | `string` | `undefined` | 否 | 原生 form 属性 | `native` | `<Checkbox form="myForm"></Checkbox>` |
25
+ | autofocus | `boolean` | `undefined` | 否 | 原生 autofocus 属性 | `native` | `<Checkbox autofocus></Checkbox>` |
26
+ | autocomplete | `string` | `undefined` | 否 | 原生 autocomplete 属性,指定浏览器自动补全行为 | `native` | `<Checkbox autocomplete="off"></Checkbox>` |
27
+ | maxlength | `number | string` | `undefined` | 否 | 原生 maxlength 属性,组件透传到内部 input 元素 | `native` | `<Checkbox :maxlength="1"></Checkbox>` |
26
28
 
27
29
  ## 事件 (Events)
28
30
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
29
31
  | --- | --- | --- | --- | --- |
30
32
  | change | `@change` | 当点击组件导致值变化时触发 | `value: any, e: MouseEvent` | `<Checkbox @change="handleChange"></Checkbox>` |
31
33
 
32
- ### 事件处理函数示例
33
- **change**:
34
+ ### 事件参数说明
35
+ **change**
36
+
37
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
38
+ | --- | --- | --- | --- | --- |
39
+ | value | `any` | 是 | - | 变化后的值 |
40
+ | e | `MouseEvent` | 是 | - | 原生鼠标事件 |
41
+
42
+ 事件处理示例:
34
43
  ```typescript
35
44
  const handleChange = (value: boolean, e: MouseEvent) => {
36
45
  console.log('选中状态:', value);
@@ -38,6 +47,7 @@ const handleChange = (value: boolean, e: MouseEvent) => {
38
47
  ```
39
48
 
40
49
  ## 常见错误与正确用法 (Anti-Hallucination)
50
+ ### 复选框组使用错误的 value 类型
41
51
  > **错误用法**: `const checked = ref(false);
42
52
  <Checkbox v-model="checked" trueValue="apple">苹果</Checkbox>
43
53
  <Checkbox v-model="checked" trueValue="banana">香蕉</Checkbox>`
@@ -46,10 +56,12 @@ const handleChange = (value: boolean, e: MouseEvent) => {
46
56
  <Checkbox v-model="checkedList" trueValue="banana">香蕉</Checkbox>`
47
57
  > **说明**: 复选框组需要使用数组类型的 value
48
58
 
59
+ ### 使用 indeterminate 但未正确处理全选逻辑
49
60
  > **错误用法**: `<Checkbox :indeterminate="true">全选</Checkbox>`
50
61
  > **正确写法**: `<Checkbox v-model="checkAll" :indeterminate="indeterminate">全选</Checkbox>`
51
62
  > **说明**: indeterminate 只控制视觉样式,需要配合 v-model 和计算属性实现全选逻辑
52
63
 
64
+ ### 自定义值类型与初始值不匹配
53
65
  > **错误用法**: `const value = ref(false);
54
66
  <Checkbox v-model="value" trueValue="yes" falseValue="no">`
55
67
  > **正确写法**: `const value = ref('no');
@@ -0,0 +1,83 @@
1
+ # CIDR 输入框 (CidrInput)
2
+
3
+ 用于录入网段 CIDR 的业务输入组件,把 IP 地址与掩码选择组合在一起,常用于 VPC、子网和安全策略配置。
4
+
5
+ **关键词**: cidr, cidr input, 网段输入, 子网配置, network cidr, 掩码选择
6
+
7
+ **使用场景**: 网络配置、子网和路由录入、CIDR 分段输入与校验
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { CidrInput } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | modelValue | `string` | `undefined` | 否 | CIDR 值,如 192.168.0.0/24 | - | - |
18
+ | vpcCidr | `string` | `undefined` | 否 | 所属 VPC 的 CIDR,用于约束和提示 | - | - |
19
+ | disabled | `boolean | any[]` | `undefined` | 否 | 禁用状态或禁用分段配置 | - | - |
20
+ | tooltip | `any[]` | `undefined` | 否 | 各分段 tooltip 配置 | - | - |
21
+ | maskRange | `number[]` | `[0, 32]` | 否 | 可选掩码范围 | - | - |
22
+
23
+ ## 事件 (Events)
24
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
25
+ | --- | --- | --- | --- | --- |
26
+ | update:modelValue | `@update:modelValue` | CIDR 字符串变化时触发,可直接同步到网络配置表单。 | `value?: string` | - |
27
+
28
+ ### 事件参数说明
29
+ **update:modelValue**
30
+
31
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
32
+ | --- | --- | --- | --- | --- |
33
+ | value | `string` | 否 | - | 当前输入的 CIDR 字符串。 |
34
+
35
+ ## 使用示例
36
+ ### 子网网段录入
37
+ **场景**: 创建子网时录入并校验目标网段。
38
+
39
+ 限制掩码范围,并结合 VPC 网段给出约束。
40
+
41
+ **使用的 API**: 属性: modelValue, vpcCidr, maskRange | 事件: update:modelValue
42
+
43
+ ```vue
44
+ <script setup lang="ts">
45
+ import { ref } from 'vue';
46
+ import { CidrInput } from '@ksyun-internal/versatile';
47
+
48
+ const cidr = ref('192.168.1.0/24');
49
+ </script>
50
+
51
+ <template>
52
+ <CidrInput
53
+ v-model="cidr"
54
+ vpc-cidr="192.168.0.0/16"
55
+ :mask-range="[16, 28]"
56
+ />
57
+ </template>
58
+ ```
59
+
60
+ ### 为分段输入补充提示
61
+ **场景**: 在网络配置页中用提示文案降低 CIDR 输入门槛。
62
+
63
+ 给 CIDR 各段提供 tooltip,帮助用户理解输入规则。
64
+
65
+ **使用的 API**: 属性: modelValue, tooltip, maskRange | 事件: update:modelValue
66
+
67
+ ```vue
68
+ <script setup lang="ts">
69
+ import { ref } from 'vue';
70
+ import { CidrInput } from '@ksyun-internal/versatile';
71
+
72
+ const cidr = ref('10.0.0.0/24');
73
+ const tooltip = ['网络段', '子网段', '主机段', '预留', '掩码长度'];
74
+ </script>
75
+
76
+ <template>
77
+ <CidrInput v-model="cidr" :tooltip="tooltip" :mask-range="[24, 28]" />
78
+ </template>
79
+ ```
80
+
81
+ ## 相关组件
82
+ IPInput
83
+