@xihan-ui/vue 2.0.0 → 3.0.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 (669) hide show
  1. package/CHANGELOG.md +1593 -0
  2. package/README.md +1 -1
  3. package/dist/components/accordion/accordion.d.ts +6 -0
  4. package/dist/components/accordion/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion/accordion.js +4 -2
  6. package/dist/components/accordion/accordion.js.map +1 -1
  7. package/dist/components/alert/alert.d.ts +9 -0
  8. package/dist/components/alert/alert.d.ts.map +1 -1
  9. package/dist/components/alert/alert.js +4 -0
  10. package/dist/components/alert/alert.js.map +1 -1
  11. package/dist/components/anchor/anchor.d.ts +2 -2
  12. package/dist/components/anchor/anchor.d.ts.map +1 -1
  13. package/dist/components/anchor/anchor.js +2 -2
  14. package/dist/components/anchor/anchor.js.map +1 -1
  15. package/dist/components/anchor/use-anchor.d.ts +2 -2
  16. package/dist/components/anchor/use-anchor.js +3 -3
  17. package/dist/components/anchor/use-anchor.js.map +1 -1
  18. package/dist/components/approval/approval.d.ts +8 -1
  19. package/dist/components/approval/approval.d.ts.map +1 -1
  20. package/dist/components/approval/approval.js +10 -1
  21. package/dist/components/approval/approval.js.map +1 -1
  22. package/dist/components/avatar/avatar.d.ts +8 -0
  23. package/dist/components/avatar/avatar.d.ts.map +1 -1
  24. package/dist/components/avatar/avatar.js +3 -1
  25. package/dist/components/avatar/avatar.js.map +1 -1
  26. package/dist/components/avatar/use-avatar.d.ts.map +1 -1
  27. package/dist/components/avatar/use-avatar.js +3 -1
  28. package/dist/components/avatar/use-avatar.js.map +1 -1
  29. package/dist/components/avatar-group/avatar-group.d.ts.map +1 -1
  30. package/dist/components/avatar-group/avatar-group.js +2 -1
  31. package/dist/components/avatar-group/avatar-group.js.map +1 -1
  32. package/dist/components/back-top/use-back-top.d.ts.map +1 -1
  33. package/dist/components/back-top/use-back-top.js +3 -1
  34. package/dist/components/back-top/use-back-top.js.map +1 -1
  35. package/dist/components/badge/badge.d.ts +22 -0
  36. package/dist/components/badge/badge.d.ts.map +1 -1
  37. package/dist/components/badge/badge.js +11 -2
  38. package/dist/components/badge/badge.js.map +1 -1
  39. package/dist/components/breadcrumb/breadcrumb.d.ts +11 -1
  40. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  41. package/dist/components/breadcrumb/breadcrumb.js +28 -9
  42. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  43. package/dist/components/calendar-picker/calendar-picker.d.ts +16 -0
  44. package/dist/components/calendar-picker/calendar-picker.d.ts.map +1 -1
  45. package/dist/components/calendar-picker/calendar-picker.js +4 -0
  46. package/dist/components/calendar-picker/calendar-picker.js.map +1 -1
  47. package/dist/components/calendar-range-picker/calendar-range-picker.d.ts +16 -0
  48. package/dist/components/calendar-range-picker/calendar-range-picker.d.ts.map +1 -1
  49. package/dist/components/calendar-range-picker/calendar-range-picker.js +4 -0
  50. package/dist/components/calendar-range-picker/calendar-range-picker.js.map +1 -1
  51. package/dist/components/card/card.d.ts +37 -2
  52. package/dist/components/card/card.d.ts.map +1 -1
  53. package/dist/components/card/card.js +42 -3
  54. package/dist/components/card/card.js.map +1 -1
  55. package/dist/components/carousel/carousel.d.ts +7 -1
  56. package/dist/components/carousel/carousel.d.ts.map +1 -1
  57. package/dist/components/carousel/carousel.js +1 -0
  58. package/dist/components/carousel/carousel.js.map +1 -1
  59. package/dist/components/carousel/use-carousel.d.ts.map +1 -1
  60. package/dist/components/carousel/use-carousel.js +3 -1
  61. package/dist/components/carousel/use-carousel.js.map +1 -1
  62. package/dist/components/cartesian-chart/cartesian-chart.d.ts +262 -0
  63. package/dist/components/cartesian-chart/cartesian-chart.d.ts.map +1 -0
  64. package/dist/components/cartesian-chart/cartesian-chart.js +293 -0
  65. package/dist/components/cartesian-chart/cartesian-chart.js.map +1 -0
  66. package/dist/components/cartesian-chart/context.js +15 -0
  67. package/dist/components/cartesian-chart/context.js.map +1 -0
  68. package/dist/components/cartesian-chart/use-cartesian-chart.d.ts +21 -0
  69. package/dist/components/cartesian-chart/use-cartesian-chart.d.ts.map +1 -0
  70. package/dist/components/cartesian-chart/use-cartesian-chart.js +29 -0
  71. package/dist/components/cartesian-chart/use-cartesian-chart.js.map +1 -0
  72. package/dist/components/cascader/cascader.d.ts +72 -3
  73. package/dist/components/cascader/cascader.d.ts.map +1 -1
  74. package/dist/components/cascader/cascader.js +125 -7
  75. package/dist/components/cascader/cascader.js.map +1 -1
  76. package/dist/components/cascader/context.js +10 -1
  77. package/dist/components/cascader/context.js.map +1 -1
  78. package/dist/components/cascader/use-cascader.d.ts +2 -1
  79. package/dist/components/cascader/use-cascader.d.ts.map +1 -1
  80. package/dist/components/cascader/use-cascader.js +4 -1
  81. package/dist/components/cascader/use-cascader.js.map +1 -1
  82. package/dist/components/checkbox/checkbox.js +1 -1
  83. package/dist/components/checkbox-group/checkbox-group.d.ts +24 -3
  84. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  85. package/dist/components/checkbox-group/checkbox-group.js +20 -3
  86. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  87. package/dist/components/citation/citation.d.ts +211 -0
  88. package/dist/components/citation/citation.d.ts.map +1 -0
  89. package/dist/components/citation/citation.js +222 -0
  90. package/dist/components/citation/citation.js.map +1 -0
  91. package/dist/components/citation/context.d.ts +11 -0
  92. package/dist/components/citation/context.d.ts.map +1 -0
  93. package/dist/components/citation/context.js +24 -0
  94. package/dist/components/citation/context.js.map +1 -0
  95. package/dist/components/citation/use-citation.d.ts +19 -0
  96. package/dist/components/citation/use-citation.d.ts.map +1 -0
  97. package/dist/components/citation/use-citation.js +51 -0
  98. package/dist/components/citation/use-citation.js.map +1 -0
  99. package/dist/components/code-view/code-view.d.ts +21 -0
  100. package/dist/components/code-view/code-view.d.ts.map +1 -1
  101. package/dist/components/code-view/code-view.js +23 -4
  102. package/dist/components/code-view/code-view.js.map +1 -1
  103. package/dist/components/collapsible/collapsible.d.ts +6 -0
  104. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  105. package/dist/components/collapsible/collapsible.js +4 -2
  106. package/dist/components/collapsible/collapsible.js.map +1 -1
  107. package/dist/components/color-field/color-field.d.ts +2 -2
  108. package/dist/components/color-field/color-field.js +1 -1
  109. package/dist/components/color-field/color-field.js.map +1 -1
  110. package/dist/components/color-picker/color-picker.d.ts +41 -3
  111. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  112. package/dist/components/color-picker/color-picker.js +33 -4
  113. package/dist/components/color-picker/color-picker.js.map +1 -1
  114. package/dist/components/color-picker/use-color-picker.d.ts +3 -1
  115. package/dist/components/color-picker/use-color-picker.d.ts.map +1 -1
  116. package/dist/components/color-picker/use-color-picker.js +8 -2
  117. package/dist/components/color-picker/use-color-picker.js.map +1 -1
  118. package/dist/components/color-slider/color-slider.d.ts +2 -2
  119. package/dist/components/color-slider/color-slider.js +1 -1
  120. package/dist/components/color-slider/color-slider.js.map +1 -1
  121. package/dist/components/combobox/combobox.d.ts +66 -4
  122. package/dist/components/combobox/combobox.d.ts.map +1 -1
  123. package/dist/components/combobox/combobox.js +107 -6
  124. package/dist/components/combobox/combobox.js.map +1 -1
  125. package/dist/components/combobox/context.js +10 -1
  126. package/dist/components/combobox/context.js.map +1 -1
  127. package/dist/components/command/command.d.ts +23 -2
  128. package/dist/components/command/command.d.ts.map +1 -1
  129. package/dist/components/command/command.js +48 -6
  130. package/dist/components/command/command.js.map +1 -1
  131. package/dist/components/command/use-command.d.ts.map +1 -1
  132. package/dist/components/command/use-command.js +9 -30
  133. package/dist/components/command/use-command.js.map +1 -1
  134. package/dist/components/context-menu/context-menu.d.ts +63 -18
  135. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  136. package/dist/components/context-menu/context-menu.js +141 -57
  137. package/dist/components/context-menu/context-menu.js.map +1 -1
  138. package/dist/components/context-menu/context.js +1 -1
  139. package/dist/components/context-menu/context.js.map +1 -1
  140. package/dist/components/context-menu/use-context-menu.d.ts +1 -1
  141. package/dist/components/context-menu/use-context-menu.d.ts.map +1 -1
  142. package/dist/components/context-menu/use-context-menu.js +4 -2
  143. package/dist/components/context-menu/use-context-menu.js.map +1 -1
  144. package/dist/components/date-field/date-field.d.ts +9 -1
  145. package/dist/components/date-field/date-field.d.ts.map +1 -1
  146. package/dist/components/date-field/date-field.js +2 -0
  147. package/dist/components/date-field/date-field.js.map +1 -1
  148. package/dist/components/date-picker/date-picker.d.ts +41 -1
  149. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  150. package/dist/components/date-picker/date-picker.js +16 -3
  151. package/dist/components/date-picker/date-picker.js.map +1 -1
  152. package/dist/components/date-range-picker/date-range-picker.d.ts +77 -2
  153. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  154. package/dist/components/date-range-picker/date-range-picker.js +102 -5
  155. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  156. package/dist/components/date-range-picker/use-date-range-picker.d.ts +1 -1
  157. package/dist/components/date-range-picker/use-date-range-picker.js.map +1 -1
  158. package/dist/components/descriptions/descriptions.d.ts +38 -7
  159. package/dist/components/descriptions/descriptions.d.ts.map +1 -1
  160. package/dist/components/descriptions/descriptions.js +38 -4
  161. package/dist/components/descriptions/descriptions.js.map +1 -1
  162. package/dist/components/dialog/dialog.d.ts +16 -1
  163. package/dist/components/dialog/dialog.d.ts.map +1 -1
  164. package/dist/components/dialog/dialog.js +15 -2
  165. package/dist/components/dialog/dialog.js.map +1 -1
  166. package/dist/components/dialog/use-dialog.d.ts.map +1 -1
  167. package/dist/components/dialog/use-dialog.js +9 -27
  168. package/dist/components/dialog/use-dialog.js.map +1 -1
  169. package/dist/components/diff-view/diff-view.d.ts +22 -2
  170. package/dist/components/diff-view/diff-view.d.ts.map +1 -1
  171. package/dist/components/diff-view/diff-view.js +37 -14
  172. package/dist/components/diff-view/diff-view.js.map +1 -1
  173. package/dist/components/diff-view/use-diff-view.d.ts +7 -2
  174. package/dist/components/diff-view/use-diff-view.d.ts.map +1 -1
  175. package/dist/components/diff-view/use-diff-view.js +12 -5
  176. package/dist/components/diff-view/use-diff-view.js.map +1 -1
  177. package/dist/components/drawer/drawer.d.ts +46 -1
  178. package/dist/components/drawer/drawer.d.ts.map +1 -1
  179. package/dist/components/drawer/drawer.js +28 -4
  180. package/dist/components/drawer/drawer.js.map +1 -1
  181. package/dist/components/drawer/use-drawer.d.ts +1 -1
  182. package/dist/components/drawer/use-drawer.d.ts.map +1 -1
  183. package/dist/components/drawer/use-drawer.js +12 -29
  184. package/dist/components/drawer/use-drawer.js.map +1 -1
  185. package/dist/components/empty-state/empty-state.js +4 -1
  186. package/dist/components/empty-state/empty-state.js.map +1 -1
  187. package/dist/components/empty-state/use-empty-state.js +12 -3
  188. package/dist/components/empty-state/use-empty-state.js.map +1 -1
  189. package/dist/components/field/field.js +1 -1
  190. package/dist/components/field-array/field-array.d.ts +1 -1
  191. package/dist/components/field-array/field-array.d.ts.map +1 -1
  192. package/dist/components/field-array/field-array.js +5 -1
  193. package/dist/components/field-array/field-array.js.map +1 -1
  194. package/dist/components/field-array/use-field-array.d.ts +3 -1
  195. package/dist/components/field-array/use-field-array.d.ts.map +1 -1
  196. package/dist/components/field-array/use-field-array.js +5 -2
  197. package/dist/components/field-array/use-field-array.js.map +1 -1
  198. package/dist/components/file-upload/file-upload.d.ts +24 -1
  199. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  200. package/dist/components/file-upload/file-upload.js +12 -2
  201. package/dist/components/file-upload/file-upload.js.map +1 -1
  202. package/dist/components/file-upload/use-file-upload.d.ts +1 -1
  203. package/dist/components/file-upload/use-file-upload.d.ts.map +1 -1
  204. package/dist/components/file-upload/use-file-upload.js.map +1 -1
  205. package/dist/components/flex/flex.d.ts +1 -1
  206. package/dist/components/flex/flex.d.ts.map +1 -1
  207. package/dist/components/flex/flex.js +4 -4
  208. package/dist/components/flex/flex.js.map +1 -1
  209. package/dist/components/form/form.d.ts +18 -4
  210. package/dist/components/form/form.d.ts.map +1 -1
  211. package/dist/components/form/form.js +21 -7
  212. package/dist/components/form/form.js.map +1 -1
  213. package/dist/components/form/use-form.d.ts +6 -0
  214. package/dist/components/form/use-form.d.ts.map +1 -1
  215. package/dist/components/form/use-form.js +4 -0
  216. package/dist/components/form/use-form.js.map +1 -1
  217. package/dist/components/funnel-chart/context.js +15 -0
  218. package/dist/components/funnel-chart/context.js.map +1 -0
  219. package/dist/components/funnel-chart/funnel-chart.d.ts +175 -0
  220. package/dist/components/funnel-chart/funnel-chart.d.ts.map +1 -0
  221. package/dist/components/funnel-chart/funnel-chart.js +188 -0
  222. package/dist/components/funnel-chart/funnel-chart.js.map +1 -0
  223. package/dist/components/funnel-chart/use-funnel-chart.d.ts +19 -0
  224. package/dist/components/funnel-chart/use-funnel-chart.d.ts.map +1 -0
  225. package/dist/components/funnel-chart/use-funnel-chart.js +26 -0
  226. package/dist/components/funnel-chart/use-funnel-chart.js.map +1 -0
  227. package/dist/components/graph-chart/context.js +15 -0
  228. package/dist/components/graph-chart/context.js.map +1 -0
  229. package/dist/components/graph-chart/graph-chart.d.ts +194 -0
  230. package/dist/components/graph-chart/graph-chart.d.ts.map +1 -0
  231. package/dist/components/graph-chart/graph-chart.js +219 -0
  232. package/dist/components/graph-chart/graph-chart.js.map +1 -0
  233. package/dist/components/graph-chart/use-graph-chart.d.ts +19 -0
  234. package/dist/components/graph-chart/use-graph-chart.d.ts.map +1 -0
  235. package/dist/components/graph-chart/use-graph-chart.js +26 -0
  236. package/dist/components/graph-chart/use-graph-chart.js.map +1 -0
  237. package/dist/components/grid/grid.d.ts +7 -0
  238. package/dist/components/grid/grid.d.ts.map +1 -1
  239. package/dist/components/grid/grid.js +7 -1
  240. package/dist/components/grid/grid.js.map +1 -1
  241. package/dist/components/grid-list/context.d.ts +9 -0
  242. package/dist/components/grid-list/context.d.ts.map +1 -0
  243. package/dist/components/grid-list/context.js +24 -0
  244. package/dist/components/grid-list/context.js.map +1 -0
  245. package/dist/components/grid-list/grid-list.d.ts +149 -0
  246. package/dist/components/grid-list/grid-list.d.ts.map +1 -0
  247. package/dist/components/grid-list/grid-list.js +118 -0
  248. package/dist/components/grid-list/grid-list.js.map +1 -0
  249. package/dist/components/grid-list/use-grid-list.d.ts +12 -0
  250. package/dist/components/grid-list/use-grid-list.d.ts.map +1 -0
  251. package/dist/components/grid-list/use-grid-list.js +20 -0
  252. package/dist/components/grid-list/use-grid-list.js.map +1 -0
  253. package/dist/components/heatmap/heatmap.d.ts +45 -4
  254. package/dist/components/heatmap/heatmap.d.ts.map +1 -1
  255. package/dist/components/heatmap/heatmap.js +40 -14
  256. package/dist/components/heatmap/heatmap.js.map +1 -1
  257. package/dist/components/heatmap/use-heatmap.d.ts +4 -2
  258. package/dist/components/heatmap/use-heatmap.d.ts.map +1 -1
  259. package/dist/components/heatmap/use-heatmap.js +8 -4
  260. package/dist/components/heatmap/use-heatmap.js.map +1 -1
  261. package/dist/components/hierarchy-chart/context.js +15 -0
  262. package/dist/components/hierarchy-chart/context.js.map +1 -0
  263. package/dist/components/hierarchy-chart/hierarchy-chart.d.ts +201 -0
  264. package/dist/components/hierarchy-chart/hierarchy-chart.d.ts.map +1 -0
  265. package/dist/components/hierarchy-chart/hierarchy-chart.js +228 -0
  266. package/dist/components/hierarchy-chart/hierarchy-chart.js.map +1 -0
  267. package/dist/components/hierarchy-chart/use-hierarchy-chart.d.ts +19 -0
  268. package/dist/components/hierarchy-chart/use-hierarchy-chart.d.ts.map +1 -0
  269. package/dist/components/hierarchy-chart/use-hierarchy-chart.js +26 -0
  270. package/dist/components/hierarchy-chart/use-hierarchy-chart.js.map +1 -0
  271. package/dist/components/hover-card/hover-card.js +2 -2
  272. package/dist/components/icon/icon.d.ts +7 -1
  273. package/dist/components/icon/icon.d.ts.map +1 -1
  274. package/dist/components/icon/icon.js +1 -0
  275. package/dist/components/icon/icon.js.map +1 -1
  276. package/dist/components/image/use-image.d.ts.map +1 -1
  277. package/dist/components/image/use-image.js +3 -1
  278. package/dist/components/image/use-image.js.map +1 -1
  279. package/dist/components/image-cropper/image-cropper.d.ts +35 -4
  280. package/dist/components/image-cropper/image-cropper.d.ts.map +1 -1
  281. package/dist/components/image-cropper/image-cropper.js +34 -5
  282. package/dist/components/image-cropper/image-cropper.js.map +1 -1
  283. package/dist/components/image-cropper/use-image-cropper.d.ts +3 -1
  284. package/dist/components/image-cropper/use-image-cropper.d.ts.map +1 -1
  285. package/dist/components/image-cropper/use-image-cropper.js +4 -1
  286. package/dist/components/image-cropper/use-image-cropper.js.map +1 -1
  287. package/dist/components/image-viewer/image-viewer.js +1 -1
  288. package/dist/components/image-viewer/use-image-viewer.d.ts.map +1 -1
  289. package/dist/components/image-viewer/use-image-viewer.js +9 -27
  290. package/dist/components/image-viewer/use-image-viewer.js.map +1 -1
  291. package/dist/components/infinite-scroll/infinite-scroll.d.ts +9 -1
  292. package/dist/components/infinite-scroll/infinite-scroll.d.ts.map +1 -1
  293. package/dist/components/infinite-scroll/infinite-scroll.js +2 -0
  294. package/dist/components/infinite-scroll/infinite-scroll.js.map +1 -1
  295. package/dist/components/input-group/input-group.d.ts.map +1 -1
  296. package/dist/components/input-group/input-group.js +2 -1
  297. package/dist/components/input-group/input-group.js.map +1 -1
  298. package/dist/components/json-viewer/json-viewer.d.ts +17 -2
  299. package/dist/components/json-viewer/json-viewer.d.ts.map +1 -1
  300. package/dist/components/json-viewer/json-viewer.js +26 -8
  301. package/dist/components/json-viewer/json-viewer.js.map +1 -1
  302. package/dist/components/kbd/kbd.d.ts.map +1 -1
  303. package/dist/components/kbd/kbd.js +27 -10
  304. package/dist/components/kbd/kbd.js.map +1 -1
  305. package/dist/components/listbox/listbox.d.ts +25 -2
  306. package/dist/components/listbox/listbox.d.ts.map +1 -1
  307. package/dist/components/listbox/listbox.js +39 -4
  308. package/dist/components/listbox/listbox.js.map +1 -1
  309. package/dist/components/loading-bar/use-loading-bar.d.ts.map +1 -1
  310. package/dist/components/loading-bar/use-loading-bar.js +3 -1
  311. package/dist/components/loading-bar/use-loading-bar.js.map +1 -1
  312. package/dist/components/log/log.d.ts +41 -2
  313. package/dist/components/log/log.d.ts.map +1 -1
  314. package/dist/components/log/log.js +25 -3
  315. package/dist/components/log/log.js.map +1 -1
  316. package/dist/components/log/use-log.d.ts +1 -1
  317. package/dist/components/log/use-log.d.ts.map +1 -1
  318. package/dist/components/log/use-log.js +4 -1
  319. package/dist/components/log/use-log.js.map +1 -1
  320. package/dist/components/markdown-stream/markdown-stream.d.ts +22 -2
  321. package/dist/components/markdown-stream/markdown-stream.d.ts.map +1 -1
  322. package/dist/components/markdown-stream/markdown-stream.js +43 -4
  323. package/dist/components/markdown-stream/markdown-stream.js.map +1 -1
  324. package/dist/components/marquee/marquee.d.ts +68 -12
  325. package/dist/components/marquee/marquee.d.ts.map +1 -1
  326. package/dist/components/marquee/marquee.js +52 -7
  327. package/dist/components/marquee/marquee.js.map +1 -1
  328. package/dist/components/mention/mention.d.ts +43 -7
  329. package/dist/components/mention/mention.d.ts.map +1 -1
  330. package/dist/components/mention/mention.js +50 -8
  331. package/dist/components/mention/mention.js.map +1 -1
  332. package/dist/components/menu/context.js +1 -1
  333. package/dist/components/menu/context.js.map +1 -1
  334. package/dist/components/menu/menu.d.ts +92 -28
  335. package/dist/components/menu/menu.d.ts.map +1 -1
  336. package/dist/components/menu/menu.js +162 -54
  337. package/dist/components/menu/menu.js.map +1 -1
  338. package/dist/components/menu/use-menu.d.ts +1 -1
  339. package/dist/components/menu/use-menu.d.ts.map +1 -1
  340. package/dist/components/menu/use-menu.js +8 -6
  341. package/dist/components/menu/use-menu.js.map +1 -1
  342. package/dist/components/menubar/context.js +1 -1
  343. package/dist/components/menubar/context.js.map +1 -1
  344. package/dist/components/menubar/menubar.d.ts +52 -19
  345. package/dist/components/menubar/menubar.d.ts.map +1 -1
  346. package/dist/components/menubar/menubar.js +137 -56
  347. package/dist/components/menubar/menubar.js.map +1 -1
  348. package/dist/components/menubar/use-menubar.d.ts +1 -1
  349. package/dist/components/menubar/use-menubar.d.ts.map +1 -1
  350. package/dist/components/menubar/use-menubar.js +4 -2
  351. package/dist/components/menubar/use-menubar.js.map +1 -1
  352. package/dist/components/message-feed/message-feed.d.ts +13 -1
  353. package/dist/components/message-feed/message-feed.d.ts.map +1 -1
  354. package/dist/components/message-feed/message-feed.js +25 -1
  355. package/dist/components/message-feed/message-feed.js.map +1 -1
  356. package/dist/components/navigation-menu/navigation-menu.d.ts +58 -1
  357. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  358. package/dist/components/navigation-menu/navigation-menu.js +82 -10
  359. package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
  360. package/dist/components/notification/context.d.ts +5 -1
  361. package/dist/components/notification/context.d.ts.map +1 -1
  362. package/dist/components/notification/context.js.map +1 -1
  363. package/dist/components/notification/notification.d.ts +39 -23
  364. package/dist/components/notification/notification.d.ts.map +1 -1
  365. package/dist/components/notification/notification.js +27 -9
  366. package/dist/components/notification/notification.js.map +1 -1
  367. package/dist/components/notification/use-item-exit.js +22 -0
  368. package/dist/components/notification/use-item-exit.js.map +1 -0
  369. package/dist/components/notification/use-notification.d.ts +3 -3
  370. package/dist/components/notification/use-notification.d.ts.map +1 -1
  371. package/dist/components/notification/use-notification.js +20 -5
  372. package/dist/components/notification/use-notification.js.map +1 -1
  373. package/dist/components/number-animation/number-animation.d.ts +14 -2
  374. package/dist/components/number-animation/number-animation.d.ts.map +1 -1
  375. package/dist/components/number-animation/number-animation.js +5 -1
  376. package/dist/components/number-animation/number-animation.js.map +1 -1
  377. package/dist/components/number-field/number-field.d.ts +16 -1
  378. package/dist/components/number-field/number-field.d.ts.map +1 -1
  379. package/dist/components/number-field/number-field.js +6 -0
  380. package/dist/components/number-field/number-field.js.map +1 -1
  381. package/dist/components/page-header/page-header.d.ts.map +1 -1
  382. package/dist/components/page-header/page-header.js +2 -1
  383. package/dist/components/page-header/page-header.js.map +1 -1
  384. package/dist/components/pagination/pagination.d.ts +22 -2
  385. package/dist/components/pagination/pagination.d.ts.map +1 -1
  386. package/dist/components/pagination/pagination.js +22 -1
  387. package/dist/components/pagination/pagination.js.map +1 -1
  388. package/dist/components/pagination/use-pagination.js +1 -0
  389. package/dist/components/pagination/use-pagination.js.map +1 -1
  390. package/dist/components/pie-chart/context.js +15 -0
  391. package/dist/components/pie-chart/context.js.map +1 -0
  392. package/dist/components/pie-chart/pie-chart.d.ts +203 -0
  393. package/dist/components/pie-chart/pie-chart.d.ts.map +1 -0
  394. package/dist/components/pie-chart/pie-chart.js +236 -0
  395. package/dist/components/pie-chart/pie-chart.js.map +1 -0
  396. package/dist/components/pie-chart/use-pie-chart.d.ts +19 -0
  397. package/dist/components/pie-chart/use-pie-chart.d.ts.map +1 -0
  398. package/dist/components/pie-chart/use-pie-chart.js +26 -0
  399. package/dist/components/pie-chart/use-pie-chart.js.map +1 -0
  400. package/dist/components/popconfirm/popconfirm.js +2 -2
  401. package/dist/components/popover/popover.d.ts +11 -0
  402. package/dist/components/popover/popover.d.ts.map +1 -1
  403. package/dist/components/popover/popover.js +7 -2
  404. package/dist/components/popover/popover.js.map +1 -1
  405. package/dist/components/progress/progress.d.ts +63 -3
  406. package/dist/components/progress/progress.d.ts.map +1 -1
  407. package/dist/components/progress/progress.js +55 -3
  408. package/dist/components/progress/progress.js.map +1 -1
  409. package/dist/components/question-flow/question-flow.d.ts +40 -1
  410. package/dist/components/question-flow/question-flow.d.ts.map +1 -1
  411. package/dist/components/question-flow/question-flow.js +37 -1
  412. package/dist/components/question-flow/question-flow.js.map +1 -1
  413. package/dist/components/radar-chart/context.js +15 -0
  414. package/dist/components/radar-chart/context.js.map +1 -0
  415. package/dist/components/radar-chart/radar-chart.d.ts +189 -0
  416. package/dist/components/radar-chart/radar-chart.d.ts.map +1 -0
  417. package/dist/components/radar-chart/radar-chart.js +220 -0
  418. package/dist/components/radar-chart/radar-chart.js.map +1 -0
  419. package/dist/components/radar-chart/use-radar-chart.d.ts +19 -0
  420. package/dist/components/radar-chart/use-radar-chart.d.ts.map +1 -0
  421. package/dist/components/radar-chart/use-radar-chart.js +26 -0
  422. package/dist/components/radar-chart/use-radar-chart.js.map +1 -0
  423. package/dist/components/radio-group/radio-group.d.ts +37 -2
  424. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  425. package/dist/components/radio-group/radio-group.js +54 -8
  426. package/dist/components/radio-group/radio-group.js.map +1 -1
  427. package/dist/components/radio-group/use-radio-group.d.ts +3 -1
  428. package/dist/components/radio-group/use-radio-group.d.ts.map +1 -1
  429. package/dist/components/radio-group/use-radio-group.js +7 -3
  430. package/dist/components/radio-group/use-radio-group.js.map +1 -1
  431. package/dist/components/reasoning/reasoning.d.ts.map +1 -1
  432. package/dist/components/reasoning/reasoning.js +1 -0
  433. package/dist/components/reasoning/reasoning.js.map +1 -1
  434. package/dist/components/sankey-chart/context.js +15 -0
  435. package/dist/components/sankey-chart/context.js.map +1 -0
  436. package/dist/components/sankey-chart/sankey-chart.d.ts +161 -0
  437. package/dist/components/sankey-chart/sankey-chart.d.ts.map +1 -0
  438. package/dist/components/sankey-chart/sankey-chart.js +208 -0
  439. package/dist/components/sankey-chart/sankey-chart.js.map +1 -0
  440. package/dist/components/sankey-chart/use-sankey-chart.d.ts +19 -0
  441. package/dist/components/sankey-chart/use-sankey-chart.d.ts.map +1 -0
  442. package/dist/components/sankey-chart/use-sankey-chart.js +26 -0
  443. package/dist/components/sankey-chart/use-sankey-chart.js.map +1 -0
  444. package/dist/components/scroll-area/scroll-area.d.ts +13 -5
  445. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  446. package/dist/components/scroll-area/scroll-area.js +17 -3
  447. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  448. package/dist/components/select/select.d.ts +25 -2
  449. package/dist/components/select/select.d.ts.map +1 -1
  450. package/dist/components/select/select.js +48 -6
  451. package/dist/components/select/select.js.map +1 -1
  452. package/dist/components/select/use-select.js +2 -1
  453. package/dist/components/select/use-select.js.map +1 -1
  454. package/dist/components/side-nav/context.js +17 -1
  455. package/dist/components/side-nav/context.js.map +1 -1
  456. package/dist/components/side-nav/side-nav.d.ts +51 -7
  457. package/dist/components/side-nav/side-nav.d.ts.map +1 -1
  458. package/dist/components/side-nav/side-nav.js +152 -13
  459. package/dist/components/side-nav/side-nav.js.map +1 -1
  460. package/dist/components/side-nav/use-side-nav.d.ts +4 -2
  461. package/dist/components/side-nav/use-side-nav.d.ts.map +1 -1
  462. package/dist/components/side-nav/use-side-nav.js +5 -3
  463. package/dist/components/side-nav/use-side-nav.js.map +1 -1
  464. package/dist/components/signature-pad/signature-pad.d.ts +26 -4
  465. package/dist/components/signature-pad/signature-pad.d.ts.map +1 -1
  466. package/dist/components/signature-pad/signature-pad.js +32 -4
  467. package/dist/components/signature-pad/signature-pad.js.map +1 -1
  468. package/dist/components/signature-pad/use-signature-pad.d.ts +1 -1
  469. package/dist/components/signature-pad/use-signature-pad.d.ts.map +1 -1
  470. package/dist/components/signature-pad/use-signature-pad.js.map +1 -1
  471. package/dist/components/skeleton/use-skeleton.js +6 -2
  472. package/dist/components/skeleton/use-skeleton.js.map +1 -1
  473. package/dist/components/slider/slider.d.ts +27 -0
  474. package/dist/components/slider/slider.d.ts.map +1 -1
  475. package/dist/components/slider/slider.js +12 -0
  476. package/dist/components/slider/slider.js.map +1 -1
  477. package/dist/components/sortable/sortable.d.ts +18 -0
  478. package/dist/components/sortable/sortable.d.ts.map +1 -1
  479. package/dist/components/sortable/sortable.js +7 -2
  480. package/dist/components/sortable/sortable.js.map +1 -1
  481. package/dist/components/sortable/use-sortable.d.ts +1 -1
  482. package/dist/components/sortable/use-sortable.d.ts.map +1 -1
  483. package/dist/components/sortable/use-sortable.js +2 -1
  484. package/dist/components/sortable/use-sortable.js.map +1 -1
  485. package/dist/components/sparkline/sparkline.d.ts +101 -0
  486. package/dist/components/sparkline/sparkline.d.ts.map +1 -0
  487. package/dist/components/sparkline/sparkline.js +54 -0
  488. package/dist/components/sparkline/sparkline.js.map +1 -0
  489. package/dist/components/sparkline/use-sparkline.d.ts +15 -0
  490. package/dist/components/sparkline/use-sparkline.d.ts.map +1 -0
  491. package/dist/components/sparkline/use-sparkline.js +21 -0
  492. package/dist/components/sparkline/use-sparkline.js.map +1 -0
  493. package/dist/components/spinner/spinner.d.ts +8 -0
  494. package/dist/components/spinner/spinner.d.ts.map +1 -1
  495. package/dist/components/spinner/spinner.js +2 -0
  496. package/dist/components/spinner/spinner.js.map +1 -1
  497. package/dist/components/spinner/use-spinner.js +4 -2
  498. package/dist/components/spinner/use-spinner.js.map +1 -1
  499. package/dist/components/statistic/statistic.d.ts.map +1 -1
  500. package/dist/components/statistic/statistic.js +2 -1
  501. package/dist/components/statistic/statistic.js.map +1 -1
  502. package/dist/components/steps/steps.d.ts +28 -1
  503. package/dist/components/steps/steps.d.ts.map +1 -1
  504. package/dist/components/steps/steps.js +11 -2
  505. package/dist/components/steps/steps.js.map +1 -1
  506. package/dist/components/switch/switch.js +1 -1
  507. package/dist/components/table/context.js +9 -1
  508. package/dist/components/table/context.js.map +1 -1
  509. package/dist/components/table/table.d.ts +52 -3
  510. package/dist/components/table/table.d.ts.map +1 -1
  511. package/dist/components/table/table.js +40 -11
  512. package/dist/components/table/table.js.map +1 -1
  513. package/dist/components/table/use-table.d.ts +3 -1
  514. package/dist/components/table/use-table.d.ts.map +1 -1
  515. package/dist/components/table/use-table.js +5 -2
  516. package/dist/components/table/use-table.js.map +1 -1
  517. package/dist/components/tabs/tabs.d.ts +51 -3
  518. package/dist/components/tabs/tabs.d.ts.map +1 -1
  519. package/dist/components/tabs/tabs.js +60 -8
  520. package/dist/components/tabs/tabs.js.map +1 -1
  521. package/dist/components/tag/use-tag.d.ts.map +1 -1
  522. package/dist/components/tag/use-tag.js +3 -1
  523. package/dist/components/tag/use-tag.js.map +1 -1
  524. package/dist/components/tag-group/tag-group.js +1 -1
  525. package/dist/components/tag-group/tag-group.js.map +1 -1
  526. package/dist/components/tags-input/tags-input.d.ts +10 -2
  527. package/dist/components/tags-input/tags-input.d.ts.map +1 -1
  528. package/dist/components/tags-input/tags-input.js +11 -4
  529. package/dist/components/tags-input/tags-input.js.map +1 -1
  530. package/dist/components/tags-input/use-tags-input.d.ts +4 -2
  531. package/dist/components/tags-input/use-tags-input.d.ts.map +1 -1
  532. package/dist/components/tags-input/use-tags-input.js +5 -2
  533. package/dist/components/tags-input/use-tags-input.js.map +1 -1
  534. package/dist/components/time-picker/time-picker.d.ts +11 -7
  535. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  536. package/dist/components/time-picker/time-picker.js +4 -2
  537. package/dist/components/time-picker/time-picker.js.map +1 -1
  538. package/dist/components/time-range-picker/time-range-picker.d.ts +11 -7
  539. package/dist/components/time-range-picker/time-range-picker.d.ts.map +1 -1
  540. package/dist/components/time-range-picker/time-range-picker.js +4 -2
  541. package/dist/components/time-range-picker/time-range-picker.js.map +1 -1
  542. package/dist/components/timeline/timeline.d.ts.map +1 -1
  543. package/dist/components/timeline/timeline.js +2 -1
  544. package/dist/components/timeline/timeline.js.map +1 -1
  545. package/dist/components/timestamp/timestamp.d.ts +20 -1
  546. package/dist/components/timestamp/timestamp.d.ts.map +1 -1
  547. package/dist/components/timestamp/timestamp.js +16 -5
  548. package/dist/components/timestamp/timestamp.js.map +1 -1
  549. package/dist/components/toolbar/toolbar.d.ts +17 -2
  550. package/dist/components/toolbar/toolbar.d.ts.map +1 -1
  551. package/dist/components/toolbar/toolbar.js +31 -4
  552. package/dist/components/toolbar/toolbar.js.map +1 -1
  553. package/dist/components/toolbar/use-toolbar.d.ts +4 -2
  554. package/dist/components/toolbar/use-toolbar.d.ts.map +1 -1
  555. package/dist/components/toolbar/use-toolbar.js +5 -2
  556. package/dist/components/toolbar/use-toolbar.js.map +1 -1
  557. package/dist/components/tooltip/context.d.ts +21 -0
  558. package/dist/components/tooltip/context.d.ts.map +1 -0
  559. package/dist/components/tooltip/context.js +10 -1
  560. package/dist/components/tooltip/context.js.map +1 -1
  561. package/dist/components/tooltip/tooltip.d.ts +53 -1
  562. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  563. package/dist/components/tooltip/tooltip.js +34 -3
  564. package/dist/components/tooltip/tooltip.js.map +1 -1
  565. package/dist/components/tooltip/use-tooltip.d.ts +3 -18
  566. package/dist/components/tooltip/use-tooltip.d.ts.map +1 -1
  567. package/dist/components/tooltip/use-tooltip.js +2 -0
  568. package/dist/components/tooltip/use-tooltip.js.map +1 -1
  569. package/dist/components/tour/tour.d.ts +8 -0
  570. package/dist/components/tour/tour.d.ts.map +1 -1
  571. package/dist/components/tour/tour.js +2 -0
  572. package/dist/components/tour/tour.js.map +1 -1
  573. package/dist/components/transfer/transfer.d.ts +30 -2
  574. package/dist/components/transfer/transfer.d.ts.map +1 -1
  575. package/dist/components/transfer/transfer.js +29 -3
  576. package/dist/components/transfer/transfer.js.map +1 -1
  577. package/dist/components/tree/tree.d.ts +43 -8
  578. package/dist/components/tree/tree.d.ts.map +1 -1
  579. package/dist/components/tree/tree.js +28 -15
  580. package/dist/components/tree/tree.js.map +1 -1
  581. package/dist/components/tree-select/context.js +10 -1
  582. package/dist/components/tree-select/context.js.map +1 -1
  583. package/dist/components/tree-select/tree-select.d.ts +78 -6
  584. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  585. package/dist/components/tree-select/tree-select.js +127 -12
  586. package/dist/components/tree-select/tree-select.js.map +1 -1
  587. package/dist/components/tree-select/use-tree-select.d.ts +3 -0
  588. package/dist/components/tree-select/use-tree-select.d.ts.map +1 -1
  589. package/dist/components/tree-select/use-tree-select.js +6 -1
  590. package/dist/components/tree-select/use-tree-select.js.map +1 -1
  591. package/dist/components/truncate/truncate.d.ts +25 -4
  592. package/dist/components/truncate/truncate.d.ts.map +1 -1
  593. package/dist/components/truncate/truncate.js +29 -14
  594. package/dist/components/truncate/truncate.js.map +1 -1
  595. package/dist/components/truncate/use-truncate.d.ts.map +1 -1
  596. package/dist/components/truncate/use-truncate.js +3 -1
  597. package/dist/components/truncate/use-truncate.js.map +1 -1
  598. package/dist/components/typography/typography.d.ts +35 -2
  599. package/dist/components/typography/typography.d.ts.map +1 -1
  600. package/dist/components/typography/typography.js +23 -4
  601. package/dist/components/typography/typography.js.map +1 -1
  602. package/dist/components/virtualizer/virtualizer.d.ts +26 -2
  603. package/dist/components/virtualizer/virtualizer.d.ts.map +1 -1
  604. package/dist/components/virtualizer/virtualizer.js +20 -3
  605. package/dist/components/virtualizer/virtualizer.js.map +1 -1
  606. package/dist/components/watermark/watermark.d.ts +14 -1
  607. package/dist/components/watermark/watermark.d.ts.map +1 -1
  608. package/dist/components/watermark/watermark.js +20 -5
  609. package/dist/components/watermark/watermark.js.map +1 -1
  610. package/dist/config/config.d.ts +1 -1
  611. package/dist/config/config.d.ts.map +1 -1
  612. package/dist/config/config.js +2 -1
  613. package/dist/config/config.js.map +1 -1
  614. package/dist/index.d.ts +65 -50
  615. package/dist/index.js +59 -44
  616. package/dist/package.js +1 -1
  617. package/dist/runtime/as-child.js +3 -2
  618. package/dist/runtime/as-child.js.map +1 -1
  619. package/dist/runtime/hydration.js +14 -0
  620. package/dist/runtime/hydration.js.map +1 -0
  621. package/dist/runtime/use-machine.js +3 -2
  622. package/dist/runtime/use-machine.js.map +1 -1
  623. package/dist/runtime/use-overlay-exit.js +0 -1
  624. package/dist/runtime/use-overlay-exit.js.map +1 -1
  625. package/dist/runtime/use-scrollbars.js +3 -1
  626. package/dist/runtime/use-scrollbars.js.map +1 -1
  627. package/dist/services/notification-service.d.ts +26 -7
  628. package/dist/services/notification-service.d.ts.map +1 -1
  629. package/dist/services/notification-service.js +35 -8
  630. package/dist/services/notification-service.js.map +1 -1
  631. package/dist/sound.d.ts +6 -7
  632. package/dist/sound.d.ts.map +1 -1
  633. package/dist/sound.js +6 -6
  634. package/dist/sound.js.map +1 -1
  635. package/package.json +15 -14
  636. package/dist/components/gradient-text/gradient-text.d.ts +0 -36
  637. package/dist/components/gradient-text/gradient-text.d.ts.map +0 -1
  638. package/dist/components/gradient-text/gradient-text.js +0 -20
  639. package/dist/components/gradient-text/gradient-text.js.map +0 -1
  640. package/dist/components/icon-wrapper/icon-wrapper.d.ts +0 -29
  641. package/dist/components/icon-wrapper/icon-wrapper.d.ts.map +0 -1
  642. package/dist/components/icon-wrapper/icon-wrapper.js +0 -20
  643. package/dist/components/icon-wrapper/icon-wrapper.js.map +0 -1
  644. package/dist/components/segmented/context.d.ts +0 -13
  645. package/dist/components/segmented/context.d.ts.map +0 -1
  646. package/dist/components/segmented/context.js +0 -24
  647. package/dist/components/segmented/context.js.map +0 -1
  648. package/dist/components/segmented/segmented.d.ts +0 -161
  649. package/dist/components/segmented/segmented.d.ts.map +0 -1
  650. package/dist/components/segmented/segmented.js +0 -142
  651. package/dist/components/segmented/segmented.js.map +0 -1
  652. package/dist/components/segmented/use-segmented.d.ts +0 -15
  653. package/dist/components/segmented/use-segmented.d.ts.map +0 -1
  654. package/dist/components/segmented/use-segmented.js +0 -22
  655. package/dist/components/segmented/use-segmented.js.map +0 -1
  656. package/dist/components/toast/context.js +0 -15
  657. package/dist/components/toast/context.js.map +0 -1
  658. package/dist/components/toast/toast.d.ts +0 -123
  659. package/dist/components/toast/toast.d.ts.map +0 -1
  660. package/dist/components/toast/toast.js +0 -112
  661. package/dist/components/toast/toast.js.map +0 -1
  662. package/dist/components/toast/use-toast.d.ts +0 -10
  663. package/dist/components/toast/use-toast.d.ts.map +0 -1
  664. package/dist/components/toast/use-toast.js +0 -17
  665. package/dist/components/toast/use-toast.js.map +0 -1
  666. package/dist/services/toast-service.d.ts +0 -69
  667. package/dist/services/toast-service.d.ts.map +0 -1
  668. package/dist/services/toast-service.js +0 -161
  669. package/dist/services/toast-service.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"time-range-picker.js","names":[],"sources":["../../../src/components/time-range-picker/time-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 time range picker 相关实现。\n\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type {\n TimeGranularity,\n TimeHourCycle,\n TimePickerColumn,\n TimePickerColumnUnit,\n TimeRangePickerApi,\n TimeRangePickerEndIndex,\n TimeRangePickerPreset,\n TimeRangePickerPresetState,\n TimeRangePickerSchema,\n TimeSegmentType,\n} from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { resolveTimeRangePickerEndIndex } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, mergeProps, onUpdated, ref } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { XhPortal } from '../../runtime/portal'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideTimeRangePicker,\n provideTimeRangePickerColumn,\n provideTimeRangePickerEnd,\n useTimeRangePickerColumnContext,\n useTimeRangePickerContext,\n useTimeRangePickerEndContext,\n} from './context'\nimport { useTimeRangePicker } from './use-time-range-picker'\n\ntype TimeRangePickerProps = TimeRangePickerSchema['props']\n\n/** 默认插槽的载荷:浮层开合与两端、值状态标志、当前的段与两组时列,以及开合、写值、清空的动作。 */\nexport type TimeRangePickerRootSlotProps = Pick<\n TimeRangePickerApi,\n | 'open'\n | 'value'\n | 'start'\n | 'end'\n | 'empty'\n | 'outOfRange'\n | 'reversed'\n | 'segments'\n | 'columnGroups'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n>\n\n/** 时列外壳默认插槽的载荷:该端当前应排列的列。 */\nexport interface TimeRangePickerColumnGroupSlotProps {\n columns: readonly TimePickerColumn[]\n}\n\n/** 默认插槽的载荷:该列当前的可选值。 */\nexport interface TimeRangePickerColumnSlotProps {\n options: TimePickerColumn['options']\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自行铺设条目。 */\nexport interface TimeRangePickerPresetsSlotProps {\n presets: readonly TimeRangePickerPresetState[]\n}\n\nexport const XhTimeRangePickerRoot = defineComponent({\n name: 'XhTimeRangePickerRoot',\n // 缺省值由 connect 给出;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n /** 区间两端 [start, end];空缺的一端用空串占位。 */\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String },\n max: { type: String },\n locale: { type: String },\n hourCycle: { type: Number as PropType<TimeHourCycle> },\n granularity: { type: String as PropType<TimeGranularity> },\n step: { type: Number },\n /** 快捷选项;提供后浮层中多出一列,时刻要在自己的 computed 中计算后再传入。 */\n presets: { type: Array as PropType<TimeRangePickerPreset[]> },\n disabled: { type: Boolean, default: undefined },\n // 两组段位与时列各自的读屏名字\n translations: { type: Object as PropType<TimeRangePickerProps['translations']> },\n isTimeUnavailable: { type: Function as PropType<(value: string, unit: TimePickerColumnUnit, index: TimeRangePickerEndIndex) => boolean> },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n name: { type: String },\n // 终点那份隐藏输入的表单名;不给即终点不参与提交\n endName: { type: String },\n variant: { type: String as PropType<ControlVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n /** 文字方向;浮层迁移到落点后无法继承作者子树上的方向,需要 RTL 时显式提供。 */\n dir: { type: String as PropType<Direction> },\n },\n // *-change 携带 details 对象,update:* 携带裸值;值恒为 [start, end],只填了终点时是 ['', end]\n emits: {\n 'value-change': (_details: PayloadOf<TimeRangePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<TimeRangePickerProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<TimeRangePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<TimeRangePickerProps, 'onOpenChange'>['open']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TimeRangePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyValue: TimeRangePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: TimeRangePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useTimeRangePicker(withXhConfig('time-range-picker', useFormControlProps(props)) as TimeRangePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n })\n provideTimeRangePicker(ctx)\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n start: ctx.api.value.start,\n end: ctx.api.value.end,\n empty: ctx.api.value.empty,\n outOfRange: ctx.api.value.outOfRange,\n reversed: ctx.api.value.reversed,\n segments: ctx.api.value.segments,\n columnGroups: ctx.api.value.columnGroups,\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTimeRangePickerLabel = defineComponent({\n name: 'XhTimeRangePickerLabel',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n // 仍用原生 label 保持表单语义,点标题聚焦第一段由连接层的 click 接管\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerControl = defineComponent({\n name: 'XhTimeRangePickerControl',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerSegmentGroup = defineComponent({\n name: 'XhTimeRangePickerSegmentGroup',\n props: {\n // 端号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n const index = computed<TimeRangePickerEndIndex>(() => resolveTimeRangePickerEndIndex(props.index))\n // 组内的段位据此认领起止\n provideTimeRangePickerEnd({ index })\n return () => h('div', ctx.api.value.getSegmentGroupProps({ index: index.value }) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerSegment = defineComponent({\n name: 'XhTimeRangePickerSegment',\n props: {\n // 段的身份由作者声明;属于哪一端跟着所在的段位容器走\n segment: { type: String as PropType<TimeSegmentType>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n // 有插槽用插槽,否则显示该段的文字,空段为占位串\n return () => h(\n 'span',\n ctx.api.value.getSegmentProps({ index: end.index.value, segment: props.segment }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getSegmentText({ index: end.index.value, segment: props.segment }),\n )\n },\n})\n\nexport const XhTimeRangePickerRangeSeparator = defineComponent({\n name: 'XhTimeRangePickerRangeSeparator',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => h(\n 'span',\n ctx.api.value.getRangeSeparatorProps() as Record<string, unknown>,\n slots.default?.() ?? '-',\n )\n },\n})\n\nexport const XhTimeRangePickerTrigger = defineComponent({\n name: 'XhTimeRangePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useTimeRangePickerContext()\n return () => h('button', fieldLabel.value({\n ...fieldWiring.value,\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n // 归还焦点要落到它身上:锚点取的是整个输入行,那一层不可聚焦\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }), slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerClearTrigger = defineComponent({\n name: 'XhTimeRangePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerPositioner = defineComponent({\n name: 'XhTimeRangePickerPositioner',\n props: {\n /** 本实例的 Portal 容器;优先于应用级配置。 */\n container: { type: Object as PropType<Element> },\n },\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useTimeRangePickerContext()\n // 浮层面板的自绘条:两组时列并排放不下时面板整体横滚,横条与 content 同级挂在已经 fixed 的 positioner 上,\n // 条子走浮层 4px 档;各列自己竖滚的条子贴在列上、挂在 content 里\n const bars = useScrollbars({\n scrollable: () => ctx.contentRef.value,\n axes: ['horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => h(XhPortal, { to: props.container ?? ctx.portalTarget.value, source: ctx.controlRef }, () => [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, [...(slots.default?.() ?? []), ...bars.render()]),\n ])\n },\n})\n\nexport const XhTimeRangePickerContent = defineComponent({\n name: 'XhTimeRangePickerContent',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerPresetGroup = defineComponent({\n name: 'XhTimeRangePickerPresetGroup',\n slots: Object as SlotsType<{\n /** 自行铺设条目;未写时按 presets 数据自动铺设,两者产出的 DOM 一致。 */\n default?: (props: TimeRangePickerPresetsSlotProps) => VNode[]\n }>,\n // 根是片段(选项列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useTimeRangePickerContext()\n const presetGroupRef = ref<HTMLElement | null>(null)\n // 快捷选项列定高自己竖滚:条子贴在它的盒子上、紧跟在它后面(浮层 4px 档)\n const bars = useScrollbars({\n scrollable: () => presetGroupRef.value,\n anchor: 'layer',\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return [\n h(\n 'div',\n {\n ...mergeProps(api.getPresetGroupProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { presetGroupRef.value = el as HTMLElement },\n },\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhTimeRangePickerPreset = defineComponent({\n name: 'XhTimeRangePickerPreset',\n props: {\n /** 该条目的身份,与 presets 数据中的 value 逐字对应。 */\n value: { type: String, required: true },\n },\n slots: Object as SlotsType<{\n /** 条目内容;未写时使用数据中的 label。 */\n default?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.()\n return h(\n 'div',\n api.getPresetProps({ value: props.value }) as Record<string, unknown>,\n slotPaints(authored) ? authored : api.presets.find(p => p.value === props.value)?.label,\n )\n }\n },\n})\n\nexport const XhTimeRangePickerColumnGroup = defineComponent({\n name: 'XhTimeRangePickerColumnGroup',\n props: {\n // 端号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n slots: Object as SlotsType<{\n default?: (props: TimeRangePickerColumnGroupSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n const index = computed<TimeRangePickerEndIndex>(() => resolveTimeRangePickerEndIndex(props.index))\n // 组内的小标题、列与选项据此认领起止\n provideTimeRangePickerEnd({ index })\n return () => h(\n 'div',\n ctx.api.value.getColumnGroupProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.({ columns: ctx.api.value.columnGroups[index.value].columns }),\n )\n },\n})\n\nexport const XhTimeRangePickerColumnGroupLabel = defineComponent({\n name: 'XhTimeRangePickerColumnGroupLabel',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n return () => h('div', ctx.api.value.getColumnGroupLabelProps({ index: end.index.value }) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerColumn = defineComponent({\n name: 'XhTimeRangePickerColumn',\n props: {\n unit: { type: String as PropType<TimePickerColumnUnit>, required: true },\n },\n slots: Object as SlotsType<{\n default?: (props: TimeRangePickerColumnSlotProps) => VNode[]\n }>,\n // 根是片段(列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n const unit = computed(() => props.unit)\n // 下传单位,供列内选项取到自己归哪一列\n provideTimeRangePickerColumn({ unit })\n const columnRef = ref<HTMLElement | null>(null)\n // 定高的时间列自己竖滚:条子贴在本列的盒子上、紧跟在它后面(浮层 4px 档)\n const bars = useScrollbars({\n scrollable: () => columnRef.value,\n anchor: 'layer',\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => [\n h(\n 'div',\n {\n ...mergeProps(ctx.api.value.getColumnProps({ index: end.index.value, unit: props.unit }) as Record<string, unknown>, attrs),\n ref: (el: unknown) => { columnRef.value = el as HTMLElement },\n },\n slots.default?.({ options: ctx.api.value.columnGroups[end.index.value].columns.find(c => c.unit === props.unit)?.options ?? [] }),\n ),\n ...bars.render(),\n ]\n },\n})\n\nexport const XhTimeRangePickerItem = defineComponent({\n name: 'XhTimeRangePickerItem',\n props: {\n /** 两位补零的显示串('09' / '30');上下午列写 '00' / '01'。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n const { unit } = useTimeRangePickerColumnContext()\n // 有插槽用插槽,否则显示这一格该显示的文字(上下午列按 locale 译成「上午 / 下午」)\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ index: end.index.value, unit: unit.value, value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getItemText({ unit: unit.value, value: props.value }),\n )\n },\n})\n\nexport const XhTimeRangePickerHiddenInput = defineComponent({\n name: 'XhTimeRangePickerHiddenInput',\n props: {\n // 写在段位容器外面时用它指明属于哪一端;写在容器里面不必给,跟着容器走\n index: { type: [Number, String] as PropType<number | string> },\n },\n setup(props) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n return () => {\n const index = props.index === undefined ? end.index.value : resolveTimeRangePickerEndIndex(props.index)\n return h('input', ctx.api.value.getHiddenInputProps({ index }) as Record<string, unknown>)\n }\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"time-range-picker.js","names":[],"sources":["../../../src/components/time-range-picker/time-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 time range picker 相关实现。\n\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type {\n TimeGranularity,\n TimeHourCycle,\n TimePickerColumn,\n TimePickerColumnUnit,\n TimeRangePickerApi,\n TimeRangePickerEndIndex,\n TimeRangePickerPreset,\n TimeRangePickerPresetState,\n TimeRangePickerSchema,\n TimeSegmentType,\n TimeStep,\n TimeUnavailablePredicate,\n} from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { resolveTimeRangePickerEndIndex } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, mergeProps, onUpdated, ref } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { XhPortal } from '../../runtime/portal'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideTimeRangePicker,\n provideTimeRangePickerColumn,\n provideTimeRangePickerEnd,\n useTimeRangePickerColumnContext,\n useTimeRangePickerContext,\n useTimeRangePickerEndContext,\n} from './context'\nimport { useTimeRangePicker } from './use-time-range-picker'\n\ntype TimeRangePickerProps = TimeRangePickerSchema['props']\n\n/** 默认插槽的载荷:浮层开合与两端、值状态标志、当前的段与两组时列,以及开合、写值、清空的动作。 */\nexport type TimeRangePickerRootSlotProps = Pick<\n TimeRangePickerApi,\n | 'open'\n | 'value'\n | 'start'\n | 'end'\n | 'empty'\n | 'outOfRange'\n | 'reversed'\n | 'segments'\n | 'columnGroups'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n>\n\n/** 时列外壳默认插槽的载荷:该端当前应排列的列。 */\nexport interface TimeRangePickerColumnGroupSlotProps {\n columns: readonly TimePickerColumn[]\n}\n\n/** 默认插槽的载荷:该列当前的可选值。 */\nexport interface TimeRangePickerColumnSlotProps {\n options: TimePickerColumn['options']\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自行铺设条目。 */\nexport interface TimeRangePickerPresetsSlotProps {\n presets: readonly TimeRangePickerPresetState[]\n}\n\nexport const XhTimeRangePickerRoot = defineComponent({\n name: 'XhTimeRangePickerRoot',\n // 缺省值由 connect 给出;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n /** 区间两端 [start, end];空缺的一端用空串占位。 */\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String },\n max: { type: String },\n locale: { type: String },\n hourCycle: { type: Number as PropType<TimeHourCycle> },\n granularity: { type: String as PropType<TimeGranularity> },\n /** 按单位的步进:`{ hour?, minute?, second? }`,各单位缺省 1。 */\n timeStep: { type: Object as PropType<TimeStep> },\n /** 快捷选项;提供后浮层中多出一列,时刻要在自己的 computed 中计算后再传入。 */\n presets: { type: Array as PropType<TimeRangePickerPreset[]> },\n disabled: { type: Boolean, default: undefined },\n // 两组段位与时列各自的读屏名字\n translations: { type: Object as PropType<TimeRangePickerProps['translations']> },\n /** 逐格可选性:时列按 24 小时制给值,第三个参数带这一端已选的时分与端号。 */\n isTimeUnavailable: { type: Function as PropType<TimeUnavailablePredicate> },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n name: { type: String },\n // 终点那份隐藏输入的表单名;不给即终点不参与提交\n endName: { type: String },\n variant: { type: String as PropType<ControlVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n /** 文字方向;浮层迁移到落点后无法继承作者子树上的方向,需要 RTL 时显式提供。 */\n dir: { type: String as PropType<Direction> },\n },\n // *-change 携带 details 对象,update:* 携带裸值;值恒为 [start, end],只填了终点时是 ['', end]\n emits: {\n 'value-change': (_details: PayloadOf<TimeRangePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<TimeRangePickerProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<TimeRangePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<TimeRangePickerProps, 'onOpenChange'>['open']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TimeRangePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyValue: TimeRangePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: TimeRangePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useTimeRangePicker(withXhConfig('time-range-picker', useFormControlProps(props)) as TimeRangePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n })\n provideTimeRangePicker(ctx)\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n start: ctx.api.value.start,\n end: ctx.api.value.end,\n empty: ctx.api.value.empty,\n outOfRange: ctx.api.value.outOfRange,\n reversed: ctx.api.value.reversed,\n segments: ctx.api.value.segments,\n columnGroups: ctx.api.value.columnGroups,\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTimeRangePickerLabel = defineComponent({\n name: 'XhTimeRangePickerLabel',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n // 仍用原生 label 保持表单语义,点标题聚焦第一段由连接层的 click 接管\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerControl = defineComponent({\n name: 'XhTimeRangePickerControl',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerSegmentGroup = defineComponent({\n name: 'XhTimeRangePickerSegmentGroup',\n props: {\n // 端号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n const index = computed<TimeRangePickerEndIndex>(() => resolveTimeRangePickerEndIndex(props.index))\n // 组内的段位据此认领起止\n provideTimeRangePickerEnd({ index })\n return () => h('div', ctx.api.value.getSegmentGroupProps({ index: index.value }) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerSegment = defineComponent({\n name: 'XhTimeRangePickerSegment',\n props: {\n // 段的身份由作者声明;属于哪一端跟着所在的段位容器走\n segment: { type: String as PropType<TimeSegmentType>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n // 有插槽用插槽,否则显示该段的文字,空段为占位串\n return () => h(\n 'span',\n ctx.api.value.getSegmentProps({ index: end.index.value, segment: props.segment }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getSegmentText({ index: end.index.value, segment: props.segment }),\n )\n },\n})\n\nexport const XhTimeRangePickerRangeSeparator = defineComponent({\n name: 'XhTimeRangePickerRangeSeparator',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => h(\n 'span',\n ctx.api.value.getRangeSeparatorProps() as Record<string, unknown>,\n slots.default?.() ?? '-',\n )\n },\n})\n\nexport const XhTimeRangePickerTrigger = defineComponent({\n name: 'XhTimeRangePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useTimeRangePickerContext()\n return () => h('button', fieldLabel.value({\n ...fieldWiring.value,\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n // 归还焦点要落到它身上:锚点取的是整个输入行,那一层不可聚焦\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }), slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerClearTrigger = defineComponent({\n name: 'XhTimeRangePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerPositioner = defineComponent({\n name: 'XhTimeRangePickerPositioner',\n props: {\n /** 本实例的 Portal 容器;优先于应用级配置。 */\n container: { type: Object as PropType<Element> },\n },\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useTimeRangePickerContext()\n // 浮层面板的自绘条:两组时列并排放不下时面板整体横滚,横条与 content 同级挂在已经 fixed 的 positioner 上,\n // 条子走浮层 4px 档;各列自己竖滚的条子贴在列上、挂在 content 里\n const bars = useScrollbars({\n scrollable: () => ctx.contentRef.value,\n axes: ['horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => h(XhPortal, { to: props.container ?? ctx.portalTarget.value, source: ctx.controlRef }, () => [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, [...(slots.default?.() ?? []), ...bars.render()]),\n ])\n },\n})\n\nexport const XhTimeRangePickerContent = defineComponent({\n name: 'XhTimeRangePickerContent',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerPresetGroup = defineComponent({\n name: 'XhTimeRangePickerPresetGroup',\n slots: Object as SlotsType<{\n /** 自行铺设条目;未写时按 presets 数据自动铺设,两者产出的 DOM 一致。 */\n default?: (props: TimeRangePickerPresetsSlotProps) => VNode[]\n }>,\n // 根是片段(选项列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useTimeRangePickerContext()\n const presetGroupRef = ref<HTMLElement | null>(null)\n // 快捷选项列定高自己竖滚:条子贴在它的盒子上、紧跟在它后面(浮层 4px 档)\n const bars = useScrollbars({\n scrollable: () => presetGroupRef.value,\n anchor: 'layer',\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return [\n h(\n 'div',\n {\n ...mergeProps(api.getPresetGroupProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { presetGroupRef.value = el as HTMLElement },\n },\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhTimeRangePickerPreset = defineComponent({\n name: 'XhTimeRangePickerPreset',\n props: {\n /** 该条目的身份,与 presets 数据中的 value 逐字对应。 */\n value: { type: String, required: true },\n },\n slots: Object as SlotsType<{\n /** 条目内容;未写时使用数据中的 label。 */\n default?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.()\n return h(\n 'div',\n api.getPresetProps({ value: props.value }) as Record<string, unknown>,\n slotPaints(authored) ? authored : api.presets.find(p => p.value === props.value)?.label,\n )\n }\n },\n})\n\nexport const XhTimeRangePickerColumnGroup = defineComponent({\n name: 'XhTimeRangePickerColumnGroup',\n props: {\n // 端号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n slots: Object as SlotsType<{\n default?: (props: TimeRangePickerColumnGroupSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n const index = computed<TimeRangePickerEndIndex>(() => resolveTimeRangePickerEndIndex(props.index))\n // 组内的小标题、列与选项据此认领起止\n provideTimeRangePickerEnd({ index })\n return () => h(\n 'div',\n ctx.api.value.getColumnGroupProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.({ columns: ctx.api.value.columnGroups[index.value].columns }),\n )\n },\n})\n\nexport const XhTimeRangePickerColumnGroupLabel = defineComponent({\n name: 'XhTimeRangePickerColumnGroupLabel',\n setup(_, { slots }) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n return () => h('div', ctx.api.value.getColumnGroupLabelProps({ index: end.index.value }) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimeRangePickerColumn = defineComponent({\n name: 'XhTimeRangePickerColumn',\n props: {\n unit: { type: String as PropType<TimePickerColumnUnit>, required: true },\n },\n slots: Object as SlotsType<{\n default?: (props: TimeRangePickerColumnSlotProps) => VNode[]\n }>,\n // 根是片段(列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n const unit = computed(() => props.unit)\n // 下传单位,供列内选项取到自己归哪一列\n provideTimeRangePickerColumn({ unit })\n const columnRef = ref<HTMLElement | null>(null)\n // 定高的时间列自己竖滚:条子贴在本列的盒子上、紧跟在它后面(浮层 4px 档)\n const bars = useScrollbars({\n scrollable: () => columnRef.value,\n anchor: 'layer',\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => [\n h(\n 'div',\n {\n ...mergeProps(ctx.api.value.getColumnProps({ index: end.index.value, unit: props.unit }) as Record<string, unknown>, attrs),\n ref: (el: unknown) => { columnRef.value = el as HTMLElement },\n },\n slots.default?.({ options: ctx.api.value.columnGroups[end.index.value].columns.find(c => c.unit === props.unit)?.options ?? [] }),\n ),\n ...bars.render(),\n ]\n },\n})\n\nexport const XhTimeRangePickerItem = defineComponent({\n name: 'XhTimeRangePickerItem',\n props: {\n /** 两位补零的显示串('09' / '30');上下午列写 '00' / '01'。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n const { unit } = useTimeRangePickerColumnContext()\n // 有插槽用插槽,否则显示这一格该显示的文字(上下午列按 locale 译成「上午 / 下午」)\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ index: end.index.value, unit: unit.value, value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getItemText({ unit: unit.value, value: props.value }),\n )\n },\n})\n\nexport const XhTimeRangePickerHiddenInput = defineComponent({\n name: 'XhTimeRangePickerHiddenInput',\n props: {\n // 写在段位容器外面时用它指明属于哪一端;写在容器里面不必给,跟着容器走\n index: { type: [Number, String] as PropType<number | string> },\n },\n setup(props) {\n const ctx = useTimeRangePickerContext()\n const end = useTimeRangePickerEndContext()\n return () => {\n const index = props.index === undefined ? end.index.value : resolveTimeRangePickerEndIndex(props.index)\n return h('input', ctx.api.value.getHiddenInputProps({ index }) as Record<string, unknown>)\n }\n },\n})\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","names":[],"sources":["../../../src/components/timeline/timeline.ts"],"mappings":";;;;;cAiBa,8BAAc,8BAAA;;IAIQ,MAAA,SAAS;;;IACX,MAAA,SAAS;;;IACd,MAAA,SAAS;;;;;;IAFF,MAAA,SAAS;;;IACX,MAAA,SAAS;;;IACd,MAAA,SAAS;;MAOnC,oDAAA;;cAGW,8BAAc,8BAAA;;IAGC,MAAA,SAAS;;;;;;IAAT,MAAA,SAAS;;MAOnC,oDAAA;cAGW,+BAAe,wCAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,+BAAe,wCAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,wCAAA,oBAAA,4BAAA;;8BAMhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"timeline.d.ts","names":[],"sources":["../../../src/components/timeline/timeline.ts"],"mappings":";;;;;cAiBa,8BAAc,8BAAA;;IAIQ,MAAA,SAAS;;;IACX,MAAA,SAAS;;;IACd,MAAA,SAAS;;;;;;IAFF,MAAA,SAAS;;;IACX,MAAA,SAAS;;;IACd,MAAA,SAAS;;MASnC,oDAAA;;cAGW,8BAAc,8BAAA;;IAGC,MAAA,SAAS;;;;;;IAAT,MAAA,SAAS;;MAOnC,oDAAA;cAGW,+BAAe,wCAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,wCAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,wCAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,+BAAe,wCAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,wCAAA,oBAAA,4BAAA;;8BAMhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,8BAAc,wCAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -13,7 +13,8 @@ const XhTimelineRoot = defineComponent({
13
13
  size: { type: String }
14
14
  },
15
15
  setup(props, { slots }) {
16
- const api = computed(() => connectTimeline(withXhConfig("timeline", props), vueNormalize));
16
+ const configured = withXhConfig("timeline", props);
17
+ const api = computed(() => connectTimeline(configured, vueNormalize));
17
18
  provideTimeline({ api });
18
19
  return () => h("ol", api.value.getRootProps(), slots.default?.());
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","names":[],"sources":["../../../src/components/timeline/timeline.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 timeline 相关实现。\n\nimport type { Orientation, Size, Tone } from '@xihan-ui/core'\nimport type { TimelinePlacement, TimelineProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectTimeline } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideTimeline, provideTimelineItem, useTimelineContext, useTimelineItem } from './context'\n\n/** 根渲染为 ol:事件本身有先后,列表标记由皮肤去除、列表语义由 role 保留。 */\nexport const XhTimelineRoot = defineComponent({\n name: 'XhTimelineRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n orientation: { type: String as PropType<Orientation> },\n placement: { type: String as PropType<TimelinePlacement> },\n size: { type: String as PropType<Size> },\n },\n setup(props, { slots }) {\n const api = computed(() => connectTimeline(withXhConfig('timeline', props) as TimelineProps, vueNormalize))\n provideTimeline({ api })\n return () => h('ol', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 一条事件。tone 只在该条内生效,下传给它自己的圆点。 */\nexport const XhTimelineItem = defineComponent({\n name: 'XhTimelineItem',\n props: {\n tone: { type: String as PropType<Tone> },\n },\n setup(props, { slots }) {\n const ctx = useTimelineContext()\n provideTimelineItem(() => ({ tone: props.tone }))\n return () => h('li', ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 这一条的坐标(日期、版本号),与内容对置的那一列\nexport const XhTimelineLabel = defineComponent({\n name: 'XhTimelineLabel',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineIndicator = defineComponent({\n name: 'XhTimelineIndicator',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n const item = useTimelineItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineConnector = defineComponent({\n name: 'XhTimelineConnector',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('span', ctx.api.value.getConnectorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineContent = defineComponent({\n name: 'XhTimelineContent',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineTitle = defineComponent({\n name: 'XhTimelineTitle',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineDescription = defineComponent({\n name: 'XhTimelineDescription',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 渲染为 time:机读时间由作者写 datetime,属性原样透传到该节点上。 */\nexport const XhTimelineTime = defineComponent({\n name: 'XhTimelineTime',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('time', ctx.api.value.getTimeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;;AAiBA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,aAAa,EAAE,MAAM,OAAgC;EACrD,WAAW,EAAE,MAAM,OAAsC;EACzD,MAAM,EAAE,MAAM,OAAyB;CACzC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,gBAAgB,aAAa,YAAY,KAAK,GAAoB,YAAY,CAAC;EAC1G,gBAAgB,EAAE,IAAI,CAAC;EACvB,aAAa,EAAE,MAAM,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC7F;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,MAAM,EAAE,MAAM,OAAyB,EACzC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,2BAA2B,EAAE,MAAM,MAAM,KAAK,EAAE;EAChD,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAGD,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,OAAO,gBAAgB;EAC7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC"}
1
+ {"version":3,"file":"timeline.js","names":[],"sources":["../../../src/components/timeline/timeline.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 timeline 相关实现。\n\nimport type { Orientation, Size, Tone } from '@xihan-ui/core'\nimport type { TimelinePlacement, TimelineProps } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectTimeline } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideTimeline, provideTimelineItem, useTimelineContext, useTimelineItem } from './context'\n\n/** 根渲染为 ol:事件本身有先后,列表标记由皮肤去除、列表语义由 role 保留。 */\nexport const XhTimelineRoot = defineComponent({\n name: 'XhTimelineRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n orientation: { type: String as PropType<Orientation> },\n placement: { type: String as PropType<TimelinePlacement> },\n size: { type: String as PropType<Size> },\n },\n setup(props, { slots }) {\n // withXhConfig 只能在 setup 期调,连接层在渲染期读这份代理\n const configured = withXhConfig('timeline', props)\n const api = computed(() => connectTimeline(configured as TimelineProps, vueNormalize))\n provideTimeline({ api })\n return () => h('ol', api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 一条事件。tone 只在该条内生效,下传给它自己的圆点。 */\nexport const XhTimelineItem = defineComponent({\n name: 'XhTimelineItem',\n props: {\n tone: { type: String as PropType<Tone> },\n },\n setup(props, { slots }) {\n const ctx = useTimelineContext()\n provideTimelineItem(() => ({ tone: props.tone }))\n return () => h('li', ctx.api.value.getItemProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 这一条的坐标(日期、版本号),与内容对置的那一列\nexport const XhTimelineLabel = defineComponent({\n name: 'XhTimelineLabel',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineIndicator = defineComponent({\n name: 'XhTimelineIndicator',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n const item = useTimelineItem()\n return () => h('span', ctx.api.value.getIndicatorProps(item()) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineConnector = defineComponent({\n name: 'XhTimelineConnector',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('span', ctx.api.value.getConnectorProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineContent = defineComponent({\n name: 'XhTimelineContent',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getContentProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineTitle = defineComponent({\n name: 'XhTimelineTitle',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimelineDescription = defineComponent({\n name: 'XhTimelineDescription',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('div', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 渲染为 time:机读时间由作者写 datetime,属性原样透传到该节点上。 */\nexport const XhTimelineTime = defineComponent({\n name: 'XhTimelineTime',\n setup(_, { slots }) {\n const ctx = useTimelineContext()\n return () => h('time', ctx.api.value.getTimeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;;AAiBA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CAEN,OAAO;EACL,aAAa,EAAE,MAAM,OAAgC;EACrD,WAAW,EAAE,MAAM,OAAsC;EACzD,MAAM,EAAE,MAAM,OAAyB;CACzC;CACA,MAAM,OAAO,EAAE,SAAS;EAEtB,MAAM,aAAa,aAAa,YAAY,KAAK;EACjD,MAAM,MAAM,eAAe,gBAAgB,YAA6B,YAAY,CAAC;EACrF,gBAAgB,EAAE,IAAI,CAAC;EACvB,aAAa,EAAE,MAAM,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAC7F;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO,EACL,MAAM,EAAE,MAAM,OAAyB,EACzC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,mBAAmB;EAC/B,2BAA2B,EAAE,MAAM,MAAM,KAAK,EAAE;EAChD,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAGD,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,MAAM,OAAO,gBAAgB;EAC7B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,KAAK,CAAC,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,UAAU,CAAC;CACxG;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACzG;AACF,CAAC;;AAGD,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,mBAAmB;EAC/B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC"}
@@ -1,11 +1,12 @@
1
1
  import { PropType } from "vue";
2
- import { TimestampType, TimestampValue } from "@xihan-ui/headless";
2
+ import { TimestampTranslations, TimestampType, TimestampValue } from "@xihan-ui/headless";
3
3
  //#region src/components/timestamp/timestamp.d.ts
4
4
  /**
5
5
  * 渲染为 `<time datetime>`:文本供人阅读,datetime 供机器读取,两者取自同一个墙钟。
6
6
  *
7
7
  * 默认插槽中写了内容时使用作者的文本,datetime 仍由组件计算:这正是用它包裹一段
8
8
  * 自行排版的时间表述的用法。插槽为空时铺设组件格式化后的文本。
9
+ * 相对型在没给 now 时按距今远近自动刷新,刷新节奏由状态机掌握。
9
10
  */
10
11
  declare const XhTimestamp: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
11
12
  value: {
@@ -20,9 +21,18 @@ declare const XhTimestamp: import("vue").DefineComponent<import("vue").ExtractPr
20
21
  locale: {
21
22
  type: StringConstructor;
22
23
  };
24
+ timeZone: {
25
+ type: StringConstructor;
26
+ };
23
27
  now: {
24
28
  type: PropType<TimestampValue>;
25
29
  };
30
+ refreshInterval: {
31
+ type: NumberConstructor;
32
+ };
33
+ translations: {
34
+ type: PropType<Partial<TimestampTranslations>>;
35
+ };
26
36
  }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
27
37
  [key: string]: any;
28
38
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -38,9 +48,18 @@ declare const XhTimestamp: import("vue").DefineComponent<import("vue").ExtractPr
38
48
  locale: {
39
49
  type: StringConstructor;
40
50
  };
51
+ timeZone: {
52
+ type: StringConstructor;
53
+ };
41
54
  now: {
42
55
  type: PropType<TimestampValue>;
43
56
  };
57
+ refreshInterval: {
58
+ type: NumberConstructor;
59
+ };
60
+ translations: {
61
+ type: PropType<Partial<TimestampTranslations>>;
62
+ };
44
63
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
45
64
  //#endregion
46
65
  export { XhTimestamp };
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp.d.ts","names":[],"sources":["../../../src/components/timestamp/timestamp.ts"],"mappings":";;;;;;;;;cAqBa,2BAAW,8BAAA;;IAIqB,MAAA,SAAS;;;IAC1B,MAAA,SAAS;;;;;;;;;IAGM,MAAA,SAAS;;;;;;IAJP,MAAA,SAAS;;;IAC1B,MAAA,SAAS;;;;;;;;;IAGM,MAAA,SAAS;;MAsBlD,oDAAA"}
1
+ {"version":3,"file":"timestamp.d.ts","names":[],"sources":["../../../src/components/timestamp/timestamp.ts"],"mappings":";;;;;;;;;;cAyBa,2BAAW,8BAAA;;IAIqB,MAAA,SAAS;;;IAC1B,MAAA,SAAS;;;;;;;;;;;;IAIM,MAAA,SAAS;;;;;;IAEhB,MAAA,SAAS,QAAQ;;;;;;IAPR,MAAA,SAAS;;;IAC1B,MAAA,SAAS;;;;;;;;;;;;IAIM,MAAA,SAAS;;;;;;IAEhB,MAAA,SAAS,QAAQ;;MA0BnD,oDAAA"}
@@ -1,14 +1,18 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
2
  import { withXhConfig } from "../../config/config.js";
3
+ import { useMachine } from "../../runtime/use-machine.js";
4
+ import { createVueIdGenerator } from "../../runtime/vue-id.js";
3
5
  import { slotPaints } from "../../runtime/slot-content.js";
4
6
  import { computed, defineComponent, h } from "vue";
5
- import { connectTimestamp } from "@xihan-ui/headless";
7
+ import { createScope } from "@xihan-ui/core";
8
+ import { connectTimestamp, timestampMachine } from "@xihan-ui/headless";
6
9
  //#region src/components/timestamp/timestamp.ts
7
10
  /**
8
11
  * 渲染为 `<time datetime>`:文本供人阅读,datetime 供机器读取,两者取自同一个墙钟。
9
12
  *
10
13
  * 默认插槽中写了内容时使用作者的文本,datetime 仍由组件计算:这正是用它包裹一段
11
14
  * 自行排版的时间表述的用法。插槽为空时铺设组件格式化后的文本。
15
+ * 相对型在没给 now 时按距今远近自动刷新,刷新节奏由状态机掌握。
12
16
  */
13
17
  const XhTimestamp = defineComponent({
14
18
  name: "XhTimestamp",
@@ -21,21 +25,28 @@ const XhTimestamp = defineComponent({
21
25
  type: { type: String },
22
26
  format: { type: String },
23
27
  locale: { type: String },
28
+ timeZone: { type: String },
24
29
  now: { type: [
25
30
  String,
26
31
  Number,
27
32
  Date
28
- ] }
33
+ ] },
34
+ refreshInterval: { type: Number },
35
+ translations: { type: Object }
29
36
  },
30
37
  setup(props, { slots }) {
31
38
  const merged = withXhConfig("timestamp", props);
32
- const api = computed(() => connectTimestamp({
39
+ const service = useMachine(timestampMachine, () => ({
33
40
  value: merged.value,
34
41
  type: merged.type,
35
42
  format: merged.format,
36
43
  locale: merged.locale,
37
- now: merged.now
38
- }, vueNormalize));
44
+ timeZone: merged.timeZone,
45
+ now: merged.now,
46
+ refreshInterval: merged.refreshInterval,
47
+ translations: merged.translations
48
+ }), createScope(null, createVueIdGenerator()));
49
+ const api = computed(() => connectTimestamp(service, vueNormalize));
39
50
  return () => {
40
51
  const content = slots.default?.();
41
52
  return h("time", api.value.getRootProps(), slotPaints(content) ? content : api.value.text);
@@ -1 +1 @@
1
- {"version":3,"file":"timestamp.js","names":[],"sources":["../../../src/components/timestamp/timestamp.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 timestamp 相关实现。\n\nimport type { TimestampProps, TimestampType, TimestampValue } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectTimestamp } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { slotPaints } from '../../runtime/slot-content'\n\n/**\n * 渲染为 `<time datetime>`:文本供人阅读,datetime 供机器读取,两者取自同一个墙钟。\n *\n * 默认插槽中写了内容时使用作者的文本,datetime 仍由组件计算:这正是用它包裹一段\n * 自行排版的时间表述的用法。插槽为空时铺设组件格式化后的文本。\n */\nexport const XhTimestamp = defineComponent({\n name: 'XhTimestamp',\n // 缺省值由 connect 给出;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n value: { type: [String, Number, Date] as PropType<TimestampValue> },\n type: { type: String as PropType<TimestampType> },\n format: { type: String },\n locale: { type: String },\n now: { type: [String, Number, Date] as PropType<TimestampValue> },\n },\n setup(props, { slots }) {\n const merged = withXhConfig('timestamp', props)\n const api = computed(() => connectTimestamp({\n value: merged.value,\n type: merged.type,\n format: merged.format,\n locale: merged.locale,\n now: merged.now,\n } satisfies TimestampProps, vueNormalize))\n\n return () => {\n const content = slots.default?.()\n return h(\n 'time',\n api.value.getRootProps() as Record<string, unknown>,\n // 插槽里只剩注释或空白时不算写过东西,那种情况仍铺组件的文本\n slotPaints(content) ? content : api.value.text,\n )\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;AAqBA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EACL,OAAO,EAAE,MAAM;GAAC;GAAQ;GAAQ;EAAI,EAA8B;EAClE,MAAM,EAAE,MAAM,OAAkC;EAChD,QAAQ,EAAE,MAAM,OAAO;EACvB,QAAQ,EAAE,MAAM,OAAO;EACvB,KAAK,EAAE,MAAM;GAAC;GAAQ;GAAQ;EAAI,EAA8B;CAClE;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,SAAS,aAAa,aAAa,KAAK;EAC9C,MAAM,MAAM,eAAe,iBAAiB;GAC1C,OAAO,OAAO;GACd,MAAM,OAAO;GACb,QAAQ,OAAO;GACf,QAAQ,OAAO;GACf,KAAK,OAAO;EACd,GAA4B,YAAY,CAAC;EAEzC,aAAa;GACX,MAAM,UAAU,MAAM,UAAU;GAChC,OAAO,EACL,QACA,IAAI,MAAM,aAAa,GAEvB,WAAW,OAAO,IAAI,UAAU,IAAI,MAAM,IAC5C;EACF;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"timestamp.js","names":[],"sources":["../../../src/components/timestamp/timestamp.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 timestamp 相关实现。\n\nimport type { TimestampTranslations, TimestampType, TimestampValue } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { createScope } from '@xihan-ui/core'\nimport { connectTimestamp, timestampMachine } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\n/**\n * 渲染为 `<time datetime>`:文本供人阅读,datetime 供机器读取,两者取自同一个墙钟。\n *\n * 默认插槽中写了内容时使用作者的文本,datetime 仍由组件计算:这正是用它包裹一段\n * 自行排版的时间表述的用法。插槽为空时铺设组件格式化后的文本。\n * 相对型在没给 now 时按距今远近自动刷新,刷新节奏由状态机掌握。\n */\nexport const XhTimestamp = defineComponent({\n name: 'XhTimestamp',\n // 缺省值由机器与 connect 给出;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n value: { type: [String, Number, Date] as PropType<TimestampValue> },\n type: { type: String as PropType<TimestampType> },\n format: { type: String },\n locale: { type: String },\n timeZone: { type: String },\n now: { type: [String, Number, Date] as PropType<TimestampValue> },\n refreshInterval: { type: Number },\n translations: { type: Object as PropType<Partial<TimestampTranslations>> },\n },\n setup(props, { slots }) {\n const merged = withXhConfig('timestamp', props)\n const service = useMachine(timestampMachine, () => ({\n value: merged.value,\n type: merged.type,\n format: merged.format,\n locale: merged.locale,\n timeZone: merged.timeZone,\n now: merged.now,\n refreshInterval: merged.refreshInterval,\n translations: merged.translations,\n }), createScope(null, createVueIdGenerator()))\n const api = computed(() => connectTimestamp(service, vueNormalize))\n\n return () => {\n const content = slots.default?.()\n return h(\n 'time',\n api.value.getRootProps() as Record<string, unknown>,\n // 插槽里只剩注释或空白时不算写过东西,那种情况仍铺组件的文本\n slotPaints(content) ? content : api.value.text,\n )\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;;;;AAyBA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EACL,OAAO,EAAE,MAAM;GAAC;GAAQ;GAAQ;EAAI,EAA8B;EAClE,MAAM,EAAE,MAAM,OAAkC;EAChD,QAAQ,EAAE,MAAM,OAAO;EACvB,QAAQ,EAAE,MAAM,OAAO;EACvB,UAAU,EAAE,MAAM,OAAO;EACzB,KAAK,EAAE,MAAM;GAAC;GAAQ;GAAQ;EAAI,EAA8B;EAChE,iBAAiB,EAAE,MAAM,OAAO;EAChC,cAAc,EAAE,MAAM,OAAmD;CAC3E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,SAAS,aAAa,aAAa,KAAK;EAC9C,MAAM,UAAU,WAAW,yBAAyB;GAClD,OAAO,OAAO;GACd,MAAM,OAAO;GACb,QAAQ,OAAO;GACf,QAAQ,OAAO;GACf,UAAU,OAAO;GACjB,KAAK,OAAO;GACZ,iBAAiB,OAAO;GACxB,cAAc,OAAO;EACvB,IAAI,YAAY,MAAM,qBAAqB,CAAC,CAAC;EAC7C,MAAM,MAAM,eAAe,iBAAiB,SAAS,YAAY,CAAC;EAElE,aAAa;GACX,MAAM,UAAU,MAAM,UAAU;GAChC,OAAO,EACL,QACA,IAAI,MAAM,aAAa,GAEvB,WAAW,OAAO,IAAI,UAAU,IAAI,MAAM,IAC5C;EACF;CACF;AACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { PropType, SlotsType, VNode } from "vue";
2
2
  import { ControlVariant, Direction, Orientation, Size } from "@xihan-ui/core";
3
- import { ToolbarApi } from "@xihan-ui/headless";
3
+ import { ToolbarApi, ToolbarTranslations } from "@xihan-ui/headless";
4
4
  //#region src/components/toolbar/toolbar.d.ts
5
5
  /** 默认插槽的载荷:焦点锚点、生效的主轴与整条工具条的禁用态。 */
6
6
  type ToolbarRootSlotProps = Pick<ToolbarApi, 'focusedValue' | 'orientation' | 'disabled'>;
@@ -25,6 +25,9 @@ declare const XhToolbarRoot: import("vue").DefineComponent<import("vue").Extract
25
25
  size: {
26
26
  type: PropType<Size>;
27
27
  };
28
+ translations: {
29
+ type: PropType<Partial<ToolbarTranslations>>;
30
+ };
28
31
  }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
29
32
  [key: string]: any;
30
33
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
@@ -48,6 +51,9 @@ declare const XhToolbarRoot: import("vue").DefineComponent<import("vue").Extract
48
51
  size: {
49
52
  type: PropType<Size>;
50
53
  };
54
+ translations: {
55
+ type: PropType<Partial<ToolbarTranslations>>;
56
+ };
51
57
  }>> & Readonly<{}>, {
52
58
  loop: boolean;
53
59
  disabled: boolean;
@@ -88,6 +94,15 @@ declare const XhToolbarItem: import("vue").DefineComponent<import("vue").Extract
88
94
  as: string;
89
95
  disabled: boolean;
90
96
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
97
+ /**
98
+ * 行尾的「更多」钮:放不下的条目按次序收进它弹出的菜单,全部放得下时它收着。
99
+ * 放在 root 的最后。它同时是一张 Menu 的触发器——菜单的条目、勾选态与落位都由工具条的机器现给
100
+ * (toolbarOverflowMenuProps),钮按 asChild 接菜单的开合接线,自己的解剖与工具条的处理器不让位。
101
+ * 不写内容时由皮肤画一枚横排三点。
102
+ */
103
+ declare const XhToolbarOverflowTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
104
+ [key: string]: any;
105
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
91
106
  //#endregion
92
- export { ToolbarRootSlotProps, XhToolbarGroup, XhToolbarItem, XhToolbarRoot, XhToolbarSeparator };
107
+ export { ToolbarRootSlotProps, XhToolbarGroup, XhToolbarItem, XhToolbarOverflowTrigger, XhToolbarRoot, XhToolbarSeparator };
93
108
  //# sourceMappingURL=toolbar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.d.ts","names":[],"sources":["../../../src/components/toolbar/toolbar.ts"],"mappings":";;;;;KAiBY,uBAAuB,KAAK;cAE3B,6BAAa,8BAAA;;IAIS,MAAA,SAAS;;;IACjB,MAAA,SAAS;;;;;;;;;;;IAGL,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;;;;IALF,MAAA,SAAS;;;IACjB,MAAA,SAAS;;;;;;;;;;;IAGL,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;;;;EAGvB,WAAC,OAAO,yBAAyB;kCAY7C;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAO7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAoCxB"}
1
+ {"version":3,"file":"toolbar.d.ts","names":[],"sources":["../../../src/components/toolbar/toolbar.ts"],"mappings":";;;;;KAqBY,uBAAuB,KAAK;cAE3B,6BAAa,8BAAA;;IAIS,MAAA,SAAS;;;IACjB,MAAA,SAAS;;;;;;;;;;;IAGL,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACD,MAAA,SAAS,QAAQ;;;;;;IANlB,MAAA,SAAS;;;IACjB,MAAA,SAAS;;;;;;;;;;;IAGL,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACD,MAAA,SAAS,QAAQ;;;;;;EAGvC,WAAC,OAAO,yBAAyB;kCAe7C;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAO7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAoCxB;;;;;;;cAQW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAUnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -1,6 +1,10 @@
1
+ import { withXhConfig } from "../../config/config.js";
2
+ import { mergePartProps } from "../../runtime/merge-props.js";
3
+ import { XhMenuRoot } from "../menu/menu.js";
1
4
  import { provideToolbar, useToolbarContext } from "./context.js";
2
5
  import { useToolbar } from "./use-toolbar.js";
3
6
  import { defineComponent, h, onBeforeUnmount, ref, watch } from "vue";
7
+ import { toolbarOverflowMenuProps } from "@xihan-ui/headless";
4
8
  //#region src/components/toolbar/toolbar.ts
5
9
  const XhToolbarRoot = defineComponent({
6
10
  name: "XhToolbarRoot",
@@ -16,13 +20,19 @@ const XhToolbarRoot = defineComponent({
16
20
  default: void 0
17
21
  },
18
22
  variant: { type: String },
19
- size: { type: String }
23
+ size: { type: String },
24
+ translations: { type: Object }
20
25
  },
21
26
  slots: Object,
22
27
  setup(props, { slots }) {
23
- const ctx = useToolbar(props);
28
+ const ctx = useToolbar(withXhConfig("toolbar", props));
24
29
  provideToolbar(ctx);
25
- return () => h("div", ctx.api.value.getRootProps(), slots.default?.({
30
+ return () => h("div", {
31
+ ...ctx.api.value.getRootProps(),
32
+ ref: (el) => {
33
+ ctx.rootRef.value = el;
34
+ }
35
+ }, slots.default?.({
26
36
  focusedValue: ctx.api.value.focusedValue,
27
37
  orientation: ctx.api.value.orientation,
28
38
  disabled: ctx.api.value.disabled
@@ -83,7 +93,24 @@ const XhToolbarItem = defineComponent({
83
93
  }, slots.default?.());
84
94
  }
85
95
  });
96
+ /**
97
+ * 行尾的「更多」钮:放不下的条目按次序收进它弹出的菜单,全部放得下时它收着。
98
+ * 放在 root 的最后。它同时是一张 Menu 的触发器——菜单的条目、勾选态与落位都由工具条的机器现给
99
+ * (toolbarOverflowMenuProps),钮按 asChild 接菜单的开合接线,自己的解剖与工具条的处理器不让位。
100
+ * 不写内容时由皮肤画一枚横排三点。
101
+ */
102
+ const XhToolbarOverflowTrigger = defineComponent({
103
+ name: "XhToolbarOverflowTrigger",
104
+ inheritAttrs: false,
105
+ setup(_, { slots, attrs }) {
106
+ const ctx = useToolbarContext();
107
+ return () => h(XhMenuRoot, {
108
+ ...toolbarOverflowMenuProps(ctx.service),
109
+ triggerAsChild: true
110
+ }, { trigger: () => [h("button", mergePartProps(ctx.api.value.getOverflowTriggerProps(), attrs), slots.default?.())] });
111
+ }
112
+ });
86
113
  //#endregion
87
- export { XhToolbarGroup, XhToolbarItem, XhToolbarRoot, XhToolbarSeparator };
114
+ export { XhToolbarGroup, XhToolbarItem, XhToolbarOverflowTrigger, XhToolbarRoot, XhToolbarSeparator };
88
115
 
89
116
  //# sourceMappingURL=toolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.js","names":[],"sources":["../../../src/components/toolbar/toolbar.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 toolbar 相关实现。\n\nimport type { ControlVariant, Direction, Orientation, Size } from '@xihan-ui/core'\nimport type { ToolbarApi, ToolbarSchema } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideToolbar, useToolbarContext } from './context'\nimport { useToolbar } from './use-toolbar'\n\ntype ToolbarProps = ToolbarSchema['props']\n\n/** 默认插槽的载荷:焦点锚点、生效的主轴与整条工具条的禁用态。 */\nexport type ToolbarRootSlotProps = Pick<ToolbarApi, 'focusedValue' | 'orientation' | 'disabled'>\n\nexport const XhToolbarRoot = defineComponent({\n name: 'XhToolbarRoot',\n // 缺省值由 connect 决定;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n orientation: { type: String as PropType<Orientation> },\n dir: { type: String as PropType<Direction> },\n loop: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n variant: { type: String as PropType<ControlVariant> },\n size: { type: String as PropType<Size> },\n },\n slots: Object as SlotsType<{\n default?: (props: ToolbarRootSlotProps) => VNode[]\n }>,\n // 无对外事件,条目的点击与切换由条目自行派发\n setup(props, { slots }) {\n const ctx = useToolbar(props as ToolbarProps)\n provideToolbar(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n focusedValue: ctx.api.value.focusedValue,\n orientation: ctx.api.value.orientation,\n disabled: ctx.api.value.disabled,\n }))\n },\n})\n\nexport const XhToolbarGroup = defineComponent({\n name: 'XhToolbarGroup',\n setup(_, { slots }) {\n const ctx = useToolbarContext()\n return () => h('div', ctx.api.value.getGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhToolbarSeparator = defineComponent({\n name: 'XhToolbarSeparator',\n setup() {\n const ctx = useToolbarContext()\n // 分隔线不渲染内容\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\nexport const XhToolbarItem = defineComponent({\n name: 'XhToolbarItem',\n props: {\n value: { type: String, required: true },\n disabled: Boolean,\n /** 条目渲染为哪个标签,默认 button;不自动补 type=\"button\",表单内需自行声明。 */\n as: { type: String, default: 'button' },\n },\n setup(props, { slots }) {\n const ctx = useToolbarContext()\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报工具条失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'TOOLBAR.BLUR' })\n })\n return () => h(\n props.as,\n { ...ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n"],"mappings":";;;;AAmBA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,aAAa,EAAE,MAAM,OAAgC;EACrD,KAAK,EAAE,MAAM,OAA8B;EAC3C,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,SAAS,EAAE,MAAM,OAAmC;EACpD,MAAM,EAAE,MAAM,OAAyB;CACzC;CACA,OAAO;CAIP,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,WAAW,KAAqB;EAC5C,eAAe,GAAG;EAClB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,cAAc,IAAI,IAAI,MAAM;GAC5B,aAAa,IAAI,IAAI,MAAM;GAC3B,UAAU,IAAI,IAAI,MAAM;EAC1B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,kBAAkB;EAE9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,CAA4B;CACpF;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EACtC,UAAU;;EAEV,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAS;CACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAE9B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,eAAe,CAAC;EACzC,CAAC;EACD,aAAa,EACX,MAAM,IACN;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa;IAAE,OAAO,MAAM;IAAO,UAAU,MAAM;GAAS,CAAC;GAA8B,KAAK;EAAO,GAC1H,MAAM,UAAU,CAClB;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"toolbar.js","names":[],"sources":["../../../src/components/toolbar/toolbar.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 toolbar 相关实现。\n\nimport type { ControlVariant, Direction, Orientation, Size } from '@xihan-ui/core'\nimport type { ToolbarApi, ToolbarSchema, ToolbarTranslations } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport { toolbarOverflowMenuProps } from '@xihan-ui/headless'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { mergePartProps } from '../../runtime/merge-props'\nimport { XhMenuRoot } from '../menu/menu'\nimport { provideToolbar, useToolbarContext } from './context'\nimport { useToolbar } from './use-toolbar'\n\ntype ToolbarProps = ToolbarSchema['props']\n\n/** 默认插槽的载荷:焦点锚点、生效的主轴与整条工具条的禁用态。 */\nexport type ToolbarRootSlotProps = Pick<ToolbarApi, 'focusedValue' | 'orientation' | 'disabled'>\n\nexport const XhToolbarRoot = defineComponent({\n name: 'XhToolbarRoot',\n // 缺省值由 connect 决定;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n orientation: { type: String as PropType<Orientation> },\n dir: { type: String as PropType<Direction> },\n loop: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n variant: { type: String as PropType<ControlVariant> },\n size: { type: String as PropType<Size> },\n translations: { type: Object as PropType<Partial<ToolbarTranslations>> },\n },\n slots: Object as SlotsType<{\n default?: (props: ToolbarRootSlotProps) => VNode[]\n }>,\n // 无对外事件,条目的点击与切换由条目自行派发\n setup(props, { slots }) {\n const ctx = useToolbar(withXhConfig('toolbar', props) as ToolbarProps)\n provideToolbar(ctx)\n return () => h('div', {\n ...ctx.api.value.getRootProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.rootRef.value = el as HTMLElement | null },\n }, slots.default?.({\n focusedValue: ctx.api.value.focusedValue,\n orientation: ctx.api.value.orientation,\n disabled: ctx.api.value.disabled,\n }))\n },\n})\n\nexport const XhToolbarGroup = defineComponent({\n name: 'XhToolbarGroup',\n setup(_, { slots }) {\n const ctx = useToolbarContext()\n return () => h('div', ctx.api.value.getGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhToolbarSeparator = defineComponent({\n name: 'XhToolbarSeparator',\n setup() {\n const ctx = useToolbarContext()\n // 分隔线不渲染内容\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\nexport const XhToolbarItem = defineComponent({\n name: 'XhToolbarItem',\n props: {\n value: { type: String, required: true },\n disabled: Boolean,\n /** 条目渲染为哪个标签,默认 button;不自动补 type=\"button\",表单内需自行声明。 */\n as: { type: String, default: 'button' },\n },\n setup(props, { slots }) {\n const ctx = useToolbarContext()\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报工具条失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整组一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'TOOLBAR.BLUR' })\n })\n return () => h(\n props.as,\n { ...ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\n/**\n * 行尾的「更多」钮:放不下的条目按次序收进它弹出的菜单,全部放得下时它收着。\n * 放在 root 的最后。它同时是一张 Menu 的触发器——菜单的条目、勾选态与落位都由工具条的机器现给\n * (toolbarOverflowMenuProps),钮按 asChild 接菜单的开合接线,自己的解剖与工具条的处理器不让位。\n * 不写内容时由皮肤画一枚横排三点。\n */\nexport const XhToolbarOverflowTrigger = defineComponent({\n name: 'XhToolbarOverflowTrigger',\n // 直通属性合到钮上,而不是落到菜单的根组件上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useToolbarContext()\n return () => h(XhMenuRoot, { ...toolbarOverflowMenuProps(ctx.service), triggerAsChild: true }, {\n trigger: () => [h('button', mergePartProps(ctx.api.value.getOverflowTriggerProps() as Record<string, unknown>, attrs), slots.default?.())],\n })\n },\n})\n"],"mappings":";;;;;;;;AAuBA,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CAEN,OAAO;EACL,aAAa,EAAE,MAAM,OAAgC;EACrD,KAAK,EAAE,MAAM,OAA8B;EAC3C,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,SAAS,EAAE,MAAM,OAAmC;EACpD,MAAM,EAAE,MAAM,OAAyB;EACvC,cAAc,EAAE,MAAM,OAAiD;CACzE;CACA,OAAO;CAIP,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,WAAW,aAAa,WAAW,KAAK,CAAiB;EACrE,eAAe,GAAG;EAClB,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,aAAa;GAC9B,MAAM,OAAgB;IAAE,IAAI,QAAQ,QAAQ;GAAyB;EACvE,GAAG,MAAM,UAAU;GACjB,cAAc,IAAI,IAAI,MAAM;GAC5B,aAAa,IAAI,IAAI,MAAM;GAC3B,UAAU,IAAI,IAAI,MAAM;EAC1B,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,kBAAkB;EAE9B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,kBAAkB,CAA4B;CACpF;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EACtC,UAAU;;EAEV,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAS;CACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,kBAAkB;EAE9B,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,eAAe,CAAC;EACzC,CAAC;EACD,aAAa,EACX,MAAM,IACN;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa;IAAE,OAAO,MAAM;IAAO,UAAU,MAAM;GAAS,CAAC;GAA8B,KAAK;EAAO,GAC1H,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;;;;;AAQD,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CAEN,cAAc;CACd,MAAM,GAAG,EAAE,OAAO,SAAS;EACzB,MAAM,MAAM,kBAAkB;EAC9B,aAAa,EAAE,YAAY;GAAE,GAAG,yBAAyB,IAAI,OAAO;GAAG,gBAAgB;EAAK,GAAG,EAC7F,eAAe,CAAC,EAAE,UAAU,eAAe,IAAI,IAAI,MAAM,wBAAwB,GAA8B,KAAK,GAAG,MAAM,UAAU,CAAC,CAAC,EAC3I,CAAC;CACH;AACF,CAAC"}
@@ -1,11 +1,13 @@
1
- import { ComputedRef } from "vue";
1
+ import { ComputedRef, Ref } from "vue";
2
2
  import { Service } from "@xihan-ui/core";
3
3
  import { ToolbarApi, ToolbarSchema } from "@xihan-ui/headless";
4
4
  //#region src/components/toolbar/use-toolbar.d.ts
5
5
  interface ToolbarContext {
6
6
  api: ComputedRef<ToolbarApi>;
7
- /** 状态机实例,供条目上报 DOM 侧的事实(卸载带走了焦点)。 */
7
+ /** 状态机实例,供条目上报 DOM 侧的事实(卸载带走了焦点),也喂「更多」菜单的机器 props。 */
8
8
  service: Service<ToolbarSchema>;
9
+ /** root 节点:条目与「更多」钮的查询容器,也是收纳量测的参照系。 */
10
+ rootRef: Ref<HTMLElement | null>;
9
11
  }
10
12
  declare function useToolbar(props: ToolbarSchema['props']): ToolbarContext;
11
13
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-toolbar.d.ts","names":[],"sources":["../../../src/components/toolbar/use-toolbar.ts"],"mappings":";;;;UAeiB;EACf,KAAK,YAAY;;EAEjB,SAAS,QAAQ;;iBAIH,WAAW,OAAO,yBAAyB"}
1
+ {"version":3,"file":"use-toolbar.d.ts","names":[],"sources":["../../../src/components/toolbar/use-toolbar.ts"],"mappings":";;;;UAeiB;EACf,KAAK,YAAY;;EAEjB,SAAS,QAAQ;;EAEjB,SAAS,IAAI;;iBAIC,WAAW,OAAO,yBAAyB"}
@@ -1,13 +1,16 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
2
  import { useMachine } from "../../runtime/use-machine.js";
3
- import { computed } from "vue";
3
+ import { computed, ref } from "vue";
4
4
  import { connectToolbar, toolbarMachine } from "@xihan-ui/headless";
5
5
  //#region src/components/toolbar/use-toolbar.ts
6
6
  function useToolbar(props) {
7
+ const rootRef = ref(null);
7
8
  const service = useMachine(toolbarMachine, () => ({ ...props }));
9
+ service.refs.set("getRootEl", () => rootRef.value);
8
10
  return {
9
11
  api: computed(() => connectToolbar(service, vueNormalize)),
10
- service
12
+ service,
13
+ rootRef
11
14
  };
12
15
  }
13
16
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-toolbar.js","names":[],"sources":["../../../src/components/toolbar/use-toolbar.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 use toolbar 相关实现。\n\nimport type { Service } from '@xihan-ui/core'\nimport type { ToolbarApi, ToolbarSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectToolbar, toolbarMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ToolbarContext {\n api: ComputedRef<ToolbarApi>\n /** 状态机实例,供条目上报 DOM 侧的事实(卸载带走了焦点)。 */\n service: Service<ToolbarSchema>\n}\n\n// 不建 scope:connect 不派生任何 id\nexport function useToolbar(props: ToolbarSchema['props']): ToolbarContext {\n const service = useMachine(toolbarMachine, () => ({ ...props }))\n const api = computed(() => connectToolbar(service, vueNormalize))\n return { api, service }\n}\n"],"mappings":";;;;;AAsBA,SAAgB,WAAW,OAA+C;CACxE,MAAM,UAAU,WAAW,uBAAuB,EAAE,GAAG,MAAM,EAAE;CAE/D,OAAO;EAAE,KADG,eAAe,eAAe,SAAS,YAAY,CACpD;EAAG;CAAQ;AACxB"}
1
+ {"version":3,"file":"use-toolbar.js","names":[],"sources":["../../../src/components/toolbar/use-toolbar.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 use toolbar 相关实现。\n\nimport type { Service } from '@xihan-ui/core'\nimport type { ToolbarApi, ToolbarSchema } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectToolbar, toolbarMachine } from '@xihan-ui/headless'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ToolbarContext {\n api: ComputedRef<ToolbarApi>\n /** 状态机实例,供条目上报 DOM 侧的事实(卸载带走了焦点),也喂「更多」菜单的机器 props。 */\n service: Service<ToolbarSchema>\n /** root 节点:条目与「更多」钮的查询容器,也是收纳量测的参照系。 */\n rootRef: Ref<HTMLElement | null>\n}\n\n// 不建 scope:connect 不派生任何 id\nexport function useToolbar(props: ToolbarSchema['props']): ToolbarContext {\n const rootRef = ref<HTMLElement | null>(null)\n const service = useMachine(toolbarMachine, () => ({ ...props }))\n // 收纳量测在机器的挂载效应里跑,取值口要赶在那之前交出去\n service.refs.set('getRootEl', () => rootRef.value)\n const api = computed(() => connectToolbar(service, vueNormalize))\n return { api, service, rootRef }\n}\n"],"mappings":";;;;;AAwBA,SAAgB,WAAW,OAA+C;CACxE,MAAM,UAAU,IAAwB,IAAI;CAC5C,MAAM,UAAU,WAAW,uBAAuB,EAAE,GAAG,MAAM,EAAE;CAE/D,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CAEjD,OAAO;EAAE,KADG,eAAe,eAAe,SAAS,YAAY,CACpD;EAAG;EAAS;CAAQ;AACjC"}
@@ -0,0 +1,21 @@
1
+ import { ComputedRef, Ref } from "vue";
2
+ import { Service } from "@xihan-ui/core";
3
+ import { TooltipApi, TooltipSchema } from "@xihan-ui/headless";
4
+ //#region src/components/tooltip/context.d.ts
5
+ interface TooltipContext {
6
+ service: Service<TooltipSchema>;
7
+ api: ComputedRef<TooltipApi>;
8
+ /** 定位锚点。 */
9
+ triggerRef: Ref<HTMLElement | null>;
10
+ /** 被定位的浮层。 */
11
+ positionerRef: Ref<HTMLElement | null>;
12
+ /** 浮层本体,退场动画从它上面探测。 */
13
+ contentRef: Ref<HTMLElement | null>;
14
+ /** 当前是否应当可见:退场动画播完之前仍为真。 */
15
+ visible: Ref<boolean>;
16
+ /** 浮层迁移到的位置:全局配置的容器 > 运行时的浮层落点 > body。 */
17
+ portalTarget: ComputedRef<string | Element>;
18
+ }
19
+ //#endregion
20
+ export { TooltipContext };
21
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","names":[],"sources":["../../../src/components/tooltip/context.ts"],"mappings":";;;;UAYiB;EACf,SAAS,QAAQ;EACjB,KAAK,YAAY;;EAEjB,YAAY,IAAI;;EAEhB,eAAe,IAAI;;EAEnB,YAAY,IAAI;;EAEhB,SAAS;;EAET,cAAc,qBAAqB"}
@@ -1,6 +1,15 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/tooltip/context.ts
3
3
  const KEY = Symbol.for("xh-tooltip");
4
+ const GROUP_KEY = Symbol.for("xh-tooltip-group");
5
+ /** XhTooltipProvider 把它那一组交给子树里的提示。 */
6
+ function provideTooltipGroup(group) {
7
+ provide(GROUP_KEY, group);
8
+ }
9
+ /** 最近的 XhTooltipProvider 建的那一组;不在 Provider 里时为 null,提示归页面级的那一组。 */
10
+ function useTooltipGroup() {
11
+ return inject(GROUP_KEY, null);
12
+ }
4
13
  function provideTooltip(ctx) {
5
14
  provide(KEY, ctx);
6
15
  }
@@ -10,6 +19,6 @@ function useTooltipContext() {
10
19
  return ctx;
11
20
  }
12
21
  //#endregion
13
- export { provideTooltip, useTooltipContext };
22
+ export { provideTooltip, provideTooltipGroup, useTooltipContext, useTooltipGroup };
14
23
 
15
24
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tooltip/context.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 context 相关实现。\n\nimport type { InjectionKey } from 'vue'\nimport type { TooltipContext } from './use-tooltip'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TooltipContext> = Symbol.for('xh-tooltip')\n\nexport function provideTooltip(ctx: TooltipContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTooltipContext(): TooltipContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tooltip 部件必须用在 XhTooltipRoot 内')\n return ctx\n}\n"],"mappings":";;AAWA,MAAM,MAAoC,OAAO,IAAI,YAAY;AAEjE,SAAgB,eAAe,KAA2B;CACxD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tooltip/context.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 context 相关实现。\n\nimport type { Service } from '@xihan-ui/core'\nimport type { TooltipApi, TooltipGroup, TooltipSchema } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey, Ref } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface TooltipContext {\n service: Service<TooltipSchema>\n api: ComputedRef<TooltipApi>\n /** 定位锚点。 */\n triggerRef: Ref<HTMLElement | null>\n /** 被定位的浮层。 */\n positionerRef: Ref<HTMLElement | null>\n /** 浮层本体,退场动画从它上面探测。 */\n contentRef: Ref<HTMLElement | null>\n /** 当前是否应当可见:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n /** 浮层迁移到的位置:全局配置的容器 > 运行时的浮层落点 > body。 */\n portalTarget: ComputedRef<string | Element>\n}\n\nconst KEY: InjectionKey<TooltipContext> = Symbol.for('xh-tooltip')\nconst GROUP_KEY: InjectionKey<TooltipGroup> = Symbol.for('xh-tooltip-group')\n\n/** XhTooltipProvider 把它那一组交给子树里的提示。 */\nexport function provideTooltipGroup(group: TooltipGroup): void {\n provide(GROUP_KEY, group)\n}\n\n/** 最近的 XhTooltipProvider 建的那一组;不在 Provider 里时为 null,提示归页面级的那一组。 */\nexport function useTooltipGroup(): TooltipGroup | null {\n return inject(GROUP_KEY, null)\n}\n\nexport function provideTooltip(ctx: TooltipContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTooltipContext(): TooltipContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tooltip 部件必须用在 XhTooltipRoot 内')\n return ctx\n}\n"],"mappings":";;AA2BA,MAAM,MAAoC,OAAO,IAAI,YAAY;AACjE,MAAM,YAAwC,OAAO,IAAI,kBAAkB;;AAG3E,SAAgB,oBAAoB,OAA2B;CAC7D,QAAQ,WAAW,KAAK;AAC1B;;AAGA,SAAgB,kBAAuC;CACrD,OAAO,OAAO,WAAW,IAAI;AAC/B;AAEA,SAAgB,eAAe,KAA2B;CACxD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qCAAqC;CACvD,OAAO;AACT"}