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,26 +12,36 @@ import { Timepicker } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | value | `Value | Value[] | [Value, Value] | [Value, Value][]` | `""` | 否 | 当前选中的时间,可用 v-model 双向绑定。范围选择时为 [Value, Value] | `<Timepicker v-model="time" />` |
18
- | range | `boolean` | `false` | 否 | 是否选择时间范围 | `<Timepicker range />` |
19
- | multiple | `boolean` | `false` | 否 | 是否支持多选 | `<Timepicker multiple />` |
20
- | disabled | `boolean` | `false` | 否 | 是否禁用 | `<Timepicker disabled />` |
21
- | clearable | `boolean` | `false` | 否 | 是否可清空 | `<Timepicker clearable />` |
22
- | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 尺寸 | `<Timepicker size="small" />` |
23
- | placeholder | `string` | `"请选择时间"` | 否 | 占位文案 | `<Timepicker placeholder="选择开始时间" />` |
24
- | format | `string` | `"YYYY-MM-DD HH:mm:ss"` | 否 | 时间格式化字符串 | `<Timepicker format="HH:mm" />` |
25
- | valueFormat | `string` | `undefined` | 否 | value 值的格式化字符串 | `<Timepicker valueFormat="HH:mm:ss" />` |
26
- | showFormat | `string` | `undefined` | 否 | 展示的格式化字符串 | `<Timepicker showFormat="HH时mm分" />` |
27
- | step | `string` | `undefined` | 否 | 固定时间点的步长,如 "00:30" 表示每 30 分钟一个选项 | `<Timepicker step="00:30" />` |
28
- | min | `Value` | `undefined` | 否 | 最小可选时间 | `<Timepicker min="09:00:00" />` |
29
- | max | `Value` | `undefined` | 否 | 最大可选时间 | `<Timepicker max="18:00:00" />` |
30
- | hideIcon | `boolean` | `false` | 否 | 是否隐藏后面的图标 | `<Timepicker hideIcon />` |
31
- | fluid | `boolean` | `false` | 否 | 是否宽度 100% | `<Timepicker fluid />` |
32
- | inline | `boolean` | `false` | 否 | 是否展示内联模式 | `<Timepicker inline />` |
33
- | flat | `boolean` | `false` | 否 | 是否展示扁平样式 | `<Timepicker flat />` |
34
- | width | `number | string` | `undefined` | 否 | 指定宽度,自动添加单位 px | `<Timepicker :width="150" />` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | value | `Value | Value[] | [Value, Value] | [Value, Value][]` | `""` | 否 | 当前选中的时间,可用 v-model 双向绑定。范围选择时为 [Value, Value] | - | `<Timepicker v-model="time" />` |
18
+ | range | `boolean` | `false` | 否 | 是否选择时间范围 | - | `<Timepicker range />` |
19
+ | multiple | `boolean` | `false` | 否 | 是否支持多选 | - | `<Timepicker multiple />` |
20
+ | filterable | `boolean` | `false` | 否 | 是否支持筛选输入 | - | `<Timepicker filterable />` |
21
+ | loading | `boolean` | `false` | 否 | 数据加载状态 | - | `<Timepicker :loading="loading" />` |
22
+ | disabled | `boolean` | `false` | 否 | 是否禁用 | - | `<Timepicker disabled />` |
23
+ | name | `string` | `undefined` | 否 | 表单元素的 name 属性 | - | `<Timepicker name="startTime" />` |
24
+ | clearable | `boolean` | `false` | 否 | 是否可清空 | - | `<Timepicker clearable />` |
25
+ | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 尺寸 | - | `<Timepicker size="small" />` |
26
+ | placeholder | `string` | `"请选择时间"` | 否 | 占位文案 | - | `<Timepicker placeholder="选择开始时间" />` |
27
+ | format | `string` | `"YYYY-MM-DD HH:mm:ss"` | 否 | 时间格式化字符串 | - | `<Timepicker format="HH:mm" />` |
28
+ | valueFormat | `string` | `undefined` | 否 | value 值的格式化字符串 | - | `<Timepicker valueFormat="HH:mm:ss" />` |
29
+ | showFormat | `string` | `undefined` | 否 | 展示的格式化字符串 | - | `<Timepicker showFormat="HH时mm分" />` |
30
+ | step | `string` | `undefined` | 否 | 固定时间点的步长,如 "00:30" 表示每 30 分钟一个选项 | - | `<Timepicker step="00:30" />` |
31
+ | min | `Value` | `undefined` | 否 | 最小可选时间 | - | `<Timepicker min="09:00:00" />` |
32
+ | max | `Value` | `undefined` | 否 | 最大可选时间 | - | `<Timepicker max="18:00:00" />` |
33
+ | disabledDate | `(v: Dayjs) => boolean` | `undefined` | 否 | 禁用日期的函数,返回 true 表示禁用该日期 | - | `<Timepicker :disabledDate="(d) => d.day() === 0" />` |
34
+ | hideIcon | `boolean` | `false` | 否 | 是否隐藏后面的图标 | - | `<Timepicker hideIcon />` |
35
+ | fluid | `boolean` | `false` | 否 | 是否宽度 100% | - | `<Timepicker fluid />` |
36
+ | inline | `boolean` | `false` | 否 | 是否展示内联模式 | - | `<Timepicker inline />` |
37
+ | flat | `boolean` | `false` | 否 | 是否展示扁平样式 | - | `<Timepicker flat />` |
38
+ | width | `number | string` | `undefined` | 否 | 指定宽度,自动添加单位 px | - | `<Timepicker :width="150" />` |
39
+ | container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定弹出菜单追加的位置,默认 Dialog 组件会追加到 Dialog 中,其他追加到 body | - | `<Timepicker :container="() => document.body" />` |
40
+ | show | `boolean` | `false` | 否 | 是否展示菜单项(受控模式) | - | `<Timepicker :show="visible" />` |
41
+ | position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'left top+8', at: 'left bottom'}` | 否 | 菜单弹出的位置 | - | `<Timepicker position="top" />` |
42
+ | nowrap | `boolean` | `false` | 否 | 选中值区域是否不换行展示,适合单行紧凑布局 | - | `<Timepicker nowrap />` |
43
+ | draggable | `boolean` | `false` | 否 | 多选值是否支持拖动排序 | - | `<Timepicker multiple draggable />` |
44
+ | virtual | `boolean` | `false` | 否 | 是否开启虚拟列表,用于大数据量场景 | - | `<Timepicker virtual />` |
35
45
 
36
46
  ## 事件 (Events)
37
47
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
@@ -39,48 +49,57 @@ import { Timepicker } from '@king-design/vue';
39
49
  | show | `@show` | 菜单弹出时触发 | `-` | `<Timepicker @show="handleShow" />` |
40
50
  | hide | `@hide` | 菜单隐藏时触发 | `-` | `<Timepicker @hide="handleHide" />` |
41
51
  | change | `@change` | 用户操作完成且值变化时触发 | `value: string` | `<Timepicker @change="handleChange" />` |
42
- | selecting | `@selecting` | 范围选择时,用户正在操作选择时触发 | `value: [Dayjs, Dayjs?]` | `<Timepicker range @selecting="handleSelecting" />` |
52
+ | selecting | `@selecting` | 范围选择时,用户正在操作选择时触发 | `value: [Dayjs, Dayjs?], confirmed: boolean` | `<Timepicker range @selecting="handleSelecting" />` |
43
53
 
44
- ### 事件处理函数示例
45
- **show**:
46
- ```typescript
47
- const handleShow = () => {
48
- console.log('时间选择器已打开');
49
- };
50
- ```
54
+ ### 事件参数说明
55
+ **change**
51
56
 
52
- **hide**:
53
- ```typescript
54
- const handleHide = () => {
55
- console.log('时间选择器已关闭');
56
- };
57
- ```
57
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
58
+ | --- | --- | --- | --- | --- |
59
+ | value | `string` | 是 | - | 当前选择的时间值 |
58
60
 
59
- **change**:
61
+ 事件处理示例:
60
62
  ```typescript
61
63
  const handleChange = (value: string) => {
62
64
  console.log('选择的时间:', value);
63
65
  };
64
66
  ```
65
67
 
66
- **selecting**:
68
+ **selecting**
69
+
70
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
71
+ | --- | --- | --- | --- | --- |
72
+ | value | `[Dayjs, Dayjs?]` | 是 | - | 当前选择的值 |
73
+ | confirmed | `boolean` | 是 | - | 当前这次 selecting 是否已经进入确认完成态;常见交互过程中通常为 `false`。 |
74
+
75
+ 事件处理示例:
67
76
  ```typescript
68
- const handleSelecting = (value) => {
69
- console.log('正在选择:', value);
77
+ const handleSelecting = (value, confirmed) => {
78
+ console.log('正在选择:', value, confirmed);
70
79
  };
71
80
  ```
72
81
 
82
+ ## 方法 (Methods)
83
+ | 方法名 | 说明 | 参数 | 返回值 |
84
+ | --- | --- | --- | --- |
85
+ | show | 主动展开时间选择面板。 | `-` | `void` |
86
+ | hide | 主动关闭时间选择面板。 | `-` | `void` |
87
+ | position | 重新计算时间选择面板的位置。 | `-` | `void` |
88
+
73
89
  ## 常见错误与正确用法 (Anti-Hallucination)
90
+ ### 范围选择时 value 类型错误
74
91
  > **错误用法**: `const time = ref('');
75
92
  <Timepicker v-model="time" range />`
76
93
  > **正确写法**: `const timeRange = ref<[string, string]>(['', '']);
77
94
  <Timepicker v-model="timeRange" range />`
78
95
  > **说明**: 当 range 为 true 时,value 必须是 [string, string] 数组
79
96
 
97
+ ### step 格式错误
80
98
  > **错误用法**: `<Timepicker step="30" /> <!-- 期望 30 分钟 -->`
81
99
  > **正确写法**: `<Timepicker step="00:30" />`
82
100
  > **说明**: step 应使用时间格式字符串,如 "00:30" 表示 30 分钟
83
101
 
102
+ ### min/max 格式与 format 不匹配
84
103
  > **错误用法**: `<Timepicker min="9:00" max="18:00" /> <!-- 缺少秒 -->`
85
104
  > **正确写法**: `<Timepicker min="09:00:00" max="18:00:00" />`
86
105
  > **说明**: min/max 应使用完整的时间格式
@@ -0,0 +1,157 @@
1
+ # 时间范围 (TimeRange)
2
+
3
+ 面向报表、监控和日志场景的时间范围选择组件,支持快捷区间、自定义起止时间以及时间戳格式输出。
4
+
5
+ **关键词**: time range, date range, time filter, 时间范围, 时间筛选, 快捷时间, 监控时间段, 日志时间查询
6
+
7
+ **使用场景**: 监控页时间筛选、报表页时间范围选择、日志页最近时间窗口查询、按快捷区间切换统计周期
8
+
9
+ ## 导入语句
10
+ ```typescript
11
+ import { TimeRange } from '@ksyun-internal/versatile';
12
+ ```
13
+
14
+ ## 属性 (Props)
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | type | `"date" | "datetime" | "year" | "month"` | `"date"` | 否 | 组件类型 | `inherited:Datepicker` | `<Datepicker type="datetime" />` |
18
+ | range | `boolean` | `false` | 否 | 是否选择日期范围 | `inherited:Datepicker` | `<Datepicker range />` |
19
+ | multiple | `boolean` | `false` | 否 | 是否支持多选 | `inherited:Datepicker` | `<Datepicker multiple />` |
20
+ | filterable | `boolean` | `false` | 否 | 是否支持筛选输入 | `inherited:Datepicker` | `<Datepicker filterable />` |
21
+ | loading | `boolean` | `false` | 否 | 数据加载状态 | `inherited:Datepicker` | `<Datepicker :loading="loading" />` |
22
+ | disabled | `boolean` | `false` | 否 | 是否禁用 | `inherited:Datepicker` | `<Datepicker disabled />` |
23
+ | name | `string` | `undefined` | 否 | 表单元素的 name 属性 | `inherited:Datepicker` | `<Datepicker name="startDate" />` |
24
+ | clearable | `boolean` | `false` | 否 | 是否可清空 | `inherited:Datepicker` | `<Datepicker clearable />` |
25
+ | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 尺寸 | `inherited:Datepicker` | `<Datepicker size="small" />` |
26
+ | placeholder | `string` | `"请选择日期"` | 否 | 占位文案 | `inherited:Datepicker` | `<Datepicker placeholder="选择开始日期" />` |
27
+ | format | `string` | `"YYYY-MM-DD HH:mm:ss"` | 否 | 日期格式化字符串 | - | - |
28
+ | valueFormat | `string` | `undefined` | 否 | value 值的日期格式化字符串 | `inherited:Datepicker` | `<Datepicker valueFormat="YYYY-MM-DD" />` |
29
+ | showFormat | `string` | `undefined` | 否 | 展示的日期格式化字符串 | `inherited:Datepicker` | `<Datepicker showFormat="YYYY年MM月DD日" />` |
30
+ | min | `Value` | `undefined` | 否 | 最小可选日期 | `inherited:Datepicker` | `<Datepicker min="2024-01-01" />` |
31
+ | max | `Value` | `undefined` | 否 | 最大可选日期 | `inherited:Datepicker` | `<Datepicker max="2024-12-31" />` |
32
+ | disabledDate | `(v: Dayjs) => boolean` | `undefined` | 否 | 禁用日期的函数,返回 true 表示禁用该日期 | `inherited:Datepicker` | `<Datepicker :disabledDate="(d) => d.day() === 0" />` |
33
+ | shortcuts | `Shortcut[]` | `undefined` | 否 | 快捷方式配置 | `inherited:Datepicker` | `<Datepicker :shortcuts="shortcuts" />` |
34
+ | hideIcon | `boolean` | `false` | 否 | 是否隐藏后面的图标 | `inherited:Datepicker` | `<Datepicker hideIcon />` |
35
+ | fluid | `boolean` | `false` | 否 | 是否宽度 100% | `inherited:Datepicker` | `<Datepicker fluid />` |
36
+ | inline | `boolean` | `false` | 否 | 是否展示内联模式 | `inherited:Datepicker` | `<Datepicker inline />` |
37
+ | flat | `boolean` | `false` | 否 | 是否展示扁平样式 | `inherited:Datepicker` | `<Datepicker flat />` |
38
+ | width | `number | string` | `undefined` | 否 | 指定宽度,自动添加单位 px | `inherited:Datepicker` | `<Datepicker :width="200" />` |
39
+ | container | `Container` | `undefined` | 否 | 弹出层挂载容器 | - | - |
40
+ | show | `boolean` | `false` | 否 | 是否展示菜单项(受控模式) | `inherited:Datepicker` | `<Datepicker :show="visible" />` |
41
+ | position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'left top+8', at: 'left bottom'}` | 否 | 菜单弹出的位置 | `inherited:Datepicker` | `<Datepicker position="top" />` |
42
+ | nowrap | `boolean` | `false` | 否 | 选中值区域是否不换行展示,适合单行紧凑布局 | `inherited:Datepicker` | `<Datepicker nowrap />` |
43
+ | draggable | `boolean` | `false` | 否 | 多选值是否支持拖动排序 | `inherited:Datepicker` | `<Datepicker multiple draggable />` |
44
+ | virtual | `boolean` | `false` | 否 | 是否开启虚拟列表,用于大数据量场景 | `inherited:Datepicker` | `<Datepicker virtual />` |
45
+ | modelValue | `[number, number] | [string, string]` | `undefined` | 否 | 当前选中的时间范围 | - | - |
46
+ | startTime | `string | number` | `undefined` | 否 | 当前时间范围的开始时间 | - | - |
47
+ | endTime | `string | number` | `undefined` | 否 | 当前时间范围的结束时间 | - | - |
48
+ | label | `string` | `""` | 否 | 组件标题文案 | - | - |
49
+ | times | `(Time | number | 'today' | 'yesterday')[]` | `undefined` | 否 | 快捷时间范围配置,支持分钟数或 today / yesterday 等枚举 | - | - |
50
+ | defaultValue | `number | 'today' | 'yesterday'` | `undefined` | 否 | 首次渲染时使用的默认快捷值 | - | - |
51
+ | timestamp | `boolean` | `false` | 否 | 是否以时间戳格式返回值 | - | - |
52
+
53
+ ## 事件 (Events)
54
+ | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
55
+ | --- | --- | --- | --- | --- |
56
+ | update:modelValue | `@update:modelValue` | 整个时间范围值变化时触发,适合直接驱动查询参数。 | `value?: TimeModelType` | - |
57
+ | update:startTime | `@update:startTime` | 开始时间变化时触发,可用于单独记录查询区间起点。 | `value?: string | number` | - |
58
+ | update:endTime | `@update:endTime` | 结束时间变化时触发,可用于单独记录查询区间终点。 | `value?: string | number` | - |
59
+
60
+ ### 事件参数说明
61
+ **update:modelValue**
62
+
63
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
64
+ | --- | --- | --- | --- | --- |
65
+ | value | `TimeModelType` | 否 | - | 当前完整时间范围,可能是时间戳元组或格式化后的字符串元组。 |
66
+
67
+ **update:startTime**
68
+
69
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
70
+ | --- | --- | --- | --- | --- |
71
+ | value | `string | number` | 否 | - | 当前开始时间值;`timestamp=true` 时通常是时间戳,否则为格式化字符串。 |
72
+
73
+ **update:endTime**
74
+
75
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
76
+ | --- | --- | --- | --- | --- |
77
+ | value | `string | number` | 否 | - | 当前结束时间值;`timestamp=true` 时通常是时间戳,否则为格式化字符串。 |
78
+
79
+ ## 方法 (Methods)
80
+ | 方法名 | 说明 | 参数 | 返回值 |
81
+ | --- | --- | --- | --- |
82
+ | setTimeValue | 按快捷值主动切换时间范围 | `value: number | 'today' | 'yesterday'` | `void` |
83
+ | refetch | 刷新当前时间范围到最新时间 | `value?: number | 'today' | 'yesterday'` | `void` |
84
+
85
+ ### 方法参数说明
86
+ **setTimeValue**
87
+
88
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
89
+ | --- | --- | --- | --- | --- |
90
+ | value | `number | 'today' | 'yesterday'` | 是 | - | 目标快捷值,可传分钟数或 `today`、`yesterday` 这类内置快捷标识。 |
91
+
92
+ **refetch**
93
+
94
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
95
+ | --- | --- | --- | --- | --- |
96
+ | value | `number | 'today' | 'yesterday'` | 否 | - | 可选的快捷值;传入后会先切换到该快捷区间,再把结束时间刷新到当前最新时刻。 |
97
+
98
+ ## 使用示例
99
+ ### 监控页时间筛选
100
+ **场景**: 在监控和报表页面中切换查询时间范围。
101
+
102
+ 提供最近 1 小时、最近 24 小时等快捷时间范围。
103
+
104
+ **使用的 API**: 属性: modelValue, label, times, timestamp | 事件: update:modelValue, update:startTime, update:endTime
105
+
106
+ ```vue
107
+ <script setup lang="ts">
108
+ import { ref } from 'vue';
109
+ import { TimeRange } from '@ksyun-internal/versatile';
110
+
111
+ const timeRange = ref<[number, number] | undefined>();
112
+ </script>
113
+
114
+ <template>
115
+ <TimeRange
116
+ v-model="timeRange"
117
+ label="统计周期"
118
+ :times="[60, 360, 'today']"
119
+ :timestamp="true"
120
+ />
121
+ </template>
122
+ ```
123
+
124
+ ### 刷新到最新时间窗口
125
+ **场景**: 在日志和监控页面中一键把查询区间重置到最新时间窗口。
126
+
127
+ 通过组件方法把当前时间范围刷新到最新时刻,适合日志和监控实时查看场景。
128
+
129
+ **使用的 API**: 属性: modelValue, times, defaultValue, timestamp | 事件: update:modelValue | 方法: refetch
130
+
131
+ ```vue
132
+ <script setup lang="ts">
133
+ import { ref } from 'vue';
134
+ import { TimeRange } from '@ksyun-internal/versatile';
135
+
136
+ const rangeRef = ref<InstanceType<typeof TimeRange>>();
137
+ const timeRange = ref<[number, number] | undefined>();
138
+ const refreshLatest = () => {
139
+ rangeRef.value?.refetch(60);
140
+ };
141
+ </script>
142
+
143
+ <template>
144
+ <button @click="refreshLatest">刷新最近 1 小时</button>
145
+ <TimeRange
146
+ ref="rangeRef"
147
+ v-model="timeRange"
148
+ :times="[60, 360, 1440]"
149
+ :default-value="60"
150
+ :timestamp="true"
151
+ />
152
+ </template>
153
+ ```
154
+
155
+ ## 相关组件
156
+ Datepicker, Duration
157
+
@@ -12,23 +12,29 @@ import { Tip } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | type | `"default" | "primary" | "success" | "warning" | "danger"` | `"default"` | 否 | 提示类型 | `<Tip type="warning">警告内容</Tip>` |
18
- | closable | `boolean` | `false` | 否 | 是否可关闭 | `<Tip closable>可关闭的提示</Tip>` |
19
- | closed | `boolean` | `false` | 否 | 是否已关闭,可用 v-model:closed 双向绑定 | `<Tip :closed="isClosed">提示</Tip>` |
20
- | showIcon | `boolean` | `false` | 否 | 是否展示图标 | `<Tip type="success" showIcon>成功</Tip>` |
21
- | disabled | `boolean` | `false` | 否 | 是否展示禁用状态 | `<Tip disabled>禁用状态</Tip>` |
22
- | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 组件尺寸 | `<Tip size="small">小尺寸提示</Tip>` |
23
- | border | `"solid" | "dashed" | "none"` | `"solid"` | 否 | 边框样式 | `<Tip border="dashed">虚线边框</Tip>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | type | `"default" | "primary" | "success" | "warning" | "danger"` | `"default"` | 否 | 提示类型 | - | `<Tip type="warning">警告内容</Tip>` |
18
+ | closable | `boolean` | `false` | 否 | 是否可关闭 | - | `<Tip closable>可关闭的提示</Tip>` |
19
+ | closed | `boolean` | `false` | 否 | 是否已关闭,可用 v-model:closed 双向绑定 | - | `<Tip :closed="isClosed">提示</Tip>` |
20
+ | showIcon | `boolean` | `false` | 否 | 是否展示图标 | - | `<Tip type="success" showIcon>成功</Tip>` |
21
+ | disabled | `boolean` | `false` | 否 | 是否展示禁用状态 | - | `<Tip disabled>禁用状态</Tip>` |
22
+ | size | `"large" | "default" | "small" | "mini"` | `"default"` | 否 | 组件尺寸 | - | `<Tip size="small">小尺寸提示</Tip>` |
23
+ | border | `"solid" | "dashed" | "none"` | `"solid"` | 否 | 边框样式 | - | `<Tip border="dashed">虚线边框</Tip>` |
24
24
 
25
25
  ## 事件 (Events)
26
26
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
27
27
  | --- | --- | --- | --- | --- |
28
28
  | close | `@close` | 关闭时触发 | `e: MouseEvent` | `<Tip closable @close="handleClose"></Tip>` |
29
29
 
30
- ### 事件处理函数示例
31
- **close**:
30
+ ### 事件参数说明
31
+ **close**
32
+
33
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
34
+ | --- | --- | --- | --- | --- |
35
+ | e | `MouseEvent` | 是 | - | 原生鼠标事件 |
36
+
37
+ 事件处理示例:
32
38
  ```typescript
33
39
  const handleClose = (e: MouseEvent) => {
34
40
  console.log('提示已关闭');
@@ -36,14 +42,17 @@ const handleClose = (e: MouseEvent) => {
36
42
  ```
37
43
 
38
44
  ## 常见错误与正确用法 (Anti-Hallucination)
45
+ ### 使用 closable 但未处理关闭逻辑
39
46
  > **错误用法**: `<Tip closable>提示</Tip> <!-- 点击关闭按钮不会隐藏 -->`
40
47
  > **正确写法**: `<Tip closable :closed="closed" @close="handleClose">提示</Tip>`
41
48
  > **说明**: closable 只显示关闭按钮,需要监听 close 事件并设置 closed 来隐藏
42
49
 
50
+ ### type 值拼写错误
43
51
  > **错误用法**: `<Tip type="error">错误</Tip>`
44
52
  > **正确写法**: `<Tip type="danger">错误</Tip>`
45
53
  > **说明**: 错误类型应使用 danger 而非 error
46
54
 
55
+ ### showIcon 大小写错误
47
56
  > **错误用法**: `<Tip showicon>提示</Tip>`
48
57
  > **正确写法**: `<Tip showIcon>提示</Tip>`
49
58
  > **说明**: 属性名是 showIcon(驼峰命名)
@@ -12,58 +12,84 @@ import { Tooltip } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | content | `string | VNode` | `undefined` | 否 | 提示的内容 | `<Tooltip content="提示内容"></Tooltip>` |
18
- | trigger | `"hover" | "click" | "focus"` | `"hover"` | 否 | 触发方式 | `<Tooltip trigger="click"></Tooltip>` |
19
- | value | `boolean` | `false` | 否 | 是否展示弹层,可用 v-model 双向绑定 | `<Tooltip v-model="visible"></Tooltip>` |
20
- | disabled | `boolean` | `false` | 否 | 是否禁用提示 | `<Tooltip disabled></Tooltip>` |
21
- | position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'center bottom-10', at: 'center top', collision: 'flipfit'}` | 否 | 弹层弹出的位置,默认在触发器正上方 | `<Tooltip position="bottom"></Tooltip>` |
22
- | theme | `"dark" | "light"` | `"dark"` | 否 | 主题 | `<Tooltip theme="light"></Tooltip>` |
23
- | showArrow | `boolean` | `true` | 否 | 弹层是否展示箭头 | `<Tooltip :showArrow="false"></Tooltip>` |
24
- | hoverable | `boolean` | `false` | 否 | 对于悬浮触发方式,提示弹层是否在鼠标悬浮时仍然展示 | `<Tooltip hoverable></Tooltip>` |
25
- | always | `boolean` | `false` | 否 | 是否一直保持当前展示/隐藏状态 | `<Tooltip always></Tooltip>` |
26
- | size | `"default" | "small"` | `"default"` | 否 | 弹层尺寸 | `<Tooltip size="small"></Tooltip>` |
27
- | of | `"self" | "parent" | Event` | `"self"` | 否 | 弹出菜单的位置是相对当前触发元素还是父元素 | `<Tooltip of="parent"></Tooltip>` |
28
- | container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定弹出菜单追加的位置 | `<Tooltip :container="() => document.body"></Tooltip>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | content | `string | VNode` | `undefined` | 否 | 提示的内容 | - | `<Tooltip content="提示内容">` |
18
+ | trigger | `"hover" | "click" | "focus"` | `"hover"` | 否 | 触发方式 | - | `<Tooltip trigger="click">` |
19
+ | value | `boolean` | `false` | 否 | 是否展示弹层,可用 v-model 双向绑定 | - | `<Tooltip v-model="visible">` |
20
+ | disabled | `boolean` | `false` | 否 | 是否禁用提示 | - | `<Tooltip disabled>` |
21
+ | position | `Position | "left" | "bottom" | "right" | "top"` | `{my: 'center bottom-10', at: 'center top', collision: 'flipfit'}` | 否 | 弹层弹出的位置,默认在触发器正上方 | - | `<Tooltip position="bottom">` |
22
+ | collison | `Collision | [Collision, Collision]` | `undefined` | 否 | 碰撞检测策略,控制弹层超出边界时的处理方式。注意源码字段名拼写为 collison。 | - | `<Tooltip :collison="'flipfit'">` |
23
+ | theme | `"dark" | "light"` | `"dark"` | 否 | 主题 | - | `<Tooltip theme="light">` |
24
+ | showArrow | `boolean` | `true` | 否 | 弹层是否展示箭头 | - | `<Tooltip :showArrow="false">` |
25
+ | hoverable | `boolean` | `false` | 否 | 对于悬浮触发方式,提示弹层是否在鼠标悬浮时仍然展示 | - | `<Tooltip hoverable>` |
26
+ | always | `boolean` | `false` | 否 | 是否一直保持当前展示/隐藏状态 | - | `<Tooltip always>` |
27
+ | size | `"default" | "small"` | `"default"` | 否 | 弹层尺寸 | - | `<Tooltip size="small">` |
28
+ | of | `"self" | "parent" | Event` | `"self"` | 否 | 弹出菜单的位置是相对当前触发元素还是父元素 | - | `<Tooltip of="parent">` |
29
+ | container | `string | ((parentDom: Element, anchor: Node | null) => Element)` | `undefined` | 否 | 指定弹出菜单追加的位置 | - | `<Tooltip :container="() => document.body">` |
30
+ | alwaysShowOnClick | `boolean` | `false` | 否 | 不管什么触发方式,重复点击触发器都不隐藏弹层 | - | `<Tooltip alwaysShowOnClick>` |
29
31
 
30
32
  ## 事件 (Events)
31
33
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
32
34
  | --- | --- | --- | --- | --- |
33
- | show | `@show` | 弹层展示时触发 | `-` | `<Tooltip @show="handleShow"></Tooltip>` |
34
- | hide | `@hide` | 弹层隐藏时触发 | `-` | `<Tooltip @hide="handleHide"></Tooltip>` |
35
+ | show | `@show` | 弹层展示时触发 | `-` | `<Tooltip @show="handleShow">` |
36
+ | hide | `@hide` | 弹层隐藏时触发 | `-` | `<Tooltip @hide="handleHide">` |
37
+ | positioned | `@positioned` | 提示弹层完成定位计算后触发,可用于读取最终落位结果。 | `feedback: Feedback` | `<Tooltip @positioned="handlePositioned">` |
35
38
 
36
- ### 事件处理函数示例
37
- **show**:
38
- ```typescript
39
- const handleShow = () => {
40
- console.log('Tooltip 已展示');
41
- };
42
- ```
39
+ ### 事件参数说明
40
+ **positioned**
43
41
 
44
- **hide**:
42
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
43
+ | --- | --- | --- | --- | --- |
44
+ | feedback | `Feedback` | 是 | - | 定位反馈对象,描述当前 Tooltip 的最终 placement 和坐标信息。 |
45
+
46
+ 事件处理示例:
45
47
  ```typescript
46
- const handleHide = () => {
47
- console.log('Tooltip 已隐藏');
48
+ const handlePositioned = (feedback: Feedback) => {
49
+ console.log('Tooltip 最终位置', feedback.placement);
48
50
  };
49
51
  ```
50
52
 
51
- ## 插槽 (Slots)
52
- | 插槽名 | 说明 | 模板写法 | 示例 |
53
+ ## 方法 (Methods)
54
+ | 方法名 | 说明 | 参数 | 返回值 |
53
55
  | --- | --- | --- | --- |
54
- | content | 自定义提示内容 | `undefined` | - |
56
+ | show | 主动显示提示弹层。 | `shouldFocus?: boolean` | `void` |
57
+ | hide | 主动隐藏提示弹层。 | `immediately: boolean` | `void` |
58
+ | position | 重新计算提示弹层的位置。 | `callback?: (feedback: Feedback) => void` | `void` |
59
+
60
+ ### 方法参数说明
61
+ **show**
62
+
63
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
64
+ | --- | --- | --- | --- | --- |
65
+ | shouldFocus | `boolean` | 否 | - | 显示后是否尝试把焦点移动到弹层内容。 |
66
+
67
+ **hide**
68
+
69
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
70
+ | --- | --- | --- | --- | --- |
71
+ | immediately | `boolean` | 是 | - | 是否立即隐藏,用于手动控制点击确认型 Tooltip 的关闭时机。 |
72
+
73
+ **position**
74
+
75
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
76
+ | --- | --- | --- | --- | --- |
77
+ | callback | `(feedback: Feedback) => void` | 否 | - | 定位完成后的回调,可读取最终 placement 和坐标。 |
55
78
 
56
79
  ## 常见错误与正确用法 (Anti-Hallucination)
80
+ ### 未提供触发元素
57
81
  > **错误用法**: `<Tooltip content="提示" />`
58
82
  > **正确写法**: `<Tooltip content="提示">
59
83
  <Button>触发器</Button>
60
84
  </Tooltip>`
61
85
  > **说明**: Tooltip 需要包裹一个子元素作为触发器
62
86
 
87
+ ### position 值拼写错误
63
88
  > **错误用法**: `<Tooltip position="buttom">`
64
89
  > **正确写法**: `<Tooltip position="bottom">`
65
90
  > **说明**: position 只支持 top, bottom, left, right,注意拼写
66
91
 
92
+ ### 使用 hoverable 但 content 不可交互
67
93
  > **错误用法**: `<Tooltip hoverable content="纯文本" /> <!-- hoverable 无意义 -->`
68
94
  > **正确写法**: `<Tooltip hoverable>
69
95
  <Button>触发</Button>
@@ -12,43 +12,63 @@ import { Tour, TourStep } from '@king-design/vue';
12
12
  ```
13
13
 
14
14
  ## 属性 (Props)
15
- | 属性名 | 类型 | 默认值 | 必填 | 说明 | 示例 |
16
- | --- | --- | --- | --- | --- | --- |
17
- | value | `number` | `0` | 否 | 当前显示的步骤索引(从0开始),可用 v-model 双向绑定 | `<Tour v-model="currentStep"></Tour>` |
18
- | visible | `boolean` | `true` | 否 | 是否展示引导组件 | `<Tour :visible="showTour"></Tour>` |
19
- | data | `TourStepData[]` | `undefined` | 否 | 步骤数据数组,用于数据驱动方式 | `<Tour :data="tourData"></Tour>` |
20
- | beforeChange | `(current: number) => boolean | Promise<boolean>` | `undefined` | 否 | 步骤切换前的回调函数,返回 false 可阻止切换,支持异步 | `<Tour :beforeChange="handleBeforeChange"></Tour>` |
21
- | maskClosable | `boolean` | `false` | 否 | 点击遮罩层是否可关闭 | `<Tour maskClosable></Tour>` |
22
- | closable | `boolean` | `true` | 否 | 是否展示关闭图标 | `<Tour :closable="false"></Tour>` |
23
- | doneText | `string` | `"完成"` | 否 | 完成按钮文本 | `<Tour doneText="结束引导"></Tour>` |
15
+ | 属性名 | 类型 | 默认值 | 必填 | 说明 | 标签 | 示例 |
16
+ | --- | --- | --- | --- | --- | --- | --- |
17
+ | value | `number` | `0` | 否 | 当前显示的步骤索引(从0开始),可用 v-model 双向绑定 | - | `<Tour v-model="currentStep">` |
18
+ | theme | `"dark" | "light"` | `"light"` | 否 | 引导浮层主题 | - | `<Tour theme="dark" />` |
19
+ | visible | `boolean` | `true` | 否 | 是否展示引导组件 | - | `<Tour :visible="showTour">` |
20
+ | data | `TourStepData[]` | `undefined` | 否 | 步骤数据数组,用于数据驱动方式 | - | `<Tour :data="tourData">` |
21
+ | beforeChange | `(current: number) => boolean | Promise<boolean>` | `undefined` | 否 | 步骤切换前的回调函数,返回 false 可阻止切换,支持异步 | - | `<Tour :beforeChange="handleBeforeChange">` |
22
+ | maskClosable | `boolean` | `false` | 否 | 点击遮罩层是否可关闭 | - | `<Tour maskClosable>` |
23
+ | closable | `boolean` | `true` | 否 | 是否展示关闭图标 | - | `<Tour :closable="false">` |
24
+ | doneText | `string` | `"完成"` | 否 | 完成按钮文本 | - | `<Tour doneText="结束引导">` |
25
+ | showArrow | `boolean` | `true` | 否 | 是否展示指向目标元素的箭头 | - | `<Tour :showArrow="false" />` |
24
26
 
25
27
  ## 事件 (Events)
26
28
  | 事件名 | Vue事件名 | 说明 | 回调参数 | 示例 |
27
29
  | --- | --- | --- | --- | --- |
28
- | prev | `@prev` | 点击上一步按钮时触发 | `index: number` | `<Tour @prev="handlePrev"></Tour>` |
29
- | next | `@next` | 点击下一步按钮时触发 | `index: number` | `<Tour @next="handleNext"></Tour>` |
30
- | finish | `@finish` | 引导完成或关闭时触发 | `-` | `<Tour @finish="handleFinish"></Tour>` |
30
+ | prev | `@prev` | 点击上一步按钮时触发 | `index: number` | `<Tour @prev="handlePrev">` |
31
+ | next | `@next` | 点击下一步按钮时触发 | `index: number` | `<Tour @next="handleNext">` |
32
+ | finish | `@finish` | 引导完成或关闭时触发 | `-` | `<Tour @finish="handleFinish">` |
33
+ | positioned | `@positioned` | 当前步骤定位完成后触发,可用于读取最终计算位置或做埋点。 | `feedback: Feedback` | `<Tour @positioned="handlePositioned">` |
31
34
 
32
- ### 事件处理函数示例
33
- **prev**:
35
+ ### 事件参数说明
36
+ **prev**
37
+
38
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
39
+ | --- | --- | --- | --- | --- |
40
+ | index | `number` | 是 | - | 当前步骤索引 |
41
+
42
+ 事件处理示例:
34
43
  ```typescript
35
44
  const handlePrev = (index: number) => {
36
45
  console.log(`从步骤 ${index} 返回`);
37
46
  };
38
47
  ```
39
48
 
40
- **next**:
49
+ **next**
50
+
51
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
52
+ | --- | --- | --- | --- | --- |
53
+ | index | `number` | 是 | - | 当前步骤索引 |
54
+
55
+ 事件处理示例:
41
56
  ```typescript
42
57
  const handleNext = (index: number) => {
43
58
  console.log(`从步骤 ${index} 前进`);
44
59
  };
45
60
  ```
46
61
 
47
- **finish**:
62
+ **positioned**
63
+
64
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
65
+ | --- | --- | --- | --- | --- |
66
+ | feedback | `Feedback` | 是 | - | 定位反馈对象,包含当前步骤最终落位信息。 |
67
+
68
+ 事件处理示例:
48
69
  ```typescript
49
- const handleFinish = () => {
50
- showTour.value = false;
51
- console.log('引导完成');
70
+ const handlePositioned = (feedback: Feedback) => {
71
+ console.log('当前定位结果', feedback.placement);
52
72
  };
53
73
  ```
54
74
 
@@ -58,26 +78,25 @@ const handleFinish = () => {
58
78
 
59
79
  | 属性名 | 类型 | 说明 | 示例 |
60
80
  | --- | --- | --- | --- |
61
- | target | `string | HTMLElement` | 目标元素,可以是 CSS 选择器或 DOM 元素。不指定则居中显示 | `<TourStep target="#btn1"></TourStep>` |
62
- | title | `string | VNode` | 步骤标题 | `<TourStep title="第一步"></TourStep>` |
63
- | content | `string | VNode` | 步骤内容 | `<TourStep content="这是引导说明"></TourStep>` |
64
- | position | `"top" | "right" | "bottom" | "left"` | 弹出位置 | `<TourStep position="top"></TourStep>` |
65
- | nextText | `string` | 下一步按钮文本 | `<TourStep nextText="继续"></TourStep>` |
66
- | prevText | `string` | 上一步按钮文本 | `<TourStep prevText="返回"></TourStep>` |
67
-
68
- **插槽**:
69
- - `undefined`: 自定义标题内容
70
- - `undefined`: 自定义底部内容
81
+ | target | `string | HTMLElement` | 目标元素,可以是 CSS 选择器或 DOM 元素。不指定则居中显示 | `<TourStep target="#btn1">` |
82
+ | title | `string | VNode` | 步骤标题 | `<TourStep title="第一步">` |
83
+ | content | `string | VNode` | 步骤内容 | `<TourStep content="这是引导说明">` |
84
+ | position | `"top" | "right" | "bottom" | "left"` | 弹出位置 | `<TourStep position="top">` |
85
+ | nextText | `string` | 下一步按钮文本 | `<TourStep nextText="继续">` |
86
+ | prevText | `string` | 上一步按钮文本 | `<TourStep prevText="返回">` |
71
87
 
72
88
  ## 常见错误与正确用法 (Anti-Hallucination)
89
+ ### target 选择器未匹配到元素
73
90
  > **错误用法**: `<TourStep target="btn1" /> <!-- 缺少 # -->`
74
91
  > **正确写法**: `<TourStep target="#btn1" />`
75
92
  > **说明**: target 使用 CSS 选择器,ID 选择器需要加 # 前缀
76
93
 
94
+ ### 未正确控制 visible 状态
77
95
  > **错误用法**: `<Tour :visible="true" /> <!-- 无法关闭 -->`
78
96
  > **正确写法**: `<Tour :visible="showTour" @finish="showTour = false" />`
79
97
  > **说明**: 需要通过响应式变量和 finish 事件控制显示隐藏
80
98
 
99
+ ### 步骤索引从 1 开始
81
100
  > **错误用法**: `const currentStep = ref(1); // 期望从第一步开始`
82
101
  > **正确写法**: `const currentStep = ref(0); // 第一步索引为 0`
83
102
  > **说明**: 步骤索引从 0 开始,0 表示第一步