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
@@ -0,0 +1,82 @@
1
+ # 业务状态标识 (KspStatus)
2
+
3
+ 根据业务状态值自动映射文案、颜色和加载态的状态展示组件,适合实例生命周期、任务状态和工单状态等复杂业务场景。
4
+
5
+ **关键词**: ksp status, business status, 业务状态, 状态码映射, progress status, 任务状态
6
+
7
+ **使用场景**: 资源状态展示、任务进度与异常态展示、带进度的迁移或备份状态
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { KspStatus } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | status | `string | number` | `undefined` | 否 | 业务状态值,可为字符串或数字 | - | - |
18
+ | progress | `number` | `undefined` | 否 | 进度值,用于进度型状态展示 | - | - |
19
+ | success | `any[]` | `undefined` | 否 | 会被视为成功态的状态值集合 | - | - |
20
+ | danger | `any[]` | `undefined` | 否 | 会被视为失败态的状态值集合 | - | - |
21
+ | disabled | `any[]` | `undefined` | 否 | 会被视为禁用态的状态值集合 | - | - |
22
+ | warning | `any[]` | `undefined` | 否 | 会被视为警告态的状态值集合 | - | - |
23
+ | loading | `any[]` | `undefined` | 否 | 会被视为加载态的状态值集合 | - | - |
24
+ | progressbar | `any[]` | `undefined` | 否 | 会被视为进度条态的状态值集合 | - | - |
25
+ | maps | `Record<string, any>` | `undefined` | 否 | 自定义状态映射表 | - | - |
26
+ | tip | `string` | `undefined` | 否 | 状态说明 tooltip 文案 | - | - |
27
+ | position | `any` | `undefined` | 否 | tooltip 或刷新按钮的弹出位置 | - | - |
28
+ | refreshTip | `string` | `undefined` | 否 | 刷新按钮提示文案 | - | - |
29
+ | refresh | `() => Promise<void>` | `undefined` | 否 | 点击刷新时执行的异步函数 | - | - |
30
+ | text | `string` | `undefined` | 否 | 自定义展示文案,优先级高于状态映射 | - | - |
31
+
32
+ ## 使用示例
33
+ ### 实例生命周期状态展示
34
+ **场景**: 在列表或详情页中按统一规则展示业务状态。
35
+
36
+ 通过 maps 配置把业务状态码映射成统一的状态展示。
37
+
38
+ **使用的 API**: 属性: status, maps, refreshTip
39
+
40
+ ```vue
41
+ <script setup lang="ts">
42
+ import { KspStatus } from '@ksyun-internal/versatile';
43
+
44
+ const maps = {
45
+ creating: { text: '创建中', loading: true },
46
+ running: { text: '运行中', success: true },
47
+ stopped: { text: '已停止', disabled: true },
48
+ };
49
+ </script>
50
+
51
+ <template>
52
+ <KspStatus status="creating" :maps="maps" refresh-tip="状态每 10 秒刷新一次" />
53
+ </template>
54
+ ```
55
+
56
+ ### 展示带进度的业务状态
57
+ **场景**: 在迁移、备份等长任务场景中展示进度化状态。
58
+
59
+ 通过 progress 和 refresh 提示渲染任务执行中的状态。
60
+
61
+ **使用的 API**: 属性: status, text, progress, refresh, refreshTip, tip
62
+
63
+ ```vue
64
+ <script setup lang="ts">
65
+ import { KspStatus } from '@ksyun-internal/versatile';
66
+ </script>
67
+
68
+ <template>
69
+ <KspStatus
70
+ status="migrating"
71
+ text="迁移中"
72
+ :progress="68"
73
+ :refresh="true"
74
+ refresh-tip="状态会自动刷新"
75
+ tip="预计 2 分钟后完成"
76
+ />
77
+ </template>
78
+ ```
79
+
80
+ ## 相关组件
81
+ Status
82
+
@@ -0,0 +1,76 @@
1
+ # 键值代码输入 (KvCode)
2
+
3
+ 用于录入脚本、配置片段或键值代码内容的表单组件,适合高级参数、启动脚本和策略文本等输入场景。
4
+
5
+ **关键词**: kv code, code input, 代码输入, 脚本录入, 策略文本
6
+
7
+ **使用场景**: 脚本配置输入、高级参数录入、JSON 策略文本填写
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { KvCode } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | label | `string` | `undefined` | 否 | 表单项标题 | - | - |
18
+ | modelValue | `string` | `undefined` | 否 | 代码内容 | - | - |
19
+ | required | `boolean` | `undefined` | 否 | 是否必填 | - | - |
20
+
21
+ ## 事件 (Events)
22
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
23
+ | --- | --- | --- | --- | --- |
24
+ | update:modelValue | `@update:modelValue` | 代码或文本片段内容变化时触发,适合与父级表单实时同步。 | `value?: string` | - |
25
+
26
+ ### 事件参数说明
27
+ **update:modelValue**
28
+
29
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
30
+ | --- | --- | --- | --- | --- |
31
+ | value | `string` | 否 | - | 当前编辑器中的代码或文本内容。 |
32
+
33
+ ## 使用示例
34
+ ### 启动脚本输入
35
+ **场景**: 录入任务脚本、环境变量模板或高级参数文本。
36
+
37
+ 在创建任务或实例时录入一段配置脚本。
38
+
39
+ **使用的 API**: 属性: modelValue, label, required | 事件: update:modelValue
40
+
41
+ ```vue
42
+ <script setup lang="ts">
43
+ import { ref } from 'vue';
44
+ import { KvCode } from '@ksyun-internal/versatile';
45
+
46
+ const script = ref('export NODE_ENV=production');
47
+ </script>
48
+
49
+ <template>
50
+ <KvCode v-model="script" label="启动脚本" :required="true" />
51
+ </template>
52
+ ```
53
+
54
+ ### 录入策略 JSON 文本
55
+ **场景**: 在策略配置页中录入 JSON 结构化文本。
56
+
57
+ 在权限或策略场景中填写结构化文本配置。
58
+
59
+ **使用的 API**: 属性: modelValue, label | 事件: update:modelValue
60
+
61
+ ```vue
62
+ <script setup lang="ts">
63
+ import { ref } from 'vue';
64
+ import { KvCode } from '@ksyun-internal/versatile';
65
+
66
+ const policy = ref('{"Version":"1.0","Statement":[]}');
67
+ </script>
68
+
69
+ <template>
70
+ <KvCode v-model="policy" label="访问策略" />
71
+ </template>
72
+ ```
73
+
74
+ ## 相关组件
75
+ Code, FormItemInput
76
+
@@ -2,9 +2,9 @@
2
2
 
3
3
  标准页面布局组件,包含头部、面包屑、内容区和可选的底部操作栏。
4
4
 
5
- **关键词**: layout, content, page, 布局
5
+ **关键词**: layout, content, page, 布局, 详情布局, 页面骨架, 内容页容器
6
6
 
7
- **使用场景**: 详情页、列表页、表单页
7
+ **使用场景**: 详情页、列表页、表单页、购买链路页面、带顶部栏和底部栏的业务内容页
8
8
 
9
9
  ## 导入语句
10
10
  ```typescript
@@ -12,21 +12,21 @@ import { LayoutContent } from '@ksyun-internal/versatile';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | title | `string` | `""` | 否 | 定义顶部栏标题,也可通过 headerProps.title 定义标题 | - |
18
- | back | `() => any | RouteLocationRaw` | `undefined` | 否 | 定义顶部栏是否支持返回按钮,也可通过 headerProps.back 定义返回内容 | - |
19
- | headerProps | `LayoutHeaderProps` | `undefined` | 否 | 定义顶部栏,Header 组件支持的属性 | - |
20
- | tab | `string` | `""` | 否 | 当前选项卡 | - |
21
- | tabs | `TabItem[]` | `undefined` | 否 | 所有选项卡数据 | - |
22
- | tabsProps | `LayoutTabsProps` | `undefined` | 否 | 定义 tab 栏,LayoutTabs 组件支持的属性 | - |
23
- | newable | `boolean` | `false` | 否 | 购买链路页面样式。UI 规范要求在浏览器新的 tab 中打开 | - |
24
- | scroll | `boolean` | `false` | 否 | 内容超出范围是否支持滚动条 | - |
25
- | topShadow | `boolean` | `false` | 否 | 顶部固定处是否加阴影,有返回操作的默认自带阴影 | - |
26
- | initialized | `boolean` | `true` | 否 | 是否初始化完成,默认初始化已完成为 true,初始化未完成时会有 loading 效果 | - |
27
- | loading | `boolean` | `false` | 否 | 是否为加载中状态 | - |
28
- | isHasFooter | `boolean` | `undefined` | 否 | 是否有底部栏,可通过此参数强制进行设置。默认根据是否有 footer、footerLeft、footerRight 扩展点判断 | - |
29
- | breadcrumb | `Array<{ to: string, label: string }>` | `undefined` | 否 | 同 Header 组件的 breadcrumb 属性一致,定义面包屑导航,数组元素为 { to: string, label: string } 格式 | - |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | title | `string` | `""` | 否 | 定义顶部栏标题,也可通过 headerProps.title 定义标题 | - | - |
18
+ | back | `() => any | RouteLocationRaw` | `undefined` | 否 | 定义顶部栏是否支持返回按钮,也可通过 headerProps.back 定义返回内容 | - | - |
19
+ | headerProps | `LayoutHeaderProps` | `undefined` | 否 | 定义顶部栏,Header 组件支持的属性 | - | - |
20
+ | tab | `string` | `""` | 否 | 当前选项卡 | - | - |
21
+ | tabs | `TabItem[]` | `undefined` | 否 | 所有选项卡数据 | - | - |
22
+ | tabsProps | `LayoutTabsProps` | `undefined` | 否 | 定义 tab 栏,LayoutTabs 组件支持的属性 | - | - |
23
+ | newable | `boolean` | `false` | 否 | 购买链路页面样式。UI 规范要求在浏览器新的 tab 中打开 | - | - |
24
+ | scroll | `boolean` | `false` | 否 | 内容超出范围是否支持滚动条 | - | - |
25
+ | topShadow | `boolean` | `false` | 否 | 顶部固定处是否加阴影,有返回操作的默认自带阴影 | - | - |
26
+ | initialized | `boolean` | `true` | 否 | 是否初始化完成,默认初始化已完成为 true,初始化未完成时会有 loading 效果 | - | - |
27
+ | loading | `boolean` | `false` | 否 | 是否为加载中状态 | - | - |
28
+ | isHasFooter | `boolean` | `undefined` | 否 | 是否有底部栏,可通过此参数强制进行设置。默认根据是否有 footer、footerLeft、footerRight 扩展点判断 | - | - |
29
+ | breadcrumb | `Array<{ to: string, label: string }>` | `undefined` | 否 | 同 Header 组件的 breadcrumb 属性一致,定义面包屑导航,数组元素为 { to: string, label: string } 格式 | - | - |
30
30
 
31
31
  ## 插槽 (Slots)
32
32
  | 插槽名 | 说明 | 模板写法 | 示例 |
@@ -0,0 +1,95 @@
1
+ # 列表布局 (LayoutListContent)
2
+
3
+ 面向列表页的一体化布局容器,统一承载头部、操作区、搜索区和列表内容,适合和 Search、ProTable 组合使用。
4
+
5
+ **关键词**: list layout, layout list, 列表布局, 资源列表页, 搜索加表格布局, 页头操作区
6
+
7
+ **使用场景**: 资源列表页、带搜索和操作栏的列表页、通过插槽扩展头部操作区
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { LayoutListContent } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | title | `string` | `""` | 否 | 顶部栏标题,也可通过 headerProps.title 配置 | - | - |
18
+ | headerProps | `LayoutHeaderProps` | `undefined` | 否 | 顶部栏配置,同 Header 组件的属性集合 | - | - |
19
+ | loading | `boolean` | `false` | 否 | 整体加载状态 | - | - |
20
+
21
+ ## 插槽 (Slots)
22
+ | 插槽名 | 说明 | 模板写法 | 示例 |
23
+ | --- | --- | --- | --- |
24
+ | default | 页面主体内容区域 | `<LayoutListContent>...</LayoutListContent>` | - |
25
+ | headerTitle | 扩展顶部栏左侧标题处内容 | `<template #headerTitle>...</template>` | - |
26
+ | headerTitleAppend | 扩展顶部栏左侧标题后的追加内容 | `<template #headerTitleAppend>...</template>` | - |
27
+ | headerDocPrepend | 扩展顶部栏右侧文档前置内容 | `<template #headerDocPrepend>...</template>` | - |
28
+ | headerDoc | 扩展顶部栏右侧文档内容 | `<template #headerDoc>...</template>` | - |
29
+ | opLeft | 卡片操作栏左侧内容 | `<template #opLeft>...</template>` | - |
30
+ | opRight | 卡片操作栏右侧内容 | `<template #opRight>...</template>` | - |
31
+ | prepend | 卡片操作栏上方扩展内容 | `<template #prepend>...</template>` | - |
32
+ | extra | 头部附加区域 | `<template #extra>...</template>` | - |
33
+
34
+ ## 使用示例
35
+ ### 标准列表页布局
36
+ **场景**: 搭建常见的“页头 + 搜索 + 表格”列表页面。
37
+
38
+ 在同一容器内组合标题、搜索区和表格区,形成标准列表页结构。
39
+
40
+ ```vue
41
+ <script setup lang="ts">
42
+ import { LayoutListContent, Header, Search, ProTable } from '@ksyun-internal/versatile';
43
+
44
+ const searches = [
45
+ { key: 'name', label: '实例名称', type: 'input', placeholder: '请输入实例名称' },
46
+ ];
47
+ const columns = [
48
+ { key: 'name', title: '实例名称' },
49
+ ];
50
+ </script>
51
+
52
+ <template>
53
+ <LayoutListContent>
54
+ <template #headerTitle>
55
+ <Header title="实例列表" />
56
+ </template>
57
+ <template #prepend>
58
+ <Search :searches="searches" />
59
+ </template>
60
+ <ProTable :columns="columns" :data-source="[]" />
61
+ </LayoutListContent>
62
+ </template>
63
+ ```
64
+
65
+ ### 使用操作栏左右插槽
66
+ **场景**: 在列表页头部同时摆放批量操作、主操作和统计信息。
67
+
68
+ 通过 opLeft、opRight 和 extra 插槽扩展列表页头部区域。
69
+
70
+ **使用的 API**: 属性: title
71
+
72
+ ```vue
73
+ <script setup lang="ts">
74
+ import { LayoutListContent, ProTable } from '@ksyun-internal/versatile';
75
+ </script>
76
+
77
+ <template>
78
+ <LayoutListContent title="镜像列表">
79
+ <template #opLeft>
80
+ <button>批量导出</button>
81
+ </template>
82
+ <template #opRight>
83
+ <button>新建镜像</button>
84
+ </template>
85
+ <template #extra>
86
+ <span>共 32 个镜像</span>
87
+ </template>
88
+ <ProTable :columns="[]" :data-source="[]" />
89
+ </LayoutListContent>
90
+ </template>
91
+ ```
92
+
93
+ ## 相关组件
94
+ Header, ProTable, Search
95
+
@@ -0,0 +1,84 @@
1
+ # 权限内容布局 (LayoutPermissionContent)
2
+
3
+ 用于承载无权限、待开通、待授权等结果页内容的布局组件,统一管理插图、说明文案和主操作按钮。
4
+
5
+ **关键词**: permission, permission layout, 权限布局, 无权限页, 结果页布局, 开通引导
6
+
7
+ **使用场景**: 无权限页、待授权提示页、纵向结果页和引导操作
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { LayoutPermissionContent } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | img | `string` | `undefined` | 否 | 状态插图地址 | - | - |
18
+ | title | `string` | `undefined` | 否 | 主标题 | - | - |
19
+ | message | `string` | `undefined` | 否 | 说明文案 | - | - |
20
+ | btnText | `string` | `undefined` | 否 | 操作按钮文案 | - | - |
21
+ | vertical | `boolean` | `undefined` | 否 | 是否采用纵向布局 | - | - |
22
+ | type | `string` | `undefined` | 否 | 展示类型 | - | - |
23
+ | loading | `boolean` | `undefined` | 否 | 按钮是否处于加载状态 | - | - |
24
+
25
+ ## 事件 (Events)
26
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
27
+ | --- | --- | --- | --- | --- |
28
+ | click:btn | `@click:btn` | 用户点击主操作按钮时触发,通常用于跳转授权页、申请开通或返回列表。 | `-` | - |
29
+
30
+ ## 插槽 (Slots)
31
+ | 插槽名 | 说明 | 模板写法 | 示例 |
32
+ | --- | --- | --- | --- |
33
+ | default | 主内容区域 | `<LayoutPermissionContent>...</LayoutPermissionContent>` | - |
34
+
35
+ ## 使用示例
36
+ ### 无权限状态页
37
+ **场景**: 在用户没有资源访问权限时展示统一结果页。
38
+
39
+ 统一展示无权限说明并提供下一步操作入口。
40
+
41
+ **使用的 API**: 属性: title, message, btnText | 事件: click:btn
42
+
43
+ ```vue
44
+ <script setup lang="ts">
45
+ import { LayoutPermissionContent } from '@ksyun-internal/versatile';
46
+ </script>
47
+
48
+ <template>
49
+ <LayoutPermissionContent
50
+ title="暂无访问权限"
51
+ message="请联系项目管理员为当前账号开通实例查看权限"
52
+ btn-text="去申请权限"
53
+ @click:btn="() => console.log('apply')"
54
+ />
55
+ </template>
56
+ ```
57
+
58
+ ### 纵向结果页布局
59
+ **场景**: 在待开通或待申请的结果页中展示更多引导说明。
60
+
61
+ 在说明较多时启用纵向布局并通过默认插槽补充帮助信息。
62
+
63
+ **使用的 API**: 属性: title, message, btnText, vertical
64
+
65
+ ```vue
66
+ <script setup lang="ts">
67
+ import { LayoutPermissionContent } from '@ksyun-internal/versatile';
68
+ </script>
69
+
70
+ <template>
71
+ <LayoutPermissionContent
72
+ title="服务暂未开通"
73
+ message="当前地域尚未开通该服务,可先查看产品介绍。"
74
+ btn-text="申请开通"
75
+ :vertical="true"
76
+ >
77
+ <p>如需加急,请联系客户经理或提交工单。</p>
78
+ </LayoutPermissionContent>
79
+ </template>
80
+ ```
81
+
82
+ ## 相关组件
83
+ LayoutContent, CardContent
84
+
@@ -0,0 +1,120 @@
1
+ # 标准列表布局 (LayoutStandardList)
2
+
3
+ 标准化列表页业务容器,内置搜索、批量操作、轮询和列管理等能力,适合快速搭建成熟的资源管理列表页。
4
+
5
+ **关键词**: standard list, resource list layout, 列表布局, 标准列表, 批量操作列表, 带搜索列表, 列管理, 轮询列表
6
+
7
+ **使用场景**: 标准资源列表页、带搜索和批量操作的列表页、带轮询和列设置的控制台列表、快速搭建资源管理页
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { LayoutStandardList } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | canCreate | `Record<string, any>` | `undefined` | 否 | 控制“创建”按钮可用性的配置对象 | - | - |
18
+ | canDelete | `Record<string, any>` | `undefined` | 否 | 控制批量删除按钮可用性的配置对象 | - | - |
19
+ | handleClickCreateBtn | `() => void` | `undefined` | 否 | 点击创建按钮时的处理函数 | - | - |
20
+ | handleClickBatchDeleteBtn | `() => void` | `undefined` | 否 | 点击批量删除按钮时的处理函数 | - | - |
21
+ | placeholder | `string` | `undefined` | 否 | 搜索框占位文案 | - | - |
22
+ | hasSearch | `boolean` | `true` | 否 | 是否显示搜索区域 | - | - |
23
+ | hasSearchItems | `boolean` | `undefined` | 否 | 是否显示检索项区域 | - | - |
24
+ | searches | `SearchType[] | Record<string, SearchType>` | `undefined` | 否 | 搜索配置集合 | - | - |
25
+ | searchGroups | `SearchGroupItem[]` | `undefined` | 否 | 搜索类型分组配置 | - | - |
26
+ | labelMaps | `Record<string, string>` | `undefined` | 否 | 筛选标签文案映射 | - | - |
27
+ | rowKey | `string` | `undefined` | 否 | 表格行唯一键字段名 | - | - |
28
+ | notCheckTip | `string` | `undefined` | 否 | 未选中任何行时的提示文案 | - | - |
29
+ | tableFields | `any` | `undefined` | 否 | 可配置的表格字段定义 | - | - |
30
+ | checkType | `any` | `"checkbox"` | 否 | 表格勾选模式 | - | - |
31
+ | sortType | `string` | `undefined` | 否 | 排序模式 | - | - |
32
+ | pollInterval | `number` | `0` | 否 | 轮询刷新间隔,单位毫秒 | - | - |
33
+ | useList | `Function` | `undefined` | 是 | 拉取列表数据的 hook 或函数,必填 | - | - |
34
+ | useListDepParams | `any[]` | `undefined` | 否 | 触发 useList 刷新的依赖参数列表 | - | - |
35
+ | useListOptionParams | `Record<string, any>` | `undefined` | 否 | 传给 useList 的可选参数对象 | - | - |
36
+
37
+ ## 插槽 (Slots)
38
+ | 插槽名 | 说明 | 模板写法 | 示例 |
39
+ | --- | --- | --- | --- |
40
+ | default | 自定义列表主体内容 | `<LayoutStandardList>...</LayoutStandardList>` | - |
41
+
42
+ ## 使用示例
43
+ ### 资源管理列表页
44
+ **场景**: 快速拼出带搜索、列配置和新建入口的资源列表页。
45
+
46
+ 通过内置搜索和创建按钮快速搭建标准资源列表。
47
+
48
+ **使用的 API**: 属性: canCreate, hasSearch, searches, tableFields, placeholder
49
+
50
+ ```vue
51
+ <script setup lang="ts">
52
+ import { LayoutStandardList, ProTable } from '@ksyun-internal/versatile';
53
+
54
+ const searches = [
55
+ { key: 'name', label: '实例名称', type: 'input', placeholder: '请输入实例名称' },
56
+ { key: 'status', label: '状态', type: 'select', list: [{ key: 'running', label: '运行中' }] },
57
+ ];
58
+ const tableFields = [
59
+ { key: 'name', label: '实例名称', checked: true },
60
+ { key: 'status', label: '状态', checked: true },
61
+ ];
62
+ </script>
63
+
64
+ <template>
65
+ <LayoutStandardList
66
+ :can-create="true"
67
+ :has-search="true"
68
+ :searches="searches"
69
+ :table-fields="tableFields"
70
+ placeholder="搜索实例名称"
71
+ >
72
+ <ProTable :columns="[]" :data-source="[]" row-key="id" />
73
+ </LayoutStandardList>
74
+ </template>
75
+ ```
76
+
77
+ ### 带批量操作和轮询的标准列表
78
+ **场景**: 在资源列表页中同时开启筛选条件回显、批量操作和定时刷新。
79
+
80
+ 使用批量删除、检索项回显和轮询能力构建更完整的资源管理页。
81
+
82
+ **使用的 API**: 属性: hasSearch, hasSearchItems, searches, tableFields, pollInterval, canDelete, handleClickBatchDeleteBtn, useList, rowKey
83
+
84
+ ```vue
85
+ <script setup lang="ts">
86
+ import { LayoutStandardList, ProTable } from '@ksyun-internal/versatile';
87
+
88
+ const searches = [
89
+ { key: 'name', label: '实例名称', type: 'input', placeholder: '请输入实例名称' },
90
+ { key: 'status', label: '状态', type: 'select', list: [{ key: 'running', label: '运行中' }, { key: 'stopped', label: '已停止' }] },
91
+ ];
92
+ const tableFields = [
93
+ { key: 'name', label: '实例名称', checked: true },
94
+ { key: 'status', label: '状态', checked: true },
95
+ { key: 'privateIp', label: '内网 IP', checked: false },
96
+ ];
97
+ const useList = () => ({ loading: false, dataSource: [], total: 0 });
98
+ const handleClickBatchDeleteBtn = () => console.log('batch delete');
99
+ </script>
100
+
101
+ <template>
102
+ <LayoutStandardList
103
+ :has-search="true"
104
+ :has-search-items="true"
105
+ :searches="searches"
106
+ :table-fields="tableFields"
107
+ :poll-interval="10000"
108
+ :can-delete="{ value: true }"
109
+ :handle-click-batch-delete-btn="handleClickBatchDeleteBtn"
110
+ :use-list="useList"
111
+ row-key="id"
112
+ >
113
+ <ProTable :columns="[]" :data-source="[]" row-key="id" />
114
+ </LayoutStandardList>
115
+ </template>
116
+ ```
117
+
118
+ ## 相关组件
119
+ LayoutListContent, ProTable, Search, SearchItems
120
+
@@ -0,0 +1,101 @@
1
+ # 布局标签页 (LayoutTabs)
2
+
3
+ 页面级业务标签组件,适合在详情页或配置页切换“概览、监控、日志、告警”等大块内容。
4
+
5
+ **关键词**: layout tabs, tabs, tab, 页面标签, 页签
6
+
7
+ **使用场景**: 详情页多标签切换、控制台页面分区导航、路由参数驱动的页签切换
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { LayoutTabs } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | modelValue | `any` | `undefined` | 否 | 当前激活的标签值 | - | - |
18
+ | tabs | `TabItem[]` | `[]` | 否 | 标签数据列表,元素通常包含 value、label、disabled 等字段 | - | - |
19
+ | theme | `string` | `undefined` | 否 | 标签页视觉主题 | - | - |
20
+ | routerName | `string` | `undefined` | 否 | 结合路由模式时使用的路由名称 | - | - |
21
+ | tabParamKey | `string` | `"tab"` | 否 | URL 中用于记录当前 tab 的参数名 | - | - |
22
+ | halfRadius | `boolean` | `false` | 否 | 是否启用半圆角样式 | - | - |
23
+
24
+ ## 事件 (Events)
25
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
26
+ | --- | --- | --- | --- | --- |
27
+ | update:modelValue | `@update:modelValue` | 激活标签值变化时触发,适合直接绑定当前 tab 状态。 | `value?: string | number` | - |
28
+ | update:tab | `@update:tab` | 当前完整标签对象变化时触发,便于读取路由名或扩展字段。 | `value?: LayoutTabItem` | - |
29
+
30
+ ### 事件参数说明
31
+ **update:modelValue**
32
+
33
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
34
+ | --- | --- | --- | --- | --- |
35
+ | value | `string | number` | 否 | - | 当前激活标签的 value。 |
36
+
37
+ **update:tab**
38
+
39
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
40
+ | --- | --- | --- | --- | --- |
41
+ | value | `LayoutTabItem` | 否 | - | 当前选中的完整标签项对象。 |
42
+
43
+ ## 使用示例
44
+ ### 详情页标签切换
45
+ **场景**: 在详情页顶部切换不同子页面内容。
46
+
47
+ 在页面主区域切换不同业务模块。
48
+
49
+ **使用的 API**: 属性: modelValue, tabs | 事件: update:modelValue
50
+
51
+ ```vue
52
+ <script setup lang="ts">
53
+ import { ref } from 'vue';
54
+ import { LayoutTabs } from '@ksyun-internal/versatile';
55
+
56
+ const active = ref('overview');
57
+ const tabs = [
58
+ { label: '概览', value: 'overview' },
59
+ { label: '监控', value: 'monitor' },
60
+ { label: '日志', value: 'logs' },
61
+ ];
62
+ </script>
63
+
64
+ <template>
65
+ <LayoutTabs v-model="active" :tabs="tabs" />
66
+ </template>
67
+ ```
68
+
69
+ ### 结合路由参数记录页签
70
+ **场景**: 让用户刷新页面后仍能保留当前页签状态。
71
+
72
+ 通过 tabParamKey 让当前页签状态体现在 URL 上。
73
+
74
+ **使用的 API**: 属性: modelValue, tabs, tabParamKey, halfRadius | 事件: update:modelValue, update:tab
75
+
76
+ ```vue
77
+ <script setup lang="ts">
78
+ import { ref } from 'vue';
79
+ import { LayoutTabs } from '@ksyun-internal/versatile';
80
+
81
+ const active = ref('alarm');
82
+ const tabs = [
83
+ { label: '概览', value: 'overview' },
84
+ { label: '告警', value: 'alarm' },
85
+ { label: '审计日志', value: 'audit' },
86
+ ];
87
+ </script>
88
+
89
+ <template>
90
+ <LayoutTabs
91
+ v-model="active"
92
+ :tabs="tabs"
93
+ tab-param-key="view"
94
+ :half-radius="true"
95
+ />
96
+ </template>
97
+ ```
98
+
99
+ ## 相关组件
100
+ LayoutContent, Header
101
+
@@ -0,0 +1,73 @@
1
+ # 延迟挂载 (LazyMount)
2
+
3
+ 仅在内容真正可见时再挂载子树的轻量组件,适合优化重量级图表、编辑器或弹层内部内容的首次渲染开销。
4
+
5
+ **关键词**: lazy mount, deferred mount, 延迟挂载, 按需挂载, 性能优化
6
+
7
+ **使用场景**: 大型内容按需挂载、弹层内容懒加载、编辑器或图表按需渲染
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { LazyMount } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | show | `boolean` | `undefined` | 是 | 是否挂载内容 | - | - |
18
+
19
+ ## 插槽 (Slots)
20
+ | 插槽名 | 说明 | 模板写法 | 示例 |
21
+ | --- | --- | --- | --- |
22
+ | default | 延迟挂载的内容 | `<LazyMount>...</LazyMount>` | - |
23
+
24
+ ## 使用示例
25
+ ### 延迟挂载重量级图表
26
+ **场景**: 减少图表、代码编辑器等重组件的初始渲染成本。
27
+
28
+ 在用户展开监控面板后再渲染图表区域。
29
+
30
+ **使用的 API**: 属性: show
31
+
32
+ ```vue
33
+ <script setup lang="ts">
34
+ import { ref } from 'vue';
35
+ import { LazyMount } from '@ksyun-internal/versatile';
36
+
37
+ const showChart = ref(false);
38
+ </script>
39
+
40
+ <template>
41
+ <button @click="showChart = !showChart">切换监控面板</button>
42
+ <LazyMount :show="showChart">
43
+ <div>这里放图表组件</div>
44
+ </LazyMount>
45
+ </template>
46
+ ```
47
+
48
+ ### 编辑器面板按需挂载
49
+ **场景**: 避免策略编辑器、脚本编辑器在初始渲染时带来额外开销。
50
+
51
+ 只在用户切换到高级编辑模式后再加载编辑器区域。
52
+
53
+ **使用的 API**: 属性: show
54
+
55
+ ```vue
56
+ <script setup lang="ts">
57
+ import { ref } from 'vue';
58
+ import { LazyMount } from '@ksyun-internal/versatile';
59
+
60
+ const advanced = ref(false);
61
+ </script>
62
+
63
+ <template>
64
+ <button @click="advanced = !advanced">高级编辑</button>
65
+ <LazyMount :show="advanced">
66
+ <textarea rows="8" style="width: 100%;">这里放策略编辑器</textarea>
67
+ </LazyMount>
68
+ </template>
69
+ ```
70
+
71
+ ## 相关组件
72
+ LazyTeleport
73
+