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,28 +12,32 @@ import { Icon } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | class | `string` | `undefined` | 是 | 必填。通过 class 指定图标名称,需以 k-icon- 为前缀。例如: k-icon-user | `<Icon class="k-icon-user" />` |
18
- | size | `"default" | "large" | "small" | "mini" | string | number` | `"default"` | 否 | 定义图标尺寸,可使用预设值或自定义数值 | `<Icon class="k-icon-home" size="large" />` |
19
- | color | `"default" | "primary" | "danger" | "warning" | "success" | string` | `undefined` | 否 | 图标颜色,可使用预设主题色或自定义颜色值 | `<Icon class="k-icon-heart" color="danger" />` |
20
- | rotate | `boolean` | `false` | 否 | 是否一直旋转图标,适用于加载状态 | `<Icon class="k-icon-refresh" rotate />` |
21
- | hoverable | `boolean` | `false` | 否 | 图标是否具有 hover 效果,适用于可点击图标 | `<Icon class="k-icon-delete" hoverable @click="handleDelete" />` |
22
- | disabled | `boolean` | `false` | 否 | 是否展示禁用状态 | `<Icon class="k-icon-edit" disabled />` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | class | `string` | `undefined` | 是 | 必填。通过 class 指定图标名称,需以 k-icon- 为前缀。例如: k-icon-user | - | `<Icon class="k-icon-user" />` |
18
+ | size | `"default" | "large" | "small" | "mini" | string | number` | `"default"` | 否 | 定义图标尺寸,可使用预设值或自定义数值 | - | `<Icon class="k-icon-home" size="large" />` |
19
+ | color | `"default" | "primary" | "danger" | "warning" | "success" | string` | `undefined` | 否 | 图标颜色,可使用预设主题色或自定义颜色值 | - | `<Icon class="k-icon-heart" color="danger" />` |
20
+ | rotate | `boolean` | `false` | 否 | 是否一直旋转图标,适用于加载状态 | - | `<Icon class="k-icon-refresh" rotate />` |
21
+ | hoverable | `boolean` | `false` | 否 | 图标是否具有 hover 效果,适用于可点击图标 | - | `<Icon class="k-icon-delete" hoverable @click="handleDelete" />` |
22
+ | disabled | `boolean` | `false` | 否 | 是否展示禁用状态 | - | `<Icon class="k-icon-edit" disabled />` |
23
23
 
24
24
  ## 常见错误与正确用法 (Anti-Hallucination)
25
+ ### 未通过 class 指定图标名称
25
26
  > **错误用法**: `<Icon name="k-icon-search" />`
26
27
  > **正确写法**: `<Icon class="k-icon-search" />`
27
28
  > **说明**: 图标名称必须通过 class 属性指定,而非 name 属性
28
29
 
30
+ ### 图标名称前缀错误
29
31
  > **错误用法**: `<Icon class="icon-search" />`
30
32
  > **正确写法**: `<Icon class="k-icon-search" />`
31
33
  > **说明**: KPC 图标名称必须以 k-icon- 为前缀
32
34
 
35
+ ### 自定义尺寸使用字符串而非数字
33
36
  > **错误用法**: `<Icon class="k-icon-home" size="24px" />`
34
37
  > **正确写法**: `<Icon class="k-icon-home" :size="24" />`
35
38
  > **说明**: 自定义数值尺寸应使用数字类型,不需要带单位
36
39
 
40
+ ### 预设颜色值拼写错误
37
41
  > **错误用法**: `<Icon class="k-icon-heart" color="red" />`
38
42
  > **正确写法**: `<Icon class="k-icon-heart" color="danger" />`
39
43
  > **说明**: 预设颜色值为 default, primary, danger, warning, success。如需使用其他颜色,请使用十六进制或 RGB 格式
@@ -0,0 +1,121 @@
1
+ # 图标提示 (IconTooltip)
2
+
3
+ 带有 Tooltip 提示的图标组件,支持普通图标和按钮图标两种类型。常用于工具栏中的刷新、下载、设置等操作。
4
+
5
+ **关键词**: IconTooltip, 图标提示, 工具栏, 刷新, 下载, 设置
6
+
7
+ **使用场景**: 工具栏操作按钮、表格刷新按钮、信息提示图标、设置入口
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { IconTooltip } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | icon | `string` | `""` | 是 | 指定 KPC 图标的 class 名称 | - | `<IconTooltip icon="k-icon-refresh" />` |
18
+ | type | `"default" | "button"` | `"default"` | 否 | 图标类型 | - | `<IconTooltip type="button" icon="k-icon-refresh" />` |
19
+ | hoverable | `boolean` | `true` | 否 | 图标是否具有 hover 效果 | - | `<IconTooltip icon="k-icon-information" :hoverable="false" />` |
20
+ | loading | `boolean` | `false` | 否 | 对于 type="button" 类型,是否为正在加载中的图标 | - | `<IconTooltip type="button" icon="k-icon-refresh" :loading="true" />` |
21
+ | theme | `"dark" | "light"` | `"dark"` | 否 | 指定 Tooltip 的主题 | - | `<IconTooltip icon="k-icon-refresh" theme="light" />` |
22
+ | tooltipText | `string` | `""` | 否 | 指定 Tooltip 的提示内容 | - | `<IconTooltip icon="k-icon-refresh" tooltipText="刷新" />` |
23
+ | color | `string` | `undefined` | 否 | 自定义图标颜色,适用于普通图标和按钮图标 | - | `<IconTooltip icon="k-icon-information" color="#1890ff" tooltipText="信息" />` |
24
+
25
+ ## 常见错误与正确用法 (Anti-Hallucination)
26
+ ### 未指定 icon 属性
27
+ > **错误用法**: `<IconTooltip tooltipText="刷新" />`
28
+ > **正确写法**: `<IconTooltip icon="k-icon-refresh" tooltipText="刷新" />`
29
+ > **说明**: icon 是必填属性,需要指定图标的 class 名称
30
+
31
+ ### 在 default 类型上使用 loading
32
+ > **错误用法**: `<IconTooltip icon="k-icon-refresh" :loading="true" />`
33
+ > **正确写法**: `<IconTooltip type="button" icon="k-icon-refresh" :loading="true" />`
34
+ > **说明**: loading 属性仅对 type="button" 类型有效
35
+
36
+ ## 使用示例
37
+ ### 基础用法
38
+ **场景**: 展示基础的图标提示
39
+
40
+ 基本的图标提示
41
+
42
+ **使用的 API**: 属性: icon, tooltipText, theme
43
+
44
+ ```vue
45
+ <script setup lang="ts">
46
+ import { IconTooltip } from '@ksyun-internal/versatile';
47
+ </script>
48
+ <template>
49
+ <IconTooltip icon="k-icon-refresh" tooltipText="刷新" theme="light" />
50
+ <IconTooltip icon="k-icon-download" tooltipText="下载" theme="light" />
51
+ <IconTooltip icon="k-icon-settings" tooltipText="自定义列表字段" theme="light" />
52
+ </template>
53
+ ```
54
+
55
+ ### 图标按钮
56
+ **场景**: 展示按钮样式的图标
57
+
58
+ 按钮样式的图标提示
59
+
60
+ **使用的 API**: 属性: type, icon, tooltipText
61
+
62
+ ```vue
63
+ <script setup lang="ts">
64
+ import { IconTooltip } from '@ksyun-internal/versatile';
65
+ </script>
66
+ <template>
67
+ <IconTooltip type="button" icon="k-icon-refresh" tooltipText="刷新" />
68
+ <IconTooltip type="button" icon="k-icon-download" tooltipText="下载" />
69
+ <IconTooltip type="button" icon="k-icon-settings" tooltipText="自定义列表字段" />
70
+ </template>
71
+ ```
72
+
73
+ ### 加载状态
74
+ **场景**: 展示加载中的图标按钮
75
+
76
+ 按钮图标的加载状态
77
+
78
+ **使用的 API**: 属性: icon, type, loading, tooltipText
79
+
80
+ ```vue
81
+ <script setup lang="ts">
82
+ import { ref } from 'vue';
83
+ import { IconTooltip } from '@ksyun-internal/versatile';
84
+
85
+ const loading = ref(false);
86
+ const handleClick = () => {
87
+ loading.value = true;
88
+ setTimeout(() => loading.value = false, 2000);
89
+ };
90
+ </script>
91
+ <template>
92
+ <IconTooltip
93
+ icon="k-icon-refresh"
94
+ type="button"
95
+ :loading="loading"
96
+ tooltipText="刷新"
97
+ @click="handleClick"
98
+ />
99
+ </template>
100
+ ```
101
+
102
+ ### 去掉 hover 状态
103
+ **场景**: 禁用 hover 效果
104
+
105
+ 禁用 hover 效果的图标
106
+
107
+ **使用的 API**: 属性: type, icon, tooltipText, hoverable
108
+
109
+ ```vue
110
+ <script setup lang="ts">
111
+ import { IconTooltip } from '@ksyun-internal/versatile';
112
+ </script>
113
+ <template>
114
+ <IconTooltip type="button" icon="k-icon-refresh" tooltipText="刷新" :hoverable="false" />
115
+ <IconTooltip icon="k-icon-information" tooltipText="信息提示" :hoverable="false" />
116
+ </template>
117
+ ```
118
+
119
+ ## 相关组件
120
+ Icon, Tooltip, ButtonLink
121
+
@@ -12,28 +12,39 @@ import { Input, Search } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | type | `string` | `"text"` | 否 | 在原生 input 标签的 type 取值的基础上扩展了 textarea 值,当取该值时渲染成 <textarea> | `<Input type="textarea" :rows="4" placeholder="请输入内容" />` |
18
- | value | `string` | `undefined` | 否 | 输入框的值,可用 v-model 进行双向绑定 | `<Input v-model="inputValue" />` |
19
- | defaultValue | `string` | `undefined` | 否 | input 的 defaultValue,首次渲染使用该值 | `<Input defaultValue="初始值" />` |
20
- | name | `string` | `undefined` | 否 | 原生 input 标签的 name 属性 | `<Input name="username" />` |
21
- | placeholder | `string` | `undefined` | 否 | 占位文案 | `<Input placeholder="请输入内容" />` |
22
- | readonly | `boolean` | `false` | 否 | 是否只读 | `<Input v-model="value" readonly />` |
23
- | clearable | `boolean` | `false` | 否 | 是否展示快速清除按钮 | `<Input v-model="value" clearable />` |
24
- | disabled | `boolean` | `false` | 否 | 是否禁用 | `<Input disabled placeholder="禁用状态" />` |
25
- | size | `"large" | "default" | "small" | "mini"` | `"default"` | | 组件尺寸 | `<Input size="large" placeholder="大尺寸输入框" />` |
26
- | rows | `number | string` | `2` | 否 | type="textarea" 时,默认展示文本行数 | `<Input type="textarea" :rows="6" />` |
27
- | autoWidth | `boolean` | `false` | 否 | 是否宽度随输入的文本的长度变化而变化 | `<Input autoWidth placeholder="宽度自适应" />` |
28
- | fluid | `boolean` | `false` | 否 | 是否宽度 100% | `<Input fluid placeholder="宽度100%" />` |
29
- | width | `string | number` | `undefined` | 否 | 指定宽度,组件会加上单位 px | `<Input :width="300" placeholder="宽度300px" />` |
30
- | stackClearIcon | `boolean` | `false` | 否 | 是否将清空按钮覆盖在 suffix 按钮上展示来节省空间 | `<Input clearable stackClearIcon />` |
31
- | frozenOnInput | `boolean` | `false` | 否 | 是否在输入的过程中冻结 value 更新到视图 | `<Input frozenOnInput />` |
32
- | inline | `boolean` | `false` | 否 | 是否展示内联模式 | `<Input inline />` |
33
- | resize | `"none" | "vertical" | "horizontal" | "both"` | `"vertical"` | | 指定 textarea 输入框拖动调整大小的方向,默认只能垂直方向调整 | `<Input type="textarea" resize="both" />` |
34
- | flat | `boolean` | `false` | 否 | 是否展示扁平样式 | `<Input flat placeholder="扁平样式" />` |
35
- | showCount | `boolean` | `false` | 否 | 是否展示字符长度提示数字 | `<Input showCount maxlength="50" />` |
36
- | showPassword | `boolean` | `false` | 否 | type="password" 时,是否展示显隐密码按钮 | `<Input type="password" showPassword />` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | type | `string` | `"text"` | 否 | 在原生 input 标签的 type 取值的基础上扩展了 textarea 值,当取该值时渲染成 <textarea> | - | `<Input type="textarea" :rows="4" placeholder="请输入内容" />` |
18
+ | value | `string` | `undefined` | 否 | 输入框的值,可用 v-model 进行双向绑定 | - | `<Input v-model="inputValue" />` |
19
+ | defaultValue | `string` | `undefined` | 否 | input 的 defaultValue,首次渲染使用该值 | - | `<Input defaultValue="初始值" />` |
20
+ | name | `string` | `undefined` | 否 | 原生 input 标签的 name 属性 | `native` | `<Input name="username" />` |
21
+ | placeholder | `string` | `undefined` | 否 | 占位文案 | `native` | `<Input placeholder="请输入内容" />` |
22
+ | readonly | `boolean` | `false` | 否 | 是否只读 | `native` | `<Input v-model="value" readonly />` |
23
+ | autocomplete | `string` | `undefined` | 否 | 原生 autocomplete 属性,指定浏览器自动补全行为 | `native` | `<Input autocomplete="username" />` |
24
+ | autofocus | `boolean` | `undefined` | 否 | 原生 autofocus 属性,页面加载后自动聚焦输入框 | `native` | `<Input autofocus />` |
25
+ | form | `string` | `undefined` | | 原生 form 属性,指定输入框关联的表单 id | `native` | `<Input form="searchForm" />` |
26
+ | maxlength | `number | string` | `undefined` | 否 | 原生 maxlength 属性,限制最大输入长度 | `native` | `<Input :maxlength="50" showCount />` |
27
+ | pattern | `string` | `undefined` | 否 | 原生 pattern 属性,指定输入值需要匹配的正则模式 | `native` | `<Input pattern="[0-9]{6}" placeholder="请输入6位数字" />` |
28
+ | required | `boolean` | `undefined` | 否 | 原生 required 属性,标记为必填输入项 | `native` | `<Input required placeholder="必填项" />` |
29
+ | clearable | `boolean` | `false` | 否 | 是否展示快速清除按钮 | - | `<Input v-model="value" clearable />` |
30
+ | disabled | `boolean` | `false` | 否 | 是否禁用 | - | `<Input disabled placeholder="禁用状态" />` |
31
+ | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 组件尺寸 | - | `<Input size="large" placeholder="大尺寸输入框" />` |
32
+ | rows | `number | string` | `2` | 否 | type="textarea" 时,默认展示文本行数 | `native` | `<Input type="textarea" :rows="6" />` |
33
+ | cols | `number` | `undefined` | | 原生 cols 属性,当 type="textarea" 时指定可见宽度 | `native` | `<Input type="textarea" :cols="40" />` |
34
+ | datalist | `string` | `undefined` | 否 | 原生 datalist 属性,关联 datalist 元素 id | `native` | `<Input datalist="city-list" />` |
35
+ | dirname | `string` | `undefined` | 否 | 原生 dirname 属性,提交时附带输入方向信息 | `native` | `<Input dirname="comment.dir" />` |
36
+ | wrap | `"hard" | "soft"` | `undefined` | 否 | 原生 wrap 属性,当 type="textarea" 时指定换行提交方式 | `native` | `<Input type="textarea" wrap="hard" />` |
37
+ | autoWidth | `boolean` | `false` | 否 | 是否宽度随输入的文本的长度变化而变化 | - | `<Input autoWidth placeholder="宽度自适应" />` |
38
+ | fluid | `boolean` | `false` | 否 | 是否宽度 100% | - | `<Input fluid placeholder="宽度100%" />` |
39
+ | width | `string | number` | `undefined` | 否 | 指定宽度,组件会加上单位 px | - | `<Input :width="300" placeholder="宽度300px" />` |
40
+ | stackClearIcon | `boolean` | `false` | 否 | 是否将清空按钮覆盖在 suffix 按钮上展示来节省空间 | - | `<Input clearable stackClearIcon />` |
41
+ | frozenOnInput | `boolean` | `false` | 否 | 是否在输入的过程中冻结 value 更新到视图 | - | `<Input frozenOnInput />` |
42
+ | inline | `boolean` | `false` | 否 | 是否展示内联模式 | - | `<Input inline />` |
43
+ | waveDisabled | `boolean` | `false` | 否 | 是否禁用点击波纹效果 | - | `<Input waveDisabled />` |
44
+ | resize | `"none" | "vertical" | "horizontal" | "both"` | `"vertical"` | 否 | 指定 textarea 输入框拖动调整大小的方向,默认只能垂直方向调整 | - | `<Input type="textarea" resize="both" />` |
45
+ | flat | `boolean` | `false` | 否 | 是否展示扁平样式 | - | `<Input flat placeholder="扁平样式" />` |
46
+ | showCount | `boolean` | `false` | 否 | 是否展示字符长度提示数字 | - | `<Input showCount maxlength="50" />` |
47
+ | showPassword | `boolean` | `false` | 否 | 当 type="password" 时,是否展示显隐密码按钮 | - | `<Input type="password" showPassword />` |
37
48
 
38
49
  ## 事件 (Events)
39
50
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
@@ -47,22 +58,27 @@ import { Input, Search } from '@king-design/vue';
47
58
  | mouseenter | `@mouseenter` | 原生 mouseenter 事件,绑定在组件最外层元素上 | `event: MouseEvent` | `<Input @mouseenter="handleMouseenter" />` |
48
59
  | mouseleave | `@mouseleave` | 原生 mouseleave 事件,绑定在组件最外层元素上 | `event: MouseEvent` | `<Input @mouseleave="handleMouseleave" />` |
49
60
 
50
- ### 事件处理函数示例
51
- **clear**:
52
- ```typescript
53
- const handleClear = () => {
54
- console.log('内容已清空');
55
- };
56
- ```
61
+ ### 事件参数说明
62
+ **change**
63
+
64
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
65
+ | --- | --- | --- | --- | --- |
66
+ | event | `Event` | 是 | - | 原生 change 事件对象 |
57
67
 
58
- **change**:
68
+ 事件处理示例:
59
69
  ```typescript
60
70
  const handleChange = (e: Event) => {
61
71
  console.log('值已变化', (e.target as HTMLInputElement).value);
62
72
  };
63
73
  ```
64
74
 
65
- **keydown**:
75
+ **keydown**
76
+
77
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
78
+ | --- | --- | --- | --- | --- |
79
+ | event | `KeyboardEvent` | 是 | - | 原生键盘事件对象 |
80
+
81
+ 事件处理示例:
66
82
  ```typescript
67
83
  const handleKeydown = (e: KeyboardEvent) => {
68
84
  if (e.key === 'Enter') {
@@ -71,35 +87,65 @@ const handleKeydown = (e: KeyboardEvent) => {
71
87
  };
72
88
  ```
73
89
 
74
- **keyup**:
90
+ **keyup**
91
+
92
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
93
+ | --- | --- | --- | --- | --- |
94
+ | event | `KeyboardEvent` | 是 | - | 原生键盘事件对象 |
95
+
96
+ 事件处理示例:
75
97
  ```typescript
76
98
  const handleKeyup = (e: KeyboardEvent) => {
77
99
  console.log('键盘抬起', e.key);
78
100
  };
79
101
  ```
80
102
 
81
- **keypress**:
103
+ **keypress**
104
+
105
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
106
+ | --- | --- | --- | --- | --- |
107
+ | event | `KeyboardEvent` | 是 | - | 原生键盘事件对象 |
108
+
109
+ 事件处理示例:
82
110
  ```typescript
83
111
  const handleKeypress = (e: KeyboardEvent) => {
84
112
  console.log('按键', e.key);
85
113
  };
86
114
  ```
87
115
 
88
- **click**:
116
+ **click**
117
+
118
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
119
+ | --- | --- | --- | --- | --- |
120
+ | event | `MouseEvent` | 是 | - | 原生鼠标事件对象 |
121
+
122
+ 事件处理示例:
89
123
  ```typescript
90
124
  const handleClick = (e: MouseEvent) => {
91
125
  console.log('点击输入框');
92
126
  };
93
127
  ```
94
128
 
95
- **mouseenter**:
129
+ **mouseenter**
130
+
131
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
132
+ | --- | --- | --- | --- | --- |
133
+ | event | `MouseEvent` | 是 | - | 原生鼠标事件对象 |
134
+
135
+ 事件处理示例:
96
136
  ```typescript
97
137
  const handleMouseenter = (e: MouseEvent) => {
98
138
  console.log('鼠标进入');
99
139
  };
100
140
  ```
101
141
 
102
- **mouseleave**:
142
+ **mouseleave**
143
+
144
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
145
+ | --- | --- | --- | --- | --- |
146
+ | event | `MouseEvent` | 是 | - | 原生鼠标事件对象 |
147
+
148
+ 事件处理示例:
103
149
  ```typescript
104
150
  const handleMouseleave = (e: MouseEvent) => {
105
151
  console.log('鼠标离开');
@@ -125,9 +171,9 @@ const handleMouseleave = (e: MouseEvent) => {
125
171
  ## 方法 (Methods)
126
172
  | 方法名 | 说明 | 参数 | 返回值 |
127
173
  | --- | --- | --- | --- |
128
- | focus | 使输入框获得焦点 | `` | `void` |
129
- | blur | 使输入框失去焦点 | `` | `void` |
130
- | select | 全选输入框中的内容 | `` | `void` |
174
+ | focus | 使输入框获得焦点 | `-` | `void` |
175
+ | blur | 使输入框失去焦点 | `-` | `void` |
176
+ | select | 全选输入框中的内容 | `-` | `void` |
131
177
 
132
178
  ## 子组件 (Sub-Components)
133
179
  ### Search
@@ -145,24 +191,29 @@ const handleMouseleave = (e: MouseEvent) => {
145
191
  - `@submit`: 表单提交事件,按回车或点击搜索按钮时触发
146
192
 
147
193
  ## 常见错误与正确用法 (Anti-Hallucination)
194
+ ### 设置 rows 但未指定 type="textarea"
148
195
  > **错误用法**: `<Input :rows="4" placeholder="多行" />`
149
196
  > **正确写法**: `<Input type="textarea" :rows="4" placeholder="多行" />`
150
197
  > **说明**: rows 属性只在 type="textarea" 时生效,普通 input 不支持 rows
151
198
 
199
+ ### 使用不存在的 size 值 (Input)
152
200
  > **错误用法**: `<Input size="medium" />`
153
201
  > **正确写法**: `<Input size="default" />`
154
202
  > **说明**: Input 的 size 只支持 large, default, small, mini。常见错误是使用 medium 值。
155
203
 
204
+ ### 在非 textarea 上使用 resize 属性
156
205
  > **错误用法**: `<Input resize="both" />`
157
206
  > **正确写法**: `<Input type="textarea" resize="both" />`
158
207
  > **说明**: resize 属性只对 type="textarea" 生效
159
208
 
209
+ ### 错误地导入或使用不存在的 Textarea 组件
160
210
  > **错误用法**: `import { Textarea } from '@king-design/vue';
161
211
  <Textarea v-model="desc" />`
162
212
  > **正确写法**: `import { Input } from '@king-design/vue';
163
213
  <Input type="textarea" v-model="desc" />`
164
214
  > **说明**: KPC 组件库没有单独的 Textarea 组件,多行输入统一使用 Input 组件并设置 type="textarea"。
165
215
 
216
+ ### 使用 Element UI 的 show-word-limit 属性
166
217
  > **错误用法**: `<Input show-word-limit />`
167
218
  > **正确写法**: `<Input showCount />`
168
219
  > **说明**: KPC 中展示字数计数的属性是 showCount,不是 show-word-limit。
@@ -0,0 +1,113 @@
1
+ # 实例列表选择 (InstanceList)
2
+
3
+ 用于从实例候选列表中选择目标实例的表单组件,可同步返回实例值和实例实体,适合迁移、备份、挂载等场景。
4
+
5
+ **关键词**: instance list, instance selector, 实例选择, 目标实例, 资源实例下拉
6
+
7
+ **使用场景**: 从候选实例中选择目标实例、迁移或挂载时选择实例、选择后联动实例实体信息
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { InstanceList } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | modelValue | `string` | `undefined` | 否 | 当前选中的实例 ID | - | - |
18
+ | list | `Record<string, any>[]` | `undefined` | 否 | 可选实例列表 | - | - |
19
+ | listKeyName | `string` | `"key"` | 否 | 列表项中作为 value 的字段名 | - | - |
20
+ | listLabelName | `string` | `"label"` | 否 | 列表项中作为 label 的字段名 | - | - |
21
+ | fluid | `boolean` | `undefined` | 否 | 是否启用流式宽度 | - | - |
22
+ | existedList | `string[]` | `undefined` | 否 | 已存在实例列表,用于唯一性校验 | - | - |
23
+ | checkInstanceUniqueTip | `string` | `"实例不可重复"` | 否 | 实例重复时的提示文案 | - | - |
24
+ | container | `string` | `undefined` | 否 | 下拉面板挂载容器 | - | - |
25
+ | width | `string | number` | `undefined` | 否 | 控件宽度 | - | - |
26
+
27
+ ## 事件 (Events)
28
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
29
+ | --- | --- | --- | --- | --- |
30
+ | update:modelValue | `@update:modelValue` | 选中的实例标识变化时触发,通常用于同步实例 ID 或名称。 | `value?: string` | - |
31
+ | update:instance | `@update:instance` | 当前选中的完整实例对象变化时触发,便于读取规格、状态等附加字段。 | `value?: InstanceOption` | - |
32
+
33
+ ### 事件参数说明
34
+ **update:modelValue**
35
+
36
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
37
+ | --- | --- | --- | --- | --- |
38
+ | value | `string` | 否 | - | 当前选中的实例标识。 |
39
+
40
+ **update:instance**
41
+
42
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
43
+ | --- | --- | --- | --- | --- |
44
+ | value | `InstanceOption` | 否 | - | 当前选中的完整实例对象。 |
45
+
46
+ ## 使用示例
47
+ ### 选择目标实例
48
+ **场景**: 在克隆、挂载或迁移流程中选择目标实例。
49
+
50
+ 从候选实例列表中选取一个实例并同步实例实体。
51
+
52
+ **使用的 API**: 属性: modelValue, list, listKeyName, listLabelName | 事件: update:modelValue, update:instance
53
+
54
+ ```vue
55
+ <script setup lang="ts">
56
+ import { ref } from 'vue';
57
+ import { InstanceList } from '@ksyun-internal/versatile';
58
+
59
+ const selected = ref('i-001');
60
+ const list = [
61
+ { id: 'i-001', name: 'web-prod-01' },
62
+ { id: 'i-002', name: 'web-prod-02' },
63
+ ];
64
+ </script>
65
+
66
+ <template>
67
+ <InstanceList
68
+ v-model="selected"
69
+ :list="list"
70
+ list-key-name="id"
71
+ list-label-name="name"
72
+ />
73
+ </template>
74
+ ```
75
+
76
+ ### 联动实例实体信息
77
+ **场景**: 在选择实例后同步展示其可用区、规格等附加信息。
78
+
79
+ 监听 update:instance 获取当前实例的完整信息。
80
+
81
+ **使用的 API**: 属性: modelValue, list, listKeyName, listLabelName | 事件: update:instance
82
+
83
+ ```vue
84
+ <script setup lang="ts">
85
+ import { ref } from 'vue';
86
+ import { InstanceList } from '@ksyun-internal/versatile';
87
+
88
+ const selected = ref('i-001');
89
+ const currentZone = ref('');
90
+ const list = [
91
+ { id: 'i-001', name: 'web-prod-01', zone: 'cn-beijing-6a' },
92
+ { id: 'i-002', name: 'web-prod-02', zone: 'cn-beijing-6b' },
93
+ ];
94
+ const handleInstance = (instance: { zone?: string }) => {
95
+ currentZone.value = instance?.zone || '';
96
+ };
97
+ </script>
98
+
99
+ <template>
100
+ <InstanceList
101
+ v-model="selected"
102
+ :list="list"
103
+ list-key-name="id"
104
+ list-label-name="name"
105
+ @update:instance="handleInstance"
106
+ />
107
+ <div>所在可用区:{{ currentZone }}</div>
108
+ </template>
109
+ ```
110
+
111
+ ## 相关组件
112
+ FormItemTableConfigs, Select
113
+
@@ -0,0 +1,95 @@
1
+ # 实例数量 (InstanceNum)
2
+
3
+ 围绕实例数量录入封装的业务组件,补充了范围控制、禁用提示和补丁数联动,适合节点数量、实例副本数等场景。
4
+
5
+ **关键词**: instance num, instance count, 实例数量, 节点数量, 副本数输入
6
+
7
+ **使用场景**: 启停开关、集群节点数量配置、受限规格下展示禁用原因
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { InstanceNum } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | modelValue | `number` | `undefined` | 否 | 实例数量 | - | - |
18
+ | label | `string` | `undefined` | 否 | 表单项标题 | - | - |
19
+ | max | `number | null` | `undefined` | 否 | 允许的最大数量 | - | - |
20
+ | min | `number | null` | `undefined` | 否 | 允许的最小数量 | - | - |
21
+ | required | `boolean` | `undefined` | 否 | 是否必填 | - | - |
22
+ | rules | `Record<string, any>` | `{}` | 否 | 表单校验规则 | - | - |
23
+ | width | `string | number` | `undefined` | 否 | 输入控件宽度 | - | - |
24
+ | disabled | `boolean` | `undefined` | 否 | 是否禁用输入 | - | - |
25
+ | disabledTooltip | `boolean` | `undefined` | 否 | 禁用时是否显示 tooltip | - | - |
26
+ | tooltipContent | `string` | `undefined` | 否 | 禁用提示内容 | - | - |
27
+ | patchcount | `number` | `undefined` | 否 | 补丁数量或步进修正值 | - | - |
28
+
29
+ ## 事件 (Events)
30
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
31
+ | --- | --- | --- | --- | --- |
32
+ | update:modelValue | `@update:modelValue` | 实例数量变化时触发,可用于联动库存、价格和配额校验。 | `value?: number` | - |
33
+
34
+ ### 事件参数说明
35
+ **update:modelValue**
36
+
37
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
38
+ | --- | --- | --- | --- | --- |
39
+ | value | `number` | 否 | - | 当前实例数量或副本数。 |
40
+
41
+ ## 使用示例
42
+ ### 集群节点数量选择
43
+ **场景**: 在集群或弹性扩缩容场景中控制实例数量。
44
+
45
+ 限制节点数量范围,并在禁用时给出原因说明。
46
+
47
+ **使用的 API**: 属性: modelValue, label, min, max, tooltipContent | 事件: update:modelValue
48
+
49
+ ```vue
50
+ <script setup lang="ts">
51
+ import { ref } from 'vue';
52
+ import { InstanceNum } from '@ksyun-internal/versatile';
53
+
54
+ const count = ref(3);
55
+ </script>
56
+
57
+ <template>
58
+ <InstanceNum
59
+ v-model="count"
60
+ label="节点数量"
61
+ :min="1"
62
+ :max="10"
63
+ tooltip-content="超出规格上限时需要升级套餐"
64
+ />
65
+ </template>
66
+ ```
67
+
68
+ ### 禁用状态下展示原因
69
+ **场景**: 在受限套餐下明确告知用户为什么不能修改数量。
70
+
71
+ 当规格不满足条件时暂时禁用数量调整,并给出解释。
72
+
73
+ **使用的 API**: 属性: modelValue, label, disabled, disabledTooltip
74
+
75
+ ```vue
76
+ <script setup lang="ts">
77
+ import { ref } from 'vue';
78
+ import { InstanceNum } from '@ksyun-internal/versatile';
79
+
80
+ const count = ref(1);
81
+ </script>
82
+
83
+ <template>
84
+ <InstanceNum
85
+ v-model="count"
86
+ label="实例数量"
87
+ :disabled="true"
88
+ disabled-tooltip="当前套餐仅支持单实例部署"
89
+ />
90
+ </template>
91
+ ```
92
+
93
+ ## 相关组件
94
+ FormItemSpinner, FormItemTableConfigs
95
+
@@ -0,0 +1,77 @@
1
+ # IP 输入框 (IPInput)
2
+
3
+ 面向 IPv4 地址录入的分段输入组件,适合网卡、白名单、后端服务地址等需要明确格式校验的网络场景。
4
+
5
+ **关键词**: ip input, ipv4 input, IP 输入, ip 地址录入, 网络地址输入
6
+
7
+ **使用场景**: IPv4 地址录入、网络配置表单、分段 IP 输入提示
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { IPInput } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | modelValue | `string` | `undefined` | 否 | IP 地址值 | - | - |
18
+ | disabled | `boolean | any[]` | `undefined` | 否 | 禁用状态或分段禁用配置 | - | - |
19
+ | tooltip | `any[]` | `undefined` | 否 | 分段 tooltip 配置 | - | - |
20
+
21
+ ## 事件 (Events)
22
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
23
+ | --- | --- | --- | --- | --- |
24
+ | update:modelValue | `@update:modelValue` | 完整 IP 地址变化时触发,可直接同步网络配置表单。 | `value?: string` | - |
25
+
26
+ ### 事件参数说明
27
+ **update:modelValue**
28
+
29
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
30
+ | --- | --- | --- | --- | --- |
31
+ | value | `string` | 否 | - | 当前输入的 IPv4 地址字符串。 |
32
+
33
+ ## 使用示例
34
+ ### 后端服务 IP 地址录入
35
+ **场景**: 在网络或服务发现配置中录入单个 IPv4 地址。
36
+
37
+ 用分段输入方式降低手写 IP 地址的出错概率。
38
+
39
+ **使用的 API**: 属性: modelValue | 事件: update:modelValue
40
+
41
+ ```vue
42
+ <script setup lang="ts">
43
+ import { ref } from 'vue';
44
+ import { IPInput } from '@ksyun-internal/versatile';
45
+
46
+ const ip = ref('10.0.0.12');
47
+ </script>
48
+
49
+ <template>
50
+ <IPInput v-model="ip" />
51
+ </template>
52
+ ```
53
+
54
+ ### 为 IP 分段添加提示
55
+ **场景**: 在网络配置页中为 IP 输入提供更明确的填写提示。
56
+
57
+ 给分段输入框补充提示信息,帮助用户理解每段含义。
58
+
59
+ **使用的 API**: 属性: modelValue, tooltip | 事件: update:modelValue
60
+
61
+ ```vue
62
+ <script setup lang="ts">
63
+ import { ref } from 'vue';
64
+ import { IPInput } from '@ksyun-internal/versatile';
65
+
66
+ const ip = ref('172.16.0.10');
67
+ const tooltip = ['第一段', '第二段', '第三段', '第四段'];
68
+ </script>
69
+
70
+ <template>
71
+ <IPInput v-model="ip" :tooltip="tooltip" />
72
+ </template>
73
+ ```
74
+
75
+ ## 相关组件
76
+ CidrInput
77
+