@xihan-ui/vue 1.0.0-alpha.3 → 1.1.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 (496) hide show
  1. package/CHANGELOG.md +2316 -0
  2. package/README.md +1 -1
  3. package/dist/backgrounds.d.ts.map +1 -1
  4. package/dist/backgrounds.js +1 -5
  5. package/dist/backgrounds.js.map +1 -1
  6. package/dist/behavior.d.ts +38 -0
  7. package/dist/behavior.d.ts.map +1 -0
  8. package/dist/behavior.js +74 -0
  9. package/dist/behavior.js.map +1 -0
  10. package/dist/components/accordion/accordion.d.ts +1 -1
  11. package/dist/components/accordion/context.js +2 -2
  12. package/dist/components/accordion/context.js.map +1 -1
  13. package/dist/components/affix/context.js +1 -1
  14. package/dist/components/affix/context.js.map +1 -1
  15. package/dist/components/alert/context.js +1 -1
  16. package/dist/components/alert/context.js.map +1 -1
  17. package/dist/components/anchor/anchor.d.ts +1 -1
  18. package/dist/components/anchor/context.js +1 -1
  19. package/dist/components/anchor/context.js.map +1 -1
  20. package/dist/components/avatar/context.js +1 -1
  21. package/dist/components/avatar/context.js.map +1 -1
  22. package/dist/components/avatar-group/context.js +1 -1
  23. package/dist/components/avatar-group/context.js.map +1 -1
  24. package/dist/components/back-top/back-top.d.ts +2 -2
  25. package/dist/components/back-top/context.js +1 -1
  26. package/dist/components/back-top/context.js.map +1 -1
  27. package/dist/components/badge/badge.d.ts +142 -50
  28. package/dist/components/badge/badge.d.ts.map +1 -1
  29. package/dist/components/badge/badge.js +67 -37
  30. package/dist/components/badge/badge.js.map +1 -1
  31. package/dist/components/badge/context.js +15 -0
  32. package/dist/components/badge/context.js.map +1 -0
  33. package/dist/components/breadcrumb/breadcrumb.d.ts +1 -1
  34. package/dist/components/breadcrumb/context.js +1 -1
  35. package/dist/components/breadcrumb/context.js.map +1 -1
  36. package/dist/components/button-group/button-group.d.ts +1 -1
  37. package/dist/components/calendar/calendar.d.ts +1 -1
  38. package/dist/components/calendar/context.js +2 -2
  39. package/dist/components/calendar/context.js.map +1 -1
  40. package/dist/components/card/card.d.ts +1 -1
  41. package/dist/components/card/context.js +1 -1
  42. package/dist/components/card/context.js.map +1 -1
  43. package/dist/components/carousel/carousel.d.ts +1 -1
  44. package/dist/components/carousel/context.js +1 -1
  45. package/dist/components/carousel/context.js.map +1 -1
  46. package/dist/components/cascader/cascader.d.ts +5 -5
  47. package/dist/components/cascader/cascader.d.ts.map +1 -1
  48. package/dist/components/cascader/cascader.js +14 -4
  49. package/dist/components/cascader/cascader.js.map +1 -1
  50. package/dist/components/cascader/context.js +2 -2
  51. package/dist/components/cascader/context.js.map +1 -1
  52. package/dist/components/cascader/use-cascader.js +1 -1
  53. package/dist/components/cascader/use-cascader.js.map +1 -1
  54. package/dist/components/checkbox-group/context.js +2 -2
  55. package/dist/components/checkbox-group/context.js.map +1 -1
  56. package/dist/components/clipboard/context.js +1 -1
  57. package/dist/components/clipboard/context.js.map +1 -1
  58. package/dist/components/collapsible/context.js +1 -1
  59. package/dist/components/collapsible/context.js.map +1 -1
  60. package/dist/components/color-picker/color-picker.d.ts +10 -1
  61. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  62. package/dist/components/color-picker/color-picker.js +7 -1
  63. package/dist/components/color-picker/color-picker.js.map +1 -1
  64. package/dist/components/color-picker/context.js +2 -2
  65. package/dist/components/color-picker/context.js.map +1 -1
  66. package/dist/components/color-picker/use-color-picker.js +1 -1
  67. package/dist/components/color-picker/use-color-picker.js.map +1 -1
  68. package/dist/components/combobox/combobox.d.ts +4 -4
  69. package/dist/components/combobox/combobox.d.ts.map +1 -1
  70. package/dist/components/combobox/combobox.js +12 -5
  71. package/dist/components/combobox/combobox.js.map +1 -1
  72. package/dist/components/combobox/context.js +3 -3
  73. package/dist/components/combobox/context.js.map +1 -1
  74. package/dist/components/combobox/use-combobox.js +1 -1
  75. package/dist/components/combobox/use-combobox.js.map +1 -1
  76. package/dist/components/composer/context.js +1 -1
  77. package/dist/components/composer/context.js.map +1 -1
  78. package/dist/components/context-menu/context-menu.d.ts +2 -2
  79. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  80. package/dist/components/context-menu/context-menu.js +3 -1
  81. package/dist/components/context-menu/context-menu.js.map +1 -1
  82. package/dist/components/context-menu/context.js +5 -5
  83. package/dist/components/context-menu/context.js.map +1 -1
  84. package/dist/components/context-menu/use-context-menu.js +1 -1
  85. package/dist/components/context-menu/use-context-menu.js.map +1 -1
  86. package/dist/components/date-field/context.js +1 -1
  87. package/dist/components/date-field/context.js.map +1 -1
  88. package/dist/components/date-field/date-field.d.ts +4 -4
  89. package/dist/components/date-picker/context.js +13 -4
  90. package/dist/components/date-picker/context.js.map +1 -1
  91. package/dist/components/date-picker/date-picker.d.ts +79 -43
  92. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  93. package/dist/components/date-picker/date-picker.js +68 -26
  94. package/dist/components/date-picker/date-picker.js.map +1 -1
  95. package/dist/components/date-picker/use-date-picker.js +1 -1
  96. package/dist/components/date-picker/use-date-picker.js.map +1 -1
  97. package/dist/components/descriptions/context.js +1 -1
  98. package/dist/components/descriptions/context.js.map +1 -1
  99. package/dist/components/descriptions/descriptions.d.ts +1 -1
  100. package/dist/components/dialog/context.js +1 -1
  101. package/dist/components/dialog/context.js.map +1 -1
  102. package/dist/components/drawer/context.js +1 -1
  103. package/dist/components/drawer/context.js.map +1 -1
  104. package/dist/components/dynamic-input/context.js +2 -2
  105. package/dist/components/dynamic-input/context.js.map +1 -1
  106. package/dist/components/editable/context.js +1 -1
  107. package/dist/components/editable/context.js.map +1 -1
  108. package/dist/components/empty-state/context.js +1 -1
  109. package/dist/components/empty-state/context.js.map +1 -1
  110. package/dist/components/field/context.d.ts +9 -0
  111. package/dist/components/field/context.d.ts.map +1 -0
  112. package/dist/components/field/context.js +6 -2
  113. package/dist/components/field/context.js.map +1 -1
  114. package/dist/components/field/field.d.ts +26 -2
  115. package/dist/components/field/field.d.ts.map +1 -1
  116. package/dist/components/field/field.js +15 -4
  117. package/dist/components/field/field.js.map +1 -1
  118. package/dist/components/field/use-field-control.d.ts +41 -0
  119. package/dist/components/field/use-field-control.d.ts.map +1 -0
  120. package/dist/components/field/use-field-control.js +77 -0
  121. package/dist/components/field/use-field-control.js.map +1 -0
  122. package/dist/components/fieldset/context.js +1 -1
  123. package/dist/components/fieldset/context.js.map +1 -1
  124. package/dist/components/file-upload/context.js +2 -2
  125. package/dist/components/file-upload/context.js.map +1 -1
  126. package/dist/components/flex/flex.d.ts +9 -0
  127. package/dist/components/flex/flex.d.ts.map +1 -1
  128. package/dist/components/flex/flex.js +4 -0
  129. package/dist/components/flex/flex.js.map +1 -1
  130. package/dist/components/float-button/context.js +1 -1
  131. package/dist/components/float-button/context.js.map +1 -1
  132. package/dist/components/float-button/float-button.d.ts +1 -1
  133. package/dist/components/floating-panel/context.js +1 -1
  134. package/dist/components/floating-panel/context.js.map +1 -1
  135. package/dist/components/floating-panel/floating-panel.d.ts +1 -1
  136. package/dist/components/form/context.js +2 -2
  137. package/dist/components/form/context.js.map +1 -1
  138. package/dist/components/form/form.d.ts +1 -1
  139. package/dist/components/grid/context.js +1 -1
  140. package/dist/components/grid/context.js.map +1 -1
  141. package/dist/components/heatmap/context.js +3 -3
  142. package/dist/components/heatmap/context.js.map +1 -1
  143. package/dist/components/heatmap/heatmap.d.ts +1 -1
  144. package/dist/components/hotkeys/hotkeys.d.ts +3 -1
  145. package/dist/components/hotkeys/hotkeys.d.ts.map +1 -1
  146. package/dist/components/hotkeys/hotkeys.js +7 -25
  147. package/dist/components/hotkeys/hotkeys.js.map +1 -1
  148. package/dist/components/hotkeys/use-hotkeys.d.ts +31 -0
  149. package/dist/components/hotkeys/use-hotkeys.d.ts.map +1 -0
  150. package/dist/components/hotkeys/use-hotkeys.js +60 -0
  151. package/dist/components/hotkeys/use-hotkeys.js.map +1 -0
  152. package/dist/components/hover-card/context.js +1 -1
  153. package/dist/components/hover-card/context.js.map +1 -1
  154. package/dist/components/hover-card/hover-card.d.ts +1 -1
  155. package/dist/components/hover-card/hover-card.d.ts.map +1 -1
  156. package/dist/components/hover-card/hover-card.js +3 -1
  157. package/dist/components/hover-card/hover-card.js.map +1 -1
  158. package/dist/components/hover-card/use-hover-card.js +1 -1
  159. package/dist/components/hover-card/use-hover-card.js.map +1 -1
  160. package/dist/components/icon/icon.d.ts +1 -1
  161. package/dist/components/icon-wrapper/icon-wrapper.d.ts +1 -1
  162. package/dist/components/image/context.js +1 -1
  163. package/dist/components/image/context.js.map +1 -1
  164. package/dist/components/image-cropper/context.js +1 -1
  165. package/dist/components/image-cropper/context.js.map +1 -1
  166. package/dist/components/image-cropper/image-cropper.d.ts +1 -1
  167. package/dist/components/image-viewer/context.js +1 -1
  168. package/dist/components/image-viewer/context.js.map +1 -1
  169. package/dist/components/image-viewer/image-viewer.d.ts +1 -1
  170. package/dist/components/infinite-scroll/context.js +1 -1
  171. package/dist/components/infinite-scroll/context.js.map +1 -1
  172. package/dist/components/infinite-scroll/infinite-scroll.d.ts +1 -1
  173. package/dist/components/json-viewer/json-viewer.d.ts +12 -3
  174. package/dist/components/json-viewer/json-viewer.d.ts.map +1 -1
  175. package/dist/components/json-viewer/json-viewer.js +23 -2
  176. package/dist/components/json-viewer/json-viewer.js.map +1 -1
  177. package/dist/components/layout/context.js +1 -1
  178. package/dist/components/layout/context.js.map +1 -1
  179. package/dist/components/list/context.js +1 -1
  180. package/dist/components/list/context.js.map +1 -1
  181. package/dist/components/list/list.d.ts +1 -1
  182. package/dist/components/listbox/context.js +3 -3
  183. package/dist/components/listbox/context.js.map +1 -1
  184. package/dist/components/listbox/listbox.d.ts +1 -1
  185. package/dist/components/loading-bar/context.js +1 -1
  186. package/dist/components/loading-bar/context.js.map +1 -1
  187. package/dist/components/log/context.js +1 -1
  188. package/dist/components/log/context.js.map +1 -1
  189. package/dist/components/marquee/context.js +1 -1
  190. package/dist/components/marquee/context.js.map +1 -1
  191. package/dist/components/mention/context.js +2 -2
  192. package/dist/components/mention/context.js.map +1 -1
  193. package/dist/components/mention/mention.d.ts +4 -4
  194. package/dist/components/mention/mention.d.ts.map +1 -1
  195. package/dist/components/mention/mention.js +10 -4
  196. package/dist/components/mention/mention.js.map +1 -1
  197. package/dist/components/mention/use-mention.js +1 -1
  198. package/dist/components/mention/use-mention.js.map +1 -1
  199. package/dist/components/menu/context.js +4 -4
  200. package/dist/components/menu/context.js.map +1 -1
  201. package/dist/components/menu/menu.d.ts +3 -3
  202. package/dist/components/menu/menu.d.ts.map +1 -1
  203. package/dist/components/menu/menu.js +3 -1
  204. package/dist/components/menu/menu.js.map +1 -1
  205. package/dist/components/menu/use-menu.js +1 -1
  206. package/dist/components/menu/use-menu.js.map +1 -1
  207. package/dist/components/menubar/context.js +6 -6
  208. package/dist/components/menubar/context.js.map +1 -1
  209. package/dist/components/menubar/menubar.d.ts +2 -2
  210. package/dist/components/menubar/menubar.js.map +1 -1
  211. package/dist/components/navigation-menu/context.js +1 -1
  212. package/dist/components/navigation-menu/context.js.map +1 -1
  213. package/dist/components/navigation-menu/navigation-menu.d.ts +1 -1
  214. package/dist/components/notification/context.d.ts +23 -0
  215. package/dist/components/notification/context.d.ts.map +1 -0
  216. package/dist/components/notification/context.js +28 -0
  217. package/dist/components/notification/context.js.map +1 -0
  218. package/dist/components/notification/notification.d.ts +249 -0
  219. package/dist/components/notification/notification.d.ts.map +1 -0
  220. package/dist/components/notification/notification.js +179 -0
  221. package/dist/components/notification/notification.js.map +1 -0
  222. package/dist/components/notification/use-notification.d.ts +14 -0
  223. package/dist/components/notification/use-notification.d.ts.map +1 -0
  224. package/dist/components/notification/use-notification.js +42 -0
  225. package/dist/components/notification/use-notification.js.map +1 -0
  226. package/dist/components/number-animation/number-animation.d.ts +2 -2
  227. package/dist/components/number-field/context.js +1 -1
  228. package/dist/components/number-field/context.js.map +1 -1
  229. package/dist/components/number-field/number-field.d.ts +3 -3
  230. package/dist/components/number-field/number-field.d.ts.map +1 -1
  231. package/dist/components/number-field/number-field.js +7 -1
  232. package/dist/components/number-field/number-field.js.map +1 -1
  233. package/dist/components/page-header/context.js +1 -1
  234. package/dist/components/page-header/context.js.map +1 -1
  235. package/dist/components/pagination/context.js +1 -1
  236. package/dist/components/pagination/context.js.map +1 -1
  237. package/dist/components/pagination/pagination.d.ts +59 -5
  238. package/dist/components/pagination/pagination.d.ts.map +1 -1
  239. package/dist/components/pagination/pagination.js +85 -5
  240. package/dist/components/pagination/pagination.js.map +1 -1
  241. package/dist/components/pagination/use-pagination.d.ts +12 -2
  242. package/dist/components/pagination/use-pagination.d.ts.map +1 -1
  243. package/dist/components/pagination/use-pagination.js +50 -5
  244. package/dist/components/pagination/use-pagination.js.map +1 -1
  245. package/dist/components/password-input/context.js +1 -1
  246. package/dist/components/password-input/context.js.map +1 -1
  247. package/dist/components/password-input/password-input.d.ts +3 -3
  248. package/dist/components/password-input/password-input.d.ts.map +1 -1
  249. package/dist/components/password-input/password-input.js +7 -1
  250. package/dist/components/password-input/password-input.js.map +1 -1
  251. package/dist/components/pin-input/context.js +1 -1
  252. package/dist/components/pin-input/context.js.map +1 -1
  253. package/dist/components/pin-input/pin-input.d.ts +2 -2
  254. package/dist/components/popconfirm/context.js +1 -1
  255. package/dist/components/popconfirm/context.js.map +1 -1
  256. package/dist/components/popover/context.js +1 -1
  257. package/dist/components/popover/context.js.map +1 -1
  258. package/dist/components/popover/popover.d.ts.map +1 -1
  259. package/dist/components/popover/popover.js +3 -1
  260. package/dist/components/popover/popover.js.map +1 -1
  261. package/dist/components/popover/use-popover.js +1 -1
  262. package/dist/components/popover/use-popover.js.map +1 -1
  263. package/dist/components/popselect/context.js +2 -2
  264. package/dist/components/popselect/context.js.map +1 -1
  265. package/dist/components/popselect/popselect.d.ts +2 -2
  266. package/dist/components/popselect/popselect.d.ts.map +1 -1
  267. package/dist/components/popselect/popselect.js +5 -2
  268. package/dist/components/popselect/popselect.js.map +1 -1
  269. package/dist/components/popselect/use-popselect.js +1 -1
  270. package/dist/components/popselect/use-popselect.js.map +1 -1
  271. package/dist/components/progress/progress.d.ts +1 -1
  272. package/dist/components/qr-code/context.js +1 -1
  273. package/dist/components/qr-code/context.js.map +1 -1
  274. package/dist/components/radio-group/context.js +2 -2
  275. package/dist/components/radio-group/context.js.map +1 -1
  276. package/dist/components/radio-group/radio-group.d.ts +1 -1
  277. package/dist/components/rating/context.js +1 -1
  278. package/dist/components/rating/context.js.map +1 -1
  279. package/dist/components/rating/rating.d.ts +2 -2
  280. package/dist/components/resizable/context.d.ts +7 -0
  281. package/dist/components/resizable/context.d.ts.map +1 -0
  282. package/dist/components/resizable/context.js +15 -0
  283. package/dist/components/resizable/context.js.map +1 -0
  284. package/dist/components/resizable/resizable.d.ts +174 -0
  285. package/dist/components/resizable/resizable.d.ts.map +1 -0
  286. package/dist/components/resizable/resizable.js +108 -0
  287. package/dist/components/resizable/resizable.js.map +1 -0
  288. package/dist/components/resizable/use-resizable.d.ts +14 -0
  289. package/dist/components/resizable/use-resizable.d.ts.map +1 -0
  290. package/dist/components/resizable/use-resizable.js +25 -0
  291. package/dist/components/resizable/use-resizable.js.map +1 -0
  292. package/dist/components/result/context.js +1 -1
  293. package/dist/components/result/context.js.map +1 -1
  294. package/dist/components/scroll-area/context.js +2 -2
  295. package/dist/components/scroll-area/context.js.map +1 -1
  296. package/dist/components/scroll-area/scroll-area.d.ts +1 -1
  297. package/dist/components/scrollbar/context.js +1 -1
  298. package/dist/components/scrollbar/context.js.map +1 -1
  299. package/dist/components/scrollbar/scrollbar.d.ts +1 -1
  300. package/dist/components/segmented/context.js +2 -2
  301. package/dist/components/segmented/context.js.map +1 -1
  302. package/dist/components/segmented/segmented.d.ts +1 -1
  303. package/dist/components/select/context.js +3 -3
  304. package/dist/components/select/context.js.map +1 -1
  305. package/dist/components/select/select.d.ts +3 -3
  306. package/dist/components/select/select.d.ts.map +1 -1
  307. package/dist/components/select/select.js +7 -3
  308. package/dist/components/select/select.js.map +1 -1
  309. package/dist/components/side-nav/context.js +2 -2
  310. package/dist/components/side-nav/context.js.map +1 -1
  311. package/dist/components/side-nav/side-nav.d.ts +1 -1
  312. package/dist/components/signature-pad/context.js +1 -1
  313. package/dist/components/signature-pad/context.js.map +1 -1
  314. package/dist/components/skeleton/context.js +1 -1
  315. package/dist/components/skeleton/context.js.map +1 -1
  316. package/dist/components/slider/context.js +2 -2
  317. package/dist/components/slider/context.js.map +1 -1
  318. package/dist/components/slider/slider.d.ts +2 -2
  319. package/dist/components/sortable/context.d.ts +7 -0
  320. package/dist/components/sortable/context.d.ts.map +1 -0
  321. package/dist/components/sortable/context.js +15 -0
  322. package/dist/components/sortable/context.js.map +1 -0
  323. package/dist/components/sortable/sortable.d.ts +166 -0
  324. package/dist/components/sortable/sortable.d.ts.map +1 -0
  325. package/dist/components/sortable/sortable.js +128 -0
  326. package/dist/components/sortable/sortable.js.map +1 -0
  327. package/dist/components/sortable/use-sortable.d.ts +14 -0
  328. package/dist/components/sortable/use-sortable.d.ts.map +1 -0
  329. package/dist/components/sortable/use-sortable.js +26 -0
  330. package/dist/components/sortable/use-sortable.js.map +1 -0
  331. package/dist/components/space/context.js +1 -1
  332. package/dist/components/space/context.js.map +1 -1
  333. package/dist/components/space/space.d.ts +9 -0
  334. package/dist/components/space/space.d.ts.map +1 -1
  335. package/dist/components/space/space.js +4 -0
  336. package/dist/components/space/space.js.map +1 -1
  337. package/dist/components/spinner/context.js +1 -1
  338. package/dist/components/spinner/context.js.map +1 -1
  339. package/dist/components/spinner/spinner.d.ts +1 -1
  340. package/dist/components/splitter/context.js +1 -1
  341. package/dist/components/splitter/context.js.map +1 -1
  342. package/dist/components/statistic/context.js +1 -1
  343. package/dist/components/statistic/context.js.map +1 -1
  344. package/dist/components/statistic/statistic.d.ts +1 -1
  345. package/dist/components/steps/context.js +2 -2
  346. package/dist/components/steps/context.js.map +1 -1
  347. package/dist/components/steps/steps.d.ts +1 -1
  348. package/dist/components/switch/switch.d.ts +1 -1
  349. package/dist/components/table/context.js +4 -4
  350. package/dist/components/table/context.js.map +1 -1
  351. package/dist/components/table/table.d.ts +108 -5
  352. package/dist/components/table/table.d.ts.map +1 -1
  353. package/dist/components/table/table.js +94 -8
  354. package/dist/components/table/table.js.map +1 -1
  355. package/dist/components/table/use-table.d.ts +1 -1
  356. package/dist/components/table/use-table.d.ts.map +1 -1
  357. package/dist/components/table/use-table.js +4 -2
  358. package/dist/components/table/use-table.js.map +1 -1
  359. package/dist/components/tabs/context.js +1 -1
  360. package/dist/components/tabs/context.js.map +1 -1
  361. package/dist/components/tabs/tabs.d.ts +48 -3
  362. package/dist/components/tabs/tabs.d.ts.map +1 -1
  363. package/dist/components/tabs/tabs.js +45 -3
  364. package/dist/components/tabs/tabs.js.map +1 -1
  365. package/dist/components/tabs/use-tabs.d.ts +1 -1
  366. package/dist/components/tabs/use-tabs.d.ts.map +1 -1
  367. package/dist/components/tabs/use-tabs.js +3 -2
  368. package/dist/components/tabs/use-tabs.js.map +1 -1
  369. package/dist/components/tag/context.js +1 -1
  370. package/dist/components/tag/context.js.map +1 -1
  371. package/dist/components/tag/use-tag.js +14 -2
  372. package/dist/components/tag/use-tag.js.map +1 -1
  373. package/dist/components/tags-input/context.js +2 -2
  374. package/dist/components/tags-input/context.js.map +1 -1
  375. package/dist/components/tags-input/tags-input.d.ts +4 -4
  376. package/dist/components/tags-input/tags-input.d.ts.map +1 -1
  377. package/dist/components/tags-input/tags-input.js +7 -1
  378. package/dist/components/tags-input/tags-input.js.map +1 -1
  379. package/dist/components/text-field/context.js +1 -1
  380. package/dist/components/text-field/context.js.map +1 -1
  381. package/dist/components/text-field/text-field.d.ts +2 -2
  382. package/dist/components/text-field/text-field.d.ts.map +1 -1
  383. package/dist/components/text-field/text-field.js +9 -4
  384. package/dist/components/text-field/text-field.js.map +1 -1
  385. package/dist/components/thread/context.d.ts +7 -0
  386. package/dist/components/thread/context.d.ts.map +1 -0
  387. package/dist/components/thread/context.js +1 -1
  388. package/dist/components/thread/context.js.map +1 -1
  389. package/dist/components/time-field/context.js +1 -1
  390. package/dist/components/time-field/context.js.map +1 -1
  391. package/dist/components/time-field/time-field.d.ts +4 -4
  392. package/dist/components/time-picker/context.js +2 -2
  393. package/dist/components/time-picker/context.js.map +1 -1
  394. package/dist/components/time-picker/time-picker.d.ts +4 -4
  395. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  396. package/dist/components/time-picker/time-picker.js +10 -1
  397. package/dist/components/time-picker/time-picker.js.map +1 -1
  398. package/dist/components/time-picker/use-time-picker.d.ts +1 -0
  399. package/dist/components/time-picker/use-time-picker.d.ts.map +1 -1
  400. package/dist/components/time-picker/use-time-picker.js +3 -0
  401. package/dist/components/time-picker/use-time-picker.js.map +1 -1
  402. package/dist/components/timeline/context.js +2 -2
  403. package/dist/components/timeline/context.js.map +1 -1
  404. package/dist/components/timeline/timeline.d.ts +1 -1
  405. package/dist/components/timer/context.js +1 -1
  406. package/dist/components/timer/context.js.map +1 -1
  407. package/dist/components/toast/context.js +1 -1
  408. package/dist/components/toast/context.js.map +1 -1
  409. package/dist/components/toast/toast.d.ts +2 -14
  410. package/dist/components/toast/toast.d.ts.map +1 -1
  411. package/dist/components/toast/toast.js +1 -12
  412. package/dist/components/toast/toast.js.map +1 -1
  413. package/dist/components/toast/use-toast.d.ts.map +1 -1
  414. package/dist/components/toast/use-toast.js +1 -7
  415. package/dist/components/toast/use-toast.js.map +1 -1
  416. package/dist/components/toggle-group/context.js +1 -1
  417. package/dist/components/toggle-group/context.js.map +1 -1
  418. package/dist/components/toggle-group/toggle-group.d.ts +10 -1
  419. package/dist/components/toggle-group/toggle-group.d.ts.map +1 -1
  420. package/dist/components/toggle-group/toggle-group.js +4 -0
  421. package/dist/components/toggle-group/toggle-group.js.map +1 -1
  422. package/dist/components/toolbar/context.js +1 -1
  423. package/dist/components/toolbar/context.js.map +1 -1
  424. package/dist/components/toolbar/toolbar.d.ts +1 -1
  425. package/dist/components/tooltip/context.js +1 -1
  426. package/dist/components/tooltip/context.js.map +1 -1
  427. package/dist/components/tooltip/tooltip.d.ts +1 -1
  428. package/dist/components/tour/context.js +1 -1
  429. package/dist/components/tour/context.js.map +1 -1
  430. package/dist/components/tour/tour.d.ts +2 -2
  431. package/dist/components/transfer/context.js +3 -3
  432. package/dist/components/transfer/context.js.map +1 -1
  433. package/dist/components/tree/context.js +2 -2
  434. package/dist/components/tree/context.js.map +1 -1
  435. package/dist/components/tree/tree.d.ts +66 -2
  436. package/dist/components/tree/tree.d.ts.map +1 -1
  437. package/dist/components/tree/tree.js +54 -3
  438. package/dist/components/tree/tree.js.map +1 -1
  439. package/dist/components/tree/use-tree.d.ts +1 -1
  440. package/dist/components/tree/use-tree.d.ts.map +1 -1
  441. package/dist/components/tree/use-tree.js +3 -2
  442. package/dist/components/tree/use-tree.js.map +1 -1
  443. package/dist/components/tree-select/context.js +2 -2
  444. package/dist/components/tree-select/context.js.map +1 -1
  445. package/dist/components/tree-select/tree-select.d.ts +4 -4
  446. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  447. package/dist/components/tree-select/tree-select.js +14 -4
  448. package/dist/components/tree-select/tree-select.js.map +1 -1
  449. package/dist/components/tree-select/use-tree-select.js +1 -1
  450. package/dist/components/tree-select/use-tree-select.js.map +1 -1
  451. package/dist/components/typography/context.js +1 -1
  452. package/dist/components/typography/context.js.map +1 -1
  453. package/dist/components/virtualizer/context.js +1 -1
  454. package/dist/components/virtualizer/context.js.map +1 -1
  455. package/dist/components/watermark/context.js +1 -1
  456. package/dist/components/watermark/context.js.map +1 -1
  457. package/dist/config/config.js +1 -1
  458. package/dist/config/config.js.map +1 -1
  459. package/dist/index.d.ts +25 -12
  460. package/dist/index.js +24 -11
  461. package/dist/package.js +1 -1
  462. package/dist/runtime/use-scrollbars.js +66 -0
  463. package/dist/runtime/use-scrollbars.js.map +1 -0
  464. package/dist/services/dialog-service.d.ts +33 -8
  465. package/dist/services/dialog-service.d.ts.map +1 -1
  466. package/dist/services/dialog-service.js +44 -20
  467. package/dist/services/dialog-service.js.map +1 -1
  468. package/dist/services/glyph.js +41 -1
  469. package/dist/services/glyph.js.map +1 -1
  470. package/dist/services/loading-bar-service.d.ts +46 -0
  471. package/dist/services/loading-bar-service.d.ts.map +1 -0
  472. package/dist/services/loading-bar-service.js +70 -0
  473. package/dist/services/loading-bar-service.js.map +1 -0
  474. package/dist/services/mount-host.js +35 -0
  475. package/dist/services/mount-host.js.map +1 -0
  476. package/dist/services/notification-service.d.ts +46 -0
  477. package/dist/services/notification-service.d.ts.map +1 -0
  478. package/dist/services/notification-service.js +91 -0
  479. package/dist/services/notification-service.js.map +1 -0
  480. package/dist/services/service-config.js +16 -0
  481. package/dist/services/service-config.js.map +1 -0
  482. package/dist/services/toast-service.d.ts +20 -12
  483. package/dist/services/toast-service.d.ts.map +1 -1
  484. package/dist/services/toast-service.js +103 -50
  485. package/dist/services/toast-service.js.map +1 -1
  486. package/package.json +19 -14
  487. package/dist/components/toaster/context.js +0 -19
  488. package/dist/components/toaster/context.js.map +0 -1
  489. package/dist/components/toaster/toaster.d.ts +0 -135
  490. package/dist/components/toaster/toaster.d.ts.map +0 -1
  491. package/dist/components/toaster/toaster.js +0 -91
  492. package/dist/components/toaster/toaster.js.map +0 -1
  493. package/dist/components/toaster/use-toaster.d.ts +0 -15
  494. package/dist/components/toaster/use-toaster.d.ts.map +0 -1
  495. package/dist/components/toaster/use-toaster.js +0 -23
  496. package/dist/components/toaster/use-toaster.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.js","names":[],"sources":["../../../src/components/toggle-group/toggle-group.ts"],"sourcesContent":["import type { ToggleGroupNode, ToggleGroupNodeMeta, ToggleGroupSchema, ToggleGroupValue } from '@xihan-ui/headless'\nimport type { Direction, Orientation } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideToggleGroup, useToggleGroupContext } from './context'\nimport { useToggleGroup } from './use-toggle-group'\n\ntype ToggleGroupProps = ToggleGroupSchema['props']\n\nexport const XhToggleGroupRoot = defineComponent({\n name: 'XhToggleGroupRoot',\n // 全部 default: undefined,缺省值由 connect 决定\n props: {\n collection: { type: Array as PropType<ToggleGroupNode[]>, default: undefined },\n value: { type: [String, Array] as PropType<ToggleGroupValue>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<ToggleGroupValue>, default: undefined },\n multiple: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n disallowEmpty: { type: Boolean, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n loop: { type: Boolean, default: undefined },\n rovingFocus: { type: Boolean, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸值;裸值形态跟随 multiple,单选为字符串、多选为数组\n emits: {\n 'value-change': (_details: PayloadOf<ToggleGroupProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<ToggleGroupProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: ToggleGroupProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useToggleGroup(props as ToggleGroupProps, notify)\n provideToggleGroup(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default()\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.item)\n : [],\n )\n },\n})\n\nexport const XhToggleGroupItem = defineComponent({\n name: 'XhToggleGroupItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useToggleGroupContext()\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报整组失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'GROUP.BLUR' })\n })\n // 用原生 button,激活交给平台\n return () => h(\n 'button',\n { ...ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 条目底下没有文本部件,文字直接落在条目里。\n */\nfunction renderDefaultTree(\n collection: readonly ToggleGroupNodeMeta[],\n itemSlot?: (node: ToggleGroupNodeMeta) => VNode[],\n): VNode[] {\n return collection.map(node => h(\n XhToggleGroupItem,\n { key: node.value, value: node.value },\n () => itemSlot?.(node) ?? node.label,\n ))\n}\n"],"mappings":";;;;AAUA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EAC7E,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAiC,SAAS,KAAA;EAAU;EACjF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAiC,SAAS,KAAA;EAAU;EACxF,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CACnD;CAEA,OAAO;EACL,iBAAiB,aAA2D;EAC5E,iBAAiB,WAAkE;CACrF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA6C,YAAY;GAC7D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,eAAe,OAA2B,MAAM;EAC5D,mBAAmB,GAAG;EACtB,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,GAC3B,MAAM,UACF,MAAM,QAAQ,IACd,MAAM,aACJ,kBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,IAAI,IACtD,CAAC,CACT;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,sBAAsB;EAElC,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;EACvC,CAAC;EAED,aAAa,EACX,UACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa;IAAE,OAAO,MAAM;IAAO,UAAU,MAAM;GAAS,CAAC;GAA8B,KAAK;EAAO,GAC1H,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;;;;AAOD,SAAS,kBACP,YACA,UACS;CACT,OAAO,WAAW,KAAI,SAAQ,EAC5B,mBACA;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAC/B,WAAW,IAAI,KAAK,KAAK,KACjC,CAAC;AACH"}
1
+ {"version":3,"file":"toggle-group.js","names":[],"sources":["../../../src/components/toggle-group/toggle-group.ts"],"sourcesContent":["import type { ToggleGroupNode, ToggleGroupNodeMeta, ToggleGroupSchema, ToggleGroupValue } from '@xihan-ui/headless'\nimport type { Direction, Orientation, Size } from '@xihan-ui/kernel'\nimport type { PropType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideToggleGroup, useToggleGroupContext } from './context'\nimport { useToggleGroup } from './use-toggle-group'\n\ntype ToggleGroupProps = ToggleGroupSchema['props']\n\nexport const XhToggleGroupRoot = defineComponent({\n name: 'XhToggleGroupRoot',\n // 全部 default: undefined,缺省值由 connect 决定\n props: {\n collection: { type: Array as PropType<ToggleGroupNode[]>, default: undefined },\n value: { type: [String, Array] as PropType<ToggleGroupValue>, default: undefined },\n defaultValue: { type: [String, Array] as PropType<ToggleGroupValue>, default: undefined },\n multiple: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n disallowEmpty: { type: Boolean, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n orientation: { type: String as PropType<Orientation>, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n loop: { type: Boolean, default: undefined },\n rovingFocus: { type: Boolean, default: undefined },\n },\n // value-change 携带 { value },update:value 携带裸值;裸值形态跟随 multiple,单选为字符串、多选为数组\n emits: {\n 'value-change': (_details: PayloadOf<ToggleGroupProps, 'onValueChange'>) => true,\n 'update:value': (_value: PayloadOf<ToggleGroupProps, 'onValueChange'>['value']) => true,\n },\n setup(props, { slots, emit }) {\n const notify: ToggleGroupProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const ctx = useToggleGroup(props as ToggleGroupProps, notify)\n provideToggleGroup(ctx)\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default()\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.item)\n : [],\n )\n },\n})\n\nexport const XhToggleGroupItem = defineComponent({\n name: 'XhToggleGroupItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useToggleGroupContext()\n // 本条目持有焦点时,value 变更重报焦点条目,卸载时上报整组失焦\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'GROUP.BLUR' })\n })\n // 用原生 button,激活交给平台\n return () => h(\n 'button',\n { ...ctx.api.value.getItemProps({ value: props.value, disabled: props.disabled }) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\n/**\n * 没写默认插槽时按 collection 铺开的整套结构,作者只交数据。\n * 与手写部件产出的 DOM 完全一致,要改结构就写默认插槽,行为不变。\n * 条目底下没有文本部件,文字直接落在条目里。\n */\nfunction renderDefaultTree(\n collection: readonly ToggleGroupNodeMeta[],\n itemSlot?: (node: ToggleGroupNodeMeta) => VNode[],\n): VNode[] {\n return collection.map(node => h(\n XhToggleGroupItem,\n { key: node.value, value: node.value },\n () => itemSlot?.(node) ?? node.label,\n ))\n}\n"],"mappings":";;;;AAUA,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAAsC,SAAS,KAAA;EAAU;EAC7E,OAAO;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAiC,SAAS,KAAA;EAAU;EACjF,cAAc;GAAE,MAAM,CAAC,QAAQ,KAAK;GAAiC,SAAS,KAAA;EAAU;EACxF,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,MAAM;GAAE,MAAM;GAA0B,SAAS,KAAA;EAAU;EAC3D,aAAa;GAAE,MAAM;GAAiC,SAAS,KAAA;EAAU;EACzE,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAC/D,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CACnD;CAEA,OAAO;EACL,iBAAiB,aAA2D;EAC5E,iBAAiB,WAAkE;CACrF;CACA,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAA6C,YAAY;GAC7D,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,MAAM,eAAe,OAA2B,MAAM;EAC5D,mBAAmB,GAAG;EACtB,aAAa,EACX,OACA,IAAI,IAAI,MAAM,aAAa,GAC3B,MAAM,UACF,MAAM,QAAQ,IACd,MAAM,aACJ,kBAAkB,IAAI,IAAI,MAAM,YAAY,MAAM,IAAI,IACtD,CAAC,CACT;CACF;AACF,CAAC;AAED,MAAa,oBAAoB,gBAAgB;CAC/C,MAAM;CACN,OAAO;EACL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;EAEtC,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CAChD;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,sBAAsB;EAElC,MAAM,SAAS,IAAwB,IAAI;EAC3C,YAAY,MAAM,QAAQ,MAAM,SAAS;GACvC,IAAI,SAAS,MACX;GACF,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GACF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK;IAAE,MAAM;IAAc,OAAO;GAAK,CAAC;EACpD,CAAC;EACD,sBAAsB;GACpB,MAAM,EAAE,YAAY;GACpB,IAAI,QAAQ,UAAU,MAAM,WAC1B;GAEF,IAAI,OAAO,SAAS,QAAQ,MAAM,iBAAiB,MAAM,OAAO,OAC9D,QAAQ,KAAK,EAAE,MAAM,aAAa,CAAC;EACvC,CAAC;EAED,aAAa,EACX,UACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa;IAAE,OAAO,MAAM;IAAO,UAAU,MAAM;GAAS,CAAC;GAA8B,KAAK;EAAO,GAC1H,MAAM,UAAU,CAClB;CACF;AACF,CAAC;;;;;;AAOD,SAAS,kBACP,YACA,UACS;CACT,OAAO,WAAW,KAAI,SAAQ,EAC5B,mBACA;EAAE,KAAK,KAAK;EAAO,OAAO,KAAK;CAAM,SAC/B,WAAW,IAAI,KAAK,KAAK,KACjC,CAAC;AACH"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/toolbar/context.ts
3
- const KEY = Symbol("xh-toolbar");
3
+ const KEY = Symbol.for("xh-toolbar");
4
4
  function provideToolbar(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toolbar/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToolbarContext } from './use-toolbar'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToolbarContext> = Symbol('xh-toolbar')\n\nexport function provideToolbar(ctx: ToolbarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToolbarContext(): ToolbarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Toolbar 部件必须用在 XhToolbarRoot 内')\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,qCAAqC;CACvD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toolbar/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToolbarContext } from './use-toolbar'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToolbarContext> = Symbol.for('xh-toolbar')\n\nexport function provideToolbar(ctx: ToolbarContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToolbarContext(): ToolbarContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Toolbar 部件必须用在 XhToolbarRoot 内')\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,qCAAqC;CACvD,OAAO;AACT"}
@@ -49,9 +49,9 @@ declare const XhToolbarRoot: import("vue").DefineComponent<import("vue").Extract
49
49
  default: undefined;
50
50
  };
51
51
  }>> & Readonly<{}>, {
52
- size: Size;
53
52
  orientation: Orientation;
54
53
  dir: Direction;
54
+ size: Size;
55
55
  disabled: boolean;
56
56
  loop: boolean;
57
57
  }, SlotsType<{
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/tooltip/context.ts
3
- const KEY = Symbol("xh-tooltip");
3
+ const KEY = Symbol.for("xh-tooltip");
4
4
  function provideTooltip(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tooltip/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TooltipContext } from './use-tooltip'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TooltipContext> = Symbol('xh-tooltip')\n\nexport function provideTooltip(ctx: TooltipContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTooltipContext(): TooltipContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tooltip 部件必须用在 XhTooltipRoot 内')\n return ctx\n}\n"],"mappings":";;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,qCAAqC;CACvD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tooltip/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TooltipContext } from './use-tooltip'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TooltipContext> = Symbol.for('xh-tooltip')\n\nexport function provideTooltip(ctx: TooltipContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTooltipContext(): TooltipContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tooltip 部件必须用在 XhTooltipRoot 内')\n return ctx\n}\n"],"mappings":";;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,qCAAqC;CACvD,OAAO;AACT"}
@@ -77,8 +77,8 @@ declare const XhTooltipRoot: import("vue").DefineComponent<import("vue").Extract
77
77
  "onOpen-change"?: ((_details: import("@xihan-ui/headless").TooltipOpenChangeDetails) => any) | undefined;
78
78
  "onUpdate:open"?: ((_open: boolean) => any) | undefined;
79
79
  }>, {
80
- size: Size;
81
80
  tone: Tone;
81
+ size: Size;
82
82
  disabled: boolean;
83
83
  open: boolean;
84
84
  defaultOpen: boolean;
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/tour/context.ts
3
- const KEY = Symbol("xh-tour");
3
+ const KEY = Symbol.for("xh-tour");
4
4
  function provideTour(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tour/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TourContext } from './use-tour'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TourContext> = Symbol('xh-tour')\n\nexport function provideTour(ctx: TourContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTourContext(): TourContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tour 部件必须用在 XhTourRoot 内')\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/tour/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TourContext } from './use-tour'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TourContext> = Symbol.for('xh-tour')\n\nexport function provideTour(ctx: TourContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTourContext(): TourContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tour 部件必须用在 XhTourRoot 内')\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"}
@@ -133,15 +133,15 @@ declare const XhTourRoot: import("vue").DefineComponent<import("vue").ExtractPro
133
133
  defaultOpen: boolean;
134
134
  translations: Partial<import("@xihan-ui/headless").TourTranslations> | undefined;
135
135
  offset: number;
136
- steps: TourStep[];
137
136
  placement: Placement;
137
+ steps: TourStep[];
138
138
  closeOnEscape: boolean;
139
139
  closeOnInteractOutside: boolean;
140
140
  step: number;
141
+ autoScroll: boolean;
141
142
  defaultStep: number;
142
143
  showBackdrop: boolean;
143
144
  spotlightPadding: number;
144
- autoScroll: boolean;
145
145
  }, SlotsType<{
146
146
  default?: (props: TourRootSlotProps) => VNode[];
147
147
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -1,8 +1,8 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/transfer/context.ts
3
- const KEY = Symbol("xh-transfer");
4
- const PANEL_KEY = Symbol("xh-transfer-panel");
5
- const ITEM_KEY = Symbol("xh-transfer-item");
3
+ const KEY = Symbol.for("xh-transfer");
4
+ const PANEL_KEY = Symbol.for("xh-transfer-panel");
5
+ const ITEM_KEY = Symbol.for("xh-transfer-item");
6
6
  function provideTransfer(ctx) {
7
7
  provide(KEY, ctx);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/transfer/context.ts"],"sourcesContent":["import type { TransferItemProps, TransferPanelProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TransferContext } from './use-transfer'\nimport { inject, provide } from 'vue'\n\n/** 面板自报的身份,供面板内两侧共用的角色节点区分自己归哪一侧。 */\nexport interface TransferPanelContext {\n panel: ComputedRef<TransferPanelProps>\n}\n\n/** 条目自报的值与所属面板,供 item-text / item-checkbox 复用同一份声明。 */\nexport interface TransferItemContext {\n item: ComputedRef<TransferItemProps>\n}\n\nconst KEY: InjectionKey<TransferContext> = Symbol('xh-transfer')\nconst PANEL_KEY: InjectionKey<TransferPanelContext> = Symbol('xh-transfer-panel')\nconst ITEM_KEY: InjectionKey<TransferItemContext> = Symbol('xh-transfer-item')\n\nexport function provideTransfer(ctx: TransferContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTransferContext(): TransferContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Transfer 部件必须用在 XhTransferRoot 内')\n return ctx\n}\n\nexport function provideTransferPanel(ctx: TransferPanelContext): void {\n provide(PANEL_KEY, ctx)\n}\n\nexport function useTransferPanelContext(): TransferPanelContext {\n const ctx = inject(PANEL_KEY, null)\n if (!ctx)\n throw new Error('[xh] Transfer 面板子部件必须用在 XhTransferSourcePanel / XhTransferTargetPanel 内')\n return ctx\n}\n\nexport function provideTransferItem(ctx: TransferItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useTransferItemContext(): TransferItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Transfer 条目子部件必须用在 XhTransferItem 内')\n return ctx\n}\n"],"mappings":";;AAeA,MAAM,MAAqC,OAAO,aAAa;AAC/D,MAAM,YAAgD,OAAO,mBAAmB;AAChF,MAAM,WAA8C,OAAO,kBAAkB;AAE7E,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;AAEA,SAAgB,qBAAqB,KAAiC;CACpE,QAAQ,WAAW,GAAG;AACxB;AAEA,SAAgB,0BAAgD;CAC9D,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yEAAyE;CAC3F,OAAO;AACT;AAEA,SAAgB,oBAAoB,KAAgC;CAClE,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,yBAA8C;CAC5D,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,0CAA0C;CAC5D,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/transfer/context.ts"],"sourcesContent":["import type { TransferItemProps, TransferPanelProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TransferContext } from './use-transfer'\nimport { inject, provide } from 'vue'\n\n/** 面板自报的身份,供面板内两侧共用的角色节点区分自己归哪一侧。 */\nexport interface TransferPanelContext {\n panel: ComputedRef<TransferPanelProps>\n}\n\n/** 条目自报的值与所属面板,供 item-text / item-checkbox 复用同一份声明。 */\nexport interface TransferItemContext {\n item: ComputedRef<TransferItemProps>\n}\n\nconst KEY: InjectionKey<TransferContext> = Symbol.for('xh-transfer')\nconst PANEL_KEY: InjectionKey<TransferPanelContext> = Symbol.for('xh-transfer-panel')\nconst ITEM_KEY: InjectionKey<TransferItemContext> = Symbol.for('xh-transfer-item')\n\nexport function provideTransfer(ctx: TransferContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTransferContext(): TransferContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Transfer 部件必须用在 XhTransferRoot 内')\n return ctx\n}\n\nexport function provideTransferPanel(ctx: TransferPanelContext): void {\n provide(PANEL_KEY, ctx)\n}\n\nexport function useTransferPanelContext(): TransferPanelContext {\n const ctx = inject(PANEL_KEY, null)\n if (!ctx)\n throw new Error('[xh] Transfer 面板子部件必须用在 XhTransferSourcePanel / XhTransferTargetPanel 内')\n return ctx\n}\n\nexport function provideTransferItem(ctx: TransferItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useTransferItemContext(): TransferItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] Transfer 条目子部件必须用在 XhTransferItem 内')\n return ctx\n}\n"],"mappings":";;AAeA,MAAM,MAAqC,OAAO,IAAI,aAAa;AACnE,MAAM,YAAgD,OAAO,IAAI,mBAAmB;AACpF,MAAM,WAA8C,OAAO,IAAI,kBAAkB;AAEjF,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;AAEA,SAAgB,qBAAqB,KAAiC;CACpE,QAAQ,WAAW,GAAG;AACxB;AAEA,SAAgB,0BAAgD;CAC9D,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yEAAyE;CAC3F,OAAO;AACT;AAEA,SAAgB,oBAAoB,KAAgC;CAClE,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,yBAA8C;CAC5D,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,0CAA0C;CAC5D,OAAO;AACT"}
@@ -1,7 +1,7 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/tree/context.ts
3
- const KEY = Symbol("xh-tree");
4
- const NODE_KEY = Symbol("xh-tree-node");
3
+ const KEY = Symbol.for("xh-tree");
4
+ const NODE_KEY = Symbol.for("xh-tree-node");
5
5
  function provideTree(ctx) {
6
6
  provide(KEY, ctx);
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tree/context.ts"],"sourcesContent":["import type { TreeNodeProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TreeContext } from './use-tree'\nimport { inject, provide } from 'vue'\n\n/** 节点自报的值,供 item / branch 的子部件复用同一份声明;层级、禁用与标签回 collection 里查。 */\nexport interface TreeNodeContext {\n node: ComputedRef<TreeNodeProps>\n}\n\nconst KEY: InjectionKey<TreeContext> = Symbol('xh-tree')\nconst NODE_KEY: InjectionKey<TreeNodeContext> = Symbol('xh-tree-node')\n\nexport function provideTree(ctx: TreeContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTreeContext(): TreeContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tree 部件必须用在 XhTreeRoot 内')\n return ctx\n}\n\nexport function provideTreeNode(ctx: TreeNodeContext): void {\n provide(NODE_KEY, ctx)\n}\n\nexport function useTreeNodeContext(): TreeNodeContext {\n const ctx = inject(NODE_KEY, null)\n if (!ctx)\n throw new Error('[xh] Tree 节点子部件必须用在 XhTreeItem 或 XhTreeBranch 内')\n return ctx\n}\n"],"mappings":";;AAUA,MAAM,MAAiC,OAAO,SAAS;AACvD,MAAM,WAA0C,OAAO,cAAc;AAErE,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;AAEA,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iDAAiD;CACnE,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tree/context.ts"],"sourcesContent":["import type { TreeNodeProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TreeContext } from './use-tree'\nimport { inject, provide } from 'vue'\n\n/** 节点自报的值,供 item / branch 的子部件复用同一份声明;层级、禁用与标签回 collection 里查。 */\nexport interface TreeNodeContext {\n node: ComputedRef<TreeNodeProps>\n}\n\nconst KEY: InjectionKey<TreeContext> = Symbol.for('xh-tree')\nconst NODE_KEY: InjectionKey<TreeNodeContext> = Symbol.for('xh-tree-node')\n\nexport function provideTree(ctx: TreeContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTreeContext(): TreeContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Tree 部件必须用在 XhTreeRoot 内')\n return ctx\n}\n\nexport function provideTreeNode(ctx: TreeNodeContext): void {\n provide(NODE_KEY, ctx)\n}\n\nexport function useTreeNodeContext(): TreeNodeContext {\n const ctx = inject(NODE_KEY, null)\n if (!ctx)\n throw new Error('[xh] Tree 节点子部件必须用在 XhTreeItem 或 XhTreeBranch 内')\n return ctx\n}\n"],"mappings":";;AAUA,MAAM,MAAiC,OAAO,IAAI,SAAS;AAC3D,MAAM,WAA0C,OAAO,IAAI,cAAc;AAEzE,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;AAEA,SAAgB,gBAAgB,KAA4B;CAC1D,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,qBAAsC;CACpD,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iDAAiD;CACnE,OAAO;AACT"}
@@ -27,6 +27,15 @@ declare const XhTreeRoot: import("vue").DefineComponent<import("vue").ExtractPro
27
27
  type: PropType<string[]>;
28
28
  default: undefined;
29
29
  };
30
+ multiple: {
31
+ type: BooleanConstructor;
32
+ default: undefined;
33
+ };
34
+ /** 末端那一层怎么排,默认 vertical;horizontal 让子节点全是叶子的那层并排铺开。 */
35
+ leafOrientation: {
36
+ type: PropType<TreeProps["leafOrientation"]>;
37
+ default: undefined;
38
+ };
30
39
  selectionMode: {
31
40
  type: PropType<TreeSelectionMode>;
32
41
  default: undefined;
@@ -53,6 +62,17 @@ declare const XhTreeRoot: import("vue").DefineComponent<import("vue").ExtractPro
53
62
  type: PropType<Direction>;
54
63
  default: undefined;
55
64
  };
65
+ /** 节点可以拖着搬家。整个节点都是拖动源,不另出把手。 */
66
+ nodeDraggable: BooleanConstructor;
67
+ /** 这一次搬家许不许。收到的是折算好的落点(搬到哪个父下面的第几位)。不给即都许。 */
68
+ allowDrop: {
69
+ type: PropType<TreeProps["allowDrop"]>;
70
+ default: undefined;
71
+ };
72
+ translations: {
73
+ type: PropType<TreeProps["translations"]>;
74
+ default: undefined;
75
+ };
56
76
  }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
57
77
  [key: string]: any;
58
78
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
@@ -60,6 +80,7 @@ declare const XhTreeRoot: import("vue").DefineComponent<import("vue").ExtractPro
60
80
  'update:expandedValue': (_value: PayloadOf<TreeProps, "onExpandedChange">["value"]) => true;
61
81
  'selection-change': (_details: PayloadOf<TreeProps, "onSelectionChange">) => true;
62
82
  'update:selection': (_value: PayloadOf<TreeProps, "onSelectionChange">["value"]) => true;
83
+ 'node-move': (_move: PayloadOf<TreeProps, "onNodeMove">) => true;
63
84
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
64
85
  collection: {
65
86
  type: PropType<TreeNode[]>;
@@ -81,6 +102,15 @@ declare const XhTreeRoot: import("vue").DefineComponent<import("vue").ExtractPro
81
102
  type: PropType<string[]>;
82
103
  default: undefined;
83
104
  };
105
+ multiple: {
106
+ type: BooleanConstructor;
107
+ default: undefined;
108
+ };
109
+ /** 末端那一层怎么排,默认 vertical;horizontal 让子节点全是叶子的那层并排铺开。 */
110
+ leafOrientation: {
111
+ type: PropType<TreeProps["leafOrientation"]>;
112
+ default: undefined;
113
+ };
84
114
  selectionMode: {
85
115
  type: PropType<TreeSelectionMode>;
86
116
  default: undefined;
@@ -107,24 +137,41 @@ declare const XhTreeRoot: import("vue").DefineComponent<import("vue").ExtractPro
107
137
  type: PropType<Direction>;
108
138
  default: undefined;
109
139
  };
140
+ /** 节点可以拖着搬家。整个节点都是拖动源,不另出把手。 */
141
+ nodeDraggable: BooleanConstructor;
142
+ /** 这一次搬家许不许。收到的是折算好的落点(搬到哪个父下面的第几位)。不给即都许。 */
143
+ allowDrop: {
144
+ type: PropType<TreeProps["allowDrop"]>;
145
+ default: undefined;
146
+ };
147
+ translations: {
148
+ type: PropType<TreeProps["translations"]>;
149
+ default: undefined;
150
+ };
110
151
  }>> & Readonly<{
111
152
  "onExpanded-change"?: ((_details: import("@xihan-ui/headless").TreeExpandedChangeDetails) => any) | undefined;
112
153
  "onUpdate:expandedValue"?: ((_value: string[]) => any) | undefined;
113
154
  "onSelection-change"?: ((_details: import("@xihan-ui/headless").TreeSelectionChangeDetails) => any) | undefined;
114
155
  "onUpdate:selection"?: ((_value: string[]) => any) | undefined;
156
+ "onNode-move"?: ((_move: import("@xihan-ui/headless").TreeMove) => any) | undefined;
115
157
  }>, {
158
+ multiple: boolean;
116
159
  collection: TreeNode[];
117
160
  dir: Direction;
118
161
  disabled: boolean;
119
- selectionMode: TreeSelectionMode;
162
+ translations: Partial<import("@xihan-ui/headless").TreeTranslations> | undefined;
120
163
  loop: boolean;
164
+ selectionMode: TreeSelectionMode;
121
165
  checkedStrategy: import("@xihan-ui/behavior").CascadeStrategy | undefined;
122
166
  cascade: boolean;
123
167
  typeahead: boolean;
168
+ allowDrop: ((move: import("@xihan-ui/headless").TreeMove) => boolean) | undefined;
124
169
  expandedValue: string[];
125
170
  defaultExpandedValue: string[];
126
171
  selection: string[];
127
172
  defaultSelection: string[];
173
+ leafOrientation: import("@xihan-ui/kernel").Orientation | undefined;
174
+ nodeDraggable: boolean;
128
175
  expandOnClick: boolean;
129
176
  }, SlotsType<{
130
177
  default?: (props: TreeRootSlotProps) => VNode[];
@@ -135,6 +182,15 @@ declare const XhTreeLabel: import("vue").DefineComponent<{}, () => VNode<import(
135
182
  declare const XhTreeTree: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
136
183
  [key: string]: any;
137
184
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
185
+ /**
186
+ * 拖动过程的读屏播报区,视觉上不可见。
187
+ *
188
+ * 放在 root 里、与 tree 部件平级。它必须在拖动开始**之前**就在 DOM 上——
189
+ * 读屏不播报后插入的节点,等到拾起才渲出来等于没有。
190
+ */
191
+ declare const XhTreeLiveRegion: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
192
+ [key: string]: any;
193
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
138
194
  declare const XhTreeItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
139
195
  value: {
140
196
  type: StringConstructor;
@@ -151,6 +207,14 @@ declare const XhTreeItem: import("vue").DefineComponent<import("vue").ExtractPro
151
207
  declare const XhTreeItemText: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
152
208
  [key: string]: any;
153
209
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
210
+ /**
211
+ * 节点拖拽把手。放在节点里,自带 touch-action: none,按下即拖,不等激活距离。
212
+ * 对读屏隐藏、也不占 Tab 位;键盘搬家由树上的 Alt + 方向键承担。
213
+ * 整个节点起手那一路照旧可用,把手是叠加的第二个入口。
214
+ */
215
+ declare const XhTreeNodeDragTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
216
+ [key: string]: any;
217
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
154
218
  declare const XhTreeItemCheckbox: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
155
219
  [key: string]: any;
156
220
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -189,5 +253,5 @@ declare const XhTreeBranchContent: import("vue").DefineComponent<{}, () => VNode
189
253
  [key: string]: any;
190
254
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
191
255
  //#endregion
192
- export { TreeRootSlotProps, XhTreeBranch, XhTreeBranchCheckbox, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeItem, XhTreeItemCheckbox, XhTreeItemIndicator, XhTreeItemText, XhTreeLabel, XhTreeRoot, XhTreeTree };
256
+ export { TreeRootSlotProps, XhTreeBranch, XhTreeBranchCheckbox, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeItem, XhTreeItemCheckbox, XhTreeItemIndicator, XhTreeItemText, XhTreeLabel, XhTreeLiveRegion, XhTreeNodeDragTrigger, XhTreeRoot, XhTreeTree };
193
257
  //# sourceMappingURL=tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree.d.ts","names":[],"sources":["../../../src/components/tree/tree.ts"],"mappings":";;;;;KASK,YAAY;;KAGL,oBAAoB,KAC9B;cAmCW,0BAAU,8BAAA;;IAIU,MAAA,SAAS;;;;IACN,MAAA;;;;IACO,MAAA;;;;IACX,MAAA;;;;IACO,MAAA;;;;IACF,MAAA,SAAS;;;;;IAEP,MAAA,SAAS;;;;;;;;;;;;;;;;;IAKrB,MAAA,SAAS;;;;;;EAIF,oBAAA,UAAA,UAAU;EACP,yBAAA,QAAA,UAAU;EACZ,qBAAA,UAAA,UAAU;EACZ,qBAAA,QAAA,UAAU;;;IAnBV,MAAA,SAAS;;;;IACN,MAAA;;;;IACO,MAAA;;;;IACX,MAAA;;;;IACO,MAAA;;;;IACF,MAAA,SAAS;;;;;IAEP,MAAA,SAAS;;;;;;;;;;;;;;;;;IAKrB,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;EAUtB,WAAC,OAAO,sBAAsB;kCA0B1C;cAEW,2BAAW,0BAAA,oBAAA,4BAAA;;8BAMtB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,0BAAA,oBAAA,4BAAA;;8BAMrB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,8BAAA;;;;;;;;;;;;MAiBrB,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAOzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAO7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4BAAY,8BAAA;;;;;;;;;;;;MAkBvB,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAQ9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"tree.d.ts","names":[],"sources":["../../../src/components/tree/tree.ts"],"mappings":";;;;;KAUK,YAAY;;KAGL,oBAAoB,KAC9B;cAmCW,0BAAU,8BAAA;;IAIU,MAAA,SAAS;;;;IACN,MAAA;;;;IACO,MAAA;;;;IACX,MAAA;;;;IACO,MAAA;;;;;;;;;IAGA,MAAA,SAAS;;;;IACX,MAAA,SAAS;;;;;IAEP,MAAA,SAAS;;;;;;;;;;;;;;;;;IAKrB,MAAA,SAAS;;;;;;;IAID,MAAA,SAAS;;;;IACR,MAAA,SAAS;;;;;;EAIX,oBAAA,UAAA,UAAU;EACP,yBAAA,QAAA,UAAU;EACZ,qBAAA,UAAA,UAAU;EACZ,qBAAA,QAAA,UAAU;EAElB,cAAA,OAAA,UAAU;;;IA7BF,MAAA,SAAS;;;;IACN,MAAA;;;;IACO,MAAA;;;;IACX,MAAA;;;;IACO,MAAA;;;;;;;;;IAGA,MAAA,SAAS;;;;IACX,MAAA,SAAS;;;;;IAEP,MAAA,SAAS;;;;;;;;;;;;;;;;;IAKrB,MAAA,SAAS;;;;;;;IAID,MAAA,SAAS;;;;IACR,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY/B,WAAC,OAAO,sBAAsB;kCA6B1C;cAEW,2BAAW,0BAAA,oBAAA,4BAAA;;8BAMtB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,0BAAA,oBAAA,4BAAA;;8BAMrB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;;;cAQW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAU3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,0BAAU,8BAAA;;;;;;;;;;;;MAiBrB,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAOzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;;;;;cAOW,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAO7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4BAAY,8BAAA;;;;;;;;;;;;MAkBvB,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAO9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,qCAAqB,0BAAA,oBAAA,4BAAA;;8BAOhC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAQ9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -1,3 +1,4 @@
1
+ import { withXhConfig } from "../../config/config.js";
1
2
  import { provideTree, provideTreeNode, useTreeContext, useTreeNodeContext } from "./context.js";
2
3
  import { useTree } from "./use-tree.js";
3
4
  import { computed, defineComponent, h, onBeforeUnmount, ref, watch } from "vue";
@@ -42,6 +43,15 @@ const XhTreeRoot = defineComponent({
42
43
  type: Array,
43
44
  default: void 0
44
45
  },
46
+ multiple: {
47
+ type: Boolean,
48
+ default: void 0
49
+ },
50
+ /** 末端那一层怎么排,默认 vertical;horizontal 让子节点全是叶子的那层并排铺开。 */
51
+ leafOrientation: {
52
+ type: String,
53
+ default: void 0
54
+ },
45
55
  selectionMode: {
46
56
  type: String,
47
57
  default: void 0
@@ -67,13 +77,25 @@ const XhTreeRoot = defineComponent({
67
77
  dir: {
68
78
  type: String,
69
79
  default: void 0
80
+ },
81
+ /** 节点可以拖着搬家。整个节点都是拖动源,不另出把手。 */
82
+ nodeDraggable: Boolean,
83
+ /** 这一次搬家许不许。收到的是折算好的落点(搬到哪个父下面的第几位)。不给即都许。 */
84
+ allowDrop: {
85
+ type: Function,
86
+ default: void 0
87
+ },
88
+ translations: {
89
+ type: Object,
90
+ default: void 0
70
91
  }
71
92
  },
72
93
  emits: {
73
94
  "expanded-change": (_details) => true,
74
95
  "update:expandedValue": (_value) => true,
75
96
  "selection-change": (_details) => true,
76
- "update:selection": (_value) => true
97
+ "update:selection": (_value) => true,
98
+ "node-move": (_move) => true
77
99
  },
78
100
  slots: Object,
79
101
  setup(props, { slots, emit }) {
@@ -85,7 +107,10 @@ const XhTreeRoot = defineComponent({
85
107
  emit("selection-change", details);
86
108
  emit("update:selection", details.value);
87
109
  };
88
- const ctx = useTree(props, onExpandedChange, onSelectionChange);
110
+ const onNodeMove = (move) => {
111
+ emit("node-move", move);
112
+ };
113
+ const ctx = useTree(withXhConfig("tree", props), onExpandedChange, onSelectionChange, onNodeMove);
89
114
  provideTree(ctx);
90
115
  return () => h("div", ctx.api.value.getRootProps(), slots.default?.({
91
116
  visibleNodes: ctx.api.value.visibleNodes,
@@ -115,6 +140,19 @@ const XhTreeTree = defineComponent({
115
140
  return () => h("div", ctx.api.value.getTreeProps(), slots.default?.());
116
141
  }
117
142
  });
143
+ /**
144
+ * 拖动过程的读屏播报区,视觉上不可见。
145
+ *
146
+ * 放在 root 里、与 tree 部件平级。它必须在拖动开始**之前**就在 DOM 上——
147
+ * 读屏不播报后插入的节点,等到拾起才渲出来等于没有。
148
+ */
149
+ const XhTreeLiveRegion = defineComponent({
150
+ name: "XhTreeLiveRegion",
151
+ setup() {
152
+ const ctx = useTreeContext();
153
+ return () => h("div", ctx.api.value.getLiveRegionProps(), ctx.service.context.get("announcement"));
154
+ }
155
+ });
118
156
  const XhTreeItem = defineComponent({
119
157
  name: "XhTreeItem",
120
158
  props: { value: {
@@ -141,6 +179,19 @@ const XhTreeItemText = defineComponent({
141
179
  return () => h("span", ctx.api.value.getItemTextProps(node.value), slots.default?.());
142
180
  }
143
181
  });
182
+ /**
183
+ * 节点拖拽把手。放在节点里,自带 touch-action: none,按下即拖,不等激活距离。
184
+ * 对读屏隐藏、也不占 Tab 位;键盘搬家由树上的 Alt + 方向键承担。
185
+ * 整个节点起手那一路照旧可用,把手是叠加的第二个入口。
186
+ */
187
+ const XhTreeNodeDragTrigger = defineComponent({
188
+ name: "XhTreeNodeDragTrigger",
189
+ setup(_, { slots }) {
190
+ const ctx = useTreeContext();
191
+ const { node } = useTreeNodeContext();
192
+ return () => h("span", ctx.api.value.getNodeDragTriggerProps(node.value), slots.default?.());
193
+ }
194
+ });
144
195
  const XhTreeItemCheckbox = defineComponent({
145
196
  name: "XhTreeItemCheckbox",
146
197
  setup(_, { slots }) {
@@ -224,6 +275,6 @@ const XhTreeBranchContent = defineComponent({
224
275
  }
225
276
  });
226
277
  //#endregion
227
- export { XhTreeBranch, XhTreeBranchCheckbox, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeItem, XhTreeItemCheckbox, XhTreeItemIndicator, XhTreeItemText, XhTreeLabel, XhTreeRoot, XhTreeTree };
278
+ export { XhTreeBranch, XhTreeBranchCheckbox, XhTreeBranchContent, XhTreeBranchControl, XhTreeBranchIndicator, XhTreeBranchText, XhTreeBranchTrigger, XhTreeItem, XhTreeItemCheckbox, XhTreeItemIndicator, XhTreeItemText, XhTreeLabel, XhTreeLiveRegion, XhTreeNodeDragTrigger, XhTreeRoot, XhTreeTree };
228
279
 
229
280
  //# sourceMappingURL=tree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tree.js","names":[],"sources":["../../../src/components/tree/tree.ts"],"sourcesContent":["import type { TreeApi, TreeNode, TreeNodeProps, TreeSchema, TreeSelectionMode } from '@xihan-ui/headless'\nimport type { Direction } from '@xihan-ui/kernel'\nimport type { PropType, Ref, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { TreeContext } from './use-tree'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { provideTree, provideTreeNode, useTreeContext, useTreeNodeContext } from './context'\nimport { useTree } from './use-tree'\n\ntype TreeProps = TreeSchema['props']\n\n/** 默认插槽的载荷:可见行序列与展开、选中、焦点状态,以及按值判定与展开、收起、选中的动作。 */\nexport type TreeRootSlotProps = Pick<\n TreeApi,\n | 'visibleNodes'\n | 'expandedValue'\n | 'selection'\n | 'focusedValue'\n | 'isExpanded'\n | 'isSelected'\n | 'isIndeterminate'\n | 'expand'\n | 'collapse'\n | 'select'\n>\n\n/** 本节点持有焦点时,value 变更重报焦点节点,卸载时上报整树失焦 */\nfunction reportNodeFocus(ctx: TreeContext, 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: 'NODE.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: 'TREE.BLUR' })\n })\n}\n\nexport const XhTreeRoot = defineComponent({\n name: 'XhTreeRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n collection: { type: Array as PropType<TreeNode[]>, default: undefined },\n expandedValue: { type: Array as PropType<string[]>, default: undefined },\n defaultExpandedValue: { type: Array as PropType<string[]>, default: undefined },\n selection: { type: Array as PropType<string[]>, default: undefined },\n defaultSelection: { type: Array as PropType<string[]>, default: undefined },\n selectionMode: { type: String as PropType<TreeSelectionMode>, default: undefined },\n cascade: Boolean,\n checkedStrategy: { type: String as PropType<TreeProps['checkedStrategy']>, default: undefined },\n expandOnClick: { type: Boolean, default: undefined },\n disabled: Boolean,\n loop: { type: Boolean, default: undefined },\n typeahead: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n },\n // *-change 携带 { value },update:* 携带裸集合;回传值恒为数组,单选时长度 ≤ 1\n emits: {\n 'expanded-change': (_details: PayloadOf<TreeProps, 'onExpandedChange'>) => true,\n 'update:expandedValue': (_value: PayloadOf<TreeProps, 'onExpandedChange'>['value']) => true,\n 'selection-change': (_details: PayloadOf<TreeProps, 'onSelectionChange'>) => true,\n 'update:selection': (_value: PayloadOf<TreeProps, 'onSelectionChange'>['value']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TreeRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const onExpandedChange: TreeProps['onExpandedChange'] = (details) => {\n emit('expanded-change', details)\n emit('update:expandedValue', details.value)\n }\n const onSelectionChange: TreeProps['onSelectionChange'] = (details) => {\n emit('selection-change', details)\n emit('update:selection', details.value)\n }\n const ctx = useTree(props as TreeProps, onExpandedChange, onSelectionChange)\n provideTree(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n visibleNodes: ctx.api.value.visibleNodes,\n expandedValue: ctx.api.value.expandedValue,\n selection: ctx.api.value.selection,\n focusedValue: ctx.api.value.focusedValue,\n isExpanded: ctx.api.value.isExpanded,\n isSelected: ctx.api.value.isSelected,\n isIndeterminate: ctx.api.value.isIndeterminate,\n expand: ctx.api.value.expand,\n collapse: ctx.api.value.collapse,\n select: ctx.api.value.select,\n }))\n },\n})\n\nexport const XhTreeLabel = defineComponent({\n name: 'XhTreeLabel',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeTree = defineComponent({\n name: 'XhTreeTree',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n return () => h('div', ctx.api.value.getTreeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeItem = defineComponent({\n name: 'XhTreeItem',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTreeContext()\n const node = computed<TreeNodeProps>(() => ({ value: props.value }))\n provideTreeNode({ node })\n const el = ref<HTMLElement | null>(null)\n reportNodeFocus(ctx, el, () => props.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(node.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTreeItemText = defineComponent({\n name: 'XhTreeItemText',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getItemTextProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeItemCheckbox = defineComponent({\n name: 'XhTreeItemCheckbox',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getItemCheckboxProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchCheckbox = defineComponent({\n name: 'XhTreeBranchCheckbox',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchCheckboxProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeItemIndicator = defineComponent({\n name: 'XhTreeItemIndicator',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranch = defineComponent({\n name: 'XhTreeBranch',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTreeContext()\n const node = computed<TreeNodeProps>(() => ({ value: props.value }))\n // 分支自身也是 treeitem,供其子部件读取;子节点各自再 provide 一层\n provideTreeNode({ node })\n const el = ref<HTMLElement | null>(null)\n reportNodeFocus(ctx, el, () => props.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getBranchProps(node.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTreeBranchControl = defineComponent({\n name: 'XhTreeBranchControl',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('div', ctx.api.value.getBranchControlProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchTrigger = defineComponent({\n name: 'XhTreeBranchTrigger',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchTriggerProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchIndicator = defineComponent({\n name: 'XhTreeBranchIndicator',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchIndicatorProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchText = defineComponent({\n name: 'XhTreeBranchText',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchTextProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchContent = defineComponent({\n name: 'XhTreeBranchContent',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n // 收起只加 hidden,不卸载子树节点\n return () => h('div', ctx.api.value.getBranchContentProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"tree.js","names":[],"sources":["../../../src/components/tree/tree.ts"],"sourcesContent":["import type { TreeApi, TreeNode, TreeNodeProps, TreeSchema, TreeSelectionMode } from '@xihan-ui/headless'\nimport type { Direction } from '@xihan-ui/kernel'\nimport type { PropType, Ref, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport type { TreeContext } from './use-tree'\nimport { computed, defineComponent, h, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { provideTree, provideTreeNode, useTreeContext, useTreeNodeContext } from './context'\nimport { useTree } from './use-tree'\n\ntype TreeProps = TreeSchema['props']\n\n/** 默认插槽的载荷:可见行序列与展开、选中、焦点状态,以及按值判定与展开、收起、选中的动作。 */\nexport type TreeRootSlotProps = Pick<\n TreeApi,\n | 'visibleNodes'\n | 'expandedValue'\n | 'selection'\n | 'focusedValue'\n | 'isExpanded'\n | 'isSelected'\n | 'isIndeterminate'\n | 'expand'\n | 'collapse'\n | 'select'\n>\n\n/** 本节点持有焦点时,value 变更重报焦点节点,卸载时上报整树失焦 */\nfunction reportNodeFocus(ctx: TreeContext, 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: 'NODE.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: 'TREE.BLUR' })\n })\n}\n\nexport const XhTreeRoot = defineComponent({\n name: 'XhTreeRoot',\n // 有 connect 兜底的 prop 一律 default: undefined\n props: {\n collection: { type: Array as PropType<TreeNode[]>, default: undefined },\n expandedValue: { type: Array as PropType<string[]>, default: undefined },\n defaultExpandedValue: { type: Array as PropType<string[]>, default: undefined },\n selection: { type: Array as PropType<string[]>, default: undefined },\n defaultSelection: { type: Array as PropType<string[]>, default: undefined },\n multiple: { type: Boolean, default: undefined },\n /** 末端那一层怎么排,默认 vertical;horizontal 让子节点全是叶子的那层并排铺开。 */\n leafOrientation: { type: String as PropType<TreeProps['leafOrientation']>, default: undefined },\n selectionMode: { type: String as PropType<TreeSelectionMode>, default: undefined },\n cascade: Boolean,\n checkedStrategy: { type: String as PropType<TreeProps['checkedStrategy']>, default: undefined },\n expandOnClick: { type: Boolean, default: undefined },\n disabled: Boolean,\n loop: { type: Boolean, default: undefined },\n typeahead: { type: Boolean, default: undefined },\n dir: { type: String as PropType<Direction>, default: undefined },\n /** 节点可以拖着搬家。整个节点都是拖动源,不另出把手。 */\n nodeDraggable: Boolean,\n /** 这一次搬家许不许。收到的是折算好的落点(搬到哪个父下面的第几位)。不给即都许。 */\n allowDrop: { type: Function as PropType<TreeProps['allowDrop']>, default: undefined },\n translations: { type: Object as PropType<TreeProps['translations']>, default: undefined },\n },\n // *-change 携带 { value },update:* 携带裸集合;回传值恒为数组,单选时长度 ≤ 1\n emits: {\n 'expanded-change': (_details: PayloadOf<TreeProps, 'onExpandedChange'>) => true,\n 'update:expandedValue': (_value: PayloadOf<TreeProps, 'onExpandedChange'>['value']) => true,\n 'selection-change': (_details: PayloadOf<TreeProps, 'onSelectionChange'>) => true,\n 'update:selection': (_value: PayloadOf<TreeProps, 'onSelectionChange'>['value']) => true,\n // 搬家是通知,节点顺序的真源在使用者的数据里,故没有配对的 update:*\n 'node-move': (_move: PayloadOf<TreeProps, 'onNodeMove'>) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TreeRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const onExpandedChange: TreeProps['onExpandedChange'] = (details) => {\n emit('expanded-change', details)\n emit('update:expandedValue', details.value)\n }\n const onSelectionChange: TreeProps['onSelectionChange'] = (details) => {\n emit('selection-change', details)\n emit('update:selection', details.value)\n }\n const onNodeMove: TreeProps['onNodeMove'] = (move) => {\n emit('node-move', move)\n }\n const ctx = useTree(withXhConfig('tree', props) as TreeProps, onExpandedChange, onSelectionChange, onNodeMove)\n provideTree(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n visibleNodes: ctx.api.value.visibleNodes,\n expandedValue: ctx.api.value.expandedValue,\n selection: ctx.api.value.selection,\n focusedValue: ctx.api.value.focusedValue,\n isExpanded: ctx.api.value.isExpanded,\n isSelected: ctx.api.value.isSelected,\n isIndeterminate: ctx.api.value.isIndeterminate,\n expand: ctx.api.value.expand,\n collapse: ctx.api.value.collapse,\n select: ctx.api.value.select,\n }))\n },\n})\n\nexport const XhTreeLabel = defineComponent({\n name: 'XhTreeLabel',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeTree = defineComponent({\n name: 'XhTreeTree',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n return () => h('div', ctx.api.value.getTreeProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 拖动过程的读屏播报区,视觉上不可见。\n *\n * 放在 root 里、与 tree 部件平级。它必须在拖动开始**之前**就在 DOM 上——\n * 读屏不播报后插入的节点,等到拾起才渲出来等于没有。\n */\nexport const XhTreeLiveRegion = defineComponent({\n name: 'XhTreeLiveRegion',\n setup() {\n const ctx = useTreeContext()\n return () => h(\n 'div',\n ctx.api.value.getLiveRegionProps() as Record<string, unknown>,\n ctx.service.context.get('announcement'),\n )\n },\n})\n\nexport const XhTreeItem = defineComponent({\n name: 'XhTreeItem',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTreeContext()\n const node = computed<TreeNodeProps>(() => ({ value: props.value }))\n provideTreeNode({ node })\n const el = ref<HTMLElement | null>(null)\n reportNodeFocus(ctx, el, () => props.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(node.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTreeItemText = defineComponent({\n name: 'XhTreeItemText',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getItemTextProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 节点拖拽把手。放在节点里,自带 touch-action: none,按下即拖,不等激活距离。\n * 对读屏隐藏、也不占 Tab 位;键盘搬家由树上的 Alt + 方向键承担。\n * 整个节点起手那一路照旧可用,把手是叠加的第二个入口。\n */\nexport const XhTreeNodeDragTrigger = defineComponent({\n name: 'XhTreeNodeDragTrigger',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getNodeDragTriggerProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeItemCheckbox = defineComponent({\n name: 'XhTreeItemCheckbox',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getItemCheckboxProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchCheckbox = defineComponent({\n name: 'XhTreeBranchCheckbox',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchCheckboxProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeItemIndicator = defineComponent({\n name: 'XhTreeItemIndicator',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranch = defineComponent({\n name: 'XhTreeBranch',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTreeContext()\n const node = computed<TreeNodeProps>(() => ({ value: props.value }))\n // 分支自身也是 treeitem,供其子部件读取;子节点各自再 provide 一层\n provideTreeNode({ node })\n const el = ref<HTMLElement | null>(null)\n reportNodeFocus(ctx, el, () => props.value)\n return () => h(\n 'div',\n { ...ctx.api.value.getBranchProps(node.value) as Record<string, unknown>, ref: el },\n slots.default?.(),\n )\n },\n})\n\nexport const XhTreeBranchControl = defineComponent({\n name: 'XhTreeBranchControl',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('div', ctx.api.value.getBranchControlProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchTrigger = defineComponent({\n name: 'XhTreeBranchTrigger',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchTriggerProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchIndicator = defineComponent({\n name: 'XhTreeBranchIndicator',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchIndicatorProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchText = defineComponent({\n name: 'XhTreeBranchText',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n return () => h('span', ctx.api.value.getBranchTextProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTreeBranchContent = defineComponent({\n name: 'XhTreeBranchContent',\n setup(_, { slots }) {\n const ctx = useTreeContext()\n const { node } = useTreeNodeContext()\n // 收起只加 hidden,不卸载子树节点\n return () => h('div', ctx.api.value.getBranchContentProps(node.value) as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;AA4BA,SAAS,gBAAgB,KAAkB,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;GAAc,OAAO;EAAK,CAAC;CACpD,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,YAAY,CAAC;CACtC,CAAC;AACH;AAEA,MAAa,aAAa,gBAAgB;CACxC,MAAM;CAEN,OAAO;EACL,YAAY;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EACtE,eAAe;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACvE,sBAAsB;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC9E,WAAW;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EACnE,kBAAkB;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;EAC1E,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;;EAE9C,iBAAiB;GAAE,MAAM;GAAkD,SAAS,KAAA;EAAU;EAC9F,eAAe;GAAE,MAAM;GAAuC,SAAS,KAAA;EAAU;EACjF,SAAS;EACT,iBAAiB;GAAE,MAAM;GAAkD,SAAS,KAAA;EAAU;EAC9F,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACnD,UAAU;EACV,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,WAAW;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC/C,KAAK;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;;EAE/D,eAAe;;EAEf,WAAW;GAAE,MAAM;GAA8C,SAAS,KAAA;EAAU;EACpF,cAAc;GAAE,MAAM;GAA+C,SAAS,KAAA;EAAU;CAC1F;CAEA,OAAO;EACL,oBAAoB,aAAuD;EAC3E,yBAAyB,WAA8D;EACvF,qBAAqB,aAAwD;EAC7E,qBAAqB,WAA+D;EAEpF,cAAc,UAA8C;CAC9D;CACA,OAAO;CAGP,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,oBAAmD,YAAY;GACnE,KAAK,mBAAmB,OAAO;GAC/B,KAAK,wBAAwB,QAAQ,KAAK;EAC5C;EACA,MAAM,qBAAqD,YAAY;GACrE,KAAK,oBAAoB,OAAO;GAChC,KAAK,oBAAoB,QAAQ,KAAK;EACxC;EACA,MAAM,cAAuC,SAAS;GACpD,KAAK,aAAa,IAAI;EACxB;EACA,MAAM,MAAM,QAAQ,aAAa,QAAQ,KAAK,GAAgB,kBAAkB,mBAAmB,UAAU;EAC7G,YAAY,GAAG;EACf,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,cAAc,IAAI,IAAI,MAAM;GAC5B,eAAe,IAAI,IAAI,MAAM;GAC7B,WAAW,IAAI,IAAI,MAAM;GACzB,cAAc,IAAI,IAAI,MAAM;GAC5B,YAAY,IAAI,IAAI,MAAM;GAC1B,YAAY,IAAI,IAAI,MAAM;GAC1B,iBAAiB,IAAI,IAAI,MAAM;GAC/B,QAAQ,IAAI,IAAI,MAAM;GACtB,UAAU,IAAI,IAAI,MAAM;GACxB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,cAAc,gBAAgB;CACzC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;;;;;;;AAQD,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,QAAQ;EACN,MAAM,MAAM,eAAe;EAC3B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,mBAAmB,GACjC,IAAI,QAAQ,QAAQ,IAAI,cAAc,CACxC;CACF;AACF,CAAC;AAED,MAAa,aAAa,gBAAgB;CACxC,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAC3B,MAAM,OAAO,gBAA+B,EAAE,OAAO,MAAM,MAAM,EAAE;EACnE,gBAAgB,EAAE,KAAK,CAAC;EACxB,MAAM,KAAK,IAAwB,IAAI;EACvC,gBAAgB,KAAK,UAAU,MAAM,KAAK;EAC1C,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa,KAAK,KAAK;GAA8B,KAAK;EAAG,GAChF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,iBAAiB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACjH;AACF,CAAC;;;;;;AAOD,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,wBAAwB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACxH;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,qBAAqB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,uBAAuB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACvH;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,OAAO,EACL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,eAAe;EAC3B,MAAM,OAAO,gBAA+B,EAAE,OAAO,MAAM,MAAM,EAAE;EAEnE,gBAAgB,EAAE,KAAK,CAAC;EACxB,MAAM,KAAK,IAAwB,IAAI;EACvC,gBAAgB,KAAK,UAAU,MAAM,KAAK;EAC1C,aAAa,EACX,OACA;GAAE,GAAG,IAAI,IAAI,MAAM,eAAe,KAAK,KAAK;GAA8B,KAAK;EAAG,GAClF,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACtH;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,wBAAwB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACxH;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EACpC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,mBAAmB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACnH;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,eAAe;EAC3B,MAAM,EAAE,SAAS,mBAAmB;EAEpC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,sBAAsB,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC"}
@@ -7,7 +7,7 @@ interface TreeContext {
7
7
  /** 机器实例,供部件上报 DOM 侧的事实(如节点卸载带走了焦点)。 */
8
8
  service: Service<TreeSchema>;
9
9
  }
10
- declare function useTree(props: TreeSchema['props'], onExpandedChange?: TreeSchema['props']['onExpandedChange'], onSelectionChange?: TreeSchema['props']['onSelectionChange']): TreeContext;
10
+ declare function useTree(props: TreeSchema['props'], onExpandedChange?: TreeSchema['props']['onExpandedChange'], onSelectionChange?: TreeSchema['props']['onSelectionChange'], onNodeMove?: TreeSchema['props']['onNodeMove']): TreeContext;
11
11
  //#endregion
12
12
  export { TreeContext, useTree };
13
13
  //# sourceMappingURL=use-tree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-tree.d.ts","names":[],"sources":["../../../src/components/tree/use-tree.ts"],"mappings":";;;;UAUiB;EACf,KAAK,YAAY;;EAEjB,SAAS,QAAQ;;iBAGH,QACd,OAAO,qBACP,mBAAmB,yCACnB,oBAAoB,2CACnB"}
1
+ {"version":3,"file":"use-tree.d.ts","names":[],"sources":["../../../src/components/tree/use-tree.ts"],"mappings":";;;;UAUiB;EACf,KAAK,YAAY;;EAEjB,SAAS,QAAQ;;iBAGH,QACd,OAAO,qBACP,mBAAmB,yCACnB,oBAAoB,0CACpB,aAAa,oCACZ"}
@@ -5,11 +5,12 @@ import { computed } from "vue";
5
5
  import { connectTree, treeMachine } from "@xihan-ui/headless";
6
6
  import { createScope } from "@xihan-ui/kernel";
7
7
  //#region src/components/tree/use-tree.ts
8
- function useTree(props, onExpandedChange, onSelectionChange) {
8
+ function useTree(props, onExpandedChange, onSelectionChange, onNodeMove) {
9
9
  const service = useMachine(treeMachine, () => ({
10
10
  ...props,
11
11
  onExpandedChange,
12
- onSelectionChange
12
+ onSelectionChange,
13
+ onNodeMove
13
14
  }), createScope(null, createVueIdGenerator()));
14
15
  return {
15
16
  api: computed(() => connectTree(service, vueNormalize)),
@@ -1 +1 @@
1
- {"version":3,"file":"use-tree.js","names":[],"sources":["../../../src/components/tree/use-tree.ts"],"sourcesContent":["import type { TreeApi, TreeSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectTree, treeMachine } 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 TreeContext {\n api: ComputedRef<TreeApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如节点卸载带走了焦点)。 */\n service: Service<TreeSchema>\n}\n\nexport function useTree(\n props: TreeSchema['props'],\n onExpandedChange?: TreeSchema['props']['onExpandedChange'],\n onSelectionChange?: TreeSchema['props']['onSelectionChange'],\n): TreeContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // 连打检索缓冲存在机器的 refs 里,适配器不必注入 refs\n const service = useMachine(treeMachine, () => ({ ...props, onExpandedChange, onSelectionChange }), scope)\n const api = computed(() => connectTree(service, vueNormalize))\n return { api, service }\n}\n"],"mappings":";;;;;;;AAgBA,SAAgB,QACd,OACA,kBACA,mBACa;CAIb,MAAM,UAAU,WAAW,oBAAoB;EAAE,GAAG;EAAO;EAAkB;CAAkB,IAFjF,YAAY,MADZ,qBACsB,CAEmE,CAAC;CAExG,OAAO;EAAE,KADG,eAAe,YAAY,SAAS,YAAY,CACjD;EAAG;CAAQ;AACxB"}
1
+ {"version":3,"file":"use-tree.js","names":[],"sources":["../../../src/components/tree/use-tree.ts"],"sourcesContent":["import type { TreeApi, TreeSchema } from '@xihan-ui/headless'\nimport type { Service } from '@xihan-ui/machine'\nimport type { ComputedRef } from 'vue'\nimport { connectTree, treeMachine } 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 TreeContext {\n api: ComputedRef<TreeApi>\n /** 机器实例,供部件上报 DOM 侧的事实(如节点卸载带走了焦点)。 */\n service: Service<TreeSchema>\n}\n\nexport function useTree(\n props: TreeSchema['props'],\n onExpandedChange?: TreeSchema['props']['onExpandedChange'],\n onSelectionChange?: TreeSchema['props']['onSelectionChange'],\n onNodeMove?: TreeSchema['props']['onNodeMove'],\n): TreeContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n // 连打检索缓冲存在机器的 refs 里,适配器不必注入 refs\n const service = useMachine(\n treeMachine,\n () => ({ ...props, onExpandedChange, onSelectionChange, onNodeMove }),\n scope,\n )\n const api = computed(() => connectTree(service, vueNormalize))\n return { api, service }\n}\n"],"mappings":";;;;;;;AAgBA,SAAgB,QACd,OACA,kBACA,mBACA,YACa;CAIb,MAAM,UAAU,WACd,oBACO;EAAE,GAAG;EAAO;EAAkB;EAAmB;CAAW,IAJvD,YAAY,MADZ,qBACsB,CAK9B,CACN;CAEA,OAAO;EAAE,KADG,eAAe,YAAY,SAAS,YAAY,CACjD;EAAG;CAAQ;AACxB"}
@@ -1,7 +1,7 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/tree-select/context.ts
3
- const KEY = Symbol("xh-tree-select");
4
- const NODE_KEY = Symbol("xh-tree-select-node");
3
+ const KEY = Symbol.for("xh-tree-select");
4
+ const NODE_KEY = Symbol.for("xh-tree-select-node");
5
5
  function provideTreeSelect(ctx) {
6
6
  provide(KEY, ctx);
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tree-select/context.ts"],"sourcesContent":["import type { TreeSelectNodeProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TreeSelectContext } from './use-tree-select'\nimport { inject, provide } from 'vue'\n\n/** 节点自报的值,供 item / branch 的子部件复用同一份声明;层级、禁用与标签回 collection 里查。 */\nexport interface TreeSelectNodeContext {\n node: ComputedRef<TreeSelectNodeProps>\n}\n\nconst KEY: InjectionKey<TreeSelectContext> = Symbol('xh-tree-select')\nconst NODE_KEY: InjectionKey<TreeSelectNodeContext> = Symbol('xh-tree-select-node')\n\nexport function provideTreeSelect(ctx: TreeSelectContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTreeSelectContext(): TreeSelectContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TreeSelect 部件必须用在 XhTreeSelectRoot 内')\n return ctx\n}\n\nexport function provideTreeSelectNode(ctx: TreeSelectNodeContext): void {\n provide(NODE_KEY, ctx)\n}\n\nexport function useTreeSelectNodeContext(): TreeSelectNodeContext {\n const ctx = inject(NODE_KEY, null)\n if (!ctx)\n throw new Error('[xh] TreeSelect 节点子部件必须用在 XhTreeSelectItem 或 XhTreeSelectBranch 内')\n return ctx\n}\n"],"mappings":";;AAUA,MAAM,MAAuC,OAAO,gBAAgB;AACpE,MAAM,WAAgD,OAAO,qBAAqB;AAElF,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;AAEA,SAAgB,sBAAsB,KAAkC;CACtE,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,2BAAkD;CAChE,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mEAAmE;CACrF,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/tree-select/context.ts"],"sourcesContent":["import type { TreeSelectNodeProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TreeSelectContext } from './use-tree-select'\nimport { inject, provide } from 'vue'\n\n/** 节点自报的值,供 item / branch 的子部件复用同一份声明;层级、禁用与标签回 collection 里查。 */\nexport interface TreeSelectNodeContext {\n node: ComputedRef<TreeSelectNodeProps>\n}\n\nconst KEY: InjectionKey<TreeSelectContext> = Symbol.for('xh-tree-select')\nconst NODE_KEY: InjectionKey<TreeSelectNodeContext> = Symbol.for('xh-tree-select-node')\n\nexport function provideTreeSelect(ctx: TreeSelectContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTreeSelectContext(): TreeSelectContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TreeSelect 部件必须用在 XhTreeSelectRoot 内')\n return ctx\n}\n\nexport function provideTreeSelectNode(ctx: TreeSelectNodeContext): void {\n provide(NODE_KEY, ctx)\n}\n\nexport function useTreeSelectNodeContext(): TreeSelectNodeContext {\n const ctx = inject(NODE_KEY, null)\n if (!ctx)\n throw new Error('[xh] TreeSelect 节点子部件必须用在 XhTreeSelectItem 或 XhTreeSelectBranch 内')\n return ctx\n}\n"],"mappings":";;AAUA,MAAM,MAAuC,OAAO,IAAI,gBAAgB;AACxE,MAAM,WAAgD,OAAO,IAAI,qBAAqB;AAEtF,SAAgB,kBAAkB,KAA8B;CAC9D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,uBAA0C;CACxD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,2CAA2C;CAC7D,OAAO;AACT;AAEA,SAAgB,sBAAsB,KAAkC;CACtE,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,2BAAkD;CAChE,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mEAAmE;CACrF,OAAO;AACT"}
@@ -190,25 +190,25 @@ declare const XhTreeSelectRoot: import("vue").DefineComponent<import("vue").Extr
190
190
  name: string;
191
191
  invalid: boolean;
192
192
  label: string;
193
- size: Size;
194
193
  value: string | string[];
195
194
  multiple: boolean;
196
195
  collection: TreeNode[];
197
196
  defaultValue: string | string[];
198
197
  dir: Direction;
199
198
  tone: Tone;
199
+ size: Size;
200
200
  disabled: boolean;
201
201
  open: boolean;
202
202
  defaultOpen: boolean;
203
203
  translations: Partial<import("@xihan-ui/headless").TreeSelectTranslations> | undefined;
204
204
  offset: number;
205
- variant: ControlVariant;
206
205
  readOnly: boolean;
206
+ placeholder: string;
207
207
  loop: boolean;
208
+ placement: Placement;
209
+ variant: ControlVariant;
208
210
  checkedStrategy: import("@xihan-ui/behavior").CascadeStrategy | undefined;
209
211
  cascade: boolean;
210
- placeholder: string;
211
- placement: Placement;
212
212
  clearable: boolean;
213
213
  expandedValue: string[];
214
214
  defaultExpandedValue: string[];