@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":"table.js","names":[],"sources":["../../../src/components/table/table.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// 提供 table 相关实现。\n\nimport type { ControlVariant, Direction, Size } from '@xihan-ui/core'\nimport type {\n TableApi,\n TableColumnDef,\n TableColumnKind,\n TableColumnPreference,\n TableColumnProps,\n TableRowDef,\n TableRowProps,\n TableSchema,\n TableSelection,\n TableSelectionMode,\n TableSortDescriptor,\n} from '@xihan-ui/headless'\nimport type { PropType, Ref, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { TableContext } from './use-table'\nimport { computed, defineComponent, Fragment, h, mergeProps, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport {\n provideTable,\n provideTableColumn,\n provideTableRow,\n provideTableSection,\n useOptionalTableColumnContext,\n useOptionalTableRowContext,\n useTableColumnContext,\n useTableContext,\n useTableRowContext,\n useTableSection,\n} from './context'\nimport { useTable } from './use-table'\n\ntype TableProps = TableSchema['props']\n\n/** 本行持有焦点时,value 变更重新报告焦点行,卸载时上报表体失焦 */\nfunction reportRowFocus(ctx: TableContext, el: Ref<HTMLElement | null>, value: () => string): void {\n watch(value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'ROW.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整张表一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本行当下正持有焦点」判定,不按 value 比对\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'TABLE.BLUR' })\n })\n}\n\n/** 默认插槽的载荷:可见行与排序、选中、展开三态,以及逐行查询与改写它们的句柄。 */\nexport type TableRootSlotProps = Pick<\n TableApi,\n | 'columns'\n | 'columnPreference'\n | 'columnSettings'\n | 'setColumnSticky'\n | 'setColumnHidden'\n | 'moveColumn'\n | 'setColumnWidth'\n | 'setColumnPreference'\n | 'rowNumber'\n | 'visibleRows'\n | 'sort'\n | 'selection'\n | 'selectionState'\n | 'expandedValue'\n | 'focusedRow'\n | 'empty'\n | 'loading'\n | 'isSelected'\n | 'isExpanded'\n | 'sortDirection'\n | 'sortPriority'\n | 'toggleSort'\n | 'selectRow'\n | 'toggleSelectAll'\n | 'toggleExpandRow'\n | 'rowReorderDisabledReason'\n>\n\n/**\n * 工具条插槽的载荷:作用于整张表的项:列设置、排序链与整表状态。\n * 逐行的内容(可见行、行号、逐行查询)不在其中:工具条放在表外,无法触及某一行。\n */\nexport type TableToolbarSlotProps = Pick<\n TableApi,\n | 'columns'\n | 'columnSettings'\n | 'columnPreference'\n | 'setColumnHidden'\n | 'setColumnSticky'\n | 'setColumnWidth'\n | 'moveColumn'\n | 'setColumnPreference'\n | 'sort'\n | 'toggleSort'\n | 'selection'\n | 'selectionState'\n | 'empty'\n | 'loading'\n>\n\nexport const XhTableRoot = /* @__PURE__ */ defineComponent({\n name: 'XhTableRoot',\n // 有机器侧兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined,缺省值由 connect 与机器决定\n props: {\n columns: { type: Array as PropType<TableColumnDef[]> },\n rows: { type: Array as PropType<TableRowDef[]> },\n sort: { type: Array as PropType<TableSortDescriptor[]> },\n defaultSort: { type: Array as PropType<TableSortDescriptor[]> },\n selection: { type: [Array, String] as PropType<TableSelection> },\n defaultSelection: { type: [Array, String] as PropType<TableSelection> },\n selectionMode: { type: String as PropType<TableSelectionMode> },\n /** 需要哪几列前缀列(序号 / 多选 / 展开),按给定顺序插入最前面并占用列号。 */\n prefixColumns: { type: Array as PropType<TableColumnKind[]> },\n /** 当前页码与每页条数:只用于计算序号,不参与切片。 */\n /** 列偏好:给定即受控。持久化归使用者,库只负责把它算进生效列。 */\n columnPreference: { type: Object as PropType<TableColumnPreference> },\n defaultColumnPreference: { type: Object as PropType<TableColumnPreference> },\n page: { type: Number },\n pageSize: { type: Number },\n expandedValue: { type: Array as PropType<string[]> },\n defaultExpandedValue: { type: Array as PropType<string[]> },\n loading: Boolean,\n empty: { type: Boolean, default: undefined },\n stickyHeader: Boolean,\n striped: Boolean,\n variant: { type: String as PropType<ControlVariant> },\n ruled: Boolean,\n footer: Boolean,\n /** 行可以拖动换位。整行都是拖动源,不另设把手。 */\n rowReorderable: Boolean,\n /** 本次移动是否允许。收到的是折算后的落点(移动到哪个父节点下的第几位)。未提供时全部允许。 */\n allowRowDrop: { type: Function as PropType<TableProps['allowRowDrop']> },\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction> },\n size: { type: String as PropType<Size> },\n translations: { type: Object as PropType<TableProps['translations']> },\n },\n // *-change 携带 { value },update:* 携带裸值以支持 v-model\n emits: {\n 'column-preference-change': (_details: { value: TableColumnPreference }) => true,\n 'update:columnPreference': (_value: TableColumnPreference) => true,\n 'sort-change': (_details: PayloadOf<TableProps, 'onSortChange'>) => true,\n 'update:sort': (_sort: PayloadOf<TableProps, 'onSortChange'>['value']) => true,\n 'selection-change': (_details: PayloadOf<TableProps, 'onSelectionChange'>) => true,\n 'update:selection': (_selection: PayloadOf<TableProps, 'onSelectionChange'>['value']) => true,\n 'expanded-value-change': (_details: PayloadOf<TableProps, 'onExpandedValueChange'>) => true,\n 'update:expandedValue': (_value: PayloadOf<TableProps, 'onExpandedValueChange'>['value']) => true,\n // 行换位是通知,行序与父子归属的真源在使用者的数据里,故没有配对的 update:*\n 'row-move': (_details: PayloadOf<TableProps, 'onRowMove'>) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TableRootSlotProps) => VNode[]\n /**\n * 工具条槽:搜索、筛选、密度与列设置等作用于整张表的控件写在这里。\n * 它渲染为 root 的兄弟排在表前:root 是 grid 系角色,子节点只能是 row 与 rowgroup。\n */\n toolbar?: (props: TableToolbarSlotProps) => VNode[]\n }>,\n // Fragment 根接不住自动透传:Vue 只在单个元素根上做这件事。\n // 作者写在 XhTableRoot 上的 class / aria-* / 监听器都要自己合到 root 那个 div 上\n inheritAttrs: false,\n setup(props, { slots, emit, attrs }) {\n const onColumnPreferenceChange: TableProps['onColumnPreferenceChange'] = (details) => {\n emit('column-preference-change', details)\n emit('update:columnPreference', details.value)\n }\n const onSortChange: TableProps['onSortChange'] = (details) => {\n emit('sort-change', details)\n emit('update:sort', details.value)\n }\n const onSelectionChange: TableProps['onSelectionChange'] = (details) => {\n emit('selection-change', details)\n emit('update:selection', details.value)\n }\n const onExpandedValueChange: TableProps['onExpandedValueChange'] = (details) => {\n emit('expanded-value-change', details)\n emit('update:expandedValue', details.value)\n }\n const onRowMove: TableProps['onRowMove'] = (details) => {\n emit('row-move', details)\n }\n const ctx = useTable(withXhConfig('table', props) as TableProps, onSortChange, onSelectionChange, onExpandedValueChange, onColumnPreferenceChange, onRowMove)\n provideTable(ctx)\n return () => h(Fragment, [\n // 工具条排在表前且在 root 之外:root 是 role=grid,子节点只能是 row 与 rowgroup。\n // 载荷只给对整张表下手的那几样,逐行的东西(visibleRows / rowNumber / 选中查询)不进来\n slots.toolbar?.({\n columns: ctx.api.value.columns,\n columnSettings: ctx.api.value.columnSettings,\n columnPreference: ctx.api.value.columnPreference,\n setColumnHidden: ctx.api.value.setColumnHidden,\n setColumnSticky: ctx.api.value.setColumnSticky,\n setColumnWidth: ctx.api.value.setColumnWidth,\n moveColumn: ctx.api.value.moveColumn,\n setColumnPreference: ctx.api.value.setColumnPreference,\n sort: ctx.api.value.sort,\n toggleSort: ctx.api.value.toggleSort,\n selection: ctx.api.value.selection,\n selectionState: ctx.api.value.selectionState,\n empty: ctx.api.value.empty,\n loading: ctx.api.value.loading,\n }) ?? null,\n h('div', mergeProps(ctx.api.value.getRootProps() as Record<string, unknown>, attrs), slots.default?.({\n columns: ctx.api.value.columns,\n columnPreference: ctx.api.value.columnPreference,\n columnSettings: ctx.api.value.columnSettings,\n setColumnHidden: ctx.api.value.setColumnHidden,\n setColumnSticky: ctx.api.value.setColumnSticky,\n moveColumn: ctx.api.value.moveColumn,\n setColumnWidth: ctx.api.value.setColumnWidth,\n setColumnPreference: ctx.api.value.setColumnPreference,\n rowNumber: ctx.api.value.rowNumber,\n visibleRows: ctx.api.value.visibleRows,\n sort: ctx.api.value.sort,\n selection: ctx.api.value.selection,\n selectionState: ctx.api.value.selectionState,\n expandedValue: ctx.api.value.expandedValue,\n focusedRow: ctx.api.value.focusedRow,\n empty: ctx.api.value.empty,\n loading: ctx.api.value.loading,\n isSelected: ctx.api.value.isSelected,\n isExpanded: ctx.api.value.isExpanded,\n sortDirection: ctx.api.value.sortDirection,\n sortPriority: ctx.api.value.sortPriority,\n toggleSort: ctx.api.value.toggleSort,\n selectRow: ctx.api.value.selectRow,\n toggleSelectAll: ctx.api.value.toggleSelectAll,\n toggleExpandRow: ctx.api.value.toggleExpandRow,\n rowReorderDisabledReason: ctx.api.value.rowReorderDisabledReason,\n })),\n // 播报区由根组件自己渲,作者插不进 root 的兄弟位。它不能进 root:\n // root 是 role=grid,塞活动区域进去是 aria-required-children(critical)\n h(\n 'div',\n ctx.api.value.getLiveRegionProps() as Record<string, unknown>,\n ctx.service.context.get('announcement'),\n ),\n ])\n },\n})\n\n/**\n * 工具条:搜索、筛选、密度与列设置等作用于整张表的控件放在这里。\n * 写在 XhTableRoot 的 toolbar 插槽中:它渲染为 root 的兄弟,不进入 role=grid 的子节点。\n * 不带 role:需要方向键 roving 时在其中放置一个 XhToolbarRoot。\n */\nexport const XhTableToolbar = /* @__PURE__ */ defineComponent({\n name: 'XhTableToolbar',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getToolbarProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 列设置区:一列一行,渲染内容按 root 插槽载荷中的 columnSettings 决定。 */\nexport const XhTableColumnList = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnList',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getColumnListProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 一列的显隐控件(复选形态,勾选表示该列显示)。\n * 列身份优先取自己的 value;未提供时跟随所在的列标题(表头中的路径)。\n */\nexport const XhTableColumnVisibilityTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnVisibilityTrigger',\n props: {\n /** 列 id。写在列设置区中时必须提供;写在列标题中时可省略,跟随该列。 */\n value: { type: String },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const inherited = useOptionalTableColumnContext()\n const column = computed<TableColumnProps>(() => ({\n value: props.value ?? inherited?.column.value.value ?? '',\n }))\n return () => h(\n 'span',\n ctx.api.value.getColumnVisibilityTriggerProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableCaption = /* @__PURE__ */ defineComponent({\n name: 'XhTableCaption',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getCaptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableHeader = /* @__PURE__ */ defineComponent({\n name: 'XhTableHeader',\n setup(_, { slots }) {\n const ctx = useTableContext()\n provideTableSection('header')\n return () => h('div', ctx.api.value.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableBody = /* @__PURE__ */ defineComponent({\n name: 'XhTableBody',\n setup(_, { slots }) {\n const ctx = useTableContext()\n provideTableSection('body')\n // 键盘与 roving 的兜底 Tab 位落在表体上,不在 root 上\n return () => h('div', ctx.api.value.getBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableFooter = /* @__PURE__ */ defineComponent({\n name: 'XhTableFooter',\n setup(_, { slots }) {\n const ctx = useTableContext()\n provideTableSection('footer')\n return () => h('div', ctx.api.value.getFooterProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableRow = /* @__PURE__ */ defineComponent({\n name: 'XhTableRow',\n props: {\n /** 行 id:数据行必须提供,表头行与脚注行省略。 */\n value: { type: String },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const section = useTableSection()\n if (section !== 'body') {\n return () => h(\n 'div',\n (section === 'header'\n ? ctx.api.value.getHeaderRowProps()\n : ctx.api.value.getFooterRowProps()) as Record<string, unknown>,\n slots.default?.(),\n )\n }\n const row = computed<TableRowProps>(() => ({ value: props.value ?? '' }))\n // 供行内的把手与单元格读取行 id\n provideTableRow({ row })\n const el = ref<HTMLElement | null>(null)\n reportRowFocus(ctx, el, () => row.value.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getRowProps(row.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableColumnHeader = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnHeader',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const column = computed<TableColumnProps>(() => ({ value: props.value }))\n provideTableColumn({ column })\n return () => h(\n 'div',\n ctx.api.value.getColumnHeaderProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/**\n * 列名。列头里唯一可收窄的一格:列名太长时由它出省略号,排序钮、列宽把手与列拖拽把手都写在它之外、\n * 作为它的兄弟。不可排序、不可改宽的列也用它:裸写在 XhTableColumnHeader 里的文本是匿名 flex item,\n * 缩不下去,窄列上会把定尺的把手挤出列头盒。\n */\nexport const XhTableColumnLabel = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnLabel',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('span', ctx.api.value.getColumnLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableCell = /* @__PURE__ */ defineComponent({\n name: 'XhTableCell',\n props: {\n /** 列 id。 */\n value: { type: String, required: true },\n /** 跨列数,从 value 所在列向后计算。 */\n colspan: { type: [String, Number] as PropType<string | number> },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n // 行上下文可选:脚注单元格不属于任何数据行\n const rowCtx = useOptionalTableRowContext()\n return () => h(\n 'div',\n ctx.api.value.getCellProps({\n value: props.value,\n row: rowCtx?.row.value.value,\n colSpan: props.colspan == null ? undefined : Number(props.colspan),\n }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableSelectAllTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableSelectAllTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h(\n 'span',\n ctx.api.value.getSelectAllTriggerProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableRowSelectTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableRowSelectTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { row } = useTableRowContext()\n return () => h(\n 'span',\n ctx.api.value.getRowSelectTriggerProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/**\n * 排序钮。独立的定尺图标钮,不包列名:列名留在 XhTableColumnHeader 里、钮写在列名之后,\n * 可及名取 translations.sort(列名)。只有 sortable 的列渲染它。\n */\nexport const XhTableSortTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableSortTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { column } = useTableColumnContext()\n return () => h(\n 'span',\n ctx.api.value.getSortTriggerProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/** 列宽把手。放在表头格中,只有 resizable 的列渲染它。 */\nexport const XhTableColumnResizeTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnResizeTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { column } = useTableColumnContext()\n return () => h(\n 'span',\n ctx.api.value.getColumnResizeTriggerProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/** 列拖拽把手。放在表头格中,只有可拖动的列渲染它。 */\nexport const XhTableColumnDragTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnDragTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { column } = useTableColumnContext()\n return () => h(\n 'span',\n ctx.api.value.getColumnDragTriggerProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/**\n * 行拖拽把手。放在数据行中,自带 touch-action: none,按下即拖动,不等待激活距离。\n * 对读屏隐藏、也不占 Tab 位;键盘换位由表体上的 Alt + 上下键承担,\n * 树形表下另有 Alt + 左右键改变缩进层级。\n * 整行拖动的路径照常可用,把手是叠加的第二个入口。\n */\nexport const XhTableRowDragTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableRowDragTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { row } = useTableRowContext()\n return () => h(\n 'span',\n ctx.api.value.getRowDragTriggerProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableExpandTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableExpandTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { row } = useTableRowContext()\n return () => h(\n 'span',\n ctx.api.value.getExpandTriggerProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableExpandedRow = /* @__PURE__ */ defineComponent({\n name: 'XhTableExpandedRow',\n props: {\n /** 所属数据行的 id。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const row = computed<TableRowProps>(() => ({ value: props.value }))\n // 不 provide 行上下文;收起只加 hidden,不卸载内部节点\n return () => h(\n 'div',\n ctx.api.value.getExpandedRowProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableEmpty = /* @__PURE__ */ defineComponent({\n name: 'XhTableEmpty',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getEmptyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableLoading = /* @__PURE__ */ defineComponent({\n name: 'XhTableLoading',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getLoadingProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableLoadMoreTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableLoadMoreTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n // 取下一页的入口:摆在表尾,点了做什么归作者\n return () => h('button', ctx.api.value.getLoadMoreTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"table.js","names":[],"sources":["../../../src/components/table/table.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// 提供 table 相关实现。\n\nimport type { CascadeStrategy, ControlVariant, Direction, Size } from '@xihan-ui/core'\nimport type {\n TableApi,\n TableColumnDef,\n TableColumnKind,\n TableColumnPreference,\n TableColumnProps,\n TableRowDef,\n TableRowProps,\n TableSchema,\n TableSelection,\n TableSelectionMode,\n TableSortDescriptor,\n} from '@xihan-ui/headless'\nimport type { PropType, Ref, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { TableContext } from './use-table'\nimport { computed, defineComponent, Fragment, h, mergeProps, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport {\n provideTable,\n provideTableColumn,\n provideTableHeaderLevel,\n provideTableRow,\n provideTableSection,\n useOptionalTableColumnContext,\n useOptionalTableHeaderLevel,\n useOptionalTableRowContext,\n useTableColumnContext,\n useTableContext,\n useTableRowContext,\n useTableSection,\n} from './context'\nimport { useTable } from './use-table'\n\ntype TableProps = TableSchema['props']\n\n/** 本行持有焦点时,value 变更重新报告焦点行,卸载时上报表体失焦 */\nfunction reportRowFocus(ctx: TableContext, el: Ref<HTMLElement | null>, value: () => string): void {\n watch(value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'ROW.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 整张表一起卸载时根部件先停机,此刻送事件会在 dev 下抛\n if (service.getStatus() !== 'Started')\n return\n // 按「本行当下正持有焦点」判定,不按 value 比对\n if (el.value && service.scope.getActiveElement() === el.value)\n service.send({ type: 'TABLE.BLUR' })\n })\n}\n\n/** 默认插槽的载荷:可见行与排序、选中、展开三态,以及逐行查询与改写它们的句柄。 */\nexport type TableRootSlotProps = Pick<\n TableApi,\n | 'columns'\n | 'columnPreference'\n | 'columnSettings'\n | 'setColumnSticky'\n | 'setColumnHidden'\n | 'moveColumn'\n | 'setColumnWidth'\n | 'setColumnPreference'\n | 'rowNumber'\n | 'visibleRows'\n | 'sort'\n | 'selection'\n | 'selectionState'\n | 'expandedValue'\n | 'focusedRow'\n | 'empty'\n | 'loading'\n | 'isSelected'\n | 'isExpanded'\n | 'sortDirection'\n | 'sortPriority'\n | 'toggleSort'\n | 'selectRow'\n | 'toggleSelectAll'\n | 'toggleExpandRow'\n | 'rowReorderDisabledReason'\n | 'headerRows'\n | 'headerRowCount'\n | 'cellSpanOf'\n>\n\n/**\n * 工具条插槽的载荷:作用于整张表的项:列设置、排序链与整表状态。\n * 逐行的内容(可见行、行号、逐行查询)不在其中:工具条放在表外,无法触及某一行。\n */\nexport type TableToolbarSlotProps = Pick<\n TableApi,\n | 'columns'\n | 'columnSettings'\n | 'columnPreference'\n | 'setColumnHidden'\n | 'setColumnSticky'\n | 'setColumnWidth'\n | 'moveColumn'\n | 'setColumnPreference'\n | 'sort'\n | 'toggleSort'\n | 'selection'\n | 'selectionState'\n | 'empty'\n | 'loading'\n>\n\nexport const XhTableRoot = /* @__PURE__ */ defineComponent({\n name: 'XhTableRoot',\n // 有机器侧兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined,缺省值由 connect 与机器决定\n props: {\n columns: { type: Array as PropType<TableColumnDef[]> },\n rows: { type: Array as PropType<TableRowDef[]> },\n sort: { type: Array as PropType<TableSortDescriptor[]> },\n defaultSort: { type: Array as PropType<TableSortDescriptor[]> },\n selection: { type: [Array, String] as PropType<TableSelection> },\n defaultSelection: { type: [Array, String] as PropType<TableSelection> },\n selectionMode: { type: String as PropType<TableSelectionMode> },\n /** 单元格合并:逐格询问合并区的大小,与 antd 的 spanMethod 同一种写法。 */\n cellSpan: { type: Function as PropType<TableProps['cellSpan']> },\n /** 与 Virtualizer 的正式接线口:传 Virtualizer 的 collectionVirtualizer,count 等于可见数据行的条数。 */\n virtualizer: { type: Object as PropType<TableProps['virtualizer']> },\n /** 树形表在 multiple 下父子级联勾选,与 Tree 的 cascade 同义。 */\n cascade: { type: Boolean, default: undefined },\n checkedStrategy: { type: String as PropType<CascadeStrategy> },\n /** 需要哪几列前缀列(序号 / 多选 / 展开),按给定顺序插入最前面并占用列号。 */\n prefixColumns: { type: Array as PropType<TableColumnKind[]> },\n /** 当前页码与每页条数:只用于计算序号,不参与切片。 */\n /** 列偏好:给定即受控。持久化归使用者,库只负责把它算进生效列。 */\n columnPreference: { type: Object as PropType<TableColumnPreference> },\n defaultColumnPreference: { type: Object as PropType<TableColumnPreference> },\n page: { type: Number },\n pageSize: { type: Number },\n expandedValue: { type: Array as PropType<string[]> },\n defaultExpandedValue: { type: Array as PropType<string[]> },\n loading: Boolean,\n empty: { type: Boolean, default: undefined },\n stickyHeader: Boolean,\n striped: Boolean,\n variant: { type: String as PropType<ControlVariant> },\n ruled: Boolean,\n footer: Boolean,\n /** 行可以拖动换位。整行都是拖动源,不另设把手。 */\n rowReorderable: Boolean,\n /** 本次移动是否允许。收到的是折算后的落点(移动到哪个父节点下的第几位)。未提供时全部允许。 */\n allowRowDrop: { type: Function as PropType<TableProps['allowRowDrop']> },\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction> },\n size: { type: String as PropType<Size> },\n translations: { type: Object as PropType<TableProps['translations']> },\n },\n // *-change 携带 { value },update:* 携带裸值以支持 v-model\n emits: {\n 'column-preference-change': (_details: { value: TableColumnPreference }) => true,\n 'update:columnPreference': (_value: TableColumnPreference) => true,\n 'sort-change': (_details: PayloadOf<TableProps, 'onSortChange'>) => true,\n 'update:sort': (_sort: PayloadOf<TableProps, 'onSortChange'>['value']) => true,\n 'selection-change': (_details: PayloadOf<TableProps, 'onSelectionChange'>) => true,\n 'update:selection': (_selection: PayloadOf<TableProps, 'onSelectionChange'>['value']) => true,\n 'expanded-value-change': (_details: PayloadOf<TableProps, 'onExpandedValueChange'>) => true,\n 'update:expandedValue': (_value: PayloadOf<TableProps, 'onExpandedValueChange'>['value']) => true,\n // 行换位是通知,行序与父子归属的真源在使用者的数据里,故没有配对的 update:*\n 'row-move': (_details: PayloadOf<TableProps, 'onRowMove'>) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TableRootSlotProps) => VNode[]\n /**\n * 工具条槽:搜索、筛选、密度与列设置等作用于整张表的控件写在这里。\n * 它渲染为 root 的兄弟排在表前:root 是 grid 系角色,子节点只能是 row 与 rowgroup。\n */\n toolbar?: (props: TableToolbarSlotProps) => VNode[]\n }>,\n // Fragment 根接不住自动透传:Vue 只在单个元素根上做这件事。\n // 作者写在 XhTableRoot 上的 class / aria-* / 监听器都要自己合到 root 那个 div 上\n inheritAttrs: false,\n setup(props, { slots, emit, attrs }) {\n const onColumnPreferenceChange: TableProps['onColumnPreferenceChange'] = (details) => {\n emit('column-preference-change', details)\n emit('update:columnPreference', details.value)\n }\n const onSortChange: TableProps['onSortChange'] = (details) => {\n emit('sort-change', details)\n emit('update:sort', details.value)\n }\n const onSelectionChange: TableProps['onSelectionChange'] = (details) => {\n emit('selection-change', details)\n emit('update:selection', details.value)\n }\n const onExpandedValueChange: TableProps['onExpandedValueChange'] = (details) => {\n emit('expanded-value-change', details)\n emit('update:expandedValue', details.value)\n }\n const onRowMove: TableProps['onRowMove'] = (details) => {\n emit('row-move', details)\n }\n const ctx = useTable(withXhConfig('table', props) as TableProps, onSortChange, onSelectionChange, onExpandedValueChange, onColumnPreferenceChange, onRowMove)\n provideTable(ctx)\n return () => h(Fragment, [\n // 工具条排在表前且在 root 之外:root 是 role=grid,子节点只能是 row 与 rowgroup。\n // 载荷只给对整张表下手的那几样,逐行的东西(visibleRows / rowNumber / 选中查询)不进来\n slots.toolbar?.({\n columns: ctx.api.value.columns,\n columnSettings: ctx.api.value.columnSettings,\n columnPreference: ctx.api.value.columnPreference,\n setColumnHidden: ctx.api.value.setColumnHidden,\n setColumnSticky: ctx.api.value.setColumnSticky,\n setColumnWidth: ctx.api.value.setColumnWidth,\n moveColumn: ctx.api.value.moveColumn,\n setColumnPreference: ctx.api.value.setColumnPreference,\n sort: ctx.api.value.sort,\n toggleSort: ctx.api.value.toggleSort,\n selection: ctx.api.value.selection,\n selectionState: ctx.api.value.selectionState,\n empty: ctx.api.value.empty,\n loading: ctx.api.value.loading,\n }) ?? null,\n h('div', mergeProps(ctx.api.value.getRootProps() as Record<string, unknown>, attrs, {\n ref: (el: unknown) => { ctx.rootRef.value = el as HTMLElement | null },\n }), slots.default?.({\n columns: ctx.api.value.columns,\n columnPreference: ctx.api.value.columnPreference,\n columnSettings: ctx.api.value.columnSettings,\n setColumnHidden: ctx.api.value.setColumnHidden,\n setColumnSticky: ctx.api.value.setColumnSticky,\n moveColumn: ctx.api.value.moveColumn,\n setColumnWidth: ctx.api.value.setColumnWidth,\n setColumnPreference: ctx.api.value.setColumnPreference,\n rowNumber: ctx.api.value.rowNumber,\n visibleRows: ctx.api.value.visibleRows,\n headerRows: ctx.api.value.headerRows,\n headerRowCount: ctx.api.value.headerRowCount,\n cellSpanOf: ctx.api.value.cellSpanOf,\n sort: ctx.api.value.sort,\n selection: ctx.api.value.selection,\n selectionState: ctx.api.value.selectionState,\n expandedValue: ctx.api.value.expandedValue,\n focusedRow: ctx.api.value.focusedRow,\n empty: ctx.api.value.empty,\n loading: ctx.api.value.loading,\n isSelected: ctx.api.value.isSelected,\n isExpanded: ctx.api.value.isExpanded,\n sortDirection: ctx.api.value.sortDirection,\n sortPriority: ctx.api.value.sortPriority,\n toggleSort: ctx.api.value.toggleSort,\n selectRow: ctx.api.value.selectRow,\n toggleSelectAll: ctx.api.value.toggleSelectAll,\n toggleExpandRow: ctx.api.value.toggleExpandRow,\n rowReorderDisabledReason: ctx.api.value.rowReorderDisabledReason,\n })),\n // 播报区由根组件自己渲,作者插不进 root 的兄弟位。它不能进 root:\n // root 是 role=grid,塞活动区域进去是 aria-required-children(critical)\n h(\n 'div',\n ctx.api.value.getLiveRegionProps() as Record<string, unknown>,\n ctx.service.context.get('announcement'),\n ),\n ])\n },\n})\n\n/**\n * 工具条:搜索、筛选、密度与列设置等作用于整张表的控件放在这里。\n * 写在 XhTableRoot 的 toolbar 插槽中:它渲染为 root 的兄弟,不进入 role=grid 的子节点。\n * 不带 role:需要方向键 roving 时在其中放置一个 XhToolbarRoot。\n */\nexport const XhTableToolbar = /* @__PURE__ */ defineComponent({\n name: 'XhTableToolbar',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getToolbarProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 列设置区:一列一行,渲染内容按 root 插槽载荷中的 columnSettings 决定。 */\nexport const XhTableColumnList = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnList',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getColumnListProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 一列的显隐控件(复选形态,勾选表示该列显示)。\n * 列身份优先取自己的 value;未提供时跟随所在的列标题(表头中的路径)。\n */\nexport const XhTableColumnVisibilityTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnVisibilityTrigger',\n props: {\n /** 列 id。写在列设置区中时必须提供;写在列标题中时可省略,跟随该列。 */\n value: { type: String },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const inherited = useOptionalTableColumnContext()\n const column = computed<TableColumnProps>(() => ({\n value: props.value ?? inherited?.column.value.value ?? '',\n }))\n return () => h(\n 'span',\n ctx.api.value.getColumnVisibilityTriggerProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableCaption = /* @__PURE__ */ defineComponent({\n name: 'XhTableCaption',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getCaptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableHeader = /* @__PURE__ */ defineComponent({\n name: 'XhTableHeader',\n setup(_, { slots }) {\n const ctx = useTableContext()\n provideTableSection('header')\n return () => h('div', ctx.api.value.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableBody = /* @__PURE__ */ defineComponent({\n name: 'XhTableBody',\n setup(_, { slots }) {\n const ctx = useTableContext()\n provideTableSection('body')\n // 键盘与 roving 的兜底 Tab 位落在表体上,不在 root 上\n return () => h('div', ctx.api.value.getBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableFooter = /* @__PURE__ */ defineComponent({\n name: 'XhTableFooter',\n setup(_, { slots }) {\n const ctx = useTableContext()\n provideTableSection('footer')\n return () => h('div', ctx.api.value.getFooterProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableRow = /* @__PURE__ */ defineComponent({\n name: 'XhTableRow',\n props: {\n /** 行 id:数据行必须提供,表头行与脚注行省略。 */\n value: { type: String },\n /** 多级表头下写明这是第几行表头(1 起算),行里的列头据此定位;单行表头省略。 */\n level: { type: Number },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const section = useTableSection()\n if (section !== 'body') {\n if (section === 'header')\n provideTableHeaderLevel(computed(() => props.level))\n return () => h(\n 'div',\n (section === 'header'\n ? ctx.api.value.getHeaderRowProps({ level: props.level })\n : ctx.api.value.getFooterRowProps()) as Record<string, unknown>,\n slots.default?.(),\n )\n }\n const row = computed<TableRowProps>(() => ({ value: props.value ?? '' }))\n // 供行内的把手与单元格读取行 id\n provideTableRow({ row })\n const el = ref<HTMLElement | null>(null)\n reportRowFocus(ctx, el, () => row.value.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getRowProps(row.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableColumnHeader = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnHeader',\n props: {\n value: { type: String, required: true },\n /** 多级表头里这一格所在的表头行;省略时取所在表头行写明的层号。 */\n level: { type: Number },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const headerLevel = useOptionalTableHeaderLevel()\n const column = computed<TableColumnProps>(() => ({ value: props.value, level: props.level ?? headerLevel?.value }))\n provideTableColumn({ column })\n return () => h(\n 'div',\n ctx.api.value.getColumnHeaderProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/**\n * 列名。列头里唯一可收窄的一格:列名太长时由它出省略号,排序钮、列宽把手与列拖拽把手都写在它之外、\n * 作为它的兄弟。不可排序、不可改宽的列也用它:裸写在 XhTableColumnHeader 里的文本是匿名 flex item,\n * 缩不下去,窄列上会把定尺的把手挤出列头盒。\n */\nexport const XhTableColumnLabel = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnLabel',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('span', ctx.api.value.getColumnLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableCell = /* @__PURE__ */ defineComponent({\n name: 'XhTableCell',\n props: {\n /** 列 id。 */\n value: { type: String, required: true },\n /** 跨列数,从 value 所在列向后计算。 */\n colspan: { type: [String, Number] as PropType<string | number> },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n // 行上下文可选:脚注单元格不属于任何数据行\n const rowCtx = useOptionalTableRowContext()\n return () => h(\n 'div',\n ctx.api.value.getCellProps({\n value: props.value,\n row: rowCtx?.row.value.value,\n colSpan: props.colspan == null ? undefined : Number(props.colspan),\n }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableSelectAllTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableSelectAllTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h(\n 'span',\n ctx.api.value.getSelectAllTriggerProps() as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableRowSelectTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableRowSelectTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { row } = useTableRowContext()\n return () => h(\n 'span',\n ctx.api.value.getRowSelectTriggerProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/**\n * 排序钮。独立的定尺图标钮,不包列名:列名留在 XhTableColumnHeader 里、钮写在列名之后,\n * 可及名取 translations.sort(列名)。只有 sortable 的列渲染它。\n */\nexport const XhTableSortTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableSortTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { column } = useTableColumnContext()\n return () => h(\n 'span',\n ctx.api.value.getSortTriggerProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/** 列宽把手。放在表头格中,只有 resizable 的列渲染它。 */\nexport const XhTableColumnResizeTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnResizeTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { column } = useTableColumnContext()\n return () => h(\n 'span',\n ctx.api.value.getColumnResizeTriggerProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/** 列拖拽把手。放在表头格中,只有可拖动的列渲染它。 */\nexport const XhTableColumnDragTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableColumnDragTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { column } = useTableColumnContext()\n return () => h(\n 'span',\n ctx.api.value.getColumnDragTriggerProps(column.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/**\n * 行拖拽把手。放在数据行中,自带 touch-action: none,按下即拖动,不等待激活距离。\n * 对读屏隐藏、也不占 Tab 位;键盘换位由表体上的 Alt + 上下键承担,\n * 树形表下另有 Alt + 左右键改变缩进层级。\n * 整行拖动的路径照常可用,把手是叠加的第二个入口。\n */\nexport const XhTableRowDragTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableRowDragTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { row } = useTableRowContext()\n return () => h(\n 'span',\n ctx.api.value.getRowDragTriggerProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableExpandTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableExpandTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n const { row } = useTableRowContext()\n return () => h(\n 'span',\n ctx.api.value.getExpandTriggerProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableExpandedRow = /* @__PURE__ */ defineComponent({\n name: 'XhTableExpandedRow',\n props: {\n /** 所属数据行的 id。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTableContext()\n const row = computed<TableRowProps>(() => ({ value: props.value }))\n // 不 provide 行上下文;收起只加 hidden,不卸载内部节点\n return () => h(\n 'div',\n ctx.api.value.getExpandedRowProps(row.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTableEmpty = /* @__PURE__ */ defineComponent({\n name: 'XhTableEmpty',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getEmptyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableLoading = /* @__PURE__ */ defineComponent({\n name: 'XhTableLoading',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getLoadingProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTableLoadMoreTrigger = /* @__PURE__ */ defineComponent({\n name: 'XhTableLoadMoreTrigger',\n setup(_, { slots }) {\n const ctx = useTableContext()\n // 取下一页的入口:摆在表尾,点了做什么归作者\n return () => h('button', ctx.api.value.getLoadMoreTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ComputedRef } from "vue";
1
+ import { ComputedRef, Ref } from "vue";
2
2
  import { Service } from "@xihan-ui/core";
3
3
  import { TableApi, TableSchema } from "@xihan-ui/headless";
4
4
  //#region src/components/table/use-table.d.ts
@@ -6,6 +6,8 @@ interface TableContext {
6
6
  api: ComputedRef<TableApi>;
7
7
  /** 状态机实例,供部件上报 DOM 侧的事实(如行卸载带走了焦点)。 */
8
8
  service: Service<TableSchema>;
9
+ /** root 节点:版面实测(冻结列偏移、纵向合并格的高度)从它往下量。 */
10
+ rootRef: Ref<HTMLElement | null>;
9
11
  }
10
12
  declare function useTable(props: TableSchema['props'], onSortChange?: TableSchema['props']['onSortChange'], onSelectionChange?: TableSchema['props']['onSelectionChange'], onExpandedValueChange?: TableSchema['props']['onExpandedValueChange'], onColumnPreferenceChange?: TableSchema['props']['onColumnPreferenceChange'], onRowMove?: TableSchema['props']['onRowMove']): TableContext;
11
13
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-table.d.ts","names":[],"sources":["../../../src/components/table/use-table.ts"],"mappings":";;;;UAiBiB;EACf,KAAK,YAAY;;EAEjB,SAAS,QAAQ;;iBAGH,SACd,OAAO,sBACP,eAAe,sCACf,oBAAoB,2CACpB,wBAAwB,+CACxB,2BAA2B,kDAC3B,YAAY,oCACX"}
1
+ {"version":3,"file":"use-table.d.ts","names":[],"sources":["../../../src/components/table/use-table.ts"],"mappings":";;;;UAiBiB;EACf,KAAK,YAAY;;EAEjB,SAAS,QAAQ;;EAEjB,SAAS,IAAI;;iBAGC,SACd,OAAO,sBACP,eAAe,sCACf,oBAAoB,2CACpB,wBAAwB,+CACxB,2BAA2B,kDAC3B,YAAY,oCACX"}
@@ -1,7 +1,7 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
2
  import { useMachine } from "../../runtime/use-machine.js";
3
3
  import { createVueIdGenerator } from "../../runtime/vue-id.js";
4
- import { computed } from "vue";
4
+ import { computed, ref } from "vue";
5
5
  import { createScope } from "@xihan-ui/core";
6
6
  import { connectTable, tableMachine } from "@xihan-ui/headless";
7
7
  //#region src/components/table/use-table.ts
@@ -14,9 +14,12 @@ function useTable(props, onSortChange, onSelectionChange, onExpandedValueChange,
14
14
  onColumnPreferenceChange,
15
15
  onRowMove
16
16
  }), createScope(null, createVueIdGenerator()));
17
+ const rootRef = ref(null);
18
+ service.refs.set("getRootEl", () => rootRef.value);
17
19
  return {
18
20
  api: computed(() => connectTable(service, vueNormalize)),
19
- service
21
+ service,
22
+ rootRef
20
23
  };
21
24
  }
22
25
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-table.js","names":[],"sources":["../../../src/components/table/use-table.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 table 相关实现。\n\nimport type { Service } from '@xihan-ui/core'\nimport type { TableApi, TableSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { createScope } from '@xihan-ui/core'\nimport { connectTable, tableMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TableContext {\n api: ComputedRef<TableApi>\n /** 状态机实例,供部件上报 DOM 侧的事实(如行卸载带走了焦点)。 */\n service: Service<TableSchema>\n}\n\nexport function useTable(\n props: TableSchema['props'],\n onSortChange?: TableSchema['props']['onSortChange'],\n onSelectionChange?: TableSchema['props']['onSelectionChange'],\n onExpandedValueChange?: TableSchema['props']['onExpandedValueChange'],\n onColumnPreferenceChange?: TableSchema['props']['onColumnPreferenceChange'],\n onRowMove?: TableSchema['props']['onRowMove'],\n): TableContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(\n tableMachine,\n () => ({ ...props, onSortChange, onSelectionChange, onExpandedValueChange, onColumnPreferenceChange, onRowMove }),\n scope,\n )\n const api = computed(() => connectTable(service, vueNormalize))\n return { api, service }\n}\n"],"mappings":";;;;;;;AAuBA,SAAgB,SACd,OACA,cACA,mBACA,uBACA,0BACA,WACc;CAGd,MAAM,UAAU,WACd,qBACO;EAAE,GAAG;EAAO;EAAc;EAAmB;EAAuB;EAA0B;CAAU,IAHnG,YAAY,MADZ,qBACsB,CAI9B,CACN;CAEA,OAAO;EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD;EAAG;CAAQ;AACxB"}
1
+ {"version":3,"file":"use-table.js","names":[],"sources":["../../../src/components/table/use-table.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 table 相关实现。\n\nimport type { Service } from '@xihan-ui/core'\nimport type { TableApi, TableSchema } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { createScope } from '@xihan-ui/core'\nimport { connectTable, tableMachine } from '@xihan-ui/headless'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TableContext {\n api: ComputedRef<TableApi>\n /** 状态机实例,供部件上报 DOM 侧的事实(如行卸载带走了焦点)。 */\n service: Service<TableSchema>\n /** root 节点:版面实测(冻结列偏移、纵向合并格的高度)从它往下量。 */\n rootRef: Ref<HTMLElement | null>\n}\n\nexport function useTable(\n props: TableSchema['props'],\n onSortChange?: TableSchema['props']['onSortChange'],\n onSelectionChange?: TableSchema['props']['onSelectionChange'],\n onExpandedValueChange?: TableSchema['props']['onExpandedValueChange'],\n onColumnPreferenceChange?: TableSchema['props']['onColumnPreferenceChange'],\n onRowMove?: TableSchema['props']['onRowMove'],\n): TableContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(\n tableMachine,\n () => ({ ...props, onSortChange, onSelectionChange, onExpandedValueChange, onColumnPreferenceChange, onRowMove }),\n scope,\n )\n const rootRef = ref<HTMLElement | null>(null)\n service.refs.set('getRootEl', () => rootRef.value)\n const api = computed(() => connectTable(service, vueNormalize))\n return { api, service, rootRef }\n}\n"],"mappings":";;;;;;;AAyBA,SAAgB,SACd,OACA,cACA,mBACA,uBACA,0BACA,WACc;CAGd,MAAM,UAAU,WACd,qBACO;EAAE,GAAG;EAAO;EAAc;EAAmB;EAAuB;EAA0B;CAAU,IAHnG,YAAY,MADZ,qBACsB,CAI9B,CACN;CACA,MAAM,UAAU,IAAwB,IAAI;CAC5C,QAAQ,KAAK,IAAI,mBAAmB,QAAQ,KAAK;CAEjD,OAAO;EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD;EAAG;EAAS;CAAQ;AACjC"}
@@ -38,8 +38,12 @@ declare const XhTabsRoot: import("vue").DefineComponent<import("vue").ExtractPro
38
38
  };
39
39
  /** 标签可以拖动换位。整个标签都是拖动源,不另设把手。 */
40
40
  reorderable: BooleanConstructor;
41
- /** 标签可关闭:焦点落在标签上按 Delete / Backspace 即触发 tab-close。 */
41
+ /** 标签可关闭:点 close-trigger,或焦点落在标签上按 Delete / Backspace,即触发 tab-close。 */
42
42
  closable: BooleanConstructor;
43
+ /** 面板内容等到对应标签第一次被选中才渲染。 */
44
+ lazyMount: BooleanConstructor;
45
+ /** 标签被选走后卸掉面板内容。 */
46
+ unmountOnExit: BooleanConstructor;
43
47
  translations: {
44
48
  type: PropType<TabsProps["translations"]>;
45
49
  };
@@ -84,8 +88,12 @@ declare const XhTabsRoot: import("vue").DefineComponent<import("vue").ExtractPro
84
88
  };
85
89
  /** 标签可以拖动换位。整个标签都是拖动源,不另设把手。 */
86
90
  reorderable: BooleanConstructor;
87
- /** 标签可关闭:焦点落在标签上按 Delete / Backspace 即触发 tab-close。 */
91
+ /** 标签可关闭:点 close-trigger,或焦点落在标签上按 Delete / Backspace,即触发 tab-close。 */
88
92
  closable: BooleanConstructor;
93
+ /** 面板内容等到对应标签第一次被选中才渲染。 */
94
+ lazyMount: BooleanConstructor;
95
+ /** 标签被选走后卸掉面板内容。 */
96
+ unmountOnExit: BooleanConstructor;
89
97
  translations: {
90
98
  type: PropType<TabsProps["translations"]>;
91
99
  };
@@ -96,6 +104,8 @@ declare const XhTabsRoot: import("vue").DefineComponent<import("vue").ExtractPro
96
104
  "onTab-close"?: ((_details: import("@xihan-ui/headless").TabsCloseDetails) => any) | undefined;
97
105
  }>, {
98
106
  loop: boolean;
107
+ lazyMount: boolean;
108
+ unmountOnExit: boolean;
99
109
  closable: boolean;
100
110
  reorderable: boolean;
101
111
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -121,6 +131,15 @@ declare const XhTabsPrevTrigger: import("vue").DefineComponent<{}, () => VNode<i
121
131
  declare const XhTabsNextTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
122
132
  [key: string]: any;
123
133
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
134
+ /**
135
+ * 标签带之后的「更多」钮:标签带放不下时露面,弹出的下拉列出此刻没有整个露在可见区里的标签,
136
+ * 选中一项即选中那个标签并把它挪进可见区;放得下时收着。放在 root 里、紧跟 XhTabsList 之后(不放进 list:
137
+ * tablist 只收 tab),自占一个 Tab 位。它同时是一张 Menu 的触发器——下拉的条目与落位由标签页的机器现给
138
+ * (tabsOverflowMenuProps),钮按 asChild 接菜单的开合接线,自己的解剖不让位。不写内容时由皮肤画一枚横排三点。
139
+ */
140
+ declare const XhTabsOverflowTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
141
+ [key: string]: any;
142
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
124
143
  /**
125
144
  * 拖动过程的读屏播报区,视觉上不可见。
126
145
  *
@@ -153,6 +172,35 @@ declare const XhTabsTrigger: import("vue").DefineComponent<import("vue").Extract
153
172
  }>> & Readonly<{}>, {
154
173
  disabled: boolean;
155
174
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
175
+ /**
176
+ * 标签的关闭钮:紧跟在所属 XhTabsTrigger 之后、与它平级,写同一个 value;没塞内容时由皮肤画一枚叉。
177
+ * 对读屏隐藏、不占 Tab 位——键盘用标签上的 Delete / Backspace。closable 关闭时收起。
178
+ */
179
+ declare const XhTabsCloseTrigger: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
180
+ /** 所属标签的 value。 */
181
+ value: {
182
+ type: StringConstructor;
183
+ required: true;
184
+ };
185
+ disabled: {
186
+ type: BooleanConstructor;
187
+ default: undefined;
188
+ };
189
+ }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
190
+ [key: string]: any;
191
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
192
+ /** 所属标签的 value。 */
193
+ value: {
194
+ type: StringConstructor;
195
+ required: true;
196
+ };
197
+ disabled: {
198
+ type: BooleanConstructor;
199
+ default: undefined;
200
+ };
201
+ }>> & Readonly<{}>, {
202
+ disabled: boolean;
203
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
156
204
  /**
157
205
  * 标签拖拽把手。放在标签中,自带 touch-action: none,按下即拖动,不等待激活距离。
158
206
  * 对读屏隐藏、也不占 Tab 位;键盘换位由标签上的 Alt + 方向键承担。
@@ -187,5 +235,5 @@ declare const XhTabsContent: import("vue").DefineComponent<import("vue").Extract
187
235
  };
188
236
  }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
189
237
  //#endregion
190
- export { XhTabsContent, XhTabsIndicator, XhTabsList, XhTabsLiveRegion, XhTabsNextTrigger, XhTabsPrevTrigger, XhTabsRoot, XhTabsSeparator, XhTabsTabDragTrigger, XhTabsTrigger };
238
+ export { XhTabsCloseTrigger, XhTabsContent, XhTabsIndicator, XhTabsList, XhTabsLiveRegion, XhTabsNextTrigger, XhTabsOverflowTrigger, XhTabsPrevTrigger, XhTabsRoot, XhTabsSeparator, XhTabsTabDragTrigger, XhTabsTrigger };
191
239
  //# sourceMappingURL=tabs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.d.ts","names":[],"sources":["../../../src/components/tabs/tabs.ts"],"mappings":";;;;;KAiBK,YAAY;cAEJ,0BAAU,8BAAA;;IAIU,MAAA,SAAS;;;IACb,MAAA;;;IACO,MAAA;;;IACD,MAAA,SAAS;;;IACjB,MAAA,SAAS;;;IACE,MAAA,SAAS;;;;;;;IAEhB,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;IAKD,MAAA,SAAS;;;;;EAId,iBAAA,UAAA,UAAU;EACZ,iBAAA,QAAA,UAAU;EAEZ,aAAA,UAAA,UAAU;EAET,cAAA,UAAA,UAAU;;;IAvBL,MAAA,SAAS;;;IACb,MAAA;;;IACO,MAAA;;;IACD,MAAA,SAAS;;;IACjB,MAAA,SAAS;;;IACE,MAAA,SAAS;;;;;;;IAEhB,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;IAKD,MAAA,SAAS;;;;;;;;;;;qCAkC3C;cAEW,0BAAU,0BAAA,oBAAA,4BAAA;;8BASrB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,+BAAe,0BAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,+BAAe,0BAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;cAMW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;;;cAQW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAU3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,8BAAA;;;;;;;;;;;;;;;;;;;;;;qCAiCxB;;;;;;cAOW,oCAAoB,8BAAA;;;;;;;;;;;;;;MAc/B,oDAAA;cAEW,6BAAa,8BAAA;;;;;;;;;;;;MAaxB,oDAAA"}
1
+ {"version":3,"file":"tabs.d.ts","names":[],"sources":["../../../src/components/tabs/tabs.ts"],"mappings":";;;;;KAoBK,YAAY;cAEJ,0BAAU,8BAAA;;IAIU,MAAA,SAAS;;;IACb,MAAA;;;IACO,MAAA;;;IACD,MAAA,SAAS;;;IACjB,MAAA,SAAS;;;IACE,MAAA,SAAS;;;;;;;IAEhB,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;;;;;IASD,MAAA,SAAS;;;;;EAId,iBAAA,UAAA,UAAU;EACZ,iBAAA,QAAA,UAAU;EAEZ,aAAA,UAAA,UAAU;EAET,cAAA,UAAA,UAAU;;;IA3BL,MAAA,SAAS;;;IACb,MAAA;;;IACO,MAAA;;;IACD,MAAA,SAAS;;;IACjB,MAAA,SAAS;;;IACE,MAAA,SAAS;;;;;;;IAEhB,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;;;;;IASD,MAAA,SAAS;;;;;;;;;;;;;qCAkC3C;cAEW,0BAAU,0BAAA,oBAAA,4BAAA;;8BASrB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,+BAAe,0BAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,+BAAe,0BAAA,oBAAA,4BAAA;;8BAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;cAMW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;;;cAQW,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAUhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;;;cAQW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAU3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,8BAAA;;;;;;;;;;;;;;;;;;;;;;qCAiCxB;;;;;cAMW,kCAAkB,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;qCAgB7B;;;;;;cAOW,oCAAoB,8BAAA;;;;;;;;;;;;;;MAc/B,oDAAA;cAEW,6BAAa,8BAAA;;;;;;;;;;;;MAcxB,oDAAA"}
@@ -1,8 +1,11 @@
1
1
  import { withXhConfig } from "../../config/config.js";
2
+ import { mergePartProps } from "../../runtime/merge-props.js";
2
3
  import { slotPaints } from "../../runtime/slot-content.js";
4
+ import { XhMenuRoot } from "../menu/menu.js";
3
5
  import { provideTabs, useTabsContext } from "./context.js";
4
6
  import { useTabs } from "./use-tabs.js";
5
7
  import { defineComponent, h, onBeforeUnmount, ref, watch } from "vue";
8
+ import { tabsOverflowMenuProps } from "@xihan-ui/headless";
6
9
  //#region src/components/tabs/tabs.ts
7
10
  const XhTabsRoot = defineComponent({
8
11
  name: "XhTabsRoot",
@@ -22,8 +25,12 @@ const XhTabsRoot = defineComponent({
22
25
  size: { type: String },
23
26
  /** 标签可以拖动换位。整个标签都是拖动源,不另设把手。 */
24
27
  reorderable: Boolean,
25
- /** 标签可关闭:焦点落在标签上按 Delete / Backspace 即触发 tab-close。 */
28
+ /** 标签可关闭:点 close-trigger,或焦点落在标签上按 Delete / Backspace,即触发 tab-close。 */
26
29
  closable: Boolean,
30
+ /** 面板内容等到对应标签第一次被选中才渲染。 */
31
+ lazyMount: Boolean,
32
+ /** 标签被选走后卸掉面板内容。 */
33
+ unmountOnExit: Boolean,
27
34
  translations: { type: Object }
28
35
  },
29
36
  emits: {
@@ -47,7 +54,7 @@ const XhTabsRoot = defineComponent({
47
54
  provideTabs(ctx);
48
55
  return () => {
49
56
  const authored = slots.default?.();
50
- const children = slotPaints(authored) ? authored : props.collection ? renderDefaultTree(ctx.api.value.collection, slots.panel) : void 0;
57
+ const children = slotPaints(authored) ? authored : props.collection ? renderDefaultTree(ctx.api.value.collection, props.closable, slots.panel) : void 0;
51
58
  return h("div", ctx.api.value.getRootProps(), children);
52
59
  };
53
60
  }
@@ -100,6 +107,23 @@ const XhTabsNextTrigger = defineComponent({
100
107
  }
101
108
  });
102
109
  /**
110
+ * 标签带之后的「更多」钮:标签带放不下时露面,弹出的下拉列出此刻没有整个露在可见区里的标签,
111
+ * 选中一项即选中那个标签并把它挪进可见区;放得下时收着。放在 root 里、紧跟 XhTabsList 之后(不放进 list:
112
+ * tablist 只收 tab),自占一个 Tab 位。它同时是一张 Menu 的触发器——下拉的条目与落位由标签页的机器现给
113
+ * (tabsOverflowMenuProps),钮按 asChild 接菜单的开合接线,自己的解剖不让位。不写内容时由皮肤画一枚横排三点。
114
+ */
115
+ const XhTabsOverflowTrigger = defineComponent({
116
+ name: "XhTabsOverflowTrigger",
117
+ inheritAttrs: false,
118
+ setup(_, { slots, attrs }) {
119
+ const ctx = useTabsContext();
120
+ return () => h(XhMenuRoot, {
121
+ ...tabsOverflowMenuProps(ctx.service),
122
+ triggerAsChild: true
123
+ }, { trigger: () => [h("button", mergePartProps(ctx.api.value.getOverflowTriggerProps(), attrs), slots.default?.())] });
124
+ }
125
+ });
126
+ /**
103
127
  * 拖动过程的读屏播报区,视觉上不可见。
104
128
  *
105
129
  * 放在 root 中、与 list 部件平级。它必须在拖动开始之前就在 DOM 上:
@@ -150,6 +174,31 @@ const XhTabsTrigger = defineComponent({
150
174
  }
151
175
  });
152
176
  /**
177
+ * 标签的关闭钮:紧跟在所属 XhTabsTrigger 之后、与它平级,写同一个 value;没塞内容时由皮肤画一枚叉。
178
+ * 对读屏隐藏、不占 Tab 位——键盘用标签上的 Delete / Backspace。closable 关闭时收起。
179
+ */
180
+ const XhTabsCloseTrigger = defineComponent({
181
+ name: "XhTabsCloseTrigger",
182
+ props: {
183
+ /** 所属标签的 value。 */
184
+ value: {
185
+ type: String,
186
+ required: true
187
+ },
188
+ disabled: {
189
+ type: Boolean,
190
+ default: void 0
191
+ }
192
+ },
193
+ setup(props, { slots }) {
194
+ const ctx = useTabsContext();
195
+ return () => h("button", ctx.api.value.getCloseTriggerProps({
196
+ value: props.value,
197
+ disabled: props.disabled
198
+ }), slots.default?.());
199
+ }
200
+ });
201
+ /**
153
202
  * 标签拖拽把手。放在标签中,自带 touch-action: none,按下即拖动,不等待激活距离。
154
203
  * 对读屏隐藏、也不占 Tab 位;键盘换位由标签上的 Alt + 方向键承担。
155
204
  * 整个标签拖动的路径照常可用,把手是叠加的第二个入口。
@@ -175,24 +224,27 @@ const XhTabsContent = defineComponent({
175
224
  } },
176
225
  setup(props, { slots }) {
177
226
  const ctx = useTabsContext();
178
- return () => h("div", ctx.api.value.getContentProps({ value: props.value }), slots.default?.());
227
+ return () => h("div", ctx.api.value.getContentProps({ value: props.value }), ctx.api.value.isContentMounted(props.value) ? slots.default?.() : void 0);
179
228
  }
180
229
  });
181
230
  /**
182
231
  * 未写默认插槽时按 collection 铺开的整套结构,作者只提供数据。
183
232
  * 与手写部件产出的 DOM 完全一致,需要修改结构时写默认插槽,行为不变。
184
- * 面板内容经 panel 插槽,未写时为空面板。
233
+ * 面板内容经 panel 插槽,未写时为空面板。可关闭时每个标签后面跟一枚关闭钮。
185
234
  */
186
- function renderDefaultTree(collection, panelSlot) {
187
- return [h(XhTabsList, null, () => collection.map((node) => h(XhTabsTrigger, {
235
+ function renderDefaultTree(collection, closable, panelSlot) {
236
+ return [h(XhTabsList, null, () => collection.flatMap((node) => [h(XhTabsTrigger, {
188
237
  key: node.value,
189
238
  value: node.value
190
- }, () => node.label))), ...collection.map((node) => h(XhTabsContent, {
239
+ }, () => node.label), ...closable ? [h(XhTabsCloseTrigger, {
240
+ key: `${node.value}:close`,
241
+ value: node.value
242
+ })] : []])), ...collection.map((node) => h(XhTabsContent, {
191
243
  key: node.value,
192
244
  value: node.value
193
245
  }, () => panelSlot?.(node) ?? []))];
194
246
  }
195
247
  //#endregion
196
- export { XhTabsContent, XhTabsIndicator, XhTabsList, XhTabsLiveRegion, XhTabsNextTrigger, XhTabsPrevTrigger, XhTabsRoot, XhTabsSeparator, XhTabsTabDragTrigger, XhTabsTrigger };
248
+ export { XhTabsCloseTrigger, XhTabsContent, XhTabsIndicator, XhTabsList, XhTabsLiveRegion, XhTabsNextTrigger, XhTabsOverflowTrigger, XhTabsPrevTrigger, XhTabsRoot, XhTabsSeparator, XhTabsTabDragTrigger, XhTabsTrigger };
197
249
 
198
250
  //# sourceMappingURL=tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/components/tabs/tabs.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// 提供 tabs 相关实现。\n\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/core'\nimport type { TabsActivationMode, TabsNode, TabsNodeMeta, TabsSchema, TabsVariant } from '@xihan-ui/headless'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { provideTabs, useTabsContext } from './context'\nimport { useTabs } from './use-tabs'\n\ntype TabsProps = TabsSchema['props']\n\nexport const XhTabsRoot = defineComponent({\n name: 'XhTabsRoot',\n // 缺省值由 connect 决定;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n collection: { type: Array as PropType<TabsNode[]> },\n value: { type: String as PropType<string | null> },\n defaultValue: { type: String as PropType<string | null> },\n orientation: { type: String as PropType<Orientation> },\n dir: { type: String as PropType<Direction> },\n activationMode: { type: String as PropType<TabsActivationMode> },\n loop: { type: Boolean, default: undefined },\n variant: { type: String as PropType<TabsVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n /** 标签可以拖动换位。整个标签都是拖动源,不另设把手。 */\n reorderable: Boolean,\n /** 标签可关闭:焦点落在标签上按 Delete / Backspace 即触发 tab-close。 */\n closable: Boolean,\n translations: { type: Object as PropType<TabsProps['translations']> },\n },\n // value-change 携带 { value },update:value 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<TabsProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<TabsProps, 'onValueChange'>['value']) => true,\n // 换位是通知,标签序的真源在使用者的数据里,故没有配对的 update:*\n 'tab-move': (_details: PayloadOf<TabsProps, 'onTabMove'>) => true,\n // 关闭同理:库不持有标签序,只发意图\n 'tab-close': (_details: PayloadOf<TabsProps, 'onTabClose'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: TabsProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n // 监听器不进 props 对象,故作为位置参数交给 useTabs,不能指望 { ...props } 带上\n const onTabMove: TabsProps['onTabMove'] = (details) => {\n emit('tab-move', details)\n }\n const onTabClose: TabsProps['onTabClose'] = (details) => {\n emit('tab-close', details)\n }\n const ctx = useTabs(withXhConfig('tabs', props) as TabsProps, notify, onTabMove, onTabClose)\n provideTabs(ctx)\n return () => {\n // 默认插槽里有真内容就照旧交给作者;只剩注释或空白时当没写,给了 collection 就按数据铺开整套结构\n const authored = slots.default?.()\n const children = slotPaints(authored)\n ? authored\n : (props.collection ? renderDefaultTree(ctx.api.value.collection, slots.panel) : undefined)\n return h('div', ctx.api.value.getRootProps() as Record<string, unknown>, children)\n }\n },\n})\n\nexport const XhTabsList = defineComponent({\n name: 'XhTabsList',\n setup(_, { slots }) {\n const ctx = useTabsContext()\n return () => h('div', {\n ...ctx.api.value.getListProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.listRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\n/** 选中标签下的滑条:位置由状态机测量后写入内联样式;位于 list 中,以 list 为定位参照系 */\nexport const XhTabsIndicator = defineComponent({\n name: 'XhTabsIndicator',\n setup() {\n const ctx = useTabsContext()\n return () => h('div', ctx.api.value.getIndicatorProps() as Record<string, unknown>)\n },\n})\n\n/** 标签之间的细分隔线,纯装饰 */\nexport const XhTabsSeparator = defineComponent({\n name: 'XhTabsSeparator',\n setup() {\n const ctx = useTabsContext()\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\n/**\n * 标签带的往前翻页钮:标签带放不下时露面,贴在起始端;没塞内容时由皮肤画一枚 chevron。\n * 放在 list 里、与标签平级;对读屏隐藏、不占 Tab 位——键盘用方向键在标签间移动即可。\n */\nexport const XhTabsPrevTrigger = defineComponent({\n name: 'XhTabsPrevTrigger',\n setup(_, { slots }) {\n const ctx = useTabsContext()\n return () => h('button', ctx.api.value.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 标签带的往后翻页钮:与 XhTabsPrevTrigger 成对,贴在结束端。 */\nexport const XhTabsNextTrigger = defineComponent({\n name: 'XhTabsNextTrigger',\n setup(_, { slots }) {\n const ctx = useTabsContext()\n return () => h('button', ctx.api.value.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 拖动过程的读屏播报区,视觉上不可见。\n *\n * 放在 root 中、与 list 部件平级。它必须在拖动开始之前就在 DOM 上:\n * 读屏不播报后插入的节点,等到拖起才渲染等于没有。\n */\nexport const XhTabsLiveRegion = defineComponent({\n name: 'XhTabsLiveRegion',\n setup() {\n const ctx = useTabsContext()\n return () => h(\n 'div',\n ctx.api.value.getLiveRegionProps() as Record<string, unknown>,\n ctx.service.context.get('announcement'),\n )\n },\n})\n\nexport const XhTabsTrigger = defineComponent({\n name: 'XhTabsTrigger',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useTabsContext()\n // 本节点持有焦点时,value 变更重报焦点标签,卸载时上报列表失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const svc = ctx.service\n if (svc.getStatus() !== 'Started')\n return\n if (itemEl.value && svc.scope.getActiveElement() === itemEl.value)\n svc.send({ type: 'TRIGGER.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n if (ctx.service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && ctx.service.scope.getActiveElement() === itemEl.value)\n ctx.service.send({ type: 'LIST.BLUR' })\n })\n return () => h(\n 'button',\n { ...ctx.api.value.getTriggerProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\n/**\n * 标签拖拽把手。放在标签中,自带 touch-action: none,按下即拖动,不等待激活距离。\n * 对读屏隐藏、也不占 Tab 位;键盘换位由标签上的 Alt + 方向键承担。\n * 整个标签拖动的路径照常可用,把手是叠加的第二个入口。\n */\nexport const XhTabsTabDragTrigger = defineComponent({\n name: 'XhTabsTabDragTrigger',\n props: {\n /** 所属标签的 value。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTabsContext()\n return () => h(\n 'span',\n ctx.api.value.getTabDragTriggerProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTabsContent = defineComponent({\n name: 'XhTabsContent',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTabsContext()\n return () => h(\n 'div',\n ctx.api.value.getContentProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/**\n * 未写默认插槽时按 collection 铺开的整套结构,作者只提供数据。\n * 与手写部件产出的 DOM 完全一致,需要修改结构时写默认插槽,行为不变。\n * 面板内容经 panel 插槽,未写时为空面板。\n */\nfunction renderDefaultTree(\n collection: readonly TabsNodeMeta[],\n panelSlot?: (node: TabsNodeMeta) => VNode[],\n): VNode[] {\n return [\n h(XhTabsList, null, () => collection.map(node =>\n h(XhTabsTrigger, { key: node.value, value: node.value }, () => node.label),\n )),\n ...collection.map(node =>\n h(XhTabsContent, { key: node.value, value: node.value }, () => panelSlot?.(node) ?? []),\n ),\n ]\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tabs.js","names":[],"sources":["../../../src/components/tabs/tabs.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// 提供 tabs 相关实现。\n\nimport type { Direction, Orientation, Size, Tone } from '@xihan-ui/core'\nimport type { TabsActivationMode, TabsNode, TabsNodeMeta, TabsSchema, TabsVariant } from '@xihan-ui/headless'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { tabsOverflowMenuProps } from '@xihan-ui/headless'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { mergePartProps } from '../../runtime/merge-props'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { XhMenuRoot } from '../menu/menu'\nimport { provideTabs, useTabsContext } from './context'\nimport { useTabs } from './use-tabs'\n\ntype TabsProps = TabsSchema['props']\n\nexport const XhTabsRoot = defineComponent({\n name: 'XhTabsRoot',\n // 缺省值由 connect 决定;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n collection: { type: Array as PropType<TabsNode[]> },\n value: { type: String as PropType<string | null> },\n defaultValue: { type: String as PropType<string | null> },\n orientation: { type: String as PropType<Orientation> },\n dir: { type: String as PropType<Direction> },\n activationMode: { type: String as PropType<TabsActivationMode> },\n loop: { type: Boolean, default: undefined },\n variant: { type: String as PropType<TabsVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n /** 标签可以拖动换位。整个标签都是拖动源,不另设把手。 */\n reorderable: Boolean,\n /** 标签可关闭:点 close-trigger,或焦点落在标签上按 Delete / Backspace,即触发 tab-close。 */\n closable: Boolean,\n /** 面板内容等到对应标签第一次被选中才渲染。 */\n lazyMount: Boolean,\n /** 标签被选走后卸掉面板内容。 */\n unmountOnExit: Boolean,\n translations: { type: Object as PropType<TabsProps['translations']> },\n },\n // value-change 携带 { value },update:value 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<TabsProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<TabsProps, 'onValueChange'>['value']) => true,\n // 换位是通知,标签序的真源在使用者的数据里,故没有配对的 update:*\n 'tab-move': (_details: PayloadOf<TabsProps, 'onTabMove'>) => true,\n // 关闭同理:库不持有标签序,只发意图\n 'tab-close': (_details: PayloadOf<TabsProps, 'onTabClose'>) => true,\n },\n setup(props, { slots, emit }) {\n const notify: TabsProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n // 监听器不进 props 对象,故作为位置参数交给 useTabs,不能指望 { ...props } 带上\n const onTabMove: TabsProps['onTabMove'] = (details) => {\n emit('tab-move', details)\n }\n const onTabClose: TabsProps['onTabClose'] = (details) => {\n emit('tab-close', details)\n }\n const ctx = useTabs(withXhConfig('tabs', props) as TabsProps, notify, onTabMove, onTabClose)\n provideTabs(ctx)\n return () => {\n // 默认插槽里有真内容就照旧交给作者;只剩注释或空白时当没写,给了 collection 就按数据铺开整套结构\n const authored = slots.default?.()\n const children = slotPaints(authored)\n ? authored\n : (props.collection ? renderDefaultTree(ctx.api.value.collection, props.closable, slots.panel) : undefined)\n return h('div', ctx.api.value.getRootProps() as Record<string, unknown>, children)\n }\n },\n})\n\nexport const XhTabsList = defineComponent({\n name: 'XhTabsList',\n setup(_, { slots }) {\n const ctx = useTabsContext()\n return () => h('div', {\n ...ctx.api.value.getListProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.listRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\n/** 选中标签下的滑条:位置由状态机测量后写入内联样式;位于 list 中,以 list 为定位参照系 */\nexport const XhTabsIndicator = defineComponent({\n name: 'XhTabsIndicator',\n setup() {\n const ctx = useTabsContext()\n return () => h('div', ctx.api.value.getIndicatorProps() as Record<string, unknown>)\n },\n})\n\n/** 标签之间的细分隔线,纯装饰 */\nexport const XhTabsSeparator = defineComponent({\n name: 'XhTabsSeparator',\n setup() {\n const ctx = useTabsContext()\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\n/**\n * 标签带的往前翻页钮:标签带放不下时露面,贴在起始端;没塞内容时由皮肤画一枚 chevron。\n * 放在 list 里、与标签平级;对读屏隐藏、不占 Tab 位——键盘用方向键在标签间移动即可。\n */\nexport const XhTabsPrevTrigger = defineComponent({\n name: 'XhTabsPrevTrigger',\n setup(_, { slots }) {\n const ctx = useTabsContext()\n return () => h('button', ctx.api.value.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 标签带的往后翻页钮:与 XhTabsPrevTrigger 成对,贴在结束端。 */\nexport const XhTabsNextTrigger = defineComponent({\n name: 'XhTabsNextTrigger',\n setup(_, { slots }) {\n const ctx = useTabsContext()\n return () => h('button', ctx.api.value.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 标签带之后的「更多」钮:标签带放不下时露面,弹出的下拉列出此刻没有整个露在可见区里的标签,\n * 选中一项即选中那个标签并把它挪进可见区;放得下时收着。放在 root 里、紧跟 XhTabsList 之后(不放进 list:\n * tablist 只收 tab),自占一个 Tab 位。它同时是一张 Menu 的触发器——下拉的条目与落位由标签页的机器现给\n * (tabsOverflowMenuProps),钮按 asChild 接菜单的开合接线,自己的解剖不让位。不写内容时由皮肤画一枚横排三点。\n */\nexport const XhTabsOverflowTrigger = defineComponent({\n name: 'XhTabsOverflowTrigger',\n // 直通属性合到钮上,而不是落到菜单的根组件上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useTabsContext()\n return () => h(XhMenuRoot, { ...tabsOverflowMenuProps(ctx.service), triggerAsChild: true }, {\n trigger: () => [h('button', mergePartProps(ctx.api.value.getOverflowTriggerProps() as Record<string, unknown>, attrs), slots.default?.())],\n })\n },\n})\n\n/**\n * 拖动过程的读屏播报区,视觉上不可见。\n *\n * 放在 root 中、与 list 部件平级。它必须在拖动开始之前就在 DOM 上:\n * 读屏不播报后插入的节点,等到拖起才渲染等于没有。\n */\nexport const XhTabsLiveRegion = defineComponent({\n name: 'XhTabsLiveRegion',\n setup() {\n const ctx = useTabsContext()\n return () => h(\n 'div',\n ctx.api.value.getLiveRegionProps() as Record<string, unknown>,\n ctx.service.context.get('announcement'),\n )\n },\n})\n\nexport const XhTabsTrigger = defineComponent({\n name: 'XhTabsTrigger',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useTabsContext()\n // 本节点持有焦点时,value 变更重报焦点标签,卸载时上报列表失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const svc = ctx.service\n if (svc.getStatus() !== 'Started')\n return\n if (itemEl.value && svc.scope.getActiveElement() === itemEl.value)\n svc.send({ type: 'TRIGGER.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n if (ctx.service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && ctx.service.scope.getActiveElement() === itemEl.value)\n ctx.service.send({ type: 'LIST.BLUR' })\n })\n return () => h(\n 'button',\n { ...ctx.api.value.getTriggerProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\n/**\n * 标签的关闭钮:紧跟在所属 XhTabsTrigger 之后、与它平级,写同一个 value;没塞内容时由皮肤画一枚叉。\n * 对读屏隐藏、不占 Tab 位——键盘用标签上的 Delete / Backspace。closable 关闭时收起。\n */\nexport const XhTabsCloseTrigger = defineComponent({\n name: 'XhTabsCloseTrigger',\n props: {\n /** 所属标签的 value。 */\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,与所属标签同一条来路\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useTabsContext()\n return () => h(\n 'button',\n ctx.api.value.getCloseTriggerProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\n/**\n * 标签拖拽把手。放在标签中,自带 touch-action: none,按下即拖动,不等待激活距离。\n * 对读屏隐藏、也不占 Tab 位;键盘换位由标签上的 Alt + 方向键承担。\n * 整个标签拖动的路径照常可用,把手是叠加的第二个入口。\n */\nexport const XhTabsTabDragTrigger = defineComponent({\n name: 'XhTabsTabDragTrigger',\n props: {\n /** 所属标签的 value。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTabsContext()\n return () => h(\n 'span',\n ctx.api.value.getTabDragTriggerProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhTabsContent = defineComponent({\n name: 'XhTabsContent',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTabsContext()\n // 面板节点常在;里面的内容按 lazyMount / unmountOnExit 由 connect 判定渲不渲染\n return () => h(\n 'div',\n ctx.api.value.getContentProps({ value: props.value }) as Record<string, unknown>,\n ctx.api.value.isContentMounted(props.value) ? slots.default?.() : undefined,\n )\n },\n})\n\n/**\n * 未写默认插槽时按 collection 铺开的整套结构,作者只提供数据。\n * 与手写部件产出的 DOM 完全一致,需要修改结构时写默认插槽,行为不变。\n * 面板内容经 panel 插槽,未写时为空面板。可关闭时每个标签后面跟一枚关闭钮。\n */\nfunction renderDefaultTree(\n collection: readonly TabsNodeMeta[],\n closable: boolean,\n panelSlot?: (node: TabsNodeMeta) => VNode[],\n): VNode[] {\n return [\n h(XhTabsList, null, () => collection.flatMap(node => [\n h(XhTabsTrigger, { key: node.value, value: node.value }, () => node.label),\n ...(closable ? [h(XhTabsCloseTrigger, { key: `${node.value}:close`, value: node.value })] : []),\n ])),\n ...collection.map(node =>\n h(XhTabsContent, { key: node.value, value: node.value }, () => panelSlot?.(node) ?? []),\n ),\n ]\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-tag.d.ts","names":[],"sources":["../../../src/components/tag/use-tag.ts"],"mappings":";;;UAciB;EACf,KAAK,YAAY;;iBAIH,OACd,OAAO,oBACP,eAAe,qCACd"}
1
+ {"version":3,"file":"use-tag.d.ts","names":[],"sources":["../../../src/components/tag/use-tag.ts"],"mappings":";;;UAgBiB;EACf,KAAK,YAAY;;iBAIH,OACd,OAAO,oBACP,eAAe,qCACd"}
@@ -1,6 +1,8 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
2
  import { useMachine } from "../../runtime/use-machine.js";
3
+ import { createVueIdGenerator } from "../../runtime/vue-id.js";
3
4
  import { computed, ref } from "vue";
5
+ import { createScope } from "@xihan-ui/core";
4
6
  import { connectStaticTag, connectTag, tagMachine } from "@xihan-ui/headless";
5
7
  //#region src/components/tag/use-tag.ts
6
8
  function useTag(props, onOpenChange) {
@@ -19,7 +21,7 @@ function useTag(props, onOpenChange) {
19
21
  const service = useMachine(tagMachine, () => ({
20
22
  ...props,
21
23
  onOpenChange
22
- }));
24
+ }), createScope(null, createVueIdGenerator()));
23
25
  return { api: computed(() => connectTag(service, vueNormalize)) };
24
26
  }
25
27
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-tag.js","names":[],"sources":["../../../src/components/tag/use-tag.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 tag 相关实现。\n\nimport type { TagApi, TagSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectStaticTag, connectTag, tagMachine } from '@xihan-ui/headless'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface TagContext {\n api: ComputedRef<TagApi>\n}\n\n// 不建 scope:connect 不派生任何 id\nexport function useTag(\n props: TagSchema['props'],\n onOpenChange?: TagSchema['props']['onOpenChange'],\n): TagContext {\n // 不给关闭钮的标签没有任何能改状态的事件,用不着机器:一台机器约 0.1ms,\n // 表格一页几十行、每行几个状态药丸就是几百台,翻页时肉眼可见地卡一下。\n // 判据取挂载那一刻的 closable——之后再打开也不要紧,快路的 setOpen 与关闭钮\n // 走的是同一套受控/非受控语义,与机器路逐条一致。\n if (!props.closable) {\n // 非受控时展开态住这儿;受控时它不参与,值每次从 prop 现读\n const local = ref(props.defaultOpen ?? true)\n const api = computed(() => connectStaticTag(\n { ...props, onOpenChange },\n {\n get: () => props.open ?? local.value,\n set: (next) => { local.value = next },\n },\n vueNormalize,\n ))\n return { api }\n }\n\n const service = useMachine(tagMachine, () => ({ ...props, onOpenChange }))\n const api = computed(() => connectTag(service, vueNormalize))\n return { api }\n}\n"],"mappings":";;;;;AAmBA,SAAgB,OACd,OACA,cACY;CAKZ,IAAI,CAAC,MAAM,UAAU;EAEnB,MAAM,QAAQ,IAAI,MAAM,eAAe,IAAI;EAS3C,OAAO,EAAE,KARG,eAAe,iBACzB;GAAE,GAAG;GAAO;EAAa,GACzB;GACE,WAAW,MAAM,QAAQ,MAAM;GAC/B,MAAM,SAAS;IAAE,MAAM,QAAQ;GAAK;EACtC,GACA,YACF,CACW,EAAE;CACf;CAEA,MAAM,UAAU,WAAW,mBAAmB;EAAE,GAAG;EAAO;CAAa,EAAE;CAEzE,OAAO,EAAE,KADG,eAAe,WAAW,SAAS,YAAY,CAChD,EAAE;AACf"}
1
+ {"version":3,"file":"use-tag.js","names":[],"sources":["../../../src/components/tag/use-tag.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 tag 相关实现。\n\nimport type { TagApi, TagSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { createScope } from '@xihan-ui/core'\nimport { connectStaticTag, connectTag, tagMachine } from '@xihan-ui/headless'\nimport { computed, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TagContext {\n api: ComputedRef<TagApi>\n}\n\n// 机器路的根节点带 scope 派生的 id:关闭时按它找到节点,等退场播完再藏起\nexport function useTag(\n props: TagSchema['props'],\n onOpenChange?: TagSchema['props']['onOpenChange'],\n): TagContext {\n // 不给关闭钮的标签没有任何能改状态的事件,用不着机器:一台机器约 0.1ms,\n // 表格一页几十行、每行几个状态药丸就是几百台,翻页时肉眼可见地卡一下。\n // 判据取挂载那一刻的 closable——之后再打开也不要紧,快路的 setOpen 与关闭钮\n // 走的是同一套受控/非受控语义,与机器路逐条一致。\n if (!props.closable) {\n // 非受控时展开态住这儿;受控时它不参与,值每次从 prop 现读\n const local = ref(props.defaultOpen ?? true)\n const api = computed(() => connectStaticTag(\n { ...props, onOpenChange },\n {\n get: () => props.open ?? local.value,\n set: (next) => { local.value = next },\n },\n vueNormalize,\n ))\n return { api }\n }\n\n const service = useMachine(tagMachine, () => ({ ...props, onOpenChange }), createScope(null, createVueIdGenerator()))\n const api = computed(() => connectTag(service, vueNormalize))\n return { api }\n}\n"],"mappings":";;;;;;;AAqBA,SAAgB,OACd,OACA,cACY;CAKZ,IAAI,CAAC,MAAM,UAAU;EAEnB,MAAM,QAAQ,IAAI,MAAM,eAAe,IAAI;EAS3C,OAAO,EAAE,KARG,eAAe,iBACzB;GAAE,GAAG;GAAO;EAAa,GACzB;GACE,WAAW,MAAM,QAAQ,MAAM;GAC/B,MAAM,SAAS;IAAE,MAAM,QAAQ;GAAK;EACtC,GACA,YACF,CACW,EAAE;CACf;CAEA,MAAM,UAAU,WAAW,mBAAmB;EAAE,GAAG;EAAO;CAAa,IAAI,YAAY,MAAM,qBAAqB,CAAC,CAAC;CAEpH,OAAO,EAAE,KADG,eAAe,WAAW,SAAS,YAAY,CAChD,EAAE;AACf"}
@@ -169,8 +169,8 @@ function renderDefaultTree(collection, label, itemSlot) {
169
169
  key: node.value,
170
170
  value: node.value
171
171
  }, () => [h(XhTagGroupCell, null, () => [
172
- h(XhTagGroupItemIndicator),
173
172
  h(XhTagGroupItemText, null, () => itemSlot?.(node) ?? node.label),
173
+ h(XhTagGroupItemIndicator),
174
174
  h(XhTagGroupItemDeleteTrigger)
175
175
  ])])))];
176
176
  }