@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,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/thread/context.ts
3
- const KEY = Symbol("xh-thread");
3
+ const KEY = Symbol.for("xh-thread");
4
4
  function provideThread(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/thread/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ThreadContext } from './use-thread'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ThreadContext> = Symbol('xh-thread')\n\nexport function provideThread(ctx: ThreadContext): void {\n provide(KEY, ctx)\n}\n\nexport function useThreadContext(): ThreadContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Thread 部件必须用在 XhThreadRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,WAAW;AAE3D,SAAgB,cAAc,KAA0B;CACtD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/thread/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ThreadContext } from './use-thread'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ThreadContext> = Symbol.for('xh-thread')\n\nexport function provideThread(ctx: ThreadContext): void {\n provide(KEY, ctx)\n}\n\nexport function useThreadContext(): ThreadContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Thread 部件必须用在 XhThreadRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAmC,OAAO,IAAI,WAAW;AAE/D,SAAgB,cAAc,KAA0B;CACtD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,mBAAkC;CAChD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,mCAAmC;CACrD,OAAO;AACT"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/time-field/context.ts
3
- const KEY = Symbol("xh-time-field");
3
+ const KEY = Symbol.for("xh-time-field");
4
4
  function provideTimeField(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/time-field/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TimeFieldContext } from './use-time-field'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TimeFieldContext> = Symbol('xh-time-field')\n\nexport function provideTimeField(ctx: TimeFieldContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimeFieldContext(): TimeFieldContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimeField 部件必须用在 XhTimeFieldRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAsC,OAAO,eAAe;AAElE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/time-field/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TimeFieldContext } from './use-time-field'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TimeFieldContext> = Symbol.for('xh-time-field')\n\nexport function provideTimeField(ctx: TimeFieldContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimeFieldContext(): TimeFieldContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimeField 部件必须用在 XhTimeFieldRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAsC,OAAO,IAAI,eAAe;AAEtE,SAAgB,iBAAiB,KAA6B;CAC5D,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,sBAAwC;CACtD,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,yCAAyC;CAC3D,OAAO;AACT"}
@@ -132,18 +132,18 @@ declare const XhTimeFieldRoot: import("vue").DefineComponent<import("vue").Extra
132
132
  required: boolean;
133
133
  name: string;
134
134
  invalid: boolean;
135
- size: Size;
136
135
  value: string;
137
136
  defaultValue: string;
138
137
  tone: Tone;
138
+ size: Size;
139
139
  disabled: boolean;
140
140
  translations: Partial<import("@xihan-ui/headless").TimeFieldTranslations> | undefined;
141
- max: string;
142
- variant: ControlVariant;
143
141
  readOnly: boolean;
142
+ placeholder: string;
143
+ variant: ControlVariant;
144
+ max: string;
144
145
  min: string;
145
146
  locale: string;
146
- placeholder: string;
147
147
  granularity: TimeGranularity;
148
148
  hourCycle: TimeHourCycle;
149
149
  }, SlotsType<{
@@ -1,7 +1,7 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/time-picker/context.ts
3
- const KEY = Symbol("xh-time-picker");
4
- const COLUMN_KEY = Symbol("xh-time-picker-column");
3
+ const KEY = Symbol.for("xh-time-picker");
4
+ const COLUMN_KEY = Symbol.for("xh-time-picker-column");
5
5
  function provideTimePicker(ctx) {
6
6
  provide(KEY, ctx);
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/time-picker/context.ts"],"sourcesContent":["import type { TimePickerColumnUnit } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TimePickerContext } from './use-time-picker'\nimport { inject, provide } from 'vue'\n\n/** 列自报的单位,供列内选项取到自己归哪一列。 */\nexport interface TimePickerColumnContext {\n unit: ComputedRef<TimePickerColumnUnit>\n}\n\nconst KEY: InjectionKey<TimePickerContext> = Symbol('xh-time-picker')\nconst COLUMN_KEY: InjectionKey<TimePickerColumnContext> = Symbol('xh-time-picker-column')\n\nexport function provideTimePicker(ctx: TimePickerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimePickerContext(): TimePickerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 部件必须用在 XhTimePickerRoot 内')\n return ctx\n}\n\nexport function provideTimePickerColumn(ctx: TimePickerColumnContext): void {\n provide(COLUMN_KEY, ctx)\n}\n\nexport function useTimePickerColumnContext(): TimePickerColumnContext {\n const ctx = inject(COLUMN_KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 选项必须用在 XhTimePickerColumn 内')\n return ctx\n}\n"],"mappings":";;AAUA,MAAM,MAAuC,OAAO,gBAAgB;AACpE,MAAM,aAAoD,OAAO,uBAAuB;AAExF,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,wBAAwB,KAAoC;CAC1E,QAAQ,YAAY,GAAG;AACzB;AAEA,SAAgB,6BAAsD;CACpE,MAAM,MAAM,OAAO,YAAY,IAAI;CACnC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/time-picker/context.ts"],"sourcesContent":["import type { TimePickerColumnUnit } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { TimePickerContext } from './use-time-picker'\nimport { inject, provide } from 'vue'\n\n/** 列自报的单位,供列内选项取到自己归哪一列。 */\nexport interface TimePickerColumnContext {\n unit: ComputedRef<TimePickerColumnUnit>\n}\n\nconst KEY: InjectionKey<TimePickerContext> = Symbol.for('xh-time-picker')\nconst COLUMN_KEY: InjectionKey<TimePickerColumnContext> = Symbol.for('xh-time-picker-column')\n\nexport function provideTimePicker(ctx: TimePickerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimePickerContext(): TimePickerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 部件必须用在 XhTimePickerRoot 内')\n return ctx\n}\n\nexport function provideTimePickerColumn(ctx: TimePickerColumnContext): void {\n provide(COLUMN_KEY, ctx)\n}\n\nexport function useTimePickerColumnContext(): TimePickerColumnContext {\n const ctx = inject(COLUMN_KEY, null)\n if (!ctx)\n throw new Error('[xh] TimePicker 选项必须用在 XhTimePickerColumn 内')\n return ctx\n}\n"],"mappings":";;AAUA,MAAM,MAAuC,OAAO,IAAI,gBAAgB;AACxE,MAAM,aAAoD,OAAO,IAAI,uBAAuB;AAE5F,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,wBAAwB,KAAoC;CAC1E,QAAQ,YAAY,GAAG;AACzB;AAEA,SAAgB,6BAAsD;CACpE,MAAM,MAAM,OAAO,YAAY,IAAI;CACnC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT"}
@@ -188,21 +188,21 @@ declare const XhTimePickerRoot: import("vue").DefineComponent<import("vue").Extr
188
188
  required: boolean;
189
189
  name: string;
190
190
  invalid: boolean;
191
- size: Size;
192
191
  value: string;
193
192
  defaultValue: string;
194
193
  tone: Tone;
194
+ size: Size;
195
195
  disabled: boolean;
196
196
  open: boolean;
197
197
  defaultOpen: boolean;
198
198
  translations: Partial<import("@xihan-ui/headless").TimePickerTranslations> | undefined;
199
199
  offset: number;
200
- max: string;
201
- variant: ControlVariant;
202
200
  readOnly: boolean;
201
+ placement: Placement;
202
+ variant: ControlVariant;
203
+ max: string;
203
204
  min: string;
204
205
  locale: string;
205
- placement: Placement;
206
206
  granularity: TimeGranularity;
207
207
  presets: TimePickerPreset[];
208
208
  step: number;
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"mappings":";;;;;KAyBK,kBAAkB;;KAGX,0BAA0B,KACpC;;UAce;EACf,SAAS;;;UAIM;EACf,kBAAkB;;cAGP,gCAAgB,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWI,MAAA,SAAS;;;;IACP,MAAA,SAAS;;;;;;;;;IAGd,MAAA,SAAS;;;;;IAEH,MAAA,SAAS;;;;IACF,MAAA,UAAU,eAAe,MAAM;;;;;;;;;;;IAK3C,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;;;;;;;EAKX,iBAAA,UAAA,UAAU;EACX,gBAAA,UAAA,UAAU;EACX,iBAAA,QAAA,UAAU;EACZ,gBAAA,OAAA,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAvBJ,MAAA,SAAS;;;;IACP,MAAA,SAAS;;;;;;;;;IAGd,MAAA,SAAS;;;;;IAEH,MAAA,SAAS;;;;IACF,MAAA,UAAU,eAAe,MAAM;;;;;;;;;;;IAK3C,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EARkB,oBAAA,eAAM,MAAQ;;EAmB5D,WAAC,OAAO,4BAA4B;kCA8BhD;cAEW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAO5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAS9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAMnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,8BAAA;;IAIC,MAAA,SAAS;;;;;;;IAAT,MAAA,SAAS;;;MAWtC,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAMnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,sCAAsB,0BAAA,oBAAA,4BAAA;;8BAcjC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAY9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;;;EAIlB,WAAC,OAAO,+BAA+B;kCAoBnD;cAEW,kCAAkB,8BAAA;;;;;;;;;;;;;;;;EAQjB,gBAAM;kCAclB;cAEW,kCAAkB,8BAAA;;IAGH,MAAA,SAAS;;;;;;;IAAT,MAAA,SAAS;;;;EAGvB,WAAC,OAAO,8BAA8B;kCAalD;cAEW,gCAAgB,8BAAA;;;;;;;;;;;;;;MAgB3B,oDAAA;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAMlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"mappings":";;;;;KA0BK,kBAAkB;;KAGX,0BAA0B,KACpC;;UAce;EACf,SAAS;;;UAIM;EACf,kBAAkB;;cAGP,gCAAgB,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWI,MAAA,SAAS;;;;IACP,MAAA,SAAS;;;;;;;;;IAGd,MAAA,SAAS;;;;;IAEH,MAAA,SAAS;;;;IACF,MAAA,UAAU,eAAe,MAAM;;;;;;;;;;;IAK3C,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;;;;;;;EAKX,iBAAA,UAAA,UAAU;EACX,gBAAA,UAAA,UAAU;EACX,iBAAA,QAAA,UAAU;EACZ,gBAAA,OAAA,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAvBJ,MAAA,SAAS;;;;IACP,MAAA,SAAS;;;;;;;;;IAGd,MAAA,SAAS;;;;;IAEH,MAAA,SAAS;;;;IACF,MAAA,UAAU,eAAe,MAAM;;;;;;;;;;;IAK3C,MAAA,SAAS;;;;IACZ,MAAA,SAAS;;;;IACT,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EARkB,oBAAA,eAAM,MAAQ;;EAmB5D,WAAC,OAAO,4BAA4B;kCA8BhD;cAEW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAO5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAS9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAMnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,iCAAiB,8BAAA;;IAIC,MAAA,SAAS;;;;;;;IAAT,MAAA,SAAS;;;MAWtC,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAe9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,wCAAwB,0BAAA,oBAAA,4BAAA;;8BAMnC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,sCAAsB,0BAAA,oBAAA,4BAAA;;8BAcjC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAY9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;;;EAIlB,WAAC,OAAO,+BAA+B;kCAoBnD;cAEW,kCAAkB,8BAAA;;;;;;;;;;;;;;;;EAQjB,gBAAM;kCAclB;cAEW,kCAAkB,8BAAA;;IAGH,MAAA,SAAS;;;;;;;IAAT,MAAA,SAAS;;;;EAGvB,WAAC,OAAO,8BAA8B;kCAalD;cAEW,gCAAgB,8BAAA;;;;;;;;;;;;;;MAgB3B,oDAAA;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAMlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -1,4 +1,5 @@
1
1
  import { withXhConfig } from "../../config/config.js";
2
+ import { useFieldLabelWiring, useFieldStateWiring } from "../field/use-field-control.js";
2
3
  import { slotPaints } from "../../runtime/slot-content.js";
3
4
  import { provideTimePicker, provideTimePickerColumn, useTimePickerColumnContext, useTimePickerContext } from "./context.js";
4
5
  import { useTimePicker } from "./use-time-picker.js";
@@ -161,8 +162,16 @@ const XhTimePickerInput = defineComponent({
161
162
  const XhTimePickerTrigger = defineComponent({
162
163
  name: "XhTimePickerTrigger",
163
164
  setup(_, { slots }) {
165
+ const fieldWiring = useFieldStateWiring();
166
+ const fieldLabel = useFieldLabelWiring();
164
167
  const ctx = useTimePickerContext();
165
- return () => h("button", ctx.api.value.getTriggerProps(), slots.default?.());
168
+ return () => h("button", fieldLabel.value({
169
+ ...ctx.api.value.getTriggerProps(),
170
+ ref: (el) => {
171
+ ctx.triggerRef.value = el;
172
+ },
173
+ ...fieldWiring.value
174
+ }), slots.default?.());
166
175
  }
167
176
  });
168
177
  const XhTimePickerClearTrigger = defineComponent({
@@ -1 +1 @@
1
- {"version":3,"file":"time-picker.js","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"sourcesContent":["import type {\n TimeGranularity,\n TimeHourCycle,\n TimePickerApi,\n TimePickerColumn,\n TimePickerColumnUnit,\n TimePickerPreset,\n TimePickerPresetState,\n TimePickerSchema,\n TimeSegmentType,\n} from '@xihan-ui/headless'\nimport type { ControlVariant, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, mergeProps, Teleport } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { slotPaints } from '../../runtime/slot-content'\nimport {\n provideTimePicker,\n provideTimePickerColumn,\n useTimePickerColumnContext,\n useTimePickerContext,\n} from './context'\nimport { useTimePicker } from './use-time-picker'\n\ntype TimePickerProps = TimePickerSchema['props']\n\n/** 默认插槽的载荷:浮层开合与当前值、值状态标志、此刻的段与列,以及开合、写值、清空的动作。 */\nexport type TimePickerRootSlotProps = Pick<\n TimePickerApi,\n | 'open'\n | 'value'\n | 'empty'\n | 'outOfRange'\n | 'segments'\n | 'columns'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n>\n\n/** 默认插槽的载荷:这一列此刻的可选值。 */\nexport interface TimePickerColumnSlotProps {\n options: TimePickerColumn['options']\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自己铺条目。 */\nexport interface TimePickerPresetsSlotProps {\n presets: readonly TimePickerPresetState[]\n}\n\nexport const XhTimePickerRoot = defineComponent({\n name: 'XhTimePickerRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String, default: undefined },\n max: { type: String, default: undefined },\n locale: { type: String, default: undefined },\n hourCycle: { type: Number as PropType<TimeHourCycle>, default: undefined },\n granularity: { type: String as PropType<TimeGranularity>, default: undefined },\n step: { type: Number, default: undefined },\n /** 快捷选项;给了就在浮层里多出一列,时刻要在自己的 computed 里算好再传。 */\n presets: { type: Array as PropType<TimePickerPreset[]>, default: undefined },\n disabled: Boolean,\n translations: { type: Object as PropType<TimePickerProps['translations']>, default: undefined },\n isTimeUnavailable: { type: Function as PropType<(value: string, unit: TimePickerColumnUnit) => boolean>, default: undefined },\n readOnly: Boolean,\n invalid: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<TimePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<TimePickerProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<TimePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<TimePickerProps, 'onOpenChange'>['open']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TimePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyValue: TimePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: TimePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useTimePicker(withXhConfig('time-picker', props) as TimePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n })\n provideTimePicker(ctx)\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n empty: ctx.api.value.empty,\n outOfRange: ctx.api.value.outOfRange,\n segments: ctx.api.value.segments,\n columns: ctx.api.value.columns,\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTimePickerLabel = defineComponent({\n name: 'XhTimePickerLabel',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n // 仍用原生 label 保持表单语义,点标题聚焦第一段由连接层的 click 接管\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerControl = defineComponent({\n name: 'XhTimePickerControl',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerSegmentGroup = defineComponent({\n name: 'XhTimePickerSegmentGroup',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', ctx.api.value.getSegmentGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerInput = defineComponent({\n name: 'XhTimePickerInput',\n props: {\n // 段的身份由作者声明\n segment: { type: String as PropType<TimeSegmentType>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n // 有插槽用插槽,否则显示该段的文字,空段为占位串\n return () => h(\n 'span',\n ctx.api.value.getInputProps({ segment: props.segment }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getSegmentText({ segment: props.segment }),\n )\n },\n})\n\nexport const XhTimePickerTrigger = defineComponent({\n name: 'XhTimePickerTrigger',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('button', ctx.api.value.getTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerClearTrigger = defineComponent({\n name: 'XhTimePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerPositioner = defineComponent({\n name: 'XhTimePickerPositioner',\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useTimePickerContext()\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => h(Teleport, { to: ctx.portalTarget.value }, [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.()),\n ])\n },\n})\n\nexport const XhTimePickerContent = defineComponent({\n name: 'XhTimePickerContent',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerPresets = defineComponent({\n name: 'XhTimePickerPresets',\n slots: Object as SlotsType<{\n /** 自己铺条目;不写就按 presets 数据自动铺,两者产出的 DOM 一致。 */\n default?: (props: TimePickerPresetsSlotProps) => VNode[]\n }>,\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return h(\n 'div',\n api.getPresetsProps() as Record<string, unknown>,\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n )\n }\n },\n})\n\nexport const XhTimePickerPreset = defineComponent({\n name: 'XhTimePickerPreset',\n props: {\n /** 这一条的身份,与 presets 数据里的 value 逐字对上。 */\n value: { type: String, required: true },\n },\n slots: Object as SlotsType<{\n /** 条目内容;不写就用数据里的 label。 */\n default?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.()\n return h(\n 'div',\n api.getPresetProps({ value: props.value }) as Record<string, unknown>,\n slotPaints(authored) ? authored : api.presets.find(p => p.value === props.value)?.label,\n )\n }\n },\n})\n\nexport const XhTimePickerColumn = defineComponent({\n name: 'XhTimePickerColumn',\n props: {\n unit: { type: String as PropType<TimePickerColumnUnit>, required: true },\n },\n slots: Object as SlotsType<{\n default?: (props: TimePickerColumnSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const unit = computed(() => props.unit)\n // 下传单位,供列内选项取到自己归哪一列\n provideTimePickerColumn({ unit })\n return () => h(\n 'div',\n ctx.api.value.getColumnProps({ unit: props.unit }) as Record<string, unknown>,\n slots.default?.({ options: ctx.api.value.columns.find(c => c.unit === props.unit)?.options ?? [] }),\n )\n },\n})\n\nexport const XhTimePickerItem = defineComponent({\n name: 'XhTimePickerItem',\n props: {\n /** 两位补零的显示串('09' / '30');上下午列写 '00' / '01'。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const { unit } = useTimePickerColumnContext()\n // 有插槽用插槽,否则显示这一格该显示的文字(上下午列按 locale 译成「上午 / 下午」)\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ unit: unit.value, value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getItemText({ unit: unit.value, value: props.value }),\n )\n },\n})\n\nexport const XhTimePickerHiddenInput = defineComponent({\n name: 'XhTimePickerHiddenInput',\n setup() {\n const ctx = useTimePickerContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n"],"mappings":"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"}
1
+ {"version":3,"file":"time-picker.js","names":[],"sources":["../../../src/components/time-picker/time-picker.ts"],"sourcesContent":["import type {\n TimeGranularity,\n TimeHourCycle,\n TimePickerApi,\n TimePickerColumn,\n TimePickerColumnUnit,\n TimePickerPreset,\n TimePickerPresetState,\n TimePickerSchema,\n TimeSegmentType,\n} from '@xihan-ui/headless'\nimport type { ControlVariant, Placement, Size, Tone } from '@xihan-ui/kernel'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { computed, defineComponent, h, mergeProps, Teleport } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport {\n provideTimePicker,\n provideTimePickerColumn,\n useTimePickerColumnContext,\n useTimePickerContext,\n} from './context'\nimport { useTimePicker } from './use-time-picker'\n\ntype TimePickerProps = TimePickerSchema['props']\n\n/** 默认插槽的载荷:浮层开合与当前值、值状态标志、此刻的段与列,以及开合、写值、清空的动作。 */\nexport type TimePickerRootSlotProps = Pick<\n TimePickerApi,\n | 'open'\n | 'value'\n | 'empty'\n | 'outOfRange'\n | 'segments'\n | 'columns'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n>\n\n/** 默认插槽的载荷:这一列此刻的可选值。 */\nexport interface TimePickerColumnSlotProps {\n options: TimePickerColumn['options']\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自己铺条目。 */\nexport interface TimePickerPresetsSlotProps {\n presets: readonly TimePickerPresetState[]\n}\n\nexport const XhTimePickerRoot = defineComponent({\n name: 'XhTimePickerRoot',\n // 缺省值由 connect 给出,这里一律 default: undefined\n props: {\n value: { type: String, default: undefined },\n defaultValue: { type: String, default: undefined },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String, default: undefined },\n max: { type: String, default: undefined },\n locale: { type: String, default: undefined },\n hourCycle: { type: Number as PropType<TimeHourCycle>, default: undefined },\n granularity: { type: String as PropType<TimeGranularity>, default: undefined },\n step: { type: Number, default: undefined },\n /** 快捷选项;给了就在浮层里多出一列,时刻要在自己的 computed 里算好再传。 */\n presets: { type: Array as PropType<TimePickerPreset[]>, default: undefined },\n disabled: Boolean,\n translations: { type: Object as PropType<TimePickerProps['translations']>, default: undefined },\n isTimeUnavailable: { type: Function as PropType<(value: string, unit: TimePickerColumnUnit) => boolean>, default: undefined },\n readOnly: Boolean,\n invalid: Boolean,\n required: Boolean,\n name: { type: String, default: undefined },\n variant: { type: String as PropType<ControlVariant>, default: undefined },\n tone: { type: String as PropType<Tone>, default: undefined },\n size: { type: String as PropType<Size>, default: undefined },\n placement: { type: String as PropType<Placement>, default: undefined },\n offset: { type: Number, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值\n emits: {\n 'value-change': (_details: PayloadOf<TimePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<TimePickerProps, 'onOpenChange'>) => true,\n 'update:value': (_value: PayloadOf<TimePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<TimePickerProps, 'onOpenChange'>['open']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: TimePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyValue: TimePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: TimePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const ctx = useTimePicker(withXhConfig('time-picker', props) as TimePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n })\n provideTimePicker(ctx)\n\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n empty: ctx.api.value.empty,\n outOfRange: ctx.api.value.outOfRange,\n segments: ctx.api.value.segments,\n columns: ctx.api.value.columns,\n canClear: ctx.api.value.canClear,\n setOpen: ctx.api.value.setOpen,\n setValue: ctx.api.value.setValue,\n clear: ctx.api.value.clear,\n }))\n },\n})\n\nexport const XhTimePickerLabel = defineComponent({\n name: 'XhTimePickerLabel',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n // 仍用原生 label 保持表单语义,点标题聚焦第一段由连接层的 click 接管\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerControl = defineComponent({\n name: 'XhTimePickerControl',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getControlProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.controlRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerSegmentGroup = defineComponent({\n name: 'XhTimePickerSegmentGroup',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', ctx.api.value.getSegmentGroupProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerInput = defineComponent({\n name: 'XhTimePickerInput',\n props: {\n // 段的身份由作者声明\n segment: { type: String as PropType<TimeSegmentType>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n // 有插槽用插槽,否则显示该段的文字,空段为占位串\n return () => h(\n 'span',\n ctx.api.value.getInputProps({ segment: props.segment }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getSegmentText({ segment: props.segment }),\n )\n },\n})\n\nexport const XhTimePickerTrigger = defineComponent({\n name: 'XhTimePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useTimePickerContext()\n return () => h('button', fieldLabel.value({\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n // 归还焦点要落到它身上:锚点取的是整个输入行,那一层不可聚焦\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n ...fieldWiring.value,\n }), slots.default?.())\n },\n})\n\nexport const XhTimePickerClearTrigger = defineComponent({\n name: 'XhTimePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhTimePickerPositioner = defineComponent({\n name: 'XhTimePickerPositioner',\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useTimePickerContext()\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => h(Teleport, { to: ctx.portalTarget.value }, [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, slots.default?.()),\n ])\n },\n})\n\nexport const XhTimePickerContent = defineComponent({\n name: 'XhTimePickerContent',\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhTimePickerPresets = defineComponent({\n name: 'XhTimePickerPresets',\n slots: Object as SlotsType<{\n /** 自己铺条目;不写就按 presets 数据自动铺,两者产出的 DOM 一致。 */\n default?: (props: TimePickerPresetsSlotProps) => VNode[]\n }>,\n setup(_, { slots }) {\n const ctx = useTimePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return h(\n 'div',\n api.getPresetsProps() as Record<string, unknown>,\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n )\n }\n },\n})\n\nexport const XhTimePickerPreset = defineComponent({\n name: 'XhTimePickerPreset',\n props: {\n /** 这一条的身份,与 presets 数据里的 value 逐字对上。 */\n value: { type: String, required: true },\n },\n slots: Object as SlotsType<{\n /** 条目内容;不写就用数据里的 label。 */\n default?: () => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.()\n return h(\n 'div',\n api.getPresetProps({ value: props.value }) as Record<string, unknown>,\n slotPaints(authored) ? authored : api.presets.find(p => p.value === props.value)?.label,\n )\n }\n },\n})\n\nexport const XhTimePickerColumn = defineComponent({\n name: 'XhTimePickerColumn',\n props: {\n unit: { type: String as PropType<TimePickerColumnUnit>, required: true },\n },\n slots: Object as SlotsType<{\n default?: (props: TimePickerColumnSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const unit = computed(() => props.unit)\n // 下传单位,供列内选项取到自己归哪一列\n provideTimePickerColumn({ unit })\n return () => h(\n 'div',\n ctx.api.value.getColumnProps({ unit: props.unit }) as Record<string, unknown>,\n slots.default?.({ options: ctx.api.value.columns.find(c => c.unit === props.unit)?.options ?? [] }),\n )\n },\n})\n\nexport const XhTimePickerItem = defineComponent({\n name: 'XhTimePickerItem',\n props: {\n /** 两位补零的显示串('09' / '30');上下午列写 '00' / '01'。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useTimePickerContext()\n const { unit } = useTimePickerColumnContext()\n // 有插槽用插槽,否则显示这一格该显示的文字(上下午列按 locale 译成「上午 / 下午」)\n return () => h(\n 'div',\n ctx.api.value.getItemProps({ unit: unit.value, value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.getItemText({ unit: unit.value, value: props.value }),\n )\n },\n})\n\nexport const XhTimePickerHiddenInput = defineComponent({\n name: 'XhTimePickerHiddenInput',\n setup() {\n const ctx = useTimePickerContext()\n return () => h('input', ctx.api.value.getHiddenInputProps() as Record<string, unknown>)\n },\n})\n"],"mappings":"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"}
@@ -4,6 +4,7 @@ import { TimePickerApi, TimePickerSchema } from "@xihan-ui/headless";
4
4
  interface TimePickerContext {
5
5
  api: ComputedRef<TimePickerApi>;
6
6
  controlRef: Ref<HTMLElement | null>;
7
+ triggerRef: Ref<HTMLElement | null>;
7
8
  positionerRef: Ref<HTMLElement | null>;
8
9
  contentRef: Ref<HTMLElement | null>;
9
10
  /** 此刻该不该渲染:退场动画播完之前仍为真。 */
@@ -1 +1 @@
1
- {"version":3,"file":"use-time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/use-time-picker.ts"],"mappings":";;;UAaiB;EACf,KAAK,YAAY;EACjB,YAAY,IAAI;EAChB,eAAe,IAAI;EACnB,YAAY,IAAI;;EAEhB,SAAS;;EAET,cAAc,qBAAqB;;iBAGrB,cACd,OAAO,2BACP,WAAU,KAAK,+DACd"}
1
+ {"version":3,"file":"use-time-picker.d.ts","names":[],"sources":["../../../src/components/time-picker/use-time-picker.ts"],"mappings":";;;UAaiB;EACf,KAAK,YAAY;EACjB,YAAY,IAAI;EAChB,YAAY,IAAI;EAChB,eAAe,IAAI;EACnB,YAAY,IAAI;;EAEhB,SAAS;;EAET,cAAc,qBAAqB;;iBAGrB,cACd,OAAO,2BACP,WAAU,KAAK,+DACd"}
@@ -11,6 +11,7 @@ import { createPositionEngine } from "@xihan-ui/position";
11
11
  function useTimePicker(props, handlers = {}) {
12
12
  const xhConfig = useXhConfig();
13
13
  const controlRef = ref(null);
14
+ const triggerRef = ref(null);
14
15
  const positionerRef = ref(null);
15
16
  const contentRef = ref(null);
16
17
  const idGen = createVueIdGenerator();
@@ -37,6 +38,7 @@ function useTimePicker(props, handlers = {}) {
37
38
  service.refs.set("registerLayer", registerLayer);
38
39
  service.refs.set("position", createPositionEngine());
39
40
  service.refs.set("getAnchorEl", () => controlRef.value);
41
+ service.refs.set("getTriggerEl", () => triggerRef.value);
40
42
  service.refs.set("getFloatingEl", () => positionerRef.value);
41
43
  service.refs.set("getContentEl", () => contentRef.value);
42
44
  }
@@ -49,6 +51,7 @@ function useTimePicker(props, handlers = {}) {
49
51
  }),
50
52
  api,
51
53
  controlRef,
54
+ triggerRef,
52
55
  positionerRef,
53
56
  contentRef,
54
57
  portalTarget: computed(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? "body")
@@ -1 +1 @@
1
- {"version":3,"file":"use-time-picker.js","names":[],"sources":["../../../src/components/time-picker/use-time-picker.ts"],"sourcesContent":["import type { TimePickerApi, TimePickerSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectTimePicker, timePickerMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { useXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { useOverlayExit } from '../../runtime/use-overlay-exit'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TimePickerContext {\n api: ComputedRef<TimePickerApi>\n controlRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 此刻该不该渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n /** 浮层搬到哪儿:全局配置的容器 > 运行时的浮层落点 > body。 */\n portalTarget: ComputedRef<string | Element>\n}\n\nexport function useTimePicker(\n props: TimePickerSchema['props'],\n handlers: Pick<TimePickerSchema['props'], 'onValueChange' | 'onOpenChange'> = {},\n): TimePickerContext {\n const xhConfig = useXhConfig()\n const controlRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(timePickerMachine, () => ({ ...props, ...handlers }), scope)\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n let config: RuntimeConfig | null = null\n\n if (typeof document !== 'undefined') {\n config = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config!.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点触发器算层内交互\n branches: () => [controlRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n service.refs.set('config', config!)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => controlRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectTimePicker(service, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({ config, isOpen: () => api.value.open, contentRef })\n // 全局配置写了容器就用它,否则落到运行时那个单一浮层落点;没有 DOM 时才回到 body\n const portalTarget = computed<string | Element>(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? 'body')\n\n return { visible, api, controlRef, positionerRef, contentRef, portalTarget }\n}\n"],"mappings":";;;;;;;;;;AAwBA,SAAgB,cACd,OACA,WAA8E,CAAC,GAC5D;CACnB,MAAM,WAAW,YAAY;CAC7B,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAG/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,0BAA0B;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CAGtF,IAAI,SAA+B;CAEnC,IAAI,OAAO,aAAa,aAAa;EACnC,SAAS,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG1D,MAAM,sBAA0D,OAAQ,cAAc,SAAS;GAC7F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAO;EAClC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAEA,MAAM,MAAM,eAAe,kBAAkB,SAAS,YAAY,CAAC;CAMnE,OAAO;EAAE,SAJO,eAAe;GAAE;GAAQ,cAAc,IAAI,MAAM;GAAM;EAAW,CAInE;EAAG;EAAK;EAAY;EAAe;EAAY,cAFzC,eAAiC,SAAS,MAAM,kBAAkB,KAAK,QAAQ,gBAAgB,KAAK,MAEhD;CAAE;AAC7E"}
1
+ {"version":3,"file":"use-time-picker.js","names":[],"sources":["../../../src/components/time-picker/use-time-picker.ts"],"sourcesContent":["import type { TimePickerApi, TimePickerSchema } from '@xihan-ui/headless'\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/kernel'\nimport type { ComputedRef, Ref } from 'vue'\nimport { connectTimePicker, timePickerMachine } from '@xihan-ui/headless'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/kernel'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { useXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { useOverlayExit } from '../../runtime/use-overlay-exit'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface TimePickerContext {\n api: ComputedRef<TimePickerApi>\n controlRef: Ref<HTMLElement | null>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 此刻该不该渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n /** 浮层搬到哪儿:全局配置的容器 > 运行时的浮层落点 > body。 */\n portalTarget: ComputedRef<string | Element>\n}\n\nexport function useTimePicker(\n props: TimePickerSchema['props'],\n handlers: Pick<TimePickerSchema['props'], 'onValueChange' | 'onOpenChange'> = {},\n): TimePickerContext {\n const xhConfig = useXhConfig()\n const controlRef = ref<HTMLElement | null>(null)\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n // scope id 走 Vue 的 useId,保证同页多实例的 IDREF 不相撞\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const service = useMachine(timePickerMachine, () => ({ ...props, ...handlers }), scope)\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n let config: RuntimeConfig | null = null\n\n if (typeof document !== 'undefined') {\n config = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config!.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点触发器算层内交互\n branches: () => [controlRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n setModal: () => {},\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n service.refs.set('config', config!)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getAnchorEl', () => controlRef.value)\n service.refs.set('getTriggerEl', () => triggerRef.value)\n service.refs.set('getFloatingEl', () => positionerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectTimePicker(service, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({ config, isOpen: () => api.value.open, contentRef })\n // 全局配置写了容器就用它,否则落到运行时那个单一浮层落点;没有 DOM 时才回到 body\n const portalTarget = computed<string | Element>(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? 'body')\n\n return { visible, api, controlRef, triggerRef, positionerRef, contentRef, portalTarget }\n}\n"],"mappings":";;;;;;;;;;AAyBA,SAAgB,cACd,OACA,WAA8E,CAAC,GAC5D;CACnB,MAAM,WAAW,YAAY;CAC7B,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAG/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,UAAU,WAAW,0BAA0B;EAAE,GAAG;EAAO,GAAG;CAAS,IAAI,KAAK;CAGtF,IAAI,SAA+B;CAEnC,IAAI,OAAO,aAAa,aAAa;EACnC,SAAS,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG1D,MAAM,sBAA0D,OAAQ,cAAc,SAAS;GAC7F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,OAAO;GACjD,eAAe;GACf,gBAAgB,CAAC;GACjB,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAO;EAClC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,qBAAqB,WAAW,KAAK;EACtD,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;EACvD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAC3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAEA,MAAM,MAAM,eAAe,kBAAkB,SAAS,YAAY,CAAC;CAMnE,OAAO;EAAE,SAJO,eAAe;GAAE;GAAQ,cAAc,IAAI,MAAM;GAAM;EAAW,CAInE;EAAG;EAAK;EAAY;EAAY;EAAe;EAAY,cAFrD,eAAiC,SAAS,MAAM,kBAAkB,KAAK,QAAQ,gBAAgB,KAAK,MAEpC;CAAE;AACzF"}
@@ -1,8 +1,8 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/timeline/context.ts
3
- const KEY = Symbol("xh-timeline");
3
+ const KEY = Symbol.for("xh-timeline");
4
4
  /** 条目的语气下传给圆点,用 getter 以跟随 tone 变更。 */
5
- const ITEM_KEY = Symbol("xh-timeline-item");
5
+ const ITEM_KEY = Symbol.for("xh-timeline-item");
6
6
  function provideTimeline(ctx) {
7
7
  provide(KEY, ctx);
8
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/timeline/context.ts"],"sourcesContent":["import type { TimelineApi, TimelineItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface TimelineContext {\n api: ComputedRef<TimelineApi>\n}\n\nconst KEY: InjectionKey<TimelineContext> = Symbol('xh-timeline')\n/** 条目的语气下传给圆点,用 getter 以跟随 tone 变更。 */\nconst ITEM_KEY: InjectionKey<() => TimelineItemProps> = Symbol('xh-timeline-item')\n\nexport function provideTimeline(ctx: TimelineContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimelineContext(): TimelineContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Timeline 部件必须用在 XhTimelineRoot 内')\n return ctx\n}\n\nexport function provideTimelineItem(item: () => TimelineItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useTimelineItem(): () => TimelineItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Timeline 圆点必须用在 XhTimelineItem 内')\n return item\n}\n"],"mappings":";;AAQA,MAAM,MAAqC,OAAO,aAAa;;AAE/D,MAAM,WAAkD,OAAO,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,oBAAoB,MAAqC;CACvE,QAAQ,UAAU,IAAI;AACxB;AAEA,SAAgB,kBAA2C;CACzD,MAAM,OAAO,OAAO,UAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/timeline/context.ts"],"sourcesContent":["import type { TimelineApi, TimelineItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport { inject, provide } from 'vue'\n\nexport interface TimelineContext {\n api: ComputedRef<TimelineApi>\n}\n\nconst KEY: InjectionKey<TimelineContext> = Symbol.for('xh-timeline')\n/** 条目的语气下传给圆点,用 getter 以跟随 tone 变更。 */\nconst ITEM_KEY: InjectionKey<() => TimelineItemProps> = Symbol.for('xh-timeline-item')\n\nexport function provideTimeline(ctx: TimelineContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimelineContext(): TimelineContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Timeline 部件必须用在 XhTimelineRoot 内')\n return ctx\n}\n\nexport function provideTimelineItem(item: () => TimelineItemProps): void {\n provide(ITEM_KEY, item)\n}\n\nexport function useTimelineItem(): () => TimelineItemProps {\n const item = inject(ITEM_KEY, null)\n if (!item)\n throw new Error('[xh] Timeline 圆点必须用在 XhTimelineItem 内')\n return item\n}\n"],"mappings":";;AAQA,MAAM,MAAqC,OAAO,IAAI,aAAa;;AAEnE,MAAM,WAAkD,OAAO,IAAI,kBAAkB;AAErF,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,oBAAoB,MAAqC;CACvE,QAAQ,UAAU,IAAI;AACxB;AAEA,SAAgB,kBAA2C;CACzD,MAAM,OAAO,OAAO,UAAU,IAAI;CAClC,IAAI,CAAC,MACH,MAAM,IAAI,MAAM,uCAAuC;CACzD,OAAO;AACT"}
@@ -32,8 +32,8 @@ declare const XhTimelineRoot: import("vue").DefineComponent<import("vue").Extrac
32
32
  default: undefined;
33
33
  };
34
34
  }>> & Readonly<{}>, {
35
- size: Size;
36
35
  orientation: Orientation;
36
+ size: Size;
37
37
  placement: TimelinePlacement;
38
38
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
39
39
  /** 一条事件。tone 只在这一条内生效,下传给它自己的圆点。 */
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/timer/context.ts
3
- const KEY = Symbol("xh-timer");
3
+ const KEY = Symbol.for("xh-timer");
4
4
  function provideTimer(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/timer/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TimerContext } from './use-timer'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TimerContext> = Symbol('xh-timer')\n\nexport function provideTimer(ctx: TimerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimerContext(): TimerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Timer 部件必须用在 XhTimerRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,UAAU;AAEzD,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/timer/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { TimerContext } from './use-timer'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<TimerContext> = Symbol.for('xh-timer')\n\nexport function provideTimer(ctx: TimerContext): void {\n provide(KEY, ctx)\n}\n\nexport function useTimerContext(): TimerContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Timer 部件必须用在 XhTimerRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,IAAI,UAAU;AAE7D,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/toast/context.ts
3
- const KEY = Symbol("xh-toast");
3
+ const KEY = Symbol.for("xh-toast");
4
4
  function provideToast(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toast/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToastContext } from './use-toast'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToastContext> = Symbol('xh-toast')\n\nexport function provideToast(ctx: ToastContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToastContext(): ToastContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Toast 部件必须用在 XhToastRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,UAAU;AAEzD,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toast/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToastContext } from './use-toast'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToastContext> = Symbol.for('xh-toast')\n\nexport function provideToast(ctx: ToastContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToastContext(): ToastContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] Toast 部件必须用在 XhToastRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAkC,OAAO,IAAI,UAAU;AAE7D,SAAgB,aAAa,KAAyB;CACpD,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,kBAAgC;CAC9C,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,iCAAiC;CACnD,OAAO;AACT"}
@@ -14,10 +14,6 @@ declare const XhToastRoot: import("vue").DefineComponent<import("vue").ExtractPr
14
14
  type: StringConstructor;
15
15
  default: undefined;
16
16
  };
17
- description: {
18
- type: StringConstructor;
19
- default: undefined;
20
- };
21
17
  type: {
22
18
  type: PropType<ToastType>;
23
19
  default: undefined;
@@ -56,10 +52,6 @@ declare const XhToastRoot: import("vue").DefineComponent<import("vue").ExtractPr
56
52
  type: StringConstructor;
57
53
  default: undefined;
58
54
  };
59
- description: {
60
- type: StringConstructor;
61
- default: undefined;
62
- };
63
55
  type: {
64
56
  type: PropType<ToastType>;
65
57
  default: undefined;
@@ -93,19 +85,15 @@ declare const XhToastRoot: import("vue").DefineComponent<import("vue").ExtractPr
93
85
  closable: boolean;
94
86
  translations: Partial<ToastTranslations>;
95
87
  duration: number;
96
- id: string;
97
- description: string;
98
88
  removeDelay: number;
99
89
  pauseOnPageIdle: boolean;
90
+ id: string;
100
91
  }, SlotsType<{
101
92
  default?: (props: ToastRootSlotProps) => VNode[];
102
93
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
103
94
  declare const XhToastTitle: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
104
95
  [key: string]: any;
105
96
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
106
- declare const XhToastDescription: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
107
- [key: string]: any;
108
- }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
109
97
  declare const XhToastActionTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
110
98
  [key: string]: any;
111
99
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -113,5 +101,5 @@ declare const XhToastCloseTrigger: import("vue").DefineComponent<{}, () => VNode
113
101
  [key: string]: any;
114
102
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
115
103
  //#endregion
116
- export { ToastRootSlotProps, XhToastActionTrigger, XhToastCloseTrigger, XhToastDescription, XhToastRoot, XhToastTitle };
104
+ export { ToastRootSlotProps, XhToastActionTrigger, XhToastCloseTrigger, XhToastRoot, XhToastTitle };
117
105
  //# sourceMappingURL=toast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.d.ts","names":[],"sources":["../../../src/components/toast/toast.ts"],"mappings":";;;;KAQK,aAAa;;KAGN,qBAAqB,KAC/B;cAIW,2BAAW,8BAAA;;;;;;;;;;;;;;IAQI,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;IAKD,MAAA,SAAS,QAAQ;;;;;;EAIrB,kBAAA,UAAA,UAAU;EACjB,SAAA,UAAA,UAAU;;;;;;;;;;;;;;;IAVP,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;IAKD,MAAA,SAAS,QAAQ;;;;;;;;;;;;;;;;;EAQvC,WAAC,OAAO,uBAAuB;kCAsB3C;cAEW,4BAAY,0BAAA,oBAAA,4BAAA;;8BAWvB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAU7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"toast.d.ts","names":[],"sources":["../../../src/components/toast/toast.ts"],"mappings":";;;;KAQK,aAAa;;KAGN,qBAAqB,KAC/B;cAIW,2BAAW,8BAAA;;;;;;;;;;IAOI,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;IAKD,MAAA,SAAS,QAAQ;;;;;;EAIrB,kBAAA,UAAA,UAAU;EACjB,SAAA,UAAA,UAAU;;;;;;;;;;;IAVP,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;IAKD,MAAA,SAAS,QAAQ;;;;;;;;;;;;;;;;EAQvC,WAAC,OAAO,uBAAuB;kCAsB3C;cAEW,4BAAY,0BAAA,oBAAA,4BAAA;;8BAWvB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAO/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -14,10 +14,6 @@ const XhToastRoot = defineComponent({
14
14
  type: String,
15
15
  default: void 0
16
16
  },
17
- description: {
18
- type: String,
19
- default: void 0
20
- },
21
17
  type: {
22
18
  type: String,
23
19
  default: void 0
@@ -76,13 +72,6 @@ const XhToastTitle = defineComponent({
76
72
  return () => h("div", ctx.api.value.getTitleProps(), slots.default ? slots.default() : ctx.api.value.title);
77
73
  }
78
74
  });
79
- const XhToastDescription = defineComponent({
80
- name: "XhToastDescription",
81
- setup(_, { slots }) {
82
- const ctx = useToastContext();
83
- return () => h("div", ctx.api.value.getDescriptionProps(), slots.default ? slots.default() : ctx.api.value.description);
84
- }
85
- });
86
75
  const XhToastActionTrigger = defineComponent({
87
76
  name: "XhToastActionTrigger",
88
77
  setup(_, { slots }) {
@@ -98,6 +87,6 @@ const XhToastCloseTrigger = defineComponent({
98
87
  }
99
88
  });
100
89
  //#endregion
101
- export { XhToastActionTrigger, XhToastCloseTrigger, XhToastDescription, XhToastRoot, XhToastTitle };
90
+ export { XhToastActionTrigger, XhToastCloseTrigger, XhToastRoot, XhToastTitle };
102
91
 
103
92
  //# sourceMappingURL=toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","names":[],"sources":["../../../src/components/toast/toast.ts"],"sourcesContent":["import type { ToastApi, ToastSchema, ToastTranslations, ToastType } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { provideToast, useToastContext } from './context'\nimport { useToast } from './use-toast'\n\ntype ToastProps = ToastSchema['props']\n\n/** 默认插槽的载荷:这一条的身份、状态、计时剩余与生命周期方法。 */\nexport type ToastRootSlotProps = Pick<\n ToastApi,\n 'id' | 'status' | 'type' | 'paused' | 'remaining' | 'dismiss' | 'pause' | 'resume'\n>\n\nexport const XhToastRoot = defineComponent({\n name: 'XhToastRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n // 队列身份,不是 DOM id;不给则回落到实例的 scope id\n id: { type: String, default: undefined },\n title: { type: String, default: undefined },\n description: { type: String, default: undefined },\n type: { type: String as PropType<ToastType>, default: undefined },\n duration: { type: Number, default: undefined },\n removeDelay: { type: Number, default: undefined },\n closable: { type: Boolean, default: undefined },\n pauseOnPageIdle: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<Partial<ToastTranslations>>, default: undefined },\n },\n // status-change 携带 { id, status },action 携带 { id }\n emits: {\n 'status-change': (_details: PayloadOf<ToastProps, 'onStatusChange'>) => true,\n 'action': (_details: PayloadOf<ToastProps, 'onAction'>) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: ToastRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyStatus: ToastProps['onStatusChange'] = (details) => {\n emit('status-change', details)\n }\n const notifyAction: ToastProps['onAction'] = (details) => {\n emit('action', details)\n }\n const ctx = useToast(withXhConfig('toast', props) as ToastProps, notifyStatus, notifyAction)\n provideToast(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n id: ctx.api.value.id,\n status: ctx.api.value.status,\n type: ctx.api.value.type,\n paused: ctx.api.value.paused,\n remaining: ctx.api.value.remaining,\n dismiss: ctx.api.value.dismiss,\n pause: ctx.api.value.pause,\n resume: ctx.api.value.resume,\n }))\n },\n})\n\nexport const XhToastTitle = defineComponent({\n name: 'XhToastTitle',\n setup(_, { slots }) {\n const ctx = useToastContext()\n // 渲染为 div 而非标题标签;无插槽内容时用 title prop 兜底\n return () => h(\n 'div',\n ctx.api.value.getTitleProps() as Record<string, unknown>,\n slots.default ? slots.default() : ctx.api.value.title,\n )\n },\n})\n\nexport const XhToastDescription = defineComponent({\n name: 'XhToastDescription',\n setup(_, { slots }) {\n const ctx = useToastContext()\n return () => h(\n 'div',\n ctx.api.value.getDescriptionProps() as Record<string, unknown>,\n slots.default ? slots.default() : ctx.api.value.description,\n )\n },\n})\n\nexport const XhToastActionTrigger = defineComponent({\n name: 'XhToastActionTrigger',\n setup(_, { slots }) {\n const ctx = useToastContext()\n // 原生 <button>,激活行为交给平台\n return () => h('button', ctx.api.value.getActionTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhToastCloseTrigger = defineComponent({\n name: 'XhToastCloseTrigger',\n setup(_, { slots }) {\n const ctx = useToastContext()\n return () => h('button', ctx.api.value.getCloseTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;AAgBA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EAEL,IAAI;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACvC,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,MAAM;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAChE,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,iBAAiB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACrD,cAAc;GAAE,MAAM;GAAgD,SAAS,KAAA;EAAU;CAC3F;CAEA,OAAO;EACL,kBAAkB,aAAsD;EACxE,WAAW,aAAgD;CAC7D;CACA,OAAO;CAGP,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,gBAA8C,YAAY;GAC9D,KAAK,iBAAiB,OAAO;EAC/B;EACA,MAAM,gBAAwC,YAAY;GACxD,KAAK,UAAU,OAAO;EACxB;EACA,MAAM,MAAM,SAAS,aAAa,SAAS,KAAK,GAAiB,cAAc,YAAY;EAC3F,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,IAAI,IAAI,IAAI,MAAM;GAClB,QAAQ,IAAI,IAAI,MAAM;GACtB,MAAM,IAAI,IAAI,MAAM;GACpB,QAAQ,IAAI,IAAI,MAAM;GACtB,WAAW,IAAI,IAAI,MAAM;GACzB,SAAS,IAAI,IAAI,MAAM;GACvB,OAAO,IAAI,IAAI,MAAM;GACrB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,cAAc,GAC5B,MAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,IAAI,MAAM,KAClD;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,oBAAoB,GAClC,MAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,IAAI,MAAM,WAClD;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC"}
1
+ {"version":3,"file":"toast.js","names":[],"sources":["../../../src/components/toast/toast.ts"],"sourcesContent":["import type { ToastApi, ToastSchema, ToastTranslations, ToastType } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { provideToast, useToastContext } from './context'\nimport { useToast } from './use-toast'\n\ntype ToastProps = ToastSchema['props']\n\n/** 默认插槽的载荷:这一条的身份、状态、计时剩余与生命周期方法。 */\nexport type ToastRootSlotProps = Pick<\n ToastApi,\n 'id' | 'status' | 'type' | 'paused' | 'remaining' | 'dismiss' | 'pause' | 'resume'\n>\n\nexport const XhToastRoot = defineComponent({\n name: 'XhToastRoot',\n // 缺省值由 connect 与机器给出,这里一律 default: undefined\n props: {\n // 队列身份,不是 DOM id;不给则回落到实例的 scope id\n id: { type: String, default: undefined },\n title: { type: String, default: undefined },\n type: { type: String as PropType<ToastType>, default: undefined },\n duration: { type: Number, default: undefined },\n removeDelay: { type: Number, default: undefined },\n closable: { type: Boolean, default: undefined },\n pauseOnPageIdle: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<Partial<ToastTranslations>>, default: undefined },\n },\n // status-change 携带 { id, status },action 携带 { id }\n emits: {\n 'status-change': (_details: PayloadOf<ToastProps, 'onStatusChange'>) => true,\n 'action': (_details: PayloadOf<ToastProps, 'onAction'>) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: ToastRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const notifyStatus: ToastProps['onStatusChange'] = (details) => {\n emit('status-change', details)\n }\n const notifyAction: ToastProps['onAction'] = (details) => {\n emit('action', details)\n }\n const ctx = useToast(withXhConfig('toast', props) as ToastProps, notifyStatus, notifyAction)\n provideToast(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.({\n id: ctx.api.value.id,\n status: ctx.api.value.status,\n type: ctx.api.value.type,\n paused: ctx.api.value.paused,\n remaining: ctx.api.value.remaining,\n dismiss: ctx.api.value.dismiss,\n pause: ctx.api.value.pause,\n resume: ctx.api.value.resume,\n }))\n },\n})\n\nexport const XhToastTitle = defineComponent({\n name: 'XhToastTitle',\n setup(_, { slots }) {\n const ctx = useToastContext()\n // 渲染为 div 而非标题标签;无插槽内容时用 title prop 兜底\n return () => h(\n 'div',\n ctx.api.value.getTitleProps() as Record<string, unknown>,\n slots.default ? slots.default() : ctx.api.value.title,\n )\n },\n})\n\nexport const XhToastActionTrigger = defineComponent({\n name: 'XhToastActionTrigger',\n setup(_, { slots }) {\n const ctx = useToastContext()\n // 原生 <button>,激活行为交给平台\n return () => h('button', ctx.api.value.getActionTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhToastCloseTrigger = defineComponent({\n name: 'XhToastCloseTrigger',\n setup(_, { slots }) {\n const ctx = useToastContext()\n return () => h('button', ctx.api.value.getCloseTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;AAgBA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EAEL,IAAI;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EACvC,OAAO;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC1C,MAAM;GAAE,MAAM;GAA+B,SAAS,KAAA;EAAU;EAChE,UAAU;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAC7C,aAAa;GAAE,MAAM;GAAQ,SAAS,KAAA;EAAU;EAChD,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,iBAAiB;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EACrD,cAAc;GAAE,MAAM;GAAgD,SAAS,KAAA;EAAU;CAC3F;CAEA,OAAO;EACL,kBAAkB,aAAsD;EACxE,WAAW,aAAgD;CAC7D;CACA,OAAO;CAGP,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,gBAA8C,YAAY;GAC9D,KAAK,iBAAiB,OAAO;EAC/B;EACA,MAAM,gBAAwC,YAAY;GACxD,KAAK,UAAU,OAAO;EACxB;EACA,MAAM,MAAM,SAAS,aAAa,SAAS,KAAK,GAAiB,cAAc,YAAY;EAC3F,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU;GAC7F,IAAI,IAAI,IAAI,MAAM;GAClB,QAAQ,IAAI,IAAI,MAAM;GACtB,MAAM,IAAI,IAAI,MAAM;GACpB,QAAQ,IAAI,IAAI,MAAM;GACtB,WAAW,IAAI,IAAI,MAAM;GACzB,SAAS,IAAI,IAAI,MAAM;GACvB,OAAO,IAAI,IAAI,MAAM;GACrB,QAAQ,IAAI,IAAI,MAAM;EACxB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EACX,OACA,IAAI,IAAI,MAAM,cAAc,GAC5B,MAAM,UAAU,MAAM,QAAQ,IAAI,IAAI,IAAI,MAAM,KAClD;CACF;AACF,CAAC;AAED,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAE5B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,sBAAsB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-toast.d.ts","names":[],"sources":["../../../src/components/toast/use-toast.ts"],"mappings":";;;UAQiB;EACf,KAAK,YAAY;;iBAGH,SACd,OAAO,sBACP,iBAAiB,wCACjB,WAAW,mCACV"}
1
+ {"version":3,"file":"use-toast.d.ts","names":[],"sources":["../../../src/components/toast/use-toast.ts"],"mappings":";;;UAOiB;EACf,KAAK,YAAY;;iBAGH,SACd,OAAO,sBACP,iBAAiB,wCACjB,WAAW,mCACV"}
@@ -1,18 +1,12 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
2
  import { useMachine } from "../../runtime/use-machine.js";
3
- import { useToasterContextOptional } from "../toaster/context.js";
4
3
  import { computed } from "vue";
5
4
  import { connectToast, toastMachine } from "@xihan-ui/headless";
6
5
  //#region src/components/toast/use-toast.ts
7
6
  function useToast(props, onStatusChange, onAction) {
8
- const toaster = useToasterContextOptional();
9
- const notifyStatus = (details) => {
10
- onStatusChange?.(details);
11
- if (details.status === "unmounted") toaster?.dismiss(details.id);
12
- };
13
7
  const service = useMachine(toastMachine, () => ({
14
8
  ...props,
15
- onStatusChange: notifyStatus,
9
+ onStatusChange,
16
10
  onAction
17
11
  }));
18
12
  return { api: computed(() => connectToast(service, vueNormalize)) };
@@ -1 +1 @@
1
- {"version":3,"file":"use-toast.js","names":[],"sources":["../../../src/components/toast/use-toast.ts"],"sourcesContent":["import type { ToastApi, ToastSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectToast, toastMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { useToasterContextOptional } from '../toaster/context'\n\nexport interface ToastContext {\n api: ComputedRef<ToastApi>\n}\n\nexport function useToast(\n props: ToastSchema['props'],\n onStatusChange?: ToastSchema['props']['onStatusChange'],\n onAction?: ToastSchema['props']['onAction'],\n): ToastContext {\n // 退场后由适配器回队列删记录;外层无队列时注入为 null\n const toaster = useToasterContextOptional()\n const notifyStatus: ToastSchema['props']['onStatusChange'] = (details) => {\n onStatusChange?.(details)\n if (details.status === 'unmounted')\n toaster?.dismiss(details.id)\n }\n const service = useMachine(toastMachine, () => ({ ...props, onStatusChange: notifyStatus, onAction }))\n const api = computed(() => connectToast(service, vueNormalize))\n return { api }\n}\n"],"mappings":";;;;;;AAYA,SAAgB,SACd,OACA,gBACA,UACc;CAEd,MAAM,UAAU,0BAA0B;CAC1C,MAAM,gBAAwD,YAAY;EACxE,iBAAiB,OAAO;EACxB,IAAI,QAAQ,WAAW,aACrB,SAAS,QAAQ,QAAQ,EAAE;CAC/B;CACA,MAAM,UAAU,WAAW,qBAAqB;EAAE,GAAG;EAAO,gBAAgB;EAAc;CAAS,EAAE;CAErG,OAAO,EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD,EAAE;AACf"}
1
+ {"version":3,"file":"use-toast.js","names":[],"sources":["../../../src/components/toast/use-toast.ts"],"sourcesContent":["import type { ToastApi, ToastSchema } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { connectToast, toastMachine } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\n\nexport interface ToastContext {\n api: ComputedRef<ToastApi>\n}\n\nexport function useToast(\n props: ToastSchema['props'],\n onStatusChange?: ToastSchema['props']['onStatusChange'],\n onAction?: ToastSchema['props']['onAction'],\n): ToastContext {\n const service = useMachine(toastMachine, () => ({ ...props, onStatusChange, onAction }))\n const api = computed(() => connectToast(service, vueNormalize))\n return { api }\n}\n"],"mappings":";;;;;AAWA,SAAgB,SACd,OACA,gBACA,UACc;CACd,MAAM,UAAU,WAAW,qBAAqB;EAAE,GAAG;EAAO;EAAgB;CAAS,EAAE;CAEvF,OAAO,EAAE,KADG,eAAe,aAAa,SAAS,YAAY,CAClD,EAAE;AACf"}
@@ -1,6 +1,6 @@
1
1
  import { inject, provide } from "vue";
2
2
  //#region src/components/toggle-group/context.ts
3
- const KEY = Symbol("xh-toggle-group");
3
+ const KEY = Symbol.for("xh-toggle-group");
4
4
  function provideToggleGroup(ctx) {
5
5
  provide(KEY, ctx);
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toggle-group/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToggleGroupContext } from './use-toggle-group'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToggleGroupContext> = Symbol('xh-toggle-group')\n\nexport function provideToggleGroup(ctx: ToggleGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToggleGroupContext(): ToggleGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ToggleGroup 部件必须用在 XhToggleGroupRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAwC,OAAO,iBAAiB;AAEtE,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/toggle-group/context.ts"],"sourcesContent":["import type { InjectionKey } from 'vue'\nimport type { ToggleGroupContext } from './use-toggle-group'\nimport { inject, provide } from 'vue'\n\nconst KEY: InjectionKey<ToggleGroupContext> = Symbol.for('xh-toggle-group')\n\nexport function provideToggleGroup(ctx: ToggleGroupContext): void {\n provide(KEY, ctx)\n}\n\nexport function useToggleGroupContext(): ToggleGroupContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ToggleGroup 部件必须用在 XhToggleGroupRoot 内')\n return ctx\n}\n"],"mappings":";;AAIA,MAAM,MAAwC,OAAO,IAAI,iBAAiB;AAE1E,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT"}
@@ -1,7 +1,7 @@
1
1
  import { PayloadOf } from "../../runtime/payload.js";
2
2
  import { PropType, VNode } from "vue";
3
3
  import { ToggleGroupNode, ToggleGroupSchema, ToggleGroupValue } from "@xihan-ui/headless";
4
- import { Direction, Orientation } from "@xihan-ui/kernel";
4
+ import { Direction, Orientation, Size } from "@xihan-ui/kernel";
5
5
  //#region src/components/toggle-group/toggle-group.d.ts
6
6
  type ToggleGroupProps = ToggleGroupSchema['props'];
7
7
  declare const XhToggleGroupRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
@@ -29,6 +29,10 @@ declare const XhToggleGroupRoot: import("vue").DefineComponent<import("vue").Ext
29
29
  type: BooleanConstructor;
30
30
  default: undefined;
31
31
  };
32
+ size: {
33
+ type: PropType<Size>;
34
+ default: undefined;
35
+ };
32
36
  orientation: {
33
37
  type: PropType<Orientation>;
34
38
  default: undefined;
@@ -75,6 +79,10 @@ declare const XhToggleGroupRoot: import("vue").DefineComponent<import("vue").Ext
75
79
  type: BooleanConstructor;
76
80
  default: undefined;
77
81
  };
82
+ size: {
83
+ type: PropType<Size>;
84
+ default: undefined;
85
+ };
78
86
  orientation: {
79
87
  type: PropType<Orientation>;
80
88
  default: undefined;
@@ -101,6 +109,7 @@ declare const XhToggleGroupRoot: import("vue").DefineComponent<import("vue").Ext
101
109
  defaultValue: ToggleGroupValue;
102
110
  orientation: Orientation;
103
111
  dir: Direction;
112
+ size: Size;
104
113
  disabled: boolean;
105
114
  loop: boolean;
106
115
  disallowEmpty: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.d.ts","names":[],"sources":["../../../src/components/toggle-group/toggle-group.ts"],"mappings":";;;;;KAQK,mBAAmB;cAEX,iCAAiB,8BAAA;;IAIG,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;;;;;;;;;;;;;IAInB,MAAA,SAAS;;;;IACjB,MAAA,SAAS;;;;;;;;;;;;;;EAML,iBAAA,UAAA,UAAU;EACZ,iBAAA,QAAA,UAAU;;;IAdN,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;;;;;;;;;;;;;IAInB,MAAA,SAAS;;;;IACjB,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;qCA0BlC;cAEW,iCAAiB,8BAAA;;;;;;;;;;;;;;;;;;;;;;qCAmC5B"}
1
+ {"version":3,"file":"toggle-group.d.ts","names":[],"sources":["../../../src/components/toggle-group/toggle-group.ts"],"mappings":";;;;;KAQK,mBAAmB;cAEX,iCAAiB,8BAAA;;IAIG,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;;;;;;;;;;;;;IAI1B,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACjB,MAAA,SAAS;;;;;;;;;;;;;;EAML,iBAAA,UAAA,UAAU;EACZ,iBAAA,QAAA,UAAU;;;IAfN,MAAA,SAAS;;;;IACJ,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;;;;;;;;;;;;;IAI1B,MAAA,SAAS;;;;IACF,MAAA,SAAS;;;;IACjB,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;qCA0BlC;cAEW,iCAAiB,8BAAA;;;;;;;;;;;;;;;;;;;;;;qCAmC5B"}
@@ -29,6 +29,10 @@ const XhToggleGroupRoot = defineComponent({
29
29
  type: Boolean,
30
30
  default: void 0
31
31
  },
32
+ size: {
33
+ type: String,
34
+ default: void 0
35
+ },
32
36
  orientation: {
33
37
  type: String,
34
38
  default: void 0