@xihan-ui/vue 1.0.0-alpha.3 → 1.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 (458) hide show
  1. package/CHANGELOG.md +2057 -0
  2. package/dist/backgrounds.d.ts.map +1 -1
  3. package/dist/backgrounds.js +1 -5
  4. package/dist/backgrounds.js.map +1 -1
  5. package/dist/behavior.d.ts +38 -0
  6. package/dist/behavior.d.ts.map +1 -0
  7. package/dist/behavior.js +74 -0
  8. package/dist/behavior.js.map +1 -0
  9. package/dist/components/accordion/accordion.d.ts +1 -1
  10. package/dist/components/accordion/context.js +2 -2
  11. package/dist/components/accordion/context.js.map +1 -1
  12. package/dist/components/affix/context.js +1 -1
  13. package/dist/components/affix/context.js.map +1 -1
  14. package/dist/components/alert/context.js +1 -1
  15. package/dist/components/alert/context.js.map +1 -1
  16. package/dist/components/anchor/anchor.d.ts +2 -2
  17. package/dist/components/anchor/context.js +1 -1
  18. package/dist/components/anchor/context.js.map +1 -1
  19. package/dist/components/avatar/context.js +1 -1
  20. package/dist/components/avatar/context.js.map +1 -1
  21. package/dist/components/avatar-group/context.js +1 -1
  22. package/dist/components/avatar-group/context.js.map +1 -1
  23. package/dist/components/back-top/back-top.d.ts +2 -2
  24. package/dist/components/back-top/context.js +1 -1
  25. package/dist/components/back-top/context.js.map +1 -1
  26. package/dist/components/badge/badge.d.ts +142 -50
  27. package/dist/components/badge/badge.d.ts.map +1 -1
  28. package/dist/components/badge/badge.js +67 -37
  29. package/dist/components/badge/badge.js.map +1 -1
  30. package/dist/components/badge/context.js +15 -0
  31. package/dist/components/badge/context.js.map +1 -0
  32. package/dist/components/breadcrumb/breadcrumb.d.ts +1 -1
  33. package/dist/components/breadcrumb/context.js +1 -1
  34. package/dist/components/breadcrumb/context.js.map +1 -1
  35. package/dist/components/button-group/button-group.d.ts +1 -1
  36. package/dist/components/calendar/context.js +2 -2
  37. package/dist/components/calendar/context.js.map +1 -1
  38. package/dist/components/card/card.d.ts +1 -1
  39. package/dist/components/card/context.js +1 -1
  40. package/dist/components/card/context.js.map +1 -1
  41. package/dist/components/carousel/context.js +1 -1
  42. package/dist/components/carousel/context.js.map +1 -1
  43. package/dist/components/cascader/cascader.d.ts +4 -4
  44. package/dist/components/cascader/cascader.d.ts.map +1 -1
  45. package/dist/components/cascader/cascader.js +14 -4
  46. package/dist/components/cascader/cascader.js.map +1 -1
  47. package/dist/components/cascader/context.js +2 -2
  48. package/dist/components/cascader/context.js.map +1 -1
  49. package/dist/components/cascader/use-cascader.js +1 -1
  50. package/dist/components/cascader/use-cascader.js.map +1 -1
  51. package/dist/components/checkbox-group/context.js +2 -2
  52. package/dist/components/checkbox-group/context.js.map +1 -1
  53. package/dist/components/clipboard/context.js +1 -1
  54. package/dist/components/clipboard/context.js.map +1 -1
  55. package/dist/components/collapsible/context.js +1 -1
  56. package/dist/components/collapsible/context.js.map +1 -1
  57. package/dist/components/color-picker/color-picker.d.ts +12 -3
  58. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  59. package/dist/components/color-picker/color-picker.js +7 -1
  60. package/dist/components/color-picker/color-picker.js.map +1 -1
  61. package/dist/components/color-picker/context.js +2 -2
  62. package/dist/components/color-picker/context.js.map +1 -1
  63. package/dist/components/color-picker/use-color-picker.js +1 -1
  64. package/dist/components/color-picker/use-color-picker.js.map +1 -1
  65. package/dist/components/combobox/combobox.d.ts +3 -3
  66. package/dist/components/combobox/combobox.d.ts.map +1 -1
  67. package/dist/components/combobox/combobox.js +10 -4
  68. package/dist/components/combobox/combobox.js.map +1 -1
  69. package/dist/components/combobox/context.js +3 -3
  70. package/dist/components/combobox/context.js.map +1 -1
  71. package/dist/components/combobox/use-combobox.js +1 -1
  72. package/dist/components/combobox/use-combobox.js.map +1 -1
  73. package/dist/components/composer/context.js +1 -1
  74. package/dist/components/composer/context.js.map +1 -1
  75. package/dist/components/context-menu/context-menu.d.ts +4 -4
  76. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  77. package/dist/components/context-menu/context-menu.js +3 -1
  78. package/dist/components/context-menu/context-menu.js.map +1 -1
  79. package/dist/components/context-menu/context.js +5 -5
  80. package/dist/components/context-menu/context.js.map +1 -1
  81. package/dist/components/context-menu/use-context-menu.js +1 -1
  82. package/dist/components/context-menu/use-context-menu.js.map +1 -1
  83. package/dist/components/date-field/context.js +1 -1
  84. package/dist/components/date-field/context.js.map +1 -1
  85. package/dist/components/date-field/date-field.d.ts +2 -2
  86. package/dist/components/date-picker/context.js +13 -4
  87. package/dist/components/date-picker/context.js.map +1 -1
  88. package/dist/components/date-picker/date-picker.d.ts +80 -44
  89. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  90. package/dist/components/date-picker/date-picker.js +68 -26
  91. package/dist/components/date-picker/date-picker.js.map +1 -1
  92. package/dist/components/date-picker/use-date-picker.js +1 -1
  93. package/dist/components/date-picker/use-date-picker.js.map +1 -1
  94. package/dist/components/descriptions/context.js +1 -1
  95. package/dist/components/descriptions/context.js.map +1 -1
  96. package/dist/components/dialog/context.js +1 -1
  97. package/dist/components/dialog/context.js.map +1 -1
  98. package/dist/components/dialog/dialog.d.ts +1 -1
  99. package/dist/components/drawer/context.js +1 -1
  100. package/dist/components/drawer/context.js.map +1 -1
  101. package/dist/components/drawer/drawer.d.ts +2 -2
  102. package/dist/components/dynamic-input/context.js +2 -2
  103. package/dist/components/dynamic-input/context.js.map +1 -1
  104. package/dist/components/editable/context.js +1 -1
  105. package/dist/components/editable/context.js.map +1 -1
  106. package/dist/components/empty-state/context.js +1 -1
  107. package/dist/components/empty-state/context.js.map +1 -1
  108. package/dist/components/field/context.d.ts +9 -0
  109. package/dist/components/field/context.d.ts.map +1 -0
  110. package/dist/components/field/context.js +6 -2
  111. package/dist/components/field/context.js.map +1 -1
  112. package/dist/components/field/field.d.ts +26 -2
  113. package/dist/components/field/field.d.ts.map +1 -1
  114. package/dist/components/field/field.js +15 -4
  115. package/dist/components/field/field.js.map +1 -1
  116. package/dist/components/field/use-field-control.d.ts +41 -0
  117. package/dist/components/field/use-field-control.d.ts.map +1 -0
  118. package/dist/components/field/use-field-control.js +77 -0
  119. package/dist/components/field/use-field-control.js.map +1 -0
  120. package/dist/components/fieldset/context.js +1 -1
  121. package/dist/components/fieldset/context.js.map +1 -1
  122. package/dist/components/file-upload/context.js +2 -2
  123. package/dist/components/file-upload/context.js.map +1 -1
  124. package/dist/components/flex/flex.d.ts +9 -0
  125. package/dist/components/flex/flex.d.ts.map +1 -1
  126. package/dist/components/flex/flex.js +4 -0
  127. package/dist/components/flex/flex.js.map +1 -1
  128. package/dist/components/float-button/context.js +1 -1
  129. package/dist/components/float-button/context.js.map +1 -1
  130. package/dist/components/float-button/float-button.d.ts +2 -2
  131. package/dist/components/floating-panel/context.js +1 -1
  132. package/dist/components/floating-panel/context.js.map +1 -1
  133. package/dist/components/floating-panel/floating-panel.d.ts +1 -1
  134. package/dist/components/form/context.js +2 -2
  135. package/dist/components/form/context.js.map +1 -1
  136. package/dist/components/grid/context.js +1 -1
  137. package/dist/components/grid/context.js.map +1 -1
  138. package/dist/components/heatmap/context.js +3 -3
  139. package/dist/components/heatmap/context.js.map +1 -1
  140. package/dist/components/heatmap/heatmap.d.ts +1 -1
  141. package/dist/components/hotkeys/hotkeys.d.ts +3 -1
  142. package/dist/components/hotkeys/hotkeys.d.ts.map +1 -1
  143. package/dist/components/hotkeys/hotkeys.js +7 -25
  144. package/dist/components/hotkeys/hotkeys.js.map +1 -1
  145. package/dist/components/hotkeys/use-hotkeys.d.ts +31 -0
  146. package/dist/components/hotkeys/use-hotkeys.d.ts.map +1 -0
  147. package/dist/components/hotkeys/use-hotkeys.js +60 -0
  148. package/dist/components/hotkeys/use-hotkeys.js.map +1 -0
  149. package/dist/components/hover-card/context.js +1 -1
  150. package/dist/components/hover-card/context.js.map +1 -1
  151. package/dist/components/hover-card/hover-card.d.ts +2 -2
  152. package/dist/components/hover-card/hover-card.d.ts.map +1 -1
  153. package/dist/components/hover-card/hover-card.js +3 -1
  154. package/dist/components/hover-card/hover-card.js.map +1 -1
  155. package/dist/components/hover-card/use-hover-card.js +1 -1
  156. package/dist/components/hover-card/use-hover-card.js.map +1 -1
  157. package/dist/components/icon/icon.d.ts +1 -1
  158. package/dist/components/icon-wrapper/icon-wrapper.d.ts +1 -1
  159. package/dist/components/image/context.js +1 -1
  160. package/dist/components/image/context.js.map +1 -1
  161. package/dist/components/image-cropper/context.js +1 -1
  162. package/dist/components/image-cropper/context.js.map +1 -1
  163. package/dist/components/image-cropper/image-cropper.d.ts +1 -1
  164. package/dist/components/image-viewer/context.js +1 -1
  165. package/dist/components/image-viewer/context.js.map +1 -1
  166. package/dist/components/image-viewer/image-viewer.d.ts +2 -2
  167. package/dist/components/infinite-scroll/context.js +1 -1
  168. package/dist/components/infinite-scroll/context.js.map +1 -1
  169. package/dist/components/infinite-scroll/infinite-scroll.d.ts +1 -1
  170. package/dist/components/json-viewer/json-viewer.d.ts +12 -3
  171. package/dist/components/json-viewer/json-viewer.d.ts.map +1 -1
  172. package/dist/components/json-viewer/json-viewer.js +23 -2
  173. package/dist/components/json-viewer/json-viewer.js.map +1 -1
  174. package/dist/components/layout/context.js +1 -1
  175. package/dist/components/layout/context.js.map +1 -1
  176. package/dist/components/list/context.js +1 -1
  177. package/dist/components/list/context.js.map +1 -1
  178. package/dist/components/list/list.d.ts +1 -1
  179. package/dist/components/listbox/context.js +3 -3
  180. package/dist/components/listbox/context.js.map +1 -1
  181. package/dist/components/loading-bar/context.js +1 -1
  182. package/dist/components/loading-bar/context.js.map +1 -1
  183. package/dist/components/log/context.js +1 -1
  184. package/dist/components/log/context.js.map +1 -1
  185. package/dist/components/marquee/context.js +1 -1
  186. package/dist/components/marquee/context.js.map +1 -1
  187. package/dist/components/mention/context.js +2 -2
  188. package/dist/components/mention/context.js.map +1 -1
  189. package/dist/components/mention/mention.d.ts +2 -2
  190. package/dist/components/mention/mention.d.ts.map +1 -1
  191. package/dist/components/mention/mention.js +10 -4
  192. package/dist/components/mention/mention.js.map +1 -1
  193. package/dist/components/mention/use-mention.js +1 -1
  194. package/dist/components/mention/use-mention.js.map +1 -1
  195. package/dist/components/menu/context.js +4 -4
  196. package/dist/components/menu/context.js.map +1 -1
  197. package/dist/components/menu/menu.d.ts +3 -3
  198. package/dist/components/menu/menu.d.ts.map +1 -1
  199. package/dist/components/menu/menu.js +3 -1
  200. package/dist/components/menu/menu.js.map +1 -1
  201. package/dist/components/menu/use-menu.js +1 -1
  202. package/dist/components/menu/use-menu.js.map +1 -1
  203. package/dist/components/menubar/context.js +6 -6
  204. package/dist/components/menubar/context.js.map +1 -1
  205. package/dist/components/menubar/menubar.d.ts +2 -2
  206. package/dist/components/menubar/menubar.js.map +1 -1
  207. package/dist/components/navigation-menu/context.js +1 -1
  208. package/dist/components/navigation-menu/context.js.map +1 -1
  209. package/dist/components/navigation-menu/navigation-menu.d.ts +1 -1
  210. package/dist/components/notification/context.d.ts +23 -0
  211. package/dist/components/notification/context.d.ts.map +1 -0
  212. package/dist/components/notification/context.js +28 -0
  213. package/dist/components/notification/context.js.map +1 -0
  214. package/dist/components/notification/notification.d.ts +249 -0
  215. package/dist/components/notification/notification.d.ts.map +1 -0
  216. package/dist/components/notification/notification.js +179 -0
  217. package/dist/components/notification/notification.js.map +1 -0
  218. package/dist/components/notification/use-notification.d.ts +14 -0
  219. package/dist/components/notification/use-notification.d.ts.map +1 -0
  220. package/dist/components/notification/use-notification.js +42 -0
  221. package/dist/components/notification/use-notification.js.map +1 -0
  222. package/dist/components/number-animation/number-animation.d.ts +1 -1
  223. package/dist/components/number-field/context.js +1 -1
  224. package/dist/components/number-field/context.js.map +1 -1
  225. package/dist/components/number-field/number-field.d.ts +3 -3
  226. package/dist/components/number-field/number-field.d.ts.map +1 -1
  227. package/dist/components/number-field/number-field.js +7 -1
  228. package/dist/components/number-field/number-field.js.map +1 -1
  229. package/dist/components/page-header/context.js +1 -1
  230. package/dist/components/page-header/context.js.map +1 -1
  231. package/dist/components/pagination/context.js +1 -1
  232. package/dist/components/pagination/context.js.map +1 -1
  233. package/dist/components/pagination/pagination.d.ts +60 -6
  234. package/dist/components/pagination/pagination.d.ts.map +1 -1
  235. package/dist/components/pagination/pagination.js +85 -5
  236. package/dist/components/pagination/pagination.js.map +1 -1
  237. package/dist/components/pagination/use-pagination.d.ts +12 -2
  238. package/dist/components/pagination/use-pagination.d.ts.map +1 -1
  239. package/dist/components/pagination/use-pagination.js +50 -5
  240. package/dist/components/pagination/use-pagination.js.map +1 -1
  241. package/dist/components/password-input/context.js +1 -1
  242. package/dist/components/password-input/context.js.map +1 -1
  243. package/dist/components/password-input/password-input.d.ts +2 -2
  244. package/dist/components/password-input/password-input.d.ts.map +1 -1
  245. package/dist/components/password-input/password-input.js +7 -1
  246. package/dist/components/password-input/password-input.js.map +1 -1
  247. package/dist/components/pin-input/context.js +1 -1
  248. package/dist/components/pin-input/context.js.map +1 -1
  249. package/dist/components/pin-input/pin-input.d.ts +1 -1
  250. package/dist/components/popconfirm/context.js +1 -1
  251. package/dist/components/popconfirm/context.js.map +1 -1
  252. package/dist/components/popconfirm/popconfirm.d.ts +1 -1
  253. package/dist/components/popover/context.js +1 -1
  254. package/dist/components/popover/context.js.map +1 -1
  255. package/dist/components/popover/popover.d.ts +2 -2
  256. package/dist/components/popover/popover.d.ts.map +1 -1
  257. package/dist/components/popover/popover.js +3 -1
  258. package/dist/components/popover/popover.js.map +1 -1
  259. package/dist/components/popover/use-popover.js +1 -1
  260. package/dist/components/popover/use-popover.js.map +1 -1
  261. package/dist/components/popselect/context.js +2 -2
  262. package/dist/components/popselect/context.js.map +1 -1
  263. package/dist/components/popselect/popselect.d.ts +3 -3
  264. package/dist/components/popselect/popselect.d.ts.map +1 -1
  265. package/dist/components/popselect/popselect.js +3 -1
  266. package/dist/components/popselect/popselect.js.map +1 -1
  267. package/dist/components/popselect/use-popselect.js +1 -1
  268. package/dist/components/popselect/use-popselect.js.map +1 -1
  269. package/dist/components/progress/progress.d.ts +1 -1
  270. package/dist/components/qr-code/context.js +1 -1
  271. package/dist/components/qr-code/context.js.map +1 -1
  272. package/dist/components/radio-group/context.js +2 -2
  273. package/dist/components/radio-group/context.js.map +1 -1
  274. package/dist/components/radio-group/radio-group.d.ts +1 -1
  275. package/dist/components/rating/context.js +1 -1
  276. package/dist/components/rating/context.js.map +1 -1
  277. package/dist/components/rating/rating.d.ts +2 -2
  278. package/dist/components/result/context.js +1 -1
  279. package/dist/components/result/context.js.map +1 -1
  280. package/dist/components/scroll-area/context.js +2 -2
  281. package/dist/components/scroll-area/context.js.map +1 -1
  282. package/dist/components/scroll-area/scroll-area.d.ts +1 -1
  283. package/dist/components/scrollbar/context.js +1 -1
  284. package/dist/components/scrollbar/context.js.map +1 -1
  285. package/dist/components/scrollbar/scrollbar.d.ts +1 -1
  286. package/dist/components/segmented/context.js +2 -2
  287. package/dist/components/segmented/context.js.map +1 -1
  288. package/dist/components/segmented/segmented.d.ts +1 -1
  289. package/dist/components/select/context.js +3 -3
  290. package/dist/components/select/context.js.map +1 -1
  291. package/dist/components/select/select.d.ts +3 -3
  292. package/dist/components/select/select.d.ts.map +1 -1
  293. package/dist/components/select/select.js +7 -3
  294. package/dist/components/select/select.js.map +1 -1
  295. package/dist/components/side-nav/context.js +2 -2
  296. package/dist/components/side-nav/context.js.map +1 -1
  297. package/dist/components/side-nav/side-nav.d.ts +1 -1
  298. package/dist/components/signature-pad/context.js +1 -1
  299. package/dist/components/signature-pad/context.js.map +1 -1
  300. package/dist/components/skeleton/context.js +1 -1
  301. package/dist/components/skeleton/context.js.map +1 -1
  302. package/dist/components/slider/context.js +2 -2
  303. package/dist/components/slider/context.js.map +1 -1
  304. package/dist/components/slider/slider.d.ts +1 -1
  305. package/dist/components/space/context.js +1 -1
  306. package/dist/components/space/context.js.map +1 -1
  307. package/dist/components/space/space.d.ts +9 -0
  308. package/dist/components/space/space.d.ts.map +1 -1
  309. package/dist/components/space/space.js +4 -0
  310. package/dist/components/space/space.js.map +1 -1
  311. package/dist/components/spinner/context.js +1 -1
  312. package/dist/components/spinner/context.js.map +1 -1
  313. package/dist/components/spinner/spinner.d.ts +1 -1
  314. package/dist/components/splitter/context.js +1 -1
  315. package/dist/components/splitter/context.js.map +1 -1
  316. package/dist/components/statistic/context.js +1 -1
  317. package/dist/components/statistic/context.js.map +1 -1
  318. package/dist/components/statistic/statistic.d.ts +1 -1
  319. package/dist/components/steps/context.js +2 -2
  320. package/dist/components/steps/context.js.map +1 -1
  321. package/dist/components/steps/steps.d.ts +2 -2
  322. package/dist/components/table/context.js +4 -4
  323. package/dist/components/table/context.js.map +1 -1
  324. package/dist/components/table/table.d.ts +62 -3
  325. package/dist/components/table/table.d.ts.map +1 -1
  326. package/dist/components/table/table.js +37 -1
  327. package/dist/components/table/table.js.map +1 -1
  328. package/dist/components/table/use-table.d.ts +1 -1
  329. package/dist/components/table/use-table.d.ts.map +1 -1
  330. package/dist/components/table/use-table.js +3 -2
  331. package/dist/components/table/use-table.js.map +1 -1
  332. package/dist/components/tabs/context.js +1 -1
  333. package/dist/components/tabs/context.js.map +1 -1
  334. package/dist/components/tabs/tabs.d.ts +1 -1
  335. package/dist/components/tag/context.js +1 -1
  336. package/dist/components/tag/context.js.map +1 -1
  337. package/dist/components/tag/use-tag.js +14 -2
  338. package/dist/components/tag/use-tag.js.map +1 -1
  339. package/dist/components/tags-input/context.js +2 -2
  340. package/dist/components/tags-input/context.js.map +1 -1
  341. package/dist/components/tags-input/tags-input.d.ts +3 -3
  342. package/dist/components/tags-input/tags-input.d.ts.map +1 -1
  343. package/dist/components/tags-input/tags-input.js +7 -1
  344. package/dist/components/tags-input/tags-input.js.map +1 -1
  345. package/dist/components/text-field/context.js +1 -1
  346. package/dist/components/text-field/context.js.map +1 -1
  347. package/dist/components/text-field/text-field.d.ts +1 -1
  348. package/dist/components/text-field/text-field.d.ts.map +1 -1
  349. package/dist/components/text-field/text-field.js +7 -3
  350. package/dist/components/text-field/text-field.js.map +1 -1
  351. package/dist/components/thread/context.d.ts +7 -0
  352. package/dist/components/thread/context.d.ts.map +1 -0
  353. package/dist/components/thread/context.js +1 -1
  354. package/dist/components/thread/context.js.map +1 -1
  355. package/dist/components/time-field/context.js +1 -1
  356. package/dist/components/time-field/context.js.map +1 -1
  357. package/dist/components/time-field/time-field.d.ts +2 -2
  358. package/dist/components/time-picker/context.js +2 -2
  359. package/dist/components/time-picker/context.js.map +1 -1
  360. package/dist/components/time-picker/time-picker.d.ts +5 -5
  361. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  362. package/dist/components/time-picker/time-picker.js +10 -1
  363. package/dist/components/time-picker/time-picker.js.map +1 -1
  364. package/dist/components/time-picker/use-time-picker.d.ts +1 -0
  365. package/dist/components/time-picker/use-time-picker.d.ts.map +1 -1
  366. package/dist/components/time-picker/use-time-picker.js +3 -0
  367. package/dist/components/time-picker/use-time-picker.js.map +1 -1
  368. package/dist/components/timeline/context.js +2 -2
  369. package/dist/components/timeline/context.js.map +1 -1
  370. package/dist/components/timeline/timeline.d.ts +1 -1
  371. package/dist/components/timer/context.js +1 -1
  372. package/dist/components/timer/context.js.map +1 -1
  373. package/dist/components/toast/context.js +1 -1
  374. package/dist/components/toast/context.js.map +1 -1
  375. package/dist/components/toast/toast.d.ts +3 -15
  376. package/dist/components/toast/toast.d.ts.map +1 -1
  377. package/dist/components/toast/toast.js +1 -12
  378. package/dist/components/toast/toast.js.map +1 -1
  379. package/dist/components/toast/use-toast.d.ts.map +1 -1
  380. package/dist/components/toast/use-toast.js +1 -7
  381. package/dist/components/toast/use-toast.js.map +1 -1
  382. package/dist/components/toggle-group/context.js +1 -1
  383. package/dist/components/toggle-group/context.js.map +1 -1
  384. package/dist/components/toggle-group/toggle-group.d.ts +10 -1
  385. package/dist/components/toggle-group/toggle-group.d.ts.map +1 -1
  386. package/dist/components/toggle-group/toggle-group.js +4 -0
  387. package/dist/components/toggle-group/toggle-group.js.map +1 -1
  388. package/dist/components/toolbar/context.js +1 -1
  389. package/dist/components/toolbar/context.js.map +1 -1
  390. package/dist/components/toolbar/toolbar.d.ts +1 -1
  391. package/dist/components/tooltip/context.js +1 -1
  392. package/dist/components/tooltip/context.js.map +1 -1
  393. package/dist/components/tooltip/tooltip.d.ts +2 -2
  394. package/dist/components/tour/context.js +1 -1
  395. package/dist/components/tour/context.js.map +1 -1
  396. package/dist/components/tour/tour.d.ts +2 -2
  397. package/dist/components/transfer/context.js +3 -3
  398. package/dist/components/transfer/context.js.map +1 -1
  399. package/dist/components/tree/context.js +2 -2
  400. package/dist/components/tree/context.js.map +1 -1
  401. package/dist/components/tree/tree.d.ts +20 -0
  402. package/dist/components/tree/tree.d.ts.map +1 -1
  403. package/dist/components/tree/tree.js +9 -0
  404. package/dist/components/tree/tree.js.map +1 -1
  405. package/dist/components/tree-select/context.js +2 -2
  406. package/dist/components/tree-select/context.js.map +1 -1
  407. package/dist/components/tree-select/tree-select.d.ts +3 -3
  408. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  409. package/dist/components/tree-select/tree-select.js +14 -4
  410. package/dist/components/tree-select/tree-select.js.map +1 -1
  411. package/dist/components/tree-select/use-tree-select.js +1 -1
  412. package/dist/components/tree-select/use-tree-select.js.map +1 -1
  413. package/dist/components/typography/context.js +1 -1
  414. package/dist/components/typography/context.js.map +1 -1
  415. package/dist/components/virtualizer/context.js +1 -1
  416. package/dist/components/virtualizer/context.js.map +1 -1
  417. package/dist/components/watermark/context.js +1 -1
  418. package/dist/components/watermark/context.js.map +1 -1
  419. package/dist/config/config.js +1 -1
  420. package/dist/config/config.js.map +1 -1
  421. package/dist/index.d.ts +16 -9
  422. package/dist/index.js +15 -8
  423. package/dist/package.js +1 -1
  424. package/dist/runtime/use-scrollbars.js +66 -0
  425. package/dist/runtime/use-scrollbars.js.map +1 -0
  426. package/dist/services/dialog-service.d.ts +33 -8
  427. package/dist/services/dialog-service.d.ts.map +1 -1
  428. package/dist/services/dialog-service.js +44 -20
  429. package/dist/services/dialog-service.js.map +1 -1
  430. package/dist/services/glyph.js +41 -1
  431. package/dist/services/glyph.js.map +1 -1
  432. package/dist/services/loading-bar-service.d.ts +46 -0
  433. package/dist/services/loading-bar-service.d.ts.map +1 -0
  434. package/dist/services/loading-bar-service.js +70 -0
  435. package/dist/services/loading-bar-service.js.map +1 -0
  436. package/dist/services/mount-host.js +35 -0
  437. package/dist/services/mount-host.js.map +1 -0
  438. package/dist/services/notification-service.d.ts +46 -0
  439. package/dist/services/notification-service.d.ts.map +1 -0
  440. package/dist/services/notification-service.js +91 -0
  441. package/dist/services/notification-service.js.map +1 -0
  442. package/dist/services/service-config.js +16 -0
  443. package/dist/services/service-config.js.map +1 -0
  444. package/dist/services/toast-service.d.ts +20 -12
  445. package/dist/services/toast-service.d.ts.map +1 -1
  446. package/dist/services/toast-service.js +103 -50
  447. package/dist/services/toast-service.js.map +1 -1
  448. package/package.json +18 -14
  449. package/dist/components/toaster/context.js +0 -19
  450. package/dist/components/toaster/context.js.map +0 -1
  451. package/dist/components/toaster/toaster.d.ts +0 -135
  452. package/dist/components/toaster/toaster.d.ts.map +0 -1
  453. package/dist/components/toaster/toaster.js +0 -91
  454. package/dist/components/toaster/toaster.js.map +0 -1
  455. package/dist/components/toaster/use-toaster.d.ts +0 -15
  456. package/dist/components/toaster/use-toaster.d.ts.map +0 -1
  457. package/dist/components/toaster/use-toaster.js +0 -23
  458. package/dist/components/toaster/use-toaster.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"space.js","names":[],"sources":["../../../src/components/space/space.ts"],"sourcesContent":["import type { SpaceProps } from '@xihan-ui/headless'\nimport type { PropType, Slot, SlotsType, VNode } from 'vue'\nimport { connectSpace } from '@xihan-ui/headless'\nimport { Comment, computed, defineComponent, Fragment, h, Text } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideSpace, useSpaceContext } from './context'\n\n/**\n * 分隔符部件。写 `split` 插槽时组件在每道缝里自动铺一个,\n * 手写它也铺得出同一种结构——两条路产出的 DOM 完全一致。\n */\nexport const XhSpaceSplit = defineComponent({\n name: 'XhSpaceSplit',\n setup(_, { slots }) {\n const ctx = useSpaceContext()\n return () => h('span', ctx.api.value.getSplitProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 把默认插槽摊成一个个子项。\n *\n * `v-for` 产出的是一个片段而不是若干节点,不摊平就整段算一个子项,分隔符只会插在整段的两头;\n * `v-if` 为假留下的注释节点与模板缩进留下的空白文本一个像素都不画,留着会插出两条挨在一起的分隔符。\n */\nfunction spaceItems(nodes: readonly VNode[]): VNode[] {\n const items: VNode[] = []\n for (const node of nodes) {\n if (node.type === Comment)\n continue\n if (node.type === Text) {\n if (String(node.children ?? '').trim() !== '')\n items.push(node)\n continue\n }\n if (node.type === Fragment && Array.isArray(node.children)) {\n items.push(...spaceItems(node.children as VNode[]))\n continue\n }\n items.push(node)\n }\n return items\n}\n\n/**\n * 在每两个子项之间铺一个分隔符部件。\n * 插槽逐缝重新求值:同一份 vnode 挂在两处会被后一处顶掉。\n */\nfunction interleave(items: readonly VNode[], split: Slot): VNode[] {\n const out: VNode[] = []\n items.forEach((item, index) => {\n if (index > 0)\n out.push(h(XhSpaceSplit, { key: `xh-space-split-${index}` }, () => split()))\n out.push(item)\n })\n return out\n}\n\nexport const XhSpace = defineComponent({\n name: 'XhSpace',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n direction: { type: String as PropType<SpaceProps['direction']>, default: undefined },\n gap: { type: String as PropType<SpaceProps['gap']>, default: undefined },\n align: { type: String as PropType<SpaceProps['align']>, default: undefined },\n justify: { type: String as PropType<SpaceProps['justify']>, default: undefined },\n wrap: Boolean,\n inline: Boolean,\n },\n slots: Object as SlotsType<{\n /** 子项,按写进来的顺序排开。 */\n default?: () => VNode[]\n /** 分隔符的内容:写了它,组件在每两个子项之间各铺一个分隔符部件,逐缝重新求值一次。 */\n split?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const api = computed(() => connectSpace(props as SpaceProps, vueNormalize))\n provideSpace({ api })\n return () => {\n const children = slots.default?.() ?? []\n // 没写分隔符插槽时原样交出去,不摊平:摊平会打散 v-for 的片段,白白丢掉它的复用信息\n const content = slots.split ? interleave(spaceItems(children), slots.split) : children\n return h('div', api.value.getRootProps() as Record<string, unknown>, content)\n }\n },\n})\n"],"mappings":";;;;;;;;;AAWA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;;;;;;;AAQD,SAAS,WAAW,OAAkC;CACpD,MAAM,QAAiB,CAAC;CACxB,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,KAAK,SAAS,SAChB;EACF,IAAI,KAAK,SAAS,MAAM;GACtB,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC,CAAC,KAAK,MAAM,IACzC,MAAM,KAAK,IAAI;GACjB;EACF;EACA,IAAI,KAAK,SAAS,YAAY,MAAM,QAAQ,KAAK,QAAQ,GAAG;GAC1D,MAAM,KAAK,GAAG,WAAW,KAAK,QAAmB,CAAC;GAClD;EACF;EACA,MAAM,KAAK,IAAI;CACjB;CACA,OAAO;AACT;;;;;AAMA,SAAS,WAAW,OAAyB,OAAsB;CACjE,MAAM,MAAe,CAAC;CACtB,MAAM,SAAS,MAAM,UAAU;EAC7B,IAAI,QAAQ,GACV,IAAI,KAAK,EAAE,cAAc,EAAE,KAAK,kBAAkB,QAAQ,SAAS,MAAM,CAAC,CAAC;EAC7E,IAAI,KAAK,IAAI;CACf,CAAC;CACD,OAAO;AACT;AAEA,MAAa,UAAU,gBAAgB;CACrC,MAAM;CAEN,OAAO;EACL,WAAW;GAAE,MAAM;GAA6C,SAAS,KAAA;EAAU;EACnF,KAAK;GAAE,MAAM;GAAuC,SAAS,KAAA;EAAU;EACvE,OAAO;GAAE,MAAM;GAAyC,SAAS,KAAA;EAAU;EAC3E,SAAS;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EAC/E,MAAM;EACN,QAAQ;CACV;CACA,OAAO;CAMP,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,aAAa,OAAqB,YAAY,CAAC;EAC1E,aAAa,EAAE,IAAI,CAAC;EACpB,aAAa;GACX,MAAM,WAAW,MAAM,UAAU,KAAK,CAAC;GAEvC,MAAM,UAAU,MAAM,QAAQ,WAAW,WAAW,QAAQ,GAAG,MAAM,KAAK,IAAI;GAC9E,OAAO,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,OAAO;EAC9E;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"space.js","names":[],"sources":["../../../src/components/space/space.ts"],"sourcesContent":["import type { SpaceProps } from '@xihan-ui/headless'\nimport type { PropType, Slot, SlotsType, VNode } from 'vue'\nimport { connectSpace } from '@xihan-ui/headless'\nimport { Comment, computed, defineComponent, Fragment, h, Text } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideSpace, useSpaceContext } from './context'\n\n/**\n * 分隔符部件。写 `split` 插槽时组件在每道缝里自动铺一个,\n * 手写它也铺得出同一种结构——两条路产出的 DOM 完全一致。\n */\nexport const XhSpaceSplit = defineComponent({\n name: 'XhSpaceSplit',\n setup(_, { slots }) {\n const ctx = useSpaceContext()\n return () => h('span', ctx.api.value.getSplitProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 把默认插槽摊成一个个子项。\n *\n * `v-for` 产出的是一个片段而不是若干节点,不摊平就整段算一个子项,分隔符只会插在整段的两头;\n * `v-if` 为假留下的注释节点与模板缩进留下的空白文本一个像素都不画,留着会插出两条挨在一起的分隔符。\n */\nfunction spaceItems(nodes: readonly VNode[]): VNode[] {\n const items: VNode[] = []\n for (const node of nodes) {\n if (node.type === Comment)\n continue\n if (node.type === Text) {\n if (String(node.children ?? '').trim() !== '')\n items.push(node)\n continue\n }\n if (node.type === Fragment && Array.isArray(node.children)) {\n items.push(...spaceItems(node.children as VNode[]))\n continue\n }\n items.push(node)\n }\n return items\n}\n\n/**\n * 在每两个子项之间铺一个分隔符部件。\n * 插槽逐缝重新求值:同一份 vnode 挂在两处会被后一处顶掉。\n */\nfunction interleave(items: readonly VNode[], split: Slot): VNode[] {\n const out: VNode[] = []\n items.forEach((item, index) => {\n if (index > 0)\n out.push(h(XhSpaceSplit, { key: `xh-space-split-${index}` }, () => split()))\n out.push(item)\n })\n return out\n}\n\nexport const XhSpace = defineComponent({\n name: 'XhSpace',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n orientation: { type: String as PropType<SpaceProps['orientation']>, default: undefined },\n direction: { type: String as PropType<SpaceProps['direction']>, default: undefined },\n gap: { type: String as PropType<SpaceProps['gap']>, default: undefined },\n align: { type: String as PropType<SpaceProps['align']>, default: undefined },\n justify: { type: String as PropType<SpaceProps['justify']>, default: undefined },\n wrap: Boolean,\n inline: Boolean,\n },\n slots: Object as SlotsType<{\n /** 子项,按写进来的顺序排开。 */\n default?: () => VNode[]\n /** 分隔符的内容:写了它,组件在每两个子项之间各铺一个分隔符部件,逐缝重新求值一次。 */\n split?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const api = computed(() => connectSpace(props as SpaceProps, vueNormalize))\n provideSpace({ api })\n return () => {\n const children = slots.default?.() ?? []\n // 没写分隔符插槽时原样交出去,不摊平:摊平会打散 v-for 的片段,白白丢掉它的复用信息\n const content = slots.split ? interleave(spaceItems(children), slots.split) : children\n return h('div', api.value.getRootProps() as Record<string, unknown>, content)\n }\n },\n})\n"],"mappings":";;;;;;;;;AAWA,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;;;;;;;AAQD,SAAS,WAAW,OAAkC;CACpD,MAAM,QAAiB,CAAC;CACxB,KAAK,MAAM,QAAQ,OAAO;EACxB,IAAI,KAAK,SAAS,SAChB;EACF,IAAI,KAAK,SAAS,MAAM;GACtB,IAAI,OAAO,KAAK,YAAY,EAAE,CAAC,CAAC,KAAK,MAAM,IACzC,MAAM,KAAK,IAAI;GACjB;EACF;EACA,IAAI,KAAK,SAAS,YAAY,MAAM,QAAQ,KAAK,QAAQ,GAAG;GAC1D,MAAM,KAAK,GAAG,WAAW,KAAK,QAAmB,CAAC;GAClD;EACF;EACA,MAAM,KAAK,IAAI;CACjB;CACA,OAAO;AACT;;;;;AAMA,SAAS,WAAW,OAAyB,OAAsB;CACjE,MAAM,MAAe,CAAC;CACtB,MAAM,SAAS,MAAM,UAAU;EAC7B,IAAI,QAAQ,GACV,IAAI,KAAK,EAAE,cAAc,EAAE,KAAK,kBAAkB,QAAQ,SAAS,MAAM,CAAC,CAAC;EAC7E,IAAI,KAAK,IAAI;CACf,CAAC;CACD,OAAO;AACT;AAEA,MAAa,UAAU,gBAAgB;CACrC,MAAM;CAEN,OAAO;EACL,aAAa;GAAE,MAAM;GAA+C,SAAS,KAAA;EAAU;EACvF,WAAW;GAAE,MAAM;GAA6C,SAAS,KAAA;EAAU;EACnF,KAAK;GAAE,MAAM;GAAuC,SAAS,KAAA;EAAU;EACvE,OAAO;GAAE,MAAM;GAAyC,SAAS,KAAA;EAAU;EAC3E,SAAS;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EAC/E,MAAM;EACN,QAAQ;CACV;CACA,OAAO;CAMP,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe,aAAa,OAAqB,YAAY,CAAC;EAC1E,aAAa,EAAE,IAAI,CAAC;EACpB,aAAa;GACX,MAAM,WAAW,MAAM,UAAU,KAAK,CAAC;GAEvC,MAAM,UAAU,MAAM,QAAQ,WAAW,WAAW,QAAQ,GAAG,MAAM,KAAK,IAAI;GAC9E,OAAO,EAAE,OAAO,IAAI,MAAM,aAAa,GAA8B,OAAO;EAC9E;CACF;AACF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/spinner/context.ts
3
- const KEY = Symbol("xh-spinner");
3
+ const KEY = Symbol.for("xh-spinner");
4
4
  function provideSpinner(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/spinner/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { SpinnerContext } from './use-spinner'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<SpinnerContext> = Symbol('xh-spinner')\n\nexport function provideSpinner(ctx: SpinnerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useSpinnerContext(): SpinnerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Spinner 部件必须用在 XhSpinner 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAoC,OAAO,YAAY;AAE7D,SAAgB,eAAe,KAA2B;CACxD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/spinner/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { SpinnerContext } from './use-spinner'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<SpinnerContext> = Symbol.for('xh-spinner')\n\nexport function provideSpinner(ctx: SpinnerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useSpinnerContext(): SpinnerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Spinner 部件必须用在 XhSpinner 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAoC,OAAO,IAAI,YAAY;AAEjE,SAAgB,eAAe,KAA2B;CACxD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,oBAAoC;CAClD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
@@ -41,8 +41,8 @@ declare const XhSpinner: import("vue").DefineComponent<import("vue").ExtractProp
41
41
  };
42
42
  }>> & Readonly<{}>, {
43
43
  label: string;
44
- size: Size;
45
44
  tone: Tone;
45
+ size: Size;
46
46
  translations: Partial<SpinnerTranslations>;
47
47
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
48
48
  /** 可见文案节点。作者不写内容时显示解析后的 label,屏幕上看到的与读屏念的因此是同一段字。 */
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/splitter/context.ts
3
- const KEY = Symbol("xh-splitter");
3
+ const KEY = Symbol.for("xh-splitter");
4
4
  function provideSplitter(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/splitter/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { SplitterContext } from './use-splitter'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<SplitterContext> = Symbol('xh-splitter')\n\nexport function provideSplitter(ctx: SplitterContext): void {\n provide(KEY, ctx)\n}\n\nexport function useSplitterContext(): SplitterContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Splitter 部件必须用在 XhSplitterRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAqC,OAAO,aAAa;AAE/D,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/splitter/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { SplitterContext } from './use-splitter'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<SplitterContext> = Symbol.for('xh-splitter')\n\nexport function provideSplitter(ctx: SplitterContext): void {\n provide(KEY, ctx)\n}\n\nexport function useSplitterContext(): SplitterContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Splitter 部件必须用在 XhSplitterRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAqC,OAAO,IAAI,aAAa;AAEnE,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/statistic/context.ts
3
- const KEY = Symbol("xh-statistic");
3
+ const KEY = Symbol.for("xh-statistic");
4
4
  function provideStatistic(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/statistic/context.ts"],"sourcesContent":["import type { StatisticApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface StatisticContext {\n api: ComputedRef<StatisticApi>\n}\n\nconst KEY: InjectionKey<StatisticContext> = Symbol('xh-statistic')\n\nexport function provideStatistic(ctx: StatisticContext): void {\n provide(KEY, ctx)\n}\n\nexport function useStatisticContext(): StatisticContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Statistic 部件必须用在 XhStatisticRoot 内')\n return ctx\n}\n"],"mappings":";;AAQA,MAAM,MAAsC,OAAO,cAAc;AAEjE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/statistic/context.ts"],"sourcesContent":["import type { StatisticApi } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface StatisticContext {\n api: ComputedRef<StatisticApi>\n}\n\nconst KEY: InjectionKey<StatisticContext> = Symbol.for('xh-statistic')\n\nexport function provideStatistic(ctx: StatisticContext): void {\n provide(KEY, ctx)\n}\n\nexport function useStatisticContext(): StatisticContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Statistic 部件必须用在 XhStatisticRoot 内')\n return ctx\n}\n"],"mappings":";;AAQA,MAAM,MAAsC,OAAO,IAAI,cAAc;AAErE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT"}
@@ -22,8 +22,8 @@ declare const XhStatisticRoot: import("vue").DefineComponent<import("vue").Extra
22
22
  default: undefined;
23
23
  };
24
24
  }>> & Readonly<{}>, {
25
- size: Size;
26
25
  tone: Tone;
26
+ size: Size;
27
27
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
28
28
  declare const XhStatisticLabel: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
29
29
  [key: string]: any;
@@ -1,8 +1,8 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/steps/context.ts
3
- const KEY = Symbol("xh-steps");
3
+ const KEY = Symbol.for("xh-steps");
4
4
  /** 条目身份下传给 trigger/indicator/title/description/separator,用 getter 以跟随 value/disabled 变更。 */
5
- const ITEM_KEY = Symbol("xh-steps-item");
5
+ const ITEM_KEY = Symbol.for("xh-steps-item");
6
6
  function provideSteps(ctx) {
7
7
  provide(KEY, ctx);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/steps/context.ts"],"sourcesContent":["import type { StepsItemProps } from '@xihan-ui/headless'\nimport type { InjectionKey } from 'vue'\nimport type { StepsContext } from './use-steps'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<StepsContext> = Symbol('xh-steps')\n/** 条目身份下传给 trigger/indicator/title/description/separator,用 getter 以跟随 value/disabled 变更。 */\nconst ITEM_KEY: InjectionKey<() => StepsItemProps> = Symbol('xh-steps-item')\n\nexport function provideSteps(ctx: StepsContext): void {\n provide(KEY, ctx)\n}\n\nexport function useStepsContext(): StepsContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Steps 部件必须用在 XhStepsRoot 内')\n return ctx\n}\n\nexport function provideStepsItem(item: () => StepsItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useStepsItem(): () => StepsItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Steps 条目部件必须用在 XhStepsItem 内')\n return item\n}\n"],"mappings":";;AAKA,MAAM,MAAkC,OAAO,UAAU;;AAEzD,MAAM,WAA+C,OAAO,eAAe;AAE3E,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;AAEA,SAAgB,iBAAiB,MAAkC;CACjE,QAAQ,UAAU,IAAI;AACxB;AAEA,SAAgB,eAAqC;CACnD,MAAM,OAAO,OAAO,UAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/steps/context.ts"],"sourcesContent":["import type { StepsItemProps } from '@xihan-ui/headless'\nimport type { InjectionKey } from 'vue'\nimport type { StepsContext } from './use-steps'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<StepsContext> = Symbol.for('xh-steps')\n/** 条目身份下传给 trigger/indicator/title/description/separator,用 getter 以跟随 value/disabled 变更。 */\nconst ITEM_KEY: InjectionKey<() => StepsItemProps> = Symbol.for('xh-steps-item')\n\nexport function provideSteps(ctx: StepsContext): void {\n provide(KEY, ctx)\n}\n\nexport function useStepsContext(): StepsContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Steps 部件必须用在 XhStepsRoot 内')\n return ctx\n}\n\nexport function provideStepsItem(item: () => StepsItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useStepsItem(): () => StepsItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Steps 条目部件必须用在 XhStepsItem 内')\n return item\n}\n"],"mappings":";;AAKA,MAAM,MAAkC,OAAO,IAAI,UAAU;;AAE7D,MAAM,WAA+C,OAAO,IAAI,eAAe;AAE/E,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;AAEA,SAAgB,iBAAiB,MAAkC;CACjE,QAAQ,UAAU,IAAI;AACxB;AAEA,SAAgB,eAAqC;CACnD,MAAM,OAAO,OAAO,UAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
@@ -89,15 +89,15 @@ declare const XhStepsRoot: import("vue").DefineComponent<import("vue").ExtractPr
89
89
  "onStep-change"?: ((_details: import("@xihan-ui/headless").StepsStepChangeDetails) => any) | undefined;
90
90
  "onUpdate:step"?: ((_step: number) => any) | undefined;
91
91
  }>, {
92
- size: Size;
93
92
  orientation: Orientation;
94
93
  dir: Direction;
95
94
  tone: Tone;
95
+ size: Size;
96
96
  disabled: boolean;
97
97
  count: number;
98
- linear: boolean;
99
98
  step: number;
100
99
  defaultStep: number;
100
+ linear: boolean;
101
101
  }, SlotsType<{
102
102
  default?: (props: StepsRootSlotProps) => VNode[];
103
103
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -1,9 +1,9 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/table/context.ts
3
- const KEY = Symbol("xh-table");
4
- const SECTION_KEY = Symbol("xh-table-section");
5
- const ROW_KEY = Symbol("xh-table-row");
6
- const COLUMN_KEY = Symbol("xh-table-column");
3
+ const KEY = Symbol.for("xh-table");
4
+ const SECTION_KEY = Symbol.for("xh-table-section");
5
+ const ROW_KEY = Symbol.for("xh-table-row");
6
+ const COLUMN_KEY = Symbol.for("xh-table-column");
7
7
  function provideTable(ctx) {
8
8
  provide(KEY, ctx);
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/table/context.ts"],"sourcesContent":["import type { TableColumnProps, TableRowProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TableContext } from './use-table'\nimport { inject, provide } from 'vue'\n\n/** 行所在的区段,决定同一个 row 部件渲染成表头行、数据行还是脚注行。 */\nexport type TableSection = 'header' | 'body' | 'footer'\n\n/** 行自报的值,供行内的把手与单元格复用同一份声明。 */\nexport interface TableRowContext {\n row: ComputedRef<TableRowProps>\n}\n\n/** 列自报的值,供列标题里的排序把手复用同一份声明。 */\nexport interface TableColumnContext {\n column: ComputedRef<TableColumnProps>\n}\n\nconst KEY: InjectionKey<TableContext> = Symbol('xh-table')\nconst SECTION_KEY: InjectionKey<TableSection> = Symbol('xh-table-section')\nconst ROW_KEY: InjectionKey<TableRowContext> = Symbol('xh-table-row')\nconst COLUMN_KEY: InjectionKey<TableColumnContext> = Symbol('xh-table-column')\n\nexport function provideTable(ctx: TableContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTableContext(): TableContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Table 部件必须用在 XhTableRoot 内')\n return ctx\n}\n\nexport function provideTableSection(section: TableSection): void {\n provide(SECTION_KEY, section)\n}\n\n/** 取所在区段,无区段声明时按数据行处理。 */\nexport function useTableSection(): TableSection {\n return inject(SECTION_KEY, 'body')\n}\n\nexport function provideTableRow(ctx: TableRowContext): void {\n provide(ROW_KEY, ctx)\n}\n\nexport function useTableRowContext(): TableRowContext {\n const ctx = inject(ROW_KEY, null)\n if (!ctx)\n throw new Error('[xh] Table 行内部件必须用在 XhTableRow 或 XhTableExpandedRow 内')\n return ctx\n}\n\n/** 注入行上下文,表头与脚注单元格不在行内时返回 null。 */\nexport function useOptionalTableRowContext(): TableRowContext | null {\n return inject(ROW_KEY, null)\n}\n\nexport function provideTableColumn(ctx: TableColumnContext): void {\n provide(COLUMN_KEY, ctx)\n}\n\nexport function useTableColumnContext(): TableColumnContext {\n const ctx = inject(COLUMN_KEY, null)\n if (!ctx)\n throw new Error('[xh] Table 排序把手必须用在 XhTableColumnHeader 内')\n return ctx\n}\n"],"mappings":";;AAkBA,MAAM,MAAkC,OAAO,UAAU;AACzD,MAAM,cAA0C,OAAO,kBAAkB;AACzE,MAAM,UAAyC,OAAO,cAAc;AACpE,MAAM,aAA+C,OAAO,iBAAiB;AAE7E,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;AAEA,SAAgB,oBAAoB,SAA6B;CAC/D,QAAQ,aAAa,OAAO;AAC9B;;AAGA,SAAgB,kBAAgC;CAC9C,OAAO,OAAO,aAAa,MAAM;AACnC;AAEA,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,SAAS,GAAG;AACtB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,SAAS,IAAI;CAChC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uDAAuD;CACzE,OAAO;AACT;;AAGA,SAAgB,6BAAqD;CACnE,OAAO,OAAO,SAAS,IAAI;AAC7B;AAEA,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,YAAY,GAAG;AACzB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,YAAY,IAAI;CACnC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/table/context.ts"],"sourcesContent":["import type { TableColumnProps, TableRowProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TableContext } from './use-table'\nimport { inject, provide } from 'vue'\n\n/** 行所在的区段,决定同一个 row 部件渲染成表头行、数据行还是脚注行。 */\nexport type TableSection = 'header' | 'body' | 'footer'\n\n/** 行自报的值,供行内的把手与单元格复用同一份声明。 */\nexport interface TableRowContext {\n row: ComputedRef<TableRowProps>\n}\n\n/** 列自报的值,供列标题里的排序把手复用同一份声明。 */\nexport interface TableColumnContext {\n column: ComputedRef<TableColumnProps>\n}\n\nconst KEY: InjectionKey<TableContext> = Symbol.for('xh-table')\nconst SECTION_KEY: InjectionKey<TableSection> = Symbol.for('xh-table-section')\nconst ROW_KEY: InjectionKey<TableRowContext> = Symbol.for('xh-table-row')\nconst COLUMN_KEY: InjectionKey<TableColumnContext> = Symbol.for('xh-table-column')\n\nexport function provideTable(ctx: TableContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTableContext(): TableContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Table 部件必须用在 XhTableRoot 内')\n return ctx\n}\n\nexport function provideTableSection(section: TableSection): void {\n provide(SECTION_KEY, section)\n}\n\n/** 取所在区段,无区段声明时按数据行处理。 */\nexport function useTableSection(): TableSection {\n return inject(SECTION_KEY, 'body')\n}\n\nexport function provideTableRow(ctx: TableRowContext): void {\n provide(ROW_KEY, ctx)\n}\n\nexport function useTableRowContext(): TableRowContext {\n const ctx = inject(ROW_KEY, null)\n if (!ctx)\n throw new Error('[xh] Table 行内部件必须用在 XhTableRow 或 XhTableExpandedRow 内')\n return ctx\n}\n\n/** 注入行上下文,表头与脚注单元格不在行内时返回 null。 */\nexport function useOptionalTableRowContext(): TableRowContext | null {\n return inject(ROW_KEY, null)\n}\n\nexport function provideTableColumn(ctx: TableColumnContext): void {\n provide(COLUMN_KEY, ctx)\n}\n\nexport function useTableColumnContext(): TableColumnContext {\n const ctx = inject(COLUMN_KEY, null)\n if (!ctx)\n throw new Error('[xh] Table 排序把手必须用在 XhTableColumnHeader 内')\n return ctx\n}\n"],"mappings":";;AAkBA,MAAM,MAAkC,OAAO,IAAI,UAAU;AAC7D,MAAM,cAA0C,OAAO,IAAI,kBAAkB;AAC7E,MAAM,UAAyC,OAAO,IAAI,cAAc;AACxE,MAAM,aAA+C,OAAO,IAAI,iBAAiB;AAEjF,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT;AAEA,SAAgB,oBAAoB,SAA6B;CAC/D,QAAQ,aAAa,OAAO;AAC9B;;AAGA,SAAgB,kBAAgC;CAC9C,OAAO,OAAO,aAAa,MAAM;AACnC;AAEA,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,SAAS,GAAG;AACtB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,SAAS,IAAI;CAChC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,uDAAuD;CACzE,OAAO;AACT;;AAGA,SAAgB,6BAAqD;CACnE,OAAO,OAAO,SAAS,IAAI;AAC7B;AAEA,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,YAAY,GAAG;AACzB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,YAAY,IAAI;CACnC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT"}
@@ -1,11 +1,11 @@
1
1
  import { PayloadOf } from "../../runtime/payload.js";
2
2
  import { PropType, SlotsType, VNode } from "vue";
3
- import { TableApi, TableColumnDef, TableRowDef, TableSchema, TableSelection, TableSelectionMode, TableSortDescriptor } from "@xihan-ui/headless";
3
+ import { TableApi, TableColumnDef, TableColumnKind, TableColumnPreference, TableRowDef, TableSchema, TableSelection, TableSelectionMode, TableSortDescriptor } from "@xihan-ui/headless";
4
4
  import { Direction, Size } from "@xihan-ui/kernel";
5
5
  //#region src/components/table/table.d.ts
6
6
  type TableProps = TableSchema['props'];
7
7
  /** 默认插槽的载荷:可见行与排序、选中、展开三态,以及逐行查询与改写它们的句柄。 */
8
- type TableRootSlotProps = Pick<TableApi, 'visibleRows' | 'sort' | 'selection' | 'selectionState' | 'expandedValue' | 'focusedRow' | 'empty' | 'loading' | 'isSelected' | 'isExpanded' | 'sortDirection' | 'sortPriority' | 'toggleSort' | 'selectRow' | 'toggleSelectAll' | 'toggleExpandRow'>;
8
+ type TableRootSlotProps = Pick<TableApi, 'columns' | 'columnPreference' | 'setColumnHidden' | 'moveColumn' | 'setColumnWidth' | 'setColumnPreference' | 'rowNumber' | 'visibleRows' | 'sort' | 'selection' | 'selectionState' | 'expandedValue' | 'focusedRow' | 'empty' | 'loading' | 'isSelected' | 'isExpanded' | 'sortDirection' | 'sortPriority' | 'toggleSort' | 'selectRow' | 'toggleSelectAll' | 'toggleExpandRow'>;
9
9
  declare const XhTableRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
10
10
  columns: {
11
11
  type: PropType<TableColumnDef[]>;
@@ -35,6 +35,29 @@ declare const XhTableRoot: import("vue").DefineComponent<import("vue").ExtractPr
35
35
  type: PropType<TableSelectionMode>;
36
36
  default: undefined;
37
37
  };
38
+ /** 要哪几列前缀列(序号 / 多选 / 展开),按给定顺序插在最前面并占住列号。 */
39
+ prefixColumns: {
40
+ type: PropType<TableColumnKind[]>;
41
+ default: undefined;
42
+ };
43
+ /** 当前页码与每页条数:只用来算序号,不参与切片。 */
44
+ /** 列偏好:给定即受控。持久化归使用者,库只负责把它算进生效列。 */
45
+ columnPreference: {
46
+ type: PropType<TableColumnPreference>;
47
+ default: undefined;
48
+ };
49
+ defaultColumnPreference: {
50
+ type: PropType<TableColumnPreference>;
51
+ default: undefined;
52
+ };
53
+ page: {
54
+ type: NumberConstructor;
55
+ default: undefined;
56
+ };
57
+ pageSize: {
58
+ type: NumberConstructor;
59
+ default: undefined;
60
+ };
38
61
  expanded: {
39
62
  type: PropType<string[]>;
40
63
  default: undefined;
@@ -68,6 +91,10 @@ declare const XhTableRoot: import("vue").DefineComponent<import("vue").ExtractPr
68
91
  }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
69
92
  [key: string]: any;
70
93
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
94
+ 'column-preference-change': (_details: {
95
+ value: TableColumnPreference;
96
+ }) => true;
97
+ 'update:columnPreference': (_value: TableColumnPreference) => true;
71
98
  'sort-change': (_details: PayloadOf<TableProps, "onSortChange">) => true;
72
99
  'update:sort': (_sort: PayloadOf<TableProps, "onSortChange">["value"]) => true;
73
100
  'selection-change': (_details: PayloadOf<TableProps, "onSelectionChange">) => true;
@@ -103,6 +130,29 @@ declare const XhTableRoot: import("vue").DefineComponent<import("vue").ExtractPr
103
130
  type: PropType<TableSelectionMode>;
104
131
  default: undefined;
105
132
  };
133
+ /** 要哪几列前缀列(序号 / 多选 / 展开),按给定顺序插在最前面并占住列号。 */
134
+ prefixColumns: {
135
+ type: PropType<TableColumnKind[]>;
136
+ default: undefined;
137
+ };
138
+ /** 当前页码与每页条数:只用来算序号,不参与切片。 */
139
+ /** 列偏好:给定即受控。持久化归使用者,库只负责把它算进生效列。 */
140
+ columnPreference: {
141
+ type: PropType<TableColumnPreference>;
142
+ default: undefined;
143
+ };
144
+ defaultColumnPreference: {
145
+ type: PropType<TableColumnPreference>;
146
+ default: undefined;
147
+ };
148
+ page: {
149
+ type: NumberConstructor;
150
+ default: undefined;
151
+ };
152
+ pageSize: {
153
+ type: NumberConstructor;
154
+ default: undefined;
155
+ };
106
156
  expanded: {
107
157
  type: PropType<string[]>;
108
158
  default: undefined;
@@ -136,6 +186,10 @@ declare const XhTableRoot: import("vue").DefineComponent<import("vue").ExtractPr
136
186
  }>> & Readonly<{
137
187
  "onExpanded-change"?: ((_details: import("@xihan-ui/headless").TableExpandedChangeDetails) => any) | undefined;
138
188
  "onUpdate:expanded"?: ((_expanded: string[]) => any) | undefined;
189
+ "onColumn-preference-change"?: ((_details: {
190
+ value: TableColumnPreference;
191
+ }) => any) | undefined;
192
+ "onUpdate:columnPreference"?: ((_value: TableColumnPreference) => any) | undefined;
139
193
  "onSort-change"?: ((_details: import("@xihan-ui/headless").TableSortChangeDetails) => any) | undefined;
140
194
  "onUpdate:sort"?: ((_sort: TableSortDescriptor[]) => any) | undefined;
141
195
  "onSelection-change"?: ((_details: import("@xihan-ui/headless").TableSelectionChangeDetails) => any) | undefined;
@@ -143,16 +197,18 @@ declare const XhTableRoot: import("vue").DefineComponent<import("vue").ExtractPr
143
197
  }>, {
144
198
  sort: TableSortDescriptor[];
145
199
  footer: boolean;
146
- size: Size;
147
200
  dir: Direction;
201
+ size: Size;
148
202
  loading: boolean;
149
203
  selectionMode: TableSelectionMode;
204
+ page: number;
150
205
  loop: boolean;
151
206
  empty: boolean;
152
207
  columns: TableColumnDef[];
153
208
  expanded: string[];
154
209
  defaultExpanded: string[];
155
210
  rows: TableRowDef[];
211
+ columnPreference: TableColumnPreference;
156
212
  selection: TableSelection;
157
213
  stickyHeader: boolean;
158
214
  striped: boolean;
@@ -160,6 +216,9 @@ declare const XhTableRoot: import("vue").DefineComponent<import("vue").ExtractPr
160
216
  ruled: boolean;
161
217
  defaultSort: TableSortDescriptor[];
162
218
  defaultSelection: TableSelection;
219
+ prefixColumns: TableColumnKind[];
220
+ defaultColumnPreference: TableColumnPreference;
221
+ pageSize: number;
163
222
  }, SlotsType<{
164
223
  default?: (props: TableRootSlotProps) => VNode[];
165
224
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","names":[],"sources":["../../../src/components/table/table.ts"],"mappings":";;;;;KA6BK,aAAa;;KAyBN,qBAAqB,KAC/B;cAmBW,2BAAW,8BAAA;;IAIM,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACD,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACrB,MAAA,SAAS;;;;IACf,MAAA;;;;IACO,MAAA;;;;;;;;;;;;;;;;;;IASX,MAAA,SAAS;;;;IACR,MAAA,SAAS;;;;;;EAIP,gBAAA,UAAA,UAAU;EACb,gBAAA,OAAA,UAAU;EACF,qBAAA,UAAA,UAAU;EACR,qBAAA,YAAA,UAAU;EACb,oBAAA,UAAA,UAAU;EACT,oBAAA,WAAA,UAAU;;;IA3Bf,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACD,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACrB,MAAA,SAAS;;;;IACf,MAAA;;;;IACO,MAAA;;;;;;;;;;;;;;;;;;IASX,MAAA,SAAS;;;;IACR,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYvB,WAAC,OAAO,uBAAuB;kCAoC3C;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,0BAAA,oBAAA,4BAAA;;8BAOxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,2BAAW,0BAAA,oBAAA,4BAAA;;8BAQtB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,0BAAA,oBAAA,4BAAA;;8BAOxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,8BAAA;;;;;;;;;;;;;;;;qCA6BrB;cAEW,mCAAmB,8BAAA;;;;;;;;;;;;MAe9B,oDAAA;cAEW,2BAAW,8BAAA;;;;;;;;IAMiB,MAAA;;;;;;;;;;;;;IAAA,MAAA;;;;;qCAgBvC;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAUlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAWlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAW7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAW/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,8BAAA;;;;;;;;;;;;;;MAgB7B,oDAAA;cAEW,4BAAY,0BAAA,oBAAA,4BAAA;;8BAMvB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"table.d.ts","names":[],"sources":["../../../src/components/table/table.ts"],"mappings":";;;;;KA+BK,aAAa;;KAyBN,qBAAqB,KAC/B;cA0BW,2BAAW,8BAAA;;IAIM,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACD,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACrB,MAAA,SAAS;;;;;IAEV,MAAA,SAAS;;;;;;IAGL,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;;;;;;;;;IAGzB,MAAA;;;;IACO,MAAA;;;;;;;;;;;;;;;;;;IASX,MAAA,SAAS;;;;IACR,MAAA,SAAS;;;;;;EAIM,6BAAA;IAAE,OAAO;;EACZ,4BAAA,QAAA;EACV,gBAAA,UAAA,UAAU;EACb,gBAAA,OAAA,UAAU;EACF,qBAAA,UAAA,UAAU;EACR,qBAAA,YAAA,UAAU;EACb,oBAAA,UAAA,UAAU;EACT,oBAAA,WAAA,UAAU;;;IArCf,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACD,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACrB,MAAA,SAAS;;;;;IAEV,MAAA,SAAS;;;;;;IAGL,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;;;;;;;;;IAGzB,MAAA;;;;IACO,MAAA;;;;;;;;;;;;;;;;;;IASX,MAAA,SAAS;;;;IACR,MAAA,SAAS;;;;;;;IAIe,OAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUtC,WAAC,OAAO,uBAAuB;kCA+C3C;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,0BAAA,oBAAA,4BAAA;;8BAOxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,2BAAW,0BAAA,oBAAA,4BAAA;;8BAQtB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,0BAAA,oBAAA,4BAAA;;8BAOxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,8BAAA;;;;;;;;;;;;;;;;qCA6BrB;cAEW,mCAAmB,8BAAA;;;;;;;;;;;;MAe9B,oDAAA;cAEW,2BAAW,8BAAA;;;;;;;;IAMiB,MAAA;;;;;;;;;;;;;IAAA,MAAA;;;;;qCAgBvC;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAUlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAWlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAW7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAW/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,8BAAA;;;;;;;;;;;;;;MAgB7B,oDAAA;cAEW,4BAAY,0BAAA,oBAAA,4BAAA;;8BAMvB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -50,6 +50,29 @@ const XhTableRoot = defineComponent({
50
50
  type: String,
51
51
  default: void 0
52
52
  },
53
+ /** 要哪几列前缀列(序号 / 多选 / 展开),按给定顺序插在最前面并占住列号。 */
54
+ prefixColumns: {
55
+ type: Array,
56
+ default: void 0
57
+ },
58
+ /** 当前页码与每页条数:只用来算序号,不参与切片。 */
59
+ /** 列偏好:给定即受控。持久化归使用者,库只负责把它算进生效列。 */
60
+ columnPreference: {
61
+ type: Object,
62
+ default: void 0
63
+ },
64
+ defaultColumnPreference: {
65
+ type: Object,
66
+ default: void 0
67
+ },
68
+ page: {
69
+ type: Number,
70
+ default: void 0
71
+ },
72
+ pageSize: {
73
+ type: Number,
74
+ default: void 0
75
+ },
53
76
  expanded: {
54
77
  type: Array,
55
78
  default: void 0
@@ -82,6 +105,8 @@ const XhTableRoot = defineComponent({
82
105
  }
83
106
  },
84
107
  emits: {
108
+ "column-preference-change": (_details) => true,
109
+ "update:columnPreference": (_value) => true,
85
110
  "sort-change": (_details) => true,
86
111
  "update:sort": (_sort) => true,
87
112
  "selection-change": (_details) => true,
@@ -91,6 +116,10 @@ const XhTableRoot = defineComponent({
91
116
  },
92
117
  slots: Object,
93
118
  setup(props, { slots, emit }) {
119
+ const onColumnPreferenceChange = (details) => {
120
+ emit("column-preference-change", details);
121
+ emit("update:columnPreference", details.value);
122
+ };
94
123
  const onSortChange = (details) => {
95
124
  emit("sort-change", details);
96
125
  emit("update:sort", details.value);
@@ -103,9 +132,16 @@ const XhTableRoot = defineComponent({
103
132
  emit("expanded-change", details);
104
133
  emit("update:expanded", details.value);
105
134
  };
106
- const ctx = useTable(props, onSortChange, onSelectionChange, onExpandedChange);
135
+ const ctx = useTable(props, onSortChange, onSelectionChange, onExpandedChange, onColumnPreferenceChange);
107
136
  provideTable(ctx);
108
137
  return () => h("div", ctx.api.value.getRootProps(), slots.default?.({
138
+ columns: ctx.api.value.columns,
139
+ columnPreference: ctx.api.value.columnPreference,
140
+ setColumnHidden: ctx.api.value.setColumnHidden,
141
+ moveColumn: ctx.api.value.moveColumn,
142
+ setColumnWidth: ctx.api.value.setColumnWidth,
143
+ setColumnPreference: ctx.api.value.setColumnPreference,
144
+ rowNumber: ctx.api.value.rowNumber,
109
145
  visibleRows: ctx.api.value.visibleRows,
110
146
  sort: ctx.api.value.sort,
111
147
  selection: ctx.api.value.selection,
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","names":[],"sources":["../../../src/components/table/table.ts"],"sourcesContent":["import type {\n TableApi,\n TableColumnDef,\n TableColumnProps,\n TableRowDef,\n TableRowProps,\n TableSchema,\n TableSelection,\n TableSelectionMode,\n TableSortDescriptor,\n} from '@xihan-ui/headless'\nimport type { Direction, Size } from '@xihan-ui/kernel'\nimport type { PropType, Ref, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { TableContext } from './use-table'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport {\n provideTable,\n provideTableColumn,\n provideTableRow,\n provideTableSection,\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 | '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>\n\nexport const XhTableRoot = defineComponent({\n name: 'XhTableRoot',\n // 有机器侧兜底的 prop 一律 default: undefined,缺省值由 connect 与机器决定\n props: {\n columns: { type: Array as PropType<TableColumnDef[]>, default: undefined },\n rows: { type: Array as PropType<TableRowDef[]>, default: undefined },\n sort: { type: Array as PropType<TableSortDescriptor[]>, default: undefined },\n defaultSort: { type: Array as PropType<TableSortDescriptor[]>, default: undefined },\n selection: { type: [Array, String] as PropType<TableSelection>, default: undefined },\n defaultSelection: { type: [Array, String] as PropType<TableSelection>, default: undefined },\n selectionMode: { type: String as PropType<TableSelectionMode>, default: undefined },\n expanded: { type: Array as PropType<string[]>, default: undefined },\n defaultExpanded: { type: Array as PropType<string[]>, default: undefined },\n loading: Boolean,\n empty: { type: Boolean, default: undefined },\n stickyHeader: Boolean,\n striped: Boolean,\n borderless: Boolean,\n ruled: Boolean,\n footer: Boolean,\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n },\n // *-change 携带 { value },update:* 携带裸值以支持 v-model\n emits: {\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-change': (_details: PayloadOf<TableProps, 'onExpandedChange'>) => true,\n 'update:expanded': (_expanded: PayloadOf<TableProps, 'onExpandedChange'>['value']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TableRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\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 onExpandedChange: TableProps['onExpandedChange'] = (details) => {\n emit('expanded-change', details)\n emit('update:expanded', details.value)\n }\n const ctx = useTable(props as TableProps, onSortChange, onSelectionChange, onExpandedChange)\n provideTable(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\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 }))\n },\n})\n\nexport const XhTableCaption = 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 = 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 = 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 = 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 = defineComponent({\n name: 'XhTableRow',\n props: {\n /** 行 id:数据行必给,表头行与脚注行省略。 */\n value: { type: String, default: undefined },\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 = 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\nexport const XhTableCell = 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>, default: undefined },\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 = 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 = 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\nexport const XhTableSortTrigger = 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\nexport const XhTableExpandTrigger = 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 = 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 = 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 XhTableLoadingState = defineComponent({\n name: 'XhTableLoadingState',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getLoadingStateProps() 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":["import 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 { Direction, Size } from '@xihan-ui/kernel'\nimport type { PropType, Ref, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { TableContext } from './use-table'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport {\n provideTable,\n provideTableColumn,\n provideTableRow,\n provideTableSection,\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 | '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>\n\nexport const XhTableRoot = defineComponent({\n name: 'XhTableRoot',\n // 有机器侧兜底的 prop 一律 default: undefined,缺省值由 connect 与机器决定\n props: {\n columns: { type: Array as PropType<TableColumnDef[]>, default: undefined },\n rows: { type: Array as PropType<TableRowDef[]>, default: undefined },\n sort: { type: Array as PropType<TableSortDescriptor[]>, default: undefined },\n defaultSort: { type: Array as PropType<TableSortDescriptor[]>, default: undefined },\n selection: { type: [Array, String] as PropType<TableSelection>, default: undefined },\n defaultSelection: { type: [Array, String] as PropType<TableSelection>, default: undefined },\n selectionMode: { type: String as PropType<TableSelectionMode>, default: undefined },\n /** 要哪几列前缀列(序号 / 多选 / 展开),按给定顺序插在最前面并占住列号。 */\n prefixColumns: { type: Array as PropType<TableColumnKind[]>, default: undefined },\n /** 当前页码与每页条数:只用来算序号,不参与切片。 */\n /** 列偏好:给定即受控。持久化归使用者,库只负责把它算进生效列。 */\n columnPreference: { type: Object as PropType<TableColumnPreference>, default: undefined },\n defaultColumnPreference: { type: Object as PropType<TableColumnPreference>, default: undefined },\n page: { type: Number, default: undefined },\n pageSize: { type: Number, default: undefined },\n expanded: { type: Array as PropType<string[]>, default: undefined },\n defaultExpanded: { type: Array as PropType<string[]>, default: undefined },\n loading: Boolean,\n empty: { type: Boolean, default: undefined },\n stickyHeader: Boolean,\n striped: Boolean,\n borderless: Boolean,\n ruled: Boolean,\n footer: Boolean,\n loop: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\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-change': (_details: PayloadOf<TableProps, 'onExpandedChange'>) => true,\n 'update:expanded': (_expanded: PayloadOf<TableProps, 'onExpandedChange'>['value']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TableRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\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 onExpandedChange: TableProps['onExpandedChange'] = (details) => {\n emit('expanded-change', details)\n emit('update:expanded', details.value)\n }\n const ctx = useTable(props as TableProps, onSortChange, onSelectionChange, onExpandedChange, onColumnPreferenceChange)\n provideTable(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n columns: ctx.api.value.columns,\n columnPreference: ctx.api.value.columnPreference,\n setColumnHidden: ctx.api.value.setColumnHidden,\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 }))\n },\n})\n\nexport const XhTableCaption = 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 = 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 = 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 = 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 = defineComponent({\n name: 'XhTableRow',\n props: {\n /** 行 id:数据行必给,表头行与脚注行省略。 */\n value: { type: String, default: undefined },\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 = 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\nexport const XhTableCell = 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>, default: undefined },\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 = 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 = 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\nexport const XhTableSortTrigger = 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\nexport const XhTableExpandTrigger = 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 = 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 = 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 XhTableLoadingState = defineComponent({\n name: 'XhTableLoadingState',\n setup(_, { slots }) {\n const ctx = useTableContext()\n return () => h('div', ctx.api.value.getLoadingStateProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;AAkCA,SAAS,eAAe,KAAmB,IAA6B,OAA2B;CACjG,MAAM,QAAQ,MAAM,SAAS;EAC3B,IAAI,SAAS,MACX;EACF,MAAM,EAAE,YAAY;EACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EACF,IAAI,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACtD,QAAQ,KAAK;GAAE,MAAM;GAAa,OAAO;EAAK,CAAC;CACnD,CAAC;CACD,sBAAsB;EACpB,MAAM,EAAE,YAAY;EAEpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;EAEF,IAAI,GAAG,SAAS,QAAQ,MAAM,iBAAiB,MAAM,GAAG,OACtD,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;CACvC,CAAC;AACH;AA8BA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EACL,SAAS;GAAE,MAAM;GAAqC,SAAS,KAAA;EAAU;EACzE,MAAM;GAAE,MAAM;GAAkC,SAAS,KAAA;EAAU;EACnE,MAAM;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;EAC3E,aAAa;GAAE,MAAM;GAA0C,SAAS,KAAA;EAAU;EAClF,WAAW;GAAE,MAAM,CAAC,OAAO,MAAM;GAA+B,SAAS,KAAA;EAAU;EACnF,kBAAkB;GAAE,MAAM,CAAC,OAAO,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC1F,eAAe;GAAE,MAAM;GAAwC,SAAS,KAAA;EAAU;;EAElF,eAAe;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;;;EAGhF,kBAAkB;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EACxF,yBAAyB;GAAE,MAAM;GAA2C,SAAS,KAAA;EAAU;EAC/F,MAAM;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACzC,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,UAAU;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAClE,iBAAiB;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACzE,SAAS;EACT,OAAO;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC3C,cAAc;EACd,SAAS;EACT,YAAY;EACZ,OAAO;EACP,QAAQ;EACR,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;CAC7D;CAEA,OAAO;EACL,6BAA6B,aAA+C;EAC5E,4BAA4B,WAAkC;EAC9D,gBAAgB,aAAoD;EACpE,gBAAgB,UAA0D;EAC1E,qBAAqB,aAAyD;EAC9E,qBAAqB,eAAoE;EACzF,oBAAoB,aAAwD;EAC5E,oBAAoB,cAAkE;CACxF;CACA,OAAO;CAGP,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,4BAAoE,YAAY;GACpF,KAAK,4BAA4B,OAAO;GACxC,KAAK,2BAA2B,QAAQ,KAAK;EAC/C;EACA,MAAM,gBAA4C,YAAY;GAC5D,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,KAAK;EACnC;EACA,MAAM,qBAAsD,YAAY;GACtE,KAAK,oBAAoB,OAAO;GAChC,KAAK,oBAAoB,QAAQ,KAAK;EACxC;EACA,MAAM,oBAAoD,YAAY;GACpE,KAAK,mBAAmB,OAAO;GAC/B,KAAK,mBAAmB,QAAQ,KAAK;EACvC;EACA,MAAM,MAAM,SAAS,OAAqB,cAAc,mBAAmB,kBAAkB,wBAAwB;EACrH,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,SAAS,IAAI,IAAI,MAAM;GACvB,kBAAkB,IAAI,IAAI,MAAM;GAChC,iBAAiB,IAAI,IAAI,MAAM;GAC/B,YAAY,IAAI,IAAI,MAAM;GAC1B,gBAAgB,IAAI,IAAI,MAAM;GAC9B,qBAAqB,IAAI,IAAI,MAAM;GACnC,WAAW,IAAI,IAAI,MAAM;GACzB,aAAa,IAAI,IAAI,MAAM;GAC3B,MAAM,IAAI,IAAI,MAAM;GACpB,WAAW,IAAI,IAAI,MAAM;GACzB,gBAAgB,IAAI,IAAI,MAAM;GAC9B,eAAe,IAAI,IAAI,MAAM;GAC7B,YAAY,IAAI,IAAI,MAAM;GAC1B,OAAO,IAAI,IAAI,MAAM;GACrB,SAAS,IAAI,IAAI,MAAM;GACvB,YAAY,IAAI,IAAI,MAAM;GAC1B,YAAY,IAAI,IAAI,MAAM;GAC1B,eAAe,IAAI,IAAI,MAAM;GAC7B,cAAc,IAAI,IAAI,MAAM;GAC5B,YAAY,IAAI,IAAI,MAAM;GAC1B,WAAW,IAAI,IAAI,MAAM;GACzB,iBAAiB,IAAI,IAAI,MAAM;GAC/B,iBAAiB,IAAI,IAAI,MAAM;EACjC,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,oBAAoB,QAAQ;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,oBAAoB,MAAM;EAE1B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;AAED,MAAa,gBAAgB,gBAAgB;CAC3C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,oBAAoB,QAAQ;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,SAAS,KAAA;CAAU,EAC5C;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,UAAU,gBAAgB;EAChC,IAAI,YAAY,QACd,aAAa,EACX,OACC,YAAY,WACT,IAAI,IAAI,MAAM,kBAAkB,IAChC,IAAI,IAAI,MAAM,kBAAkB,GACpC,MAAM,UAAU,CAClB;EAEF,MAAM,MAAM,gBAA+B,EAAE,OAAO,MAAM,SAAS,GAAG,EAAE;EAExE,gBAAgB,EAAE,IAAI,CAAC;EACvB,MAAM,KAAK,IAAwB,IAAI;EACvC,eAAe,KAAK,UAAU,IAAI,MAAM,KAAK;EAC7C,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,YAAY,IAAI,KAAK;GAA8B,KAAK;EAAG,GAC9E,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,SAAS,gBAAkC,EAAE,OAAO,MAAM,MAAM,EAAE;EACxE,mBAAmB,EAAE,OAAO,CAAC;EAC7B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,qBAAqB,OAAO,KAAK,GAC/C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,OAAO;;EAEL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;;EAEtC,SAAS;GAAE,MAAM,CAAC,QAAQ,MAAM;GAAgC,SAAS,KAAA;EAAU;CACrF;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAE5B,MAAM,SAAS,2BAA2B;EAC1C,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa;GACzB,OAAO,MAAM;GACb,KAAK,QAAQ,IAAI,MAAM;GACvB,SAAS,MAAM,WAAW,OAAO,KAAA,IAAY,OAAO,MAAM,OAAO;EACnE,CAAC,GACD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EACX,QACA,IAAI,IAAI,MAAM,yBAAyB,GACvC,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,EAAE,QAAQ,mBAAmB;EACnC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,yBAAyB,IAAI,KAAK,GAChD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,EAAE,WAAW,sBAAsB;EACzC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,oBAAoB,OAAO,KAAK,GAC9C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,EAAE,QAAQ,mBAAmB;EACnC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,sBAAsB,IAAI,KAAK,GAC7C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,MAAM,gBAA+B,EAAE,OAAO,MAAM,MAAM,EAAE;EAElE,aAAa,EACX,OACA,IAAI,IAAI,MAAM,oBAAoB,IAAI,KAAK,GAC3C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC1G;AACF,CAAC"}
@@ -7,7 +7,7 @@ interface TableContext {
7
7
  /** 机器实例,供部件上报 DOM 侧的事实(如行卸载带走了焦点)。 */
8
8
  service: Service<TableSchema>;
9
9
  }
10
- declare function useTable(props: TableSchema['props'], onSortChange?: TableSchema['props']['onSortChange'], onSelectionChange?: TableSchema['props']['onSelectionChange'], onExpandedChange?: TableSchema['props']['onExpandedChange']): TableContext;
10
+ declare function useTable(props: TableSchema['props'], onSortChange?: TableSchema['props']['onSortChange'], onSelectionChange?: TableSchema['props']['onSelectionChange'], onExpandedChange?: TableSchema['props']['onExpandedChange'], onColumnPreferenceChange?: TableSchema['props']['onColumnPreferenceChange']): TableContext;
11
11
  //#endregion
12
12
  export { TableContext, useTable };
13
13
  //# sourceMappingURL=use-table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-table.d.ts","names":[],"sources":["../../../src/components/table/use-table.ts"],"mappings":";;;;UAUiB;EACf,KAAK,YAAY;;EAEjB,SAAS,QAAQ;;iBAGH,SACd,OAAO,sBACP,eAAe,sCACf,oBAAoB,2CACpB,mBAAmB,2CAClB"}
1
+ {"version":3,"file":"use-table.d.ts","names":[],"sources":["../../../src/components/table/use-table.ts"],"mappings":";;;;UAUiB;EACf,KAAK,YAAY;;EAEjB,SAAS,QAAQ;;iBAGH,SACd,OAAO,sBACP,eAAe,sCACf,oBAAoB,2CACpB,mBAAmB,0CACnB,2BAA2B,mDAC1B"}
@@ -5,12 +5,13 @@ import { computed } from "vue";
5
5
  import { connectTable, tableMachine } from "@xihan-ui/headless";
6
6
  import { createScope } from "@xihan-ui/kernel";
7
7
  //#region src/components/table/use-table.ts
8
- function useTable(props, onSortChange, onSelectionChange, onExpandedChange) {
8
+ function useTable(props, onSortChange, onSelectionChange, onExpandedChange, onColumnPreferenceChange) {
9
9
  const service = useMachine(tableMachine, () => ({
10
10
  ...props,
11
11
  onSortChange,
12
12
  onSelectionChange,
13
- onExpandedChange
13
+ onExpandedChange,
14
+ onColumnPreferenceChange
14
15
  }), createScope(null, createVueIdGenerator()));
15
16
  return {
16
17
  api: computed(() => connectTable(service, vueNormalize)),
@@ -1 +1 @@
1
- {"version":3,"file":"use-table.js","names":[],"sources":["../../../src/components/table/use-table.ts"],"sourcesContent":["import type { TableApi, TableSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectTable, tableMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\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 onExpandedChange?: TableSchema['props']['onExpandedChange'],\n): TableContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(\n tableMachine,\n () => ({ ...props, onSortChange, onSelectionChange, onExpandedChange }),\n scope,\n )\n const api = computed(() => connectTable(service, vueNormalize))\n return { api, service }\n}\n"],"mappings":";;;;;;;AAgBA,SAAgB,SACd,OACA,cACA,mBACA,kBACc;CAGd,MAAM,UAAU,WACd,qBACO;EAAE,GAAG;EAAO;EAAc;EAAmB;CAAiB,IAHzD,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":["import type { TableApi, TableSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectTable, tableMachine } from '@xihan-ui/headless'\nimport { createScope } from '@xihan-ui/kernel'\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 onExpandedChange?: TableSchema['props']['onExpandedChange'],\n onColumnPreferenceChange?: TableSchema['props']['onColumnPreferenceChange'],\n): TableContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(\n tableMachine,\n () => ({ ...props, onSortChange, onSelectionChange, onExpandedChange, onColumnPreferenceChange }),\n scope,\n )\n const api = computed(() => connectTable(service, vueNormalize))\n return { api, service }\n}\n"],"mappings":";;;;;;;AAgBA,SAAgB,SACd,OACA,cACA,mBACA,kBACA,0BACc;CAGd,MAAM,UAAU,WACd,qBACO;EAAE,GAAG;EAAO;EAAc;EAAmB;EAAkB;CAAyB,IAHnF,YAAY,MADZ,qBACsB,CAI9B,CACN;CAEA,OAAO;EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD;EAAG;CAAQ;AACxB"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/tabs/context.ts
3
- const KEY = Symbol("xh-tabs");
3
+ const KEY = Symbol.for("xh-tabs");
4
4
  function provideTabs(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tabs/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TabsContext } from './use-tabs'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TabsContext> = Symbol('xh-tabs')\n\nexport function provideTabs(ctx: TabsContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTabsContext(): TabsContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tabs 部件必须用在 XhTabsRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAiC,OAAO,SAAS;AAEvD,SAAgB,YAAY,KAAwB;CAClD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tabs/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TabsContext } from './use-tabs'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TabsContext> = Symbol.for('xh-tabs')\n\nexport function provideTabs(ctx: TabsContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTabsContext(): TabsContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tabs 部件必须用在 XhTabsRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAiC,OAAO,IAAI,SAAS;AAE3D,SAAgB,YAAY,KAAwB;CAClD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,iBAA8B;CAC5C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,+BAA+B;CACjD,OAAO;AACT"}
@@ -95,13 +95,13 @@ declare const XhTabsRoot: import("vue").DefineComponent<import("vue").ExtractPro
95
95
  "onValue-change"?: ((_details: import("@xihan-ui/headless").TabsValueChangeDetails) => any) | undefined;
96
96
  "onUpdate:value"?: ((_value: string | null) => any) | undefined;
97
97
  }>, {
98
- size: Size;
99
98
  value: string | null;
100
99
  collection: TabsNode[];
101
100
  defaultValue: string | null;
102
101
  orientation: Orientation;
103
102
  dir: Direction;
104
103
  tone: Tone;
104
+ size: Size;
105
105
  variant: TabsVariant;
106
106
  loop: boolean;
107
107
  activationMode: TabsActivationMode;
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/tag/context.ts
3
- const KEY = Symbol("xh-tag");
3
+ const KEY = Symbol.for("xh-tag");
4
4
  function provideTag(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tag/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TagContext } from './use-tag'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TagContext> = Symbol('xh-tag')\n\nexport function provideTag(ctx: TagContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTagContext(): TagContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tag 部件必须用在 XhTagRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAgC,OAAO,QAAQ;AAErD,SAAgB,WAAW,KAAuB;CAChD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,gBAA4B;CAC1C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6BAA6B;CAC/C,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tag/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TagContext } from './use-tag'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TagContext> = Symbol.for('xh-tag')\n\nexport function provideTag(ctx: TagContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTagContext(): TagContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tag 部件必须用在 XhTagRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAgC,OAAO,IAAI,QAAQ;AAEzD,SAAgB,WAAW,KAAuB;CAChD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,gBAA4B;CAC1C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6BAA6B;CAC/C,OAAO;AACT"}
@@ -1,9 +1,21 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
2
  import { useMachine } from "../../runtime/use-machine.js";
3
- import { computed } from "vue";
4
- import { connectTag, tagMachine } from "@xihan-ui/headless";
3
+ import { computed, ref } from "vue";
4
+ import { connectStaticTag, connectTag, tagMachine } from "@xihan-ui/headless";
5
5
  //#region src/components/tag/use-tag.ts
6
6
  function useTag(props, onOpenChange) {
7
+ if (!props.closable) {
8
+ const local = ref(props.defaultOpen ?? true);
9
+ return { api: computed(() => connectStaticTag({
10
+ ...props,
11
+ onOpenChange
12
+ }, {
13
+ get: () => props.open ?? local.value,
14
+ set: (next) => {
15
+ local.value = next;
16
+ }
17
+ }, vueNormalize)) };
18
+ }
7
19
  const service = useMachine(tagMachine, () => ({
8
20
  ...props,
9
21
  onOpenChange
@@ -1 +1 @@
1
- {"version":3,"file":"use-tag.js","names":[],"sources":["../../../src/components/tag/use-tag.ts"],"sourcesContent":["import type { TagApi, TagSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectTag, tagMachine } from '@xihan-ui/headless'\nimport { computed } 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 const service = useMachine(tagMachine, () => ({ ...props, onOpenChange }))\n const api = computed(() => connectTag(service, vueNormalize))\n return { api }\n}\n"],"mappings":";;;;;AAYA,SAAgB,OACd,OACA,cACY;CACZ,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":["import 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":";;;;;AAYA,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"}