@xihan-ui/vue 2.1.0 → 3.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 (708) hide show
  1. package/CHANGELOG.md +1394 -0
  2. package/README.md +1 -1
  3. package/dist/components/accordion/accordion.d.ts +6 -0
  4. package/dist/components/accordion/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion/accordion.js +4 -2
  6. package/dist/components/accordion/accordion.js.map +1 -1
  7. package/dist/components/alert/alert.d.ts +9 -0
  8. package/dist/components/alert/alert.d.ts.map +1 -1
  9. package/dist/components/alert/alert.js +4 -0
  10. package/dist/components/alert/alert.js.map +1 -1
  11. package/dist/components/anchor/anchor.d.ts +2 -2
  12. package/dist/components/anchor/anchor.d.ts.map +1 -1
  13. package/dist/components/anchor/anchor.js +2 -2
  14. package/dist/components/anchor/anchor.js.map +1 -1
  15. package/dist/components/anchor/use-anchor.d.ts +2 -2
  16. package/dist/components/anchor/use-anchor.js +3 -3
  17. package/dist/components/anchor/use-anchor.js.map +1 -1
  18. package/dist/components/approval/approval.d.ts +8 -1
  19. package/dist/components/approval/approval.d.ts.map +1 -1
  20. package/dist/components/approval/approval.js +10 -1
  21. package/dist/components/approval/approval.js.map +1 -1
  22. package/dist/components/avatar/avatar.d.ts +8 -0
  23. package/dist/components/avatar/avatar.d.ts.map +1 -1
  24. package/dist/components/avatar/avatar.js +3 -1
  25. package/dist/components/avatar/avatar.js.map +1 -1
  26. package/dist/components/avatar/use-avatar.d.ts.map +1 -1
  27. package/dist/components/avatar/use-avatar.js +3 -1
  28. package/dist/components/avatar/use-avatar.js.map +1 -1
  29. package/dist/components/back-top/use-back-top.d.ts.map +1 -1
  30. package/dist/components/back-top/use-back-top.js +3 -1
  31. package/dist/components/back-top/use-back-top.js.map +1 -1
  32. package/dist/components/badge/badge.d.ts +22 -0
  33. package/dist/components/badge/badge.d.ts.map +1 -1
  34. package/dist/components/badge/badge.js +11 -2
  35. package/dist/components/badge/badge.js.map +1 -1
  36. package/dist/components/breadcrumb/breadcrumb.d.ts +11 -1
  37. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  38. package/dist/components/breadcrumb/breadcrumb.js +28 -9
  39. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  40. package/dist/components/calendar-picker/calendar-picker.d.ts +16 -0
  41. package/dist/components/calendar-picker/calendar-picker.d.ts.map +1 -1
  42. package/dist/components/calendar-picker/calendar-picker.js +4 -0
  43. package/dist/components/calendar-picker/calendar-picker.js.map +1 -1
  44. package/dist/components/calendar-range-picker/calendar-range-picker.d.ts +16 -0
  45. package/dist/components/calendar-range-picker/calendar-range-picker.d.ts.map +1 -1
  46. package/dist/components/calendar-range-picker/calendar-range-picker.js +4 -0
  47. package/dist/components/calendar-range-picker/calendar-range-picker.js.map +1 -1
  48. package/dist/components/card/card.d.ts +37 -2
  49. package/dist/components/card/card.d.ts.map +1 -1
  50. package/dist/components/card/card.js +40 -2
  51. package/dist/components/card/card.js.map +1 -1
  52. package/dist/components/carousel/carousel.d.ts +7 -1
  53. package/dist/components/carousel/carousel.d.ts.map +1 -1
  54. package/dist/components/carousel/carousel.js +1 -0
  55. package/dist/components/carousel/carousel.js.map +1 -1
  56. package/dist/components/carousel/use-carousel.d.ts.map +1 -1
  57. package/dist/components/carousel/use-carousel.js +3 -1
  58. package/dist/components/carousel/use-carousel.js.map +1 -1
  59. package/dist/components/cartesian-chart/cartesian-chart.d.ts +262 -0
  60. package/dist/components/cartesian-chart/cartesian-chart.d.ts.map +1 -0
  61. package/dist/components/cartesian-chart/cartesian-chart.js +293 -0
  62. package/dist/components/cartesian-chart/cartesian-chart.js.map +1 -0
  63. package/dist/components/cartesian-chart/context.js +15 -0
  64. package/dist/components/cartesian-chart/context.js.map +1 -0
  65. package/dist/components/cartesian-chart/use-cartesian-chart.d.ts +21 -0
  66. package/dist/components/cartesian-chart/use-cartesian-chart.d.ts.map +1 -0
  67. package/dist/components/cartesian-chart/use-cartesian-chart.js +29 -0
  68. package/dist/components/cartesian-chart/use-cartesian-chart.js.map +1 -0
  69. package/dist/components/cascader/cascader.d.ts +66 -3
  70. package/dist/components/cascader/cascader.d.ts.map +1 -1
  71. package/dist/components/cascader/cascader.js +110 -8
  72. package/dist/components/cascader/cascader.js.map +1 -1
  73. package/dist/components/cascader/context.js +10 -1
  74. package/dist/components/cascader/context.js.map +1 -1
  75. package/dist/components/cascader/use-cascader.d.ts +2 -1
  76. package/dist/components/cascader/use-cascader.d.ts.map +1 -1
  77. package/dist/components/cascader/use-cascader.js +4 -1
  78. package/dist/components/cascader/use-cascader.js.map +1 -1
  79. package/dist/components/checkbox/checkbox.js +1 -1
  80. package/dist/components/checkbox-group/checkbox-group.d.ts +24 -3
  81. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  82. package/dist/components/checkbox-group/checkbox-group.js +48 -12
  83. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  84. package/dist/components/checkbox-group/use-checkbox-group.d.ts +6 -1
  85. package/dist/components/checkbox-group/use-checkbox-group.d.ts.map +1 -1
  86. package/dist/components/checkbox-group/use-checkbox-group.js +7 -3
  87. package/dist/components/checkbox-group/use-checkbox-group.js.map +1 -1
  88. package/dist/components/citation/citation.d.ts +211 -0
  89. package/dist/components/citation/citation.d.ts.map +1 -0
  90. package/dist/components/citation/citation.js +222 -0
  91. package/dist/components/citation/citation.js.map +1 -0
  92. package/dist/components/citation/context.d.ts +11 -0
  93. package/dist/components/citation/context.d.ts.map +1 -0
  94. package/dist/components/citation/context.js +24 -0
  95. package/dist/components/citation/context.js.map +1 -0
  96. package/dist/components/citation/use-citation.d.ts +19 -0
  97. package/dist/components/citation/use-citation.d.ts.map +1 -0
  98. package/dist/components/citation/use-citation.js +51 -0
  99. package/dist/components/citation/use-citation.js.map +1 -0
  100. package/dist/components/code-view/code-view.d.ts +21 -0
  101. package/dist/components/code-view/code-view.d.ts.map +1 -1
  102. package/dist/components/code-view/code-view.js +23 -4
  103. package/dist/components/code-view/code-view.js.map +1 -1
  104. package/dist/components/collapsible/collapsible.d.ts +6 -0
  105. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  106. package/dist/components/collapsible/collapsible.js +4 -2
  107. package/dist/components/collapsible/collapsible.js.map +1 -1
  108. package/dist/components/color-field/color-field.d.ts +4 -2
  109. package/dist/components/color-field/color-field.d.ts.map +1 -1
  110. package/dist/components/color-field/color-field.js +4 -2
  111. package/dist/components/color-field/color-field.js.map +1 -1
  112. package/dist/components/color-picker/color-picker.d.ts +115 -10
  113. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  114. package/dist/components/color-picker/color-picker.js +119 -9
  115. package/dist/components/color-picker/color-picker.js.map +1 -1
  116. package/dist/components/color-picker/context.js +10 -1
  117. package/dist/components/color-picker/context.js.map +1 -1
  118. package/dist/components/color-picker/use-color-picker.d.ts +3 -1
  119. package/dist/components/color-picker/use-color-picker.d.ts.map +1 -1
  120. package/dist/components/color-picker/use-color-picker.js +20 -4
  121. package/dist/components/color-picker/use-color-picker.js.map +1 -1
  122. package/dist/components/color-slider/color-slider.d.ts +2 -2
  123. package/dist/components/color-slider/color-slider.js +1 -1
  124. package/dist/components/color-slider/color-slider.js.map +1 -1
  125. package/dist/components/color-swatch-picker/color-swatch-picker.d.ts.map +1 -1
  126. package/dist/components/color-swatch-picker/color-swatch-picker.js +21 -4
  127. package/dist/components/color-swatch-picker/color-swatch-picker.js.map +1 -1
  128. package/dist/components/color-swatch-picker/use-color-swatch-picker.d.ts +6 -1
  129. package/dist/components/color-swatch-picker/use-color-swatch-picker.d.ts.map +1 -1
  130. package/dist/components/color-swatch-picker/use-color-swatch-picker.js +7 -3
  131. package/dist/components/color-swatch-picker/use-color-swatch-picker.js.map +1 -1
  132. package/dist/components/combobox/combobox.d.ts +51 -4
  133. package/dist/components/combobox/combobox.d.ts.map +1 -1
  134. package/dist/components/combobox/combobox.js +76 -6
  135. package/dist/components/combobox/combobox.js.map +1 -1
  136. package/dist/components/combobox/context.js +10 -1
  137. package/dist/components/combobox/context.js.map +1 -1
  138. package/dist/components/command/command.d.ts +3 -3
  139. package/dist/components/command/command.js +2 -2
  140. package/dist/components/command/use-command.d.ts.map +1 -1
  141. package/dist/components/command/use-command.js +9 -30
  142. package/dist/components/command/use-command.js.map +1 -1
  143. package/dist/components/context-menu/context-menu.d.ts +58 -18
  144. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  145. package/dist/components/context-menu/context-menu.js +110 -47
  146. package/dist/components/context-menu/context-menu.js.map +1 -1
  147. package/dist/components/context-menu/context.js +1 -1
  148. package/dist/components/context-menu/context.js.map +1 -1
  149. package/dist/components/context-menu/use-context-menu.d.ts +1 -1
  150. package/dist/components/context-menu/use-context-menu.d.ts.map +1 -1
  151. package/dist/components/context-menu/use-context-menu.js +4 -2
  152. package/dist/components/context-menu/use-context-menu.js.map +1 -1
  153. package/dist/components/date-field/date-field.d.ts +15 -3
  154. package/dist/components/date-field/date-field.d.ts.map +1 -1
  155. package/dist/components/date-field/date-field.js +7 -2
  156. package/dist/components/date-field/date-field.js.map +1 -1
  157. package/dist/components/date-picker/context.js +10 -1
  158. package/dist/components/date-picker/context.js.map +1 -1
  159. package/dist/components/date-picker/date-picker.d.ts +98 -3
  160. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  161. package/dist/components/date-picker/date-picker.js +91 -7
  162. package/dist/components/date-picker/date-picker.js.map +1 -1
  163. package/dist/components/date-range-picker/date-range-picker.d.ts +103 -2
  164. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  165. package/dist/components/date-range-picker/date-range-picker.js +111 -6
  166. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  167. package/dist/components/date-range-picker/use-date-range-picker.d.ts +1 -1
  168. package/dist/components/date-range-picker/use-date-range-picker.js.map +1 -1
  169. package/dist/components/descriptions/descriptions.d.ts +38 -7
  170. package/dist/components/descriptions/descriptions.d.ts.map +1 -1
  171. package/dist/components/descriptions/descriptions.js +38 -4
  172. package/dist/components/descriptions/descriptions.js.map +1 -1
  173. package/dist/components/dialog/dialog.d.ts +17 -2
  174. package/dist/components/dialog/dialog.d.ts.map +1 -1
  175. package/dist/components/dialog/dialog.js +15 -2
  176. package/dist/components/dialog/dialog.js.map +1 -1
  177. package/dist/components/dialog/use-dialog.d.ts.map +1 -1
  178. package/dist/components/dialog/use-dialog.js +9 -27
  179. package/dist/components/dialog/use-dialog.js.map +1 -1
  180. package/dist/components/diff-view/diff-view.d.ts +22 -2
  181. package/dist/components/diff-view/diff-view.d.ts.map +1 -1
  182. package/dist/components/diff-view/diff-view.js +37 -14
  183. package/dist/components/diff-view/diff-view.js.map +1 -1
  184. package/dist/components/diff-view/use-diff-view.d.ts +7 -2
  185. package/dist/components/diff-view/use-diff-view.d.ts.map +1 -1
  186. package/dist/components/diff-view/use-diff-view.js +12 -5
  187. package/dist/components/diff-view/use-diff-view.js.map +1 -1
  188. package/dist/components/drawer/drawer.d.ts +47 -2
  189. package/dist/components/drawer/drawer.d.ts.map +1 -1
  190. package/dist/components/drawer/drawer.js +28 -4
  191. package/dist/components/drawer/drawer.js.map +1 -1
  192. package/dist/components/drawer/use-drawer.d.ts +1 -1
  193. package/dist/components/drawer/use-drawer.d.ts.map +1 -1
  194. package/dist/components/drawer/use-drawer.js +12 -29
  195. package/dist/components/drawer/use-drawer.js.map +1 -1
  196. package/dist/components/empty-state/empty-state.js +4 -1
  197. package/dist/components/empty-state/empty-state.js.map +1 -1
  198. package/dist/components/empty-state/use-empty-state.js +12 -3
  199. package/dist/components/empty-state/use-empty-state.js.map +1 -1
  200. package/dist/components/field/context.d.ts +6 -1
  201. package/dist/components/field/context.d.ts.map +1 -1
  202. package/dist/components/field/context.js +10 -1
  203. package/dist/components/field/context.js.map +1 -1
  204. package/dist/components/field/field.d.ts +9 -1
  205. package/dist/components/field/field.d.ts.map +1 -1
  206. package/dist/components/field/field.js +14 -2
  207. package/dist/components/field/field.js.map +1 -1
  208. package/dist/components/field/use-field-control.d.ts +8 -1
  209. package/dist/components/field/use-field-control.d.ts.map +1 -1
  210. package/dist/components/field/use-field-control.js +14 -1
  211. package/dist/components/field/use-field-control.js.map +1 -1
  212. package/dist/components/field-array/field-array.d.ts +1 -1
  213. package/dist/components/field-array/field-array.d.ts.map +1 -1
  214. package/dist/components/field-array/field-array.js +5 -1
  215. package/dist/components/field-array/field-array.js.map +1 -1
  216. package/dist/components/field-array/use-field-array.d.ts +3 -1
  217. package/dist/components/field-array/use-field-array.d.ts.map +1 -1
  218. package/dist/components/field-array/use-field-array.js +5 -2
  219. package/dist/components/field-array/use-field-array.js.map +1 -1
  220. package/dist/components/file-upload/file-upload.d.ts +26 -1
  221. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  222. package/dist/components/file-upload/file-upload.js +15 -3
  223. package/dist/components/file-upload/file-upload.js.map +1 -1
  224. package/dist/components/file-upload/use-file-upload.d.ts +1 -1
  225. package/dist/components/file-upload/use-file-upload.d.ts.map +1 -1
  226. package/dist/components/file-upload/use-file-upload.js.map +1 -1
  227. package/dist/components/flex/flex.d.ts +1 -1
  228. package/dist/components/flex/flex.d.ts.map +1 -1
  229. package/dist/components/flex/flex.js +4 -4
  230. package/dist/components/flex/flex.js.map +1 -1
  231. package/dist/components/float-button/float-button.d.ts +26 -1
  232. package/dist/components/float-button/float-button.d.ts.map +1 -1
  233. package/dist/components/float-button/float-button.js +17 -5
  234. package/dist/components/float-button/float-button.js.map +1 -1
  235. package/dist/components/float-button/use-float-button.js +7 -1
  236. package/dist/components/float-button/use-float-button.js.map +1 -1
  237. package/dist/components/form/context.js +5 -1
  238. package/dist/components/form/context.js.map +1 -1
  239. package/dist/components/form/form.d.ts +18 -4
  240. package/dist/components/form/form.d.ts.map +1 -1
  241. package/dist/components/form/form.js +21 -7
  242. package/dist/components/form/form.js.map +1 -1
  243. package/dist/components/form/use-form-control.js +1 -1
  244. package/dist/components/form/use-form.d.ts +6 -0
  245. package/dist/components/form/use-form.d.ts.map +1 -1
  246. package/dist/components/form/use-form.js +4 -0
  247. package/dist/components/form/use-form.js.map +1 -1
  248. package/dist/components/funnel-chart/context.js +15 -0
  249. package/dist/components/funnel-chart/context.js.map +1 -0
  250. package/dist/components/funnel-chart/funnel-chart.d.ts +175 -0
  251. package/dist/components/funnel-chart/funnel-chart.d.ts.map +1 -0
  252. package/dist/components/funnel-chart/funnel-chart.js +188 -0
  253. package/dist/components/funnel-chart/funnel-chart.js.map +1 -0
  254. package/dist/components/funnel-chart/use-funnel-chart.d.ts +19 -0
  255. package/dist/components/funnel-chart/use-funnel-chart.d.ts.map +1 -0
  256. package/dist/components/funnel-chart/use-funnel-chart.js +26 -0
  257. package/dist/components/funnel-chart/use-funnel-chart.js.map +1 -0
  258. package/dist/components/graph-chart/context.js +15 -0
  259. package/dist/components/graph-chart/context.js.map +1 -0
  260. package/dist/components/graph-chart/graph-chart.d.ts +194 -0
  261. package/dist/components/graph-chart/graph-chart.d.ts.map +1 -0
  262. package/dist/components/graph-chart/graph-chart.js +219 -0
  263. package/dist/components/graph-chart/graph-chart.js.map +1 -0
  264. package/dist/components/graph-chart/use-graph-chart.d.ts +19 -0
  265. package/dist/components/graph-chart/use-graph-chart.d.ts.map +1 -0
  266. package/dist/components/graph-chart/use-graph-chart.js +26 -0
  267. package/dist/components/graph-chart/use-graph-chart.js.map +1 -0
  268. package/dist/components/grid/grid.d.ts +7 -0
  269. package/dist/components/grid/grid.d.ts.map +1 -1
  270. package/dist/components/grid/grid.js +7 -1
  271. package/dist/components/grid/grid.js.map +1 -1
  272. package/dist/components/grid-list/context.d.ts +9 -0
  273. package/dist/components/grid-list/context.d.ts.map +1 -0
  274. package/dist/components/grid-list/context.js +24 -0
  275. package/dist/components/grid-list/context.js.map +1 -0
  276. package/dist/components/grid-list/grid-list.d.ts +149 -0
  277. package/dist/components/grid-list/grid-list.d.ts.map +1 -0
  278. package/dist/components/grid-list/grid-list.js +118 -0
  279. package/dist/components/grid-list/grid-list.js.map +1 -0
  280. package/dist/components/grid-list/use-grid-list.d.ts +12 -0
  281. package/dist/components/grid-list/use-grid-list.d.ts.map +1 -0
  282. package/dist/components/grid-list/use-grid-list.js +20 -0
  283. package/dist/components/grid-list/use-grid-list.js.map +1 -0
  284. package/dist/components/heatmap/heatmap.d.ts +45 -4
  285. package/dist/components/heatmap/heatmap.d.ts.map +1 -1
  286. package/dist/components/heatmap/heatmap.js +40 -14
  287. package/dist/components/heatmap/heatmap.js.map +1 -1
  288. package/dist/components/heatmap/use-heatmap.d.ts +4 -2
  289. package/dist/components/heatmap/use-heatmap.d.ts.map +1 -1
  290. package/dist/components/heatmap/use-heatmap.js +8 -4
  291. package/dist/components/heatmap/use-heatmap.js.map +1 -1
  292. package/dist/components/hierarchy-chart/context.js +15 -0
  293. package/dist/components/hierarchy-chart/context.js.map +1 -0
  294. package/dist/components/hierarchy-chart/hierarchy-chart.d.ts +201 -0
  295. package/dist/components/hierarchy-chart/hierarchy-chart.d.ts.map +1 -0
  296. package/dist/components/hierarchy-chart/hierarchy-chart.js +228 -0
  297. package/dist/components/hierarchy-chart/hierarchy-chart.js.map +1 -0
  298. package/dist/components/hierarchy-chart/use-hierarchy-chart.d.ts +19 -0
  299. package/dist/components/hierarchy-chart/use-hierarchy-chart.d.ts.map +1 -0
  300. package/dist/components/hierarchy-chart/use-hierarchy-chart.js +26 -0
  301. package/dist/components/hierarchy-chart/use-hierarchy-chart.js.map +1 -0
  302. package/dist/components/hover-card/hover-card.js +2 -2
  303. package/dist/components/icon/icon.d.ts +7 -1
  304. package/dist/components/icon/icon.d.ts.map +1 -1
  305. package/dist/components/icon/icon.js +1 -0
  306. package/dist/components/icon/icon.js.map +1 -1
  307. package/dist/components/image/use-image.d.ts.map +1 -1
  308. package/dist/components/image/use-image.js +3 -1
  309. package/dist/components/image/use-image.js.map +1 -1
  310. package/dist/components/image-cropper/image-cropper.d.ts +35 -4
  311. package/dist/components/image-cropper/image-cropper.d.ts.map +1 -1
  312. package/dist/components/image-cropper/image-cropper.js +34 -5
  313. package/dist/components/image-cropper/image-cropper.js.map +1 -1
  314. package/dist/components/image-cropper/use-image-cropper.d.ts +3 -1
  315. package/dist/components/image-cropper/use-image-cropper.d.ts.map +1 -1
  316. package/dist/components/image-cropper/use-image-cropper.js +4 -1
  317. package/dist/components/image-cropper/use-image-cropper.js.map +1 -1
  318. package/dist/components/image-viewer/image-viewer.js +1 -1
  319. package/dist/components/image-viewer/use-image-viewer.d.ts.map +1 -1
  320. package/dist/components/image-viewer/use-image-viewer.js +9 -27
  321. package/dist/components/image-viewer/use-image-viewer.js.map +1 -1
  322. package/dist/components/infinite-scroll/infinite-scroll.d.ts +9 -1
  323. package/dist/components/infinite-scroll/infinite-scroll.d.ts.map +1 -1
  324. package/dist/components/infinite-scroll/infinite-scroll.js +2 -0
  325. package/dist/components/infinite-scroll/infinite-scroll.js.map +1 -1
  326. package/dist/components/json-viewer/json-viewer.d.ts +17 -2
  327. package/dist/components/json-viewer/json-viewer.d.ts.map +1 -1
  328. package/dist/components/json-viewer/json-viewer.js +26 -8
  329. package/dist/components/json-viewer/json-viewer.js.map +1 -1
  330. package/dist/components/listbox/listbox.d.ts +7 -1
  331. package/dist/components/listbox/listbox.d.ts.map +1 -1
  332. package/dist/components/listbox/listbox.js +2 -0
  333. package/dist/components/listbox/listbox.js.map +1 -1
  334. package/dist/components/loading-bar/use-loading-bar.d.ts.map +1 -1
  335. package/dist/components/loading-bar/use-loading-bar.js +3 -1
  336. package/dist/components/loading-bar/use-loading-bar.js.map +1 -1
  337. package/dist/components/log/log.d.ts +41 -2
  338. package/dist/components/log/log.d.ts.map +1 -1
  339. package/dist/components/log/log.js +25 -3
  340. package/dist/components/log/log.js.map +1 -1
  341. package/dist/components/log/use-log.d.ts +1 -1
  342. package/dist/components/log/use-log.d.ts.map +1 -1
  343. package/dist/components/log/use-log.js +4 -1
  344. package/dist/components/log/use-log.js.map +1 -1
  345. package/dist/components/markdown-stream/markdown-stream.d.ts +21 -1
  346. package/dist/components/markdown-stream/markdown-stream.d.ts.map +1 -1
  347. package/dist/components/markdown-stream/markdown-stream.js +43 -4
  348. package/dist/components/markdown-stream/markdown-stream.js.map +1 -1
  349. package/dist/components/marquee/marquee.d.ts +68 -12
  350. package/dist/components/marquee/marquee.d.ts.map +1 -1
  351. package/dist/components/marquee/marquee.js +52 -7
  352. package/dist/components/marquee/marquee.js.map +1 -1
  353. package/dist/components/mention/mention.d.ts +26 -6
  354. package/dist/components/mention/mention.d.ts.map +1 -1
  355. package/dist/components/mention/mention.js +14 -4
  356. package/dist/components/mention/mention.js.map +1 -1
  357. package/dist/components/menu/context.js +1 -1
  358. package/dist/components/menu/context.js.map +1 -1
  359. package/dist/components/menu/menu.d.ts +79 -28
  360. package/dist/components/menu/menu.d.ts.map +1 -1
  361. package/dist/components/menu/menu.js +132 -51
  362. package/dist/components/menu/menu.js.map +1 -1
  363. package/dist/components/menu/use-menu.d.ts +1 -1
  364. package/dist/components/menu/use-menu.d.ts.map +1 -1
  365. package/dist/components/menu/use-menu.js +8 -6
  366. package/dist/components/menu/use-menu.js.map +1 -1
  367. package/dist/components/menubar/context.js +1 -1
  368. package/dist/components/menubar/context.js.map +1 -1
  369. package/dist/components/menubar/menubar.d.ts +47 -18
  370. package/dist/components/menubar/menubar.d.ts.map +1 -1
  371. package/dist/components/menubar/menubar.js +109 -47
  372. package/dist/components/menubar/menubar.js.map +1 -1
  373. package/dist/components/menubar/use-menubar.d.ts +1 -1
  374. package/dist/components/menubar/use-menubar.d.ts.map +1 -1
  375. package/dist/components/menubar/use-menubar.js +4 -2
  376. package/dist/components/menubar/use-menubar.js.map +1 -1
  377. package/dist/components/message-feed/message-feed.d.ts +13 -1
  378. package/dist/components/message-feed/message-feed.d.ts.map +1 -1
  379. package/dist/components/message-feed/message-feed.js +25 -1
  380. package/dist/components/message-feed/message-feed.js.map +1 -1
  381. package/dist/components/navigation-menu/navigation-menu.d.ts +58 -1
  382. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  383. package/dist/components/navigation-menu/navigation-menu.js +82 -10
  384. package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
  385. package/dist/components/notification/context.d.ts +5 -1
  386. package/dist/components/notification/context.d.ts.map +1 -1
  387. package/dist/components/notification/context.js.map +1 -1
  388. package/dist/components/notification/notification.d.ts +39 -23
  389. package/dist/components/notification/notification.d.ts.map +1 -1
  390. package/dist/components/notification/notification.js +27 -9
  391. package/dist/components/notification/notification.js.map +1 -1
  392. package/dist/components/notification/use-item-exit.js +22 -0
  393. package/dist/components/notification/use-item-exit.js.map +1 -0
  394. package/dist/components/notification/use-notification.d.ts +3 -3
  395. package/dist/components/notification/use-notification.d.ts.map +1 -1
  396. package/dist/components/notification/use-notification.js +20 -5
  397. package/dist/components/notification/use-notification.js.map +1 -1
  398. package/dist/components/number-animation/number-animation.d.ts +14 -2
  399. package/dist/components/number-animation/number-animation.d.ts.map +1 -1
  400. package/dist/components/number-animation/number-animation.js +5 -1
  401. package/dist/components/number-animation/number-animation.js.map +1 -1
  402. package/dist/components/number-field/number-field.d.ts +16 -1
  403. package/dist/components/number-field/number-field.d.ts.map +1 -1
  404. package/dist/components/number-field/number-field.js +6 -0
  405. package/dist/components/number-field/number-field.js.map +1 -1
  406. package/dist/components/pagination/pagination.d.ts +22 -2
  407. package/dist/components/pagination/pagination.d.ts.map +1 -1
  408. package/dist/components/pagination/pagination.js +22 -1
  409. package/dist/components/pagination/pagination.js.map +1 -1
  410. package/dist/components/pagination/use-pagination.js +1 -0
  411. package/dist/components/pagination/use-pagination.js.map +1 -1
  412. package/dist/components/pie-chart/context.js +15 -0
  413. package/dist/components/pie-chart/context.js.map +1 -0
  414. package/dist/components/pie-chart/pie-chart.d.ts +203 -0
  415. package/dist/components/pie-chart/pie-chart.d.ts.map +1 -0
  416. package/dist/components/pie-chart/pie-chart.js +236 -0
  417. package/dist/components/pie-chart/pie-chart.js.map +1 -0
  418. package/dist/components/pie-chart/use-pie-chart.d.ts +19 -0
  419. package/dist/components/pie-chart/use-pie-chart.d.ts.map +1 -0
  420. package/dist/components/pie-chart/use-pie-chart.js +26 -0
  421. package/dist/components/pie-chart/use-pie-chart.js.map +1 -0
  422. package/dist/components/pin-input/pin-input.d.ts.map +1 -1
  423. package/dist/components/pin-input/pin-input.js +7 -1
  424. package/dist/components/pin-input/pin-input.js.map +1 -1
  425. package/dist/components/popconfirm/popconfirm.d.ts +20 -1
  426. package/dist/components/popconfirm/popconfirm.d.ts.map +1 -1
  427. package/dist/components/popconfirm/popconfirm.js +9 -2
  428. package/dist/components/popconfirm/popconfirm.js.map +1 -1
  429. package/dist/components/popconfirm/use-popconfirm.js +2 -0
  430. package/dist/components/popconfirm/use-popconfirm.js.map +1 -1
  431. package/dist/components/popover/popover.d.ts +12 -1
  432. package/dist/components/popover/popover.d.ts.map +1 -1
  433. package/dist/components/popover/popover.js +7 -2
  434. package/dist/components/popover/popover.js.map +1 -1
  435. package/dist/components/progress/progress.d.ts +63 -3
  436. package/dist/components/progress/progress.d.ts.map +1 -1
  437. package/dist/components/progress/progress.js +55 -3
  438. package/dist/components/progress/progress.js.map +1 -1
  439. package/dist/components/question-flow/question-flow.d.ts +40 -1
  440. package/dist/components/question-flow/question-flow.d.ts.map +1 -1
  441. package/dist/components/question-flow/question-flow.js +37 -1
  442. package/dist/components/question-flow/question-flow.js.map +1 -1
  443. package/dist/components/radar-chart/context.js +15 -0
  444. package/dist/components/radar-chart/context.js.map +1 -0
  445. package/dist/components/radar-chart/radar-chart.d.ts +189 -0
  446. package/dist/components/radar-chart/radar-chart.d.ts.map +1 -0
  447. package/dist/components/radar-chart/radar-chart.js +220 -0
  448. package/dist/components/radar-chart/radar-chart.js.map +1 -0
  449. package/dist/components/radar-chart/use-radar-chart.d.ts +19 -0
  450. package/dist/components/radar-chart/use-radar-chart.d.ts.map +1 -0
  451. package/dist/components/radar-chart/use-radar-chart.js +26 -0
  452. package/dist/components/radar-chart/use-radar-chart.js.map +1 -0
  453. package/dist/components/radio-group/radio-group.d.ts +37 -2
  454. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  455. package/dist/components/radio-group/radio-group.js +74 -9
  456. package/dist/components/radio-group/radio-group.js.map +1 -1
  457. package/dist/components/radio-group/use-radio-group.d.ts +8 -1
  458. package/dist/components/radio-group/use-radio-group.d.ts.map +1 -1
  459. package/dist/components/radio-group/use-radio-group.js +10 -3
  460. package/dist/components/radio-group/use-radio-group.js.map +1 -1
  461. package/dist/components/rating/rating.d.ts.map +1 -1
  462. package/dist/components/rating/rating.js +7 -1
  463. package/dist/components/rating/rating.js.map +1 -1
  464. package/dist/components/reasoning/reasoning.d.ts.map +1 -1
  465. package/dist/components/reasoning/reasoning.js +1 -0
  466. package/dist/components/reasoning/reasoning.js.map +1 -1
  467. package/dist/components/sankey-chart/context.js +15 -0
  468. package/dist/components/sankey-chart/context.js.map +1 -0
  469. package/dist/components/sankey-chart/sankey-chart.d.ts +161 -0
  470. package/dist/components/sankey-chart/sankey-chart.d.ts.map +1 -0
  471. package/dist/components/sankey-chart/sankey-chart.js +208 -0
  472. package/dist/components/sankey-chart/sankey-chart.js.map +1 -0
  473. package/dist/components/sankey-chart/use-sankey-chart.d.ts +19 -0
  474. package/dist/components/sankey-chart/use-sankey-chart.d.ts.map +1 -0
  475. package/dist/components/sankey-chart/use-sankey-chart.js +26 -0
  476. package/dist/components/sankey-chart/use-sankey-chart.js.map +1 -0
  477. package/dist/components/scroll-area/scroll-area.d.ts +13 -5
  478. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  479. package/dist/components/scroll-area/scroll-area.js +17 -3
  480. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  481. package/dist/components/select/select.d.ts +9 -1
  482. package/dist/components/select/select.d.ts.map +1 -1
  483. package/dist/components/select/select.js +16 -5
  484. package/dist/components/select/select.js.map +1 -1
  485. package/dist/components/select/use-select.js +2 -1
  486. package/dist/components/select/use-select.js.map +1 -1
  487. package/dist/components/side-nav/context.js +17 -1
  488. package/dist/components/side-nav/context.js.map +1 -1
  489. package/dist/components/side-nav/side-nav.d.ts +51 -7
  490. package/dist/components/side-nav/side-nav.d.ts.map +1 -1
  491. package/dist/components/side-nav/side-nav.js +152 -13
  492. package/dist/components/side-nav/side-nav.js.map +1 -1
  493. package/dist/components/side-nav/use-side-nav.d.ts +4 -2
  494. package/dist/components/side-nav/use-side-nav.d.ts.map +1 -1
  495. package/dist/components/side-nav/use-side-nav.js +5 -3
  496. package/dist/components/side-nav/use-side-nav.js.map +1 -1
  497. package/dist/components/signature-pad/signature-pad.d.ts +28 -4
  498. package/dist/components/signature-pad/signature-pad.d.ts.map +1 -1
  499. package/dist/components/signature-pad/signature-pad.js +35 -5
  500. package/dist/components/signature-pad/signature-pad.js.map +1 -1
  501. package/dist/components/signature-pad/use-signature-pad.d.ts +1 -1
  502. package/dist/components/signature-pad/use-signature-pad.d.ts.map +1 -1
  503. package/dist/components/signature-pad/use-signature-pad.js.map +1 -1
  504. package/dist/components/skeleton/use-skeleton.js +6 -2
  505. package/dist/components/skeleton/use-skeleton.js.map +1 -1
  506. package/dist/components/slider/slider.d.ts +27 -0
  507. package/dist/components/slider/slider.d.ts.map +1 -1
  508. package/dist/components/slider/slider.js +19 -1
  509. package/dist/components/slider/slider.js.map +1 -1
  510. package/dist/components/sortable/sortable.d.ts +18 -0
  511. package/dist/components/sortable/sortable.d.ts.map +1 -1
  512. package/dist/components/sortable/sortable.js +7 -2
  513. package/dist/components/sortable/sortable.js.map +1 -1
  514. package/dist/components/sortable/use-sortable.d.ts +1 -1
  515. package/dist/components/sortable/use-sortable.d.ts.map +1 -1
  516. package/dist/components/sortable/use-sortable.js +2 -1
  517. package/dist/components/sortable/use-sortable.js.map +1 -1
  518. package/dist/components/sparkline/sparkline.d.ts +101 -0
  519. package/dist/components/sparkline/sparkline.d.ts.map +1 -0
  520. package/dist/components/sparkline/sparkline.js +54 -0
  521. package/dist/components/sparkline/sparkline.js.map +1 -0
  522. package/dist/components/sparkline/use-sparkline.d.ts +15 -0
  523. package/dist/components/sparkline/use-sparkline.d.ts.map +1 -0
  524. package/dist/components/sparkline/use-sparkline.js +21 -0
  525. package/dist/components/sparkline/use-sparkline.js.map +1 -0
  526. package/dist/components/spinner/spinner.d.ts +8 -0
  527. package/dist/components/spinner/spinner.d.ts.map +1 -1
  528. package/dist/components/spinner/spinner.js +2 -0
  529. package/dist/components/spinner/spinner.js.map +1 -1
  530. package/dist/components/spinner/use-spinner.js +4 -2
  531. package/dist/components/spinner/use-spinner.js.map +1 -1
  532. package/dist/components/steps/steps.d.ts +28 -1
  533. package/dist/components/steps/steps.d.ts.map +1 -1
  534. package/dist/components/steps/steps.js +11 -2
  535. package/dist/components/steps/steps.js.map +1 -1
  536. package/dist/components/switch/switch.js +1 -1
  537. package/dist/components/table/context.js +9 -1
  538. package/dist/components/table/context.js.map +1 -1
  539. package/dist/components/table/table.d.ts +52 -3
  540. package/dist/components/table/table.d.ts.map +1 -1
  541. package/dist/components/table/table.js +40 -11
  542. package/dist/components/table/table.js.map +1 -1
  543. package/dist/components/table/use-table.d.ts +3 -1
  544. package/dist/components/table/use-table.d.ts.map +1 -1
  545. package/dist/components/table/use-table.js +5 -2
  546. package/dist/components/table/use-table.js.map +1 -1
  547. package/dist/components/tabs/tabs.d.ts +51 -3
  548. package/dist/components/tabs/tabs.d.ts.map +1 -1
  549. package/dist/components/tabs/tabs.js +60 -8
  550. package/dist/components/tabs/tabs.js.map +1 -1
  551. package/dist/components/tag/use-tag.d.ts.map +1 -1
  552. package/dist/components/tag/use-tag.js +3 -1
  553. package/dist/components/tag/use-tag.js.map +1 -1
  554. package/dist/components/tags-input/tags-input.d.ts +12 -2
  555. package/dist/components/tags-input/tags-input.d.ts.map +1 -1
  556. package/dist/components/tags-input/tags-input.js +14 -5
  557. package/dist/components/tags-input/tags-input.js.map +1 -1
  558. package/dist/components/tags-input/use-tags-input.d.ts +4 -2
  559. package/dist/components/tags-input/use-tags-input.d.ts.map +1 -1
  560. package/dist/components/tags-input/use-tags-input.js +5 -2
  561. package/dist/components/tags-input/use-tags-input.js.map +1 -1
  562. package/dist/components/text-field/text-field.d.ts +2 -0
  563. package/dist/components/text-field/text-field.d.ts.map +1 -1
  564. package/dist/components/text-field/text-field.js +3 -1
  565. package/dist/components/text-field/text-field.js.map +1 -1
  566. package/dist/components/time-field/time-field.d.ts +2 -0
  567. package/dist/components/time-field/time-field.d.ts.map +1 -1
  568. package/dist/components/time-field/time-field.js +3 -1
  569. package/dist/components/time-field/time-field.js.map +1 -1
  570. package/dist/components/time-picker/context.js +10 -1
  571. package/dist/components/time-picker/context.js.map +1 -1
  572. package/dist/components/time-picker/time-picker.d.ts +88 -15
  573. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  574. package/dist/components/time-picker/time-picker.js +92 -9
  575. package/dist/components/time-picker/time-picker.js.map +1 -1
  576. package/dist/components/time-range-picker/time-range-picker.d.ts +13 -7
  577. package/dist/components/time-range-picker/time-range-picker.d.ts.map +1 -1
  578. package/dist/components/time-range-picker/time-range-picker.js +7 -3
  579. package/dist/components/time-range-picker/time-range-picker.js.map +1 -1
  580. package/dist/components/timer/timer.d.ts +1 -1
  581. package/dist/components/timestamp/timestamp.d.ts +20 -1
  582. package/dist/components/timestamp/timestamp.d.ts.map +1 -1
  583. package/dist/components/timestamp/timestamp.js +16 -5
  584. package/dist/components/timestamp/timestamp.js.map +1 -1
  585. package/dist/components/toggle-group/toggle-group.d.ts.map +1 -1
  586. package/dist/components/toggle-group/toggle-group.js +7 -1
  587. package/dist/components/toggle-group/toggle-group.js.map +1 -1
  588. package/dist/components/toolbar/toolbar.d.ts +17 -2
  589. package/dist/components/toolbar/toolbar.d.ts.map +1 -1
  590. package/dist/components/toolbar/toolbar.js +31 -4
  591. package/dist/components/toolbar/toolbar.js.map +1 -1
  592. package/dist/components/toolbar/use-toolbar.d.ts +4 -2
  593. package/dist/components/toolbar/use-toolbar.d.ts.map +1 -1
  594. package/dist/components/toolbar/use-toolbar.js +5 -2
  595. package/dist/components/toolbar/use-toolbar.js.map +1 -1
  596. package/dist/components/tooltip/context.d.ts +21 -0
  597. package/dist/components/tooltip/context.d.ts.map +1 -0
  598. package/dist/components/tooltip/context.js +10 -1
  599. package/dist/components/tooltip/context.js.map +1 -1
  600. package/dist/components/tooltip/tooltip.d.ts +53 -1
  601. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  602. package/dist/components/tooltip/tooltip.js +34 -3
  603. package/dist/components/tooltip/tooltip.js.map +1 -1
  604. package/dist/components/tooltip/use-tooltip.d.ts +3 -18
  605. package/dist/components/tooltip/use-tooltip.d.ts.map +1 -1
  606. package/dist/components/tooltip/use-tooltip.js +2 -0
  607. package/dist/components/tooltip/use-tooltip.js.map +1 -1
  608. package/dist/components/tour/tour.d.ts +8 -0
  609. package/dist/components/tour/tour.d.ts.map +1 -1
  610. package/dist/components/tour/tour.js +2 -0
  611. package/dist/components/tour/tour.js.map +1 -1
  612. package/dist/components/transfer/transfer.d.ts +21 -1
  613. package/dist/components/transfer/transfer.d.ts.map +1 -1
  614. package/dist/components/transfer/transfer.js +10 -2
  615. package/dist/components/transfer/transfer.js.map +1 -1
  616. package/dist/components/tree/tree.d.ts +34 -1
  617. package/dist/components/tree/tree.d.ts.map +1 -1
  618. package/dist/components/tree/tree.js +11 -0
  619. package/dist/components/tree/tree.js.map +1 -1
  620. package/dist/components/tree-select/context.js +10 -1
  621. package/dist/components/tree-select/context.js.map +1 -1
  622. package/dist/components/tree-select/tree-select.d.ts +72 -6
  623. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  624. package/dist/components/tree-select/tree-select.js +112 -13
  625. package/dist/components/tree-select/tree-select.js.map +1 -1
  626. package/dist/components/tree-select/use-tree-select.d.ts +3 -0
  627. package/dist/components/tree-select/use-tree-select.d.ts.map +1 -1
  628. package/dist/components/tree-select/use-tree-select.js +6 -1
  629. package/dist/components/tree-select/use-tree-select.js.map +1 -1
  630. package/dist/components/truncate/truncate.d.ts +25 -4
  631. package/dist/components/truncate/truncate.d.ts.map +1 -1
  632. package/dist/components/truncate/truncate.js +25 -14
  633. package/dist/components/truncate/truncate.js.map +1 -1
  634. package/dist/components/truncate/use-truncate.d.ts.map +1 -1
  635. package/dist/components/truncate/use-truncate.js +3 -1
  636. package/dist/components/truncate/use-truncate.js.map +1 -1
  637. package/dist/components/typography/typography.d.ts +35 -2
  638. package/dist/components/typography/typography.d.ts.map +1 -1
  639. package/dist/components/typography/typography.js +21 -3
  640. package/dist/components/typography/typography.js.map +1 -1
  641. package/dist/components/virtualizer/virtualizer.d.ts +26 -2
  642. package/dist/components/virtualizer/virtualizer.d.ts.map +1 -1
  643. package/dist/components/virtualizer/virtualizer.js +20 -3
  644. package/dist/components/virtualizer/virtualizer.js.map +1 -1
  645. package/dist/components/watermark/watermark.d.ts +14 -1
  646. package/dist/components/watermark/watermark.d.ts.map +1 -1
  647. package/dist/components/watermark/watermark.js +20 -5
  648. package/dist/components/watermark/watermark.js.map +1 -1
  649. package/dist/config/config.d.ts +1 -1
  650. package/dist/config/config.d.ts.map +1 -1
  651. package/dist/config/config.js +2 -1
  652. package/dist/config/config.js.map +1 -1
  653. package/dist/index.d.ts +64 -49
  654. package/dist/index.js +58 -43
  655. package/dist/package.js +1 -1
  656. package/dist/runtime/as-child.js +3 -2
  657. package/dist/runtime/as-child.js.map +1 -1
  658. package/dist/runtime/hydration.js +14 -0
  659. package/dist/runtime/hydration.js.map +1 -0
  660. package/dist/runtime/portal.js +2 -0
  661. package/dist/runtime/portal.js.map +1 -1
  662. package/dist/runtime/use-overlay-exit.js +0 -1
  663. package/dist/runtime/use-overlay-exit.js.map +1 -1
  664. package/dist/runtime/with-handlers.js +25 -0
  665. package/dist/runtime/with-handlers.js.map +1 -0
  666. package/dist/services/notification-service.d.ts +26 -7
  667. package/dist/services/notification-service.d.ts.map +1 -1
  668. package/dist/services/notification-service.js +35 -8
  669. package/dist/services/notification-service.js.map +1 -1
  670. package/dist/sound.d.ts +6 -7
  671. package/dist/sound.d.ts.map +1 -1
  672. package/dist/sound.js +6 -6
  673. package/dist/sound.js.map +1 -1
  674. package/package.json +15 -14
  675. package/dist/components/gradient-text/gradient-text.d.ts +0 -36
  676. package/dist/components/gradient-text/gradient-text.d.ts.map +0 -1
  677. package/dist/components/gradient-text/gradient-text.js +0 -20
  678. package/dist/components/gradient-text/gradient-text.js.map +0 -1
  679. package/dist/components/icon-wrapper/icon-wrapper.d.ts +0 -29
  680. package/dist/components/icon-wrapper/icon-wrapper.d.ts.map +0 -1
  681. package/dist/components/icon-wrapper/icon-wrapper.js +0 -20
  682. package/dist/components/icon-wrapper/icon-wrapper.js.map +0 -1
  683. package/dist/components/segmented/context.d.ts +0 -13
  684. package/dist/components/segmented/context.d.ts.map +0 -1
  685. package/dist/components/segmented/context.js +0 -24
  686. package/dist/components/segmented/context.js.map +0 -1
  687. package/dist/components/segmented/segmented.d.ts +0 -161
  688. package/dist/components/segmented/segmented.d.ts.map +0 -1
  689. package/dist/components/segmented/segmented.js +0 -142
  690. package/dist/components/segmented/segmented.js.map +0 -1
  691. package/dist/components/segmented/use-segmented.d.ts +0 -15
  692. package/dist/components/segmented/use-segmented.d.ts.map +0 -1
  693. package/dist/components/segmented/use-segmented.js +0 -22
  694. package/dist/components/segmented/use-segmented.js.map +0 -1
  695. package/dist/components/toast/context.js +0 -15
  696. package/dist/components/toast/context.js.map +0 -1
  697. package/dist/components/toast/toast.d.ts +0 -123
  698. package/dist/components/toast/toast.d.ts.map +0 -1
  699. package/dist/components/toast/toast.js +0 -112
  700. package/dist/components/toast/toast.js.map +0 -1
  701. package/dist/components/toast/use-toast.d.ts +0 -10
  702. package/dist/components/toast/use-toast.d.ts.map +0 -1
  703. package/dist/components/toast/use-toast.js +0 -17
  704. package/dist/components/toast/use-toast.js.map +0 -1
  705. package/dist/services/toast-service.d.ts +0 -69
  706. package/dist/services/toast-service.d.ts.map +0 -1
  707. package/dist/services/toast-service.js +0 -161
  708. package/dist/services/toast-service.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 date range picker 相关实现。\n\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type {\n CalendarCellProps,\n CalendarGranularity,\n CalendarRangePickerApi,\n CalendarView,\n DateFieldSegmentState,\n DateRangePickerApi,\n DateRangePickerPreset,\n DateRangePickerPresetState,\n DateRangePickerSchema,\n DateSegmentSet,\n DateSegmentType,\n} from '@xihan-ui/headless'\nimport type { ComputedRef, PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { dateRangePickerFieldAt, resolveDateRangePickerFieldIndex, resolveDateRangePickerPanelIndex } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, mergeProps, onUpdated, ref } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { XhPortal } from '../../runtime/portal'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideDateRangePicker,\n provideDateRangePickerCell,\n provideDateRangePickerPanel,\n provideDateRangePickerSegmentGroup,\n useDateRangePickerCellContext,\n useDateRangePickerContext,\n useDateRangePickerPanelContext,\n useDateRangePickerSegmentGroupContext,\n} from './context'\nimport { useDateRangePickerWithRoot } from './use-date-range-picker'\n\ntype DateRangePickerProps = DateRangePickerSchema['props']\n\n/**\n * 部件属于并排的第几张面板:自己写了即按自己写的,未写时跟随所在的日历。\n * 兼收字符串以支持模板中写 index=\"1\"。\n */\nfunction usePanelIndex(props: { index?: number | string }): ComputedRef<number> {\n const panel = useDateRangePickerPanelContext()\n return computed(() => resolveDateRangePickerPanelIndex(props.index, panel.index.value))\n}\n\n/** 默认插槽的载荷:选择器的开合与两端、内嵌范围日历的展示数据、两组段位,以及改写值的句柄。 */\nexport type DateRangePickerRootSlotProps\n = & Pick<\n DateRangePickerApi,\n | 'open'\n | 'value'\n | 'start'\n | 'end'\n | 'periodValue'\n | 'focusedValue'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n >\n & Pick<\n CalendarRangePickerApi,\n | 'visibleMonth'\n | 'panels'\n | 'periods'\n | 'weeks'\n | 'weekDays'\n | 'headingLabel'\n | 'canGoPrev'\n | 'canGoNext'\n >\n & {\n /** 起点组段位。 */\n segments: DateFieldSegmentState[]\n /** 终点组段位。 */\n endSegments: DateFieldSegmentState[]\n }\n\n/** 段位默认插槽的载荷:本段的投影;下标越界时缺席。 */\nexport interface DateRangePickerSegmentSlotProps {\n segment: DateFieldSegmentState | undefined\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自行铺设条目。 */\nexport interface DateRangePickerPresetsSlotProps {\n presets: readonly DateRangePickerPresetState[]\n}\n\nexport const XhDateRangePickerRoot = defineComponent({\n name: 'XhDateRangePickerRoot',\n // 有 connect / machine 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n /** 区间两端 [start, end];空缺的一端用空串占位。 */\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String },\n max: { type: String },\n locale: { type: String },\n timeZone: { type: String },\n /** 选择粒度;两组输入行铺设哪几段也跟随它。 */\n granularity: { type: String as PropType<CalendarGranularity> },\n /** 面板当前所处的层级;给定即受控,默认跟随 granularity。 */\n activeView: { type: String as PropType<CalendarView> },\n /** 输入行铺设哪几段;未提供时按 granularity 推导。 */\n segments: { type: Array as PropType<DateSegmentSet> },\n /** 并排展示几页;默认 1,起止常跨月时可设为 2。 */\n visibleCount: { type: Number },\n /** 日历恒渲染六行,默认开启。关闭后翻页时浮层高度会随月份变化。 */\n fixedWeeks: { type: Boolean, default: undefined },\n /** 初始聚焦日,同时决定展开时先落在哪一页;未提供时退回起点,再退回今天。 */\n defaultFocusedValue: { type: String },\n /** 快捷选项;提供后浮层中多出一列,日期要在自己的 computed 中计算后再传入。 */\n presets: { type: Array as PropType<DateRangePickerPreset[]> },\n isDateUnavailable: { type: Function as PropType<(value: string, anchor: string | null) => boolean> },\n /** 允许跨过不可用的日期;默认关闭,落下起点后只能选到两侧最近的不可用日为止。 */\n allowsNonContiguousRanges: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n name: { type: String },\n // 终点那份隐藏输入的表单名;不给即终点不参与提交\n endName: { type: String },\n // 两组段位各自的读屏名字与快捷选项列的名字\n translations: { type: Object as PropType<DateRangePickerProps['translations']> },\n variant: { type: String as PropType<ControlVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n /** 文字方向;浮层迁移到落点后无法继承作者子树上的方向,需要 RTL 时显式提供。 */\n dir: { type: String as PropType<Direction> },\n closeOnSelect: { type: Boolean, default: undefined },\n },\n // *-change 携带 details 对象,update:* 携带裸值;值恒为 [start, end],只填了终点时是 ['', end]\n emits: {\n 'value-change': (_details: PayloadOf<DateRangePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<DateRangePickerProps, 'onOpenChange'>) => true,\n 'focused-value-change': (_details: PayloadOf<DateRangePickerProps, 'onFocusedValueChange'>) => true,\n 'active-view-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>) => true,\n 'update:value': (_value: PayloadOf<DateRangePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<DateRangePickerProps, 'onOpenChange'>['open']) => true,\n 'update:activeView': (_view: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>['activeView']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const rootRef = ref<HTMLElement | null>(null)\n const notifyValue: DateRangePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: DateRangePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n // 聚焦日只对外播报,不提供 v-model\n const notifyFocus: DateRangePickerProps['onFocusedValueChange'] = details => emit('focused-value-change', details)\n const notifyActiveView: DateRangePickerProps['onActiveViewChange'] = (details) => {\n emit('active-view-change', details)\n emit('update:activeView', details.activeView)\n }\n const ctx = useDateRangePickerWithRoot(withXhConfig('date-range-picker', useFormControlProps(props)) as DateRangePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n onFocusedValueChange: notifyFocus,\n onActiveViewChange: notifyActiveView,\n }, rootRef)\n provideDateRangePicker(ctx)\n // 网格与段位由作者照插槽里的 weeks / segments 自行渲染\n return () => h('div', { ...ctx.api.value.getRootProps() as Record<string, unknown>, ref: rootRef }, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n start: ctx.api.value.start,\n end: ctx.api.value.end,\n periodValue: ctx.api.value.periodValue,\n focusedValue: ctx.api.value.focusedValue,\n visibleMonth: ctx.api.value.calendar.visibleMonth,\n panels: ctx.api.value.calendar.panels,\n periods: ctx.api.value.calendar.periods,\n weeks: ctx.api.value.calendar.weeks,\n weekDays: ctx.api.value.calendar.weekDays,\n headingLabel: ctx.api.value.calendar.headingLabel,\n canGoPrev: ctx.api.value.calendar.canGoPrev,\n canGoNext: ctx.api.value.calendar.canGoNext,\n segments: ctx.api.value.field.segments,\n endSegments: ctx.api.value.fieldEnd.segments,\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 XhDateRangePickerLabel = defineComponent({\n name: 'XhDateRangePickerLabel',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n // 渲染为 span 而非 label,点击聚焦由连接层接管\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerControl = defineComponent({\n name: 'XhDateRangePickerControl',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\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 XhDateRangePickerSegmentGroup = defineComponent({\n name: 'XhDateRangePickerSegmentGroup',\n props: {\n // 组号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed<0 | 1>(() => resolveDateRangePickerFieldIndex(props.index))\n // 组内的段位与隐藏输入据此认领起止\n provideDateRangePickerSegmentGroup({ index })\n // role=group 的分段容器,也是换段时的查询边界\n return () => h(\n 'div',\n ctx.api.value.getSegmentGroupProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerSegment = defineComponent({\n name: 'XhDateRangePickerSegment',\n props: {\n // 段位下标,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string> },\n /** 按段名声明该格。段集中没有该段时它收起;与 index 二选一,两个都写时按段名计算。 */\n segment: { type: String as PropType<DateSegmentType> },\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerSegmentSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const field = dateRangePickerFieldAt(ctx.api.value, group.index.value)\n // 落点由连接层算:按下标还是按段名是同一条路,适配器这边不重写一份\n const declared = props.segment != null\n ? { segment: props.segment }\n : { index: Math.trunc(Number(props.index)) }\n const state = field.segmentOf(declared)\n // 有插槽用插槽,否则渲染连接层算好的段位文本\n return h(\n 'div',\n field.getSegmentProps(declared) as Record<string, unknown>,\n slots.default ? slots.default({ segment: state }) : state?.text,\n )\n }\n },\n})\n\nexport const XhDateRangePickerRangeSeparator = defineComponent({\n name: 'XhDateRangePickerRangeSeparator',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h(\n 'span',\n ctx.api.value.getRangeSeparatorProps() as Record<string, unknown>,\n slots.default?.() ?? '-',\n )\n },\n})\n\nexport const XhDateRangePickerClearTrigger = defineComponent({\n name: 'XhDateRangePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerTrigger = defineComponent({\n name: 'XhDateRangePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useDateRangePickerContext()\n return () => h('button', fieldLabel.value({ ...fieldWiring.value, ...ctx.api.value.getTriggerProps() as Record<string, unknown> }), slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPositioner = defineComponent({\n name: 'XhDateRangePickerPositioner',\n props: {\n /** 本实例的 Portal 容器;优先于应用级配置。 */\n container: { type: Object as PropType<Element> },\n },\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n // 浮层面板的自绘条:与 content 同级、绝对定位不占布局,壳是这层已经 fixed 的 positioner;\n // 面板皮肤两轴都滚,条子走浮层 4px 档\n const bars = useScrollbars({\n scrollable: () => ctx.contentRef.value,\n scope: ctx.services.root.scope,\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => {\n const target = props.container ?? ctx.portalTarget.value\n return h(XhPortal, {\n to: target,\n source: ctx.controlRef,\n // SSR 与客户端首帧都还没有真实 root:保持同一原地结构,绑定 Scope 后再搬运。\n disabled: props.container == null && typeof target === 'string',\n }, () => [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, [...(slots.default?.() ?? []), ...bars.render()]),\n ])\n }\n },\n})\n\nexport const XhDateRangePickerContent = defineComponent({\n name: 'XhDateRangePickerContent',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\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\n// 以下是内嵌范围日历的角色节点,DOM 上带 data-scope=\"calendar-range-picker\",行为取自本组件持有的日历机器\n\nexport const XhDateRangePickerCalendar = defineComponent({\n name: 'XhDateRangePickerCalendar',\n props: {\n /** 并排的第几张面板,默认 0。写在这里,面板内的标题、网格与格子就不必各写一遍。 */\n index: { type: [Number, String], default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n provideDateRangePickerPanel({ index: usePanelIndex(props) })\n // 内嵌日历的挂载点,同时是日历的根节点\n return () => h('div', ctx.api.value.getCalendarProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPresetGroup = defineComponent({\n name: 'XhDateRangePickerPresetGroup',\n slots: Object as SlotsType<{\n /** 自行铺设条目;未写时按 presets 数据自动铺设,两者产出的 DOM 一致。 */\n default?: (props: DateRangePickerPresetsSlotProps) => VNode[]\n }>,\n // 根是片段(选项列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n const presetGroupRef = ref<HTMLElement | null>(null)\n // 快捷选项列自己滚(窄视口横排横滚、宽视口竖排竖滚):两轴的条子贴在它的盒子上、紧跟在它后面\n const bars = useScrollbars({\n scrollable: () => presetGroupRef.value,\n anchor: 'layer',\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return [\n h(\n 'div',\n {\n ...mergeProps(api.getPresetGroupProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { presetGroupRef.value = el as HTMLElement },\n },\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerPreset = defineComponent({\n name: 'XhDateRangePickerPreset',\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 = useDateRangePickerContext()\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 XhDateRangePickerHeader = defineComponent({\n name: 'XhDateRangePickerHeader',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevYearTrigger = defineComponent({\n name: 'XhDateRangePickerPrevYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevTrigger = defineComponent({\n name: 'XhDateRangePickerPrevTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextTrigger = defineComponent({\n name: 'XhDateRangePickerNextTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextYearTrigger = defineComponent({\n name: 'XhDateRangePickerNextYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeading = defineComponent({\n name: 'XhDateRangePickerHeading',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染本面板的标题\n return () => h(\n 'div',\n ctx.api.value.calendar.getHeadingProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? (ctx.api.value.calendar.panels[index.value]?.headingLabel ?? ctx.api.value.calendar.headingLabel),\n )\n },\n})\n\nexport const XhDateRangePickerHeadingYearTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingYearTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染标题里年那一截;年视图下它是整个十年跨度\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingYearTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingYear,\n )\n },\n})\n\nexport const XhDateRangePickerHeadingMonthTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingMonthTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingMonthTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingMonth,\n )\n },\n})\n\nexport const XhDateRangePickerGrid = defineComponent({\n name: 'XhDateRangePickerGrid',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'div',\n {\n ...ctx.api.value.calendar.getGridProps({ index: index.value }) as Record<string, unknown>,\n // 键盘在首个网格上收口;其余面板只渲染,方向键仍能跨面板走(落点按值现查)\n ref: index.value === 0 ? ctx.gridRef : undefined,\n },\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerGridHead = defineComponent({\n name: 'XhDateRangePickerGridHead',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridHeadProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerGridBody = defineComponent({\n name: 'XhDateRangePickerGridBody',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 表头行与日期行共用同一个 role=row\nexport const XhDateRangePickerWeekRow = defineComponent({\n name: 'XhDateRangePickerWeekRow',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getWeekRowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerWeekNumber = defineComponent({\n name: 'XhDateRangePickerWeekNumber',\n props: {\n /** 该行行首那一天的 ISO 串。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n // 有插槽用插槽,否则显示这一行的周序号\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekNumberProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.getWeekNumberText({ value: props.value }),\n )\n },\n})\n\nexport const XhDateRangePickerWeekDay = defineComponent({\n name: 'XhDateRangePickerWeekDay',\n props: {\n // 列序 0-6,兼收字符串\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed(() => Number(props.value))\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekDayProps({ value: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.weekDays[index.value]?.label,\n )\n },\n})\n\nexport const XhDateRangePickerCell = defineComponent({\n name: 'XhDateRangePickerCell',\n props: {\n /** ISO 日期串。 */\n value: { type: String, required: true },\n /**\n * 属于第几个面板;未写时跟随所在的日历。同一天会同时出现在两个面板中\n * (8 月末的几天也铺在 9 月的首行),是否为本月只有连同面板一起看才能判定。\n */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n const cell = computed<CalendarCellProps>(() => ({ value: props.value, index: index.value }))\n provideDateRangePickerCell({ cell })\n // 不上报格子卸载,翻月后由日历机器按聚焦日重新落点\n return () => h('div', ctx.api.value.calendar.getCellProps(cell.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerCellTrigger = defineComponent({\n name: 'XhDateRangePickerCellTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n const { cell } = useDateRangePickerCellContext()\n return () => h(\n 'div',\n ctx.api.value.calendar.getCellTriggerProps(cell.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerHiddenInput = defineComponent({\n name: 'XhDateRangePickerHiddenInput',\n props: {\n // 写在分段容器外面时用它指明属于哪一端;写在容器里面不必给,跟着容器走\n index: { type: [Number, String] as PropType<number | string> },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const index = props.index === undefined ? group.index.value : resolveDateRangePickerFieldIndex(props.index)\n return h('input', dateRangePickerFieldAt(ctx.api.value, index).getHiddenInputProps() as Record<string, unknown>)\n }\n },\n})\n"],"mappings":";;;;;;;;;;;;;;;AAiDA,SAAS,cAAc,OAAyD;CAC9E,MAAM,QAAQ,+BAA+B;CAC7C,OAAO,eAAe,iCAAiC,MAAM,OAAO,MAAM,MAAM,KAAK,CAAC;AACxF;AA6CA,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CAEN,OAAO;;EAEL,OAAO,EAAE,MAAM,MAA4B;EAC3C,cAAc,EAAE,MAAM,MAA4B;EAClD,MAAM;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC1C,aAAa;EACb,KAAK,EAAE,MAAM,OAAO;EACpB,KAAK,EAAE,MAAM,OAAO;EACpB,QAAQ,EAAE,MAAM,OAAO;EACvB,UAAU,EAAE,MAAM,OAAO;;EAEzB,aAAa,EAAE,MAAM,OAAwC;;EAE7D,YAAY,EAAE,MAAM,OAAiC;;EAErD,UAAU,EAAE,MAAM,MAAkC;;EAEpD,cAAc,EAAE,MAAM,OAAO;;EAE7B,YAAY;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;;EAEhD,qBAAqB,EAAE,MAAM,OAAO;;EAEpC,SAAS,EAAE,MAAM,MAA2C;EAC5D,mBAAmB,EAAE,MAAM,SAAwE;;EAEnG,2BAA2B;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC/D,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC7C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,MAAM,EAAE,MAAM,OAAO;EAErB,SAAS,EAAE,MAAM,OAAO;EAExB,cAAc,EAAE,MAAM,OAAyD;EAC/E,SAAS,EAAE,MAAM,OAAmC;EACpD,MAAM,EAAE,MAAM,OAAyB;EACvC,MAAM,EAAE,MAAM,OAAyB;EACvC,WAAW,EAAE,MAAM,OAA8B;EACjD,QAAQ,EAAE,MAAM,OAAO;;EAEvB,KAAK,EAAE,MAAM,OAA8B;EAC3C,eAAe;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;CACrD;CAEA,OAAO;EACL,iBAAiB,aAA+D;EAChF,gBAAgB,aAA8D;EAC9E,yBAAyB,aAAsE;EAC/F,uBAAuB,aAAoE;EAC3F,iBAAiB,WAAsE;EACvF,gBAAgB,UAAmE;EACnF,sBAAsB,UAA+E;CACvG;CACA,OAAO;CAGP,MAAM,OAAO,EAAE,OAAO,QAAQ;EAC5B,MAAM,UAAU,IAAwB,IAAI;EAC5C,MAAM,eAAsD,YAAY;GACtE,KAAK,gBAAgB,OAAO;GAC5B,KAAK,gBAAgB,QAAQ,KAAK;EACpC;EACA,MAAM,cAAoD,YAAY;GACpE,KAAK,eAAe,OAAO;GAC3B,KAAK,eAAe,QAAQ,IAAI;EAClC;EAEA,MAAM,eAA4D,YAAW,KAAK,wBAAwB,OAAO;EACjH,MAAM,oBAAgE,YAAY;GAChF,KAAK,sBAAsB,OAAO;GAClC,KAAK,qBAAqB,QAAQ,UAAU;EAC9C;EACA,MAAM,MAAM,2BAA2B,aAAa,qBAAqB,oBAAoB,KAAK,CAAC,GAA2B;GAC5H,eAAe;GACf,cAAc;GACd,sBAAsB;GACtB,oBAAoB;EACtB,GAAG,OAAO;EACV,uBAAuB,GAAG;EAE1B,aAAa,EAAE,OAAO;GAAE,GAAG,IAAI,IAAI,MAAM,aAAa;GAA8B,KAAK;EAAQ,GAAG,MAAM,UAAU;GAClH,MAAM,IAAI,IAAI,MAAM;GACpB,OAAO,IAAI,IAAI,MAAM;GACrB,OAAO,IAAI,IAAI,MAAM;GACrB,KAAK,IAAI,IAAI,MAAM;GACnB,aAAa,IAAI,IAAI,MAAM;GAC3B,cAAc,IAAI,IAAI,MAAM;GAC5B,cAAc,IAAI,IAAI,MAAM,SAAS;GACrC,QAAQ,IAAI,IAAI,MAAM,SAAS;GAC/B,SAAS,IAAI,IAAI,MAAM,SAAS;GAChC,OAAO,IAAI,IAAI,MAAM,SAAS;GAC9B,UAAU,IAAI,IAAI,MAAM,SAAS;GACjC,cAAc,IAAI,IAAI,MAAM,SAAS;GACrC,WAAW,IAAI,IAAI,MAAM,SAAS;GAClC,WAAW,IAAI,IAAI,MAAM,SAAS;GAClC,UAAU,IAAI,IAAI,MAAM,MAAM;GAC9B,aAAa,IAAI,IAAI,MAAM,SAAS;GACpC,UAAU,IAAI,IAAI,MAAM;GACxB,SAAS,IAAI,IAAI,MAAM;GACvB,UAAU,IAAI,IAAI,MAAM;GACxB,OAAO,IAAI,IAAI,MAAM;EACvB,CAAC,CAAC;CACJ;AACF,CAAC;AAED,MAAa,yBAAyB,gBAAgB;CACpD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EAEtC,aAAa,EAAE,QAAQ,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GACjC,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAED,MAAa,gCAAgC,gBAAgB;CAC3D,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,SAAS;CAAE,EAC3E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,MAAM,QAAQ,eAAsB,iCAAiC,MAAM,KAAK,CAAC;EAEjF,mCAAmC,EAAE,MAAM,CAAC;EAE5C,aAAa,EACX,OACA,IAAI,IAAI,MAAM,qBAAqB,EAAE,OAAO,MAAM,MAAM,CAAC,GACzD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,OAAO;EAEL,OAAO,EAAE,MAAM,CAAC,QAAQ,MAAM,EAA+B;;EAE7D,SAAS,EAAE,MAAM,OAAoC;CACvD;CACA,OAAO;CAGP,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,MAAM,QAAQ,sCAAsC;EACpD,aAAa;GACX,MAAM,QAAQ,uBAAuB,IAAI,IAAI,OAAO,MAAM,MAAM,KAAK;GAErE,MAAM,WAAW,MAAM,WAAW,OAC9B,EAAE,SAAS,MAAM,QAAQ,IACzB,EAAE,OAAO,KAAK,MAAM,OAAO,MAAM,KAAK,CAAC,EAAE;GAC7C,MAAM,QAAQ,MAAM,UAAU,QAAQ;GAEtC,OAAO,EACL,OACA,MAAM,gBAAgB,QAAQ,GAC9B,MAAM,UAAU,MAAM,QAAQ,EAAE,SAAS,MAAM,CAAC,IAAI,OAAO,IAC7D;EACF;CACF;AACF,CAAC;AAED,MAAa,kCAAkC,gBAAgB;CAC7D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,uBAAuB,GACrC,MAAM,UAAU,KAAK,GACvB;CACF;AACF,CAAC;AAED,MAAa,gCAAgC,gBAAgB;CAC3D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,qBAAqB,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAElB,MAAM,cAAc,oBAAoB;EAExC,MAAM,aAAa,oBAAoB;EACvC,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,UAAU,WAAW,MAAM;GAAE,GAAG,YAAY;GAAO,GAAG,IAAI,IAAI,MAAM,gBAAgB;EAA6B,CAAC,GAAG,MAAM,UAAU,CAAC;CACvJ;AACF,CAAC;AAED,MAAa,8BAA8B,gBAAgB;CACzD,MAAM;CACN,OAAO;;AAEL,WAAW,EAAE,MAAM,OAA4B,EACjD;CAEA,cAAc;CACd,MAAM,OAAO,EAAE,OAAO,SAAS;EAC7B,MAAM,MAAM,0BAA0B;EAGtC,MAAM,OAAO,cAAc;GACzB,kBAAkB,IAAI,WAAW;GACjC,OAAO,IAAI,SAAS,KAAK;GACzB,MAAM,CAAC,YAAY,YAAY;GAC/B,cAAc;IAAE,KAAM,IAAI,IAAI,MAAM,mBAAmB,CAAC,CAAyB;IAAK,MAAM;GAAK;EACnG,CAAC;EAED,aAAa;GACX,MAAM,SAAS,MAAM,aAAa,IAAI,aAAa;GACnD,OAAO,EAAE,UAAU;IACjB,IAAI;IACJ,QAAQ,IAAI;IAEZ,UAAU,MAAM,aAAa,QAAQ,OAAO,WAAW;GACzD,SAAS,CACP,EAAE,OAAO;IACP,GAAG,WAAW,IAAI,IAAI,MAAM,mBAAmB,GAA8B,KAAK;IAClF,MAAM,OAAgB;KAAE,IAAI,cAAc,QAAQ;IAAkB;GACtE,GAAG,CAAC,GAAI,MAAM,UAAU,KAAK,CAAC,GAAI,GAAG,KAAK,OAAO,CAAC,CAAC,CACrD,CAAC;EACH;CACF;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,OAAO;GACpB,GAAG,IAAI,IAAI,MAAM,gBAAgB;GAGjC,OAAO,IAAI,QAAQ,QAAQ,KAAA,IAAY,EAAE,SAAS,OAAO;GACzD,MAAM,OAAgB;IAAE,IAAI,WAAW,QAAQ;GAAkB;EACnE,GAAG,MAAM,UAAU,CAAC;CACtB;AACF,CAAC;AAID,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAG,SAAS;CAAE,EAC9C;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,4BAA4B,EAAE,OAAO,cAAc,KAAK,EAAE,CAAC;EAE3D,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,OAAO;CAKP,cAAc;CACd,MAAM,GAAG,EAAE,OAAO,SAAS;EACzB,MAAM,MAAM,0BAA0B;EACtC,MAAM,iBAAiB,IAAwB,IAAI;EAEnD,MAAM,OAAO,cAAc;GACzB,kBAAkB,eAAe;GACjC,QAAQ;GACR,MAAM,CAAC,YAAY,YAAY;GAC/B,cAAc;IAAE,KAAM,IAAI,IAAI,MAAM,mBAAmB,CAAC,CAAyB;IAAK,MAAM;GAAK;EACnG,CAAC;EACD,gBAAgB,KAAK,QAAQ,CAAC;EAC9B,aAAa;GACX,MAAM,MAAM,IAAI,IAAI;GACpB,MAAM,WAAW,MAAM,UAAU,EAAE,SAAS,IAAI,QAAQ,CAAC;GACzD,OAAO,CACL,EACE,OACA;IACE,GAAG,WAAW,IAAI,oBAAoB,GAA8B,KAAK;IACzE,MAAM,OAAgB;KAAE,eAAe,QAAQ;IAAkB;GACnE,GACA,WAAW,QAAQ,IACf,WACA,IAAI,QAAQ,KAAI,WAAU,EACxB,OACA;IAAE,GAAG,IAAI,eAAe,EAAE,OAAO,OAAO,MAAM,CAAC;IAA8B,KAAK,OAAO;GAAM,GAC/F,OAAO,KACT,CAAC,CACP,GACA,GAAG,KAAK,OAAO,CACjB;EACF;CACF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,OAAO;CAIP,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,aAAa;GACX,MAAM,MAAM,IAAI,IAAI;GACpB,MAAM,WAAW,MAAM,UAAU;GACjC,OAAO,EACL,OACA,IAAI,eAAe,EAAE,OAAO,MAAM,MAAM,CAAC,GACzC,WAAW,QAAQ,IAAI,WAAW,IAAI,QAAQ,MAAK,MAAK,EAAE,UAAU,MAAM,KAAK,CAAC,EAAE,KACpF;EACF;CACF;AACF,CAAC;AAED,MAAa,0BAA0B,gBAAgB;CACrD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,eAAe,GAA8B,MAAM,UAAU,CAAC;CAC7G;AACF,CAAC;AAED,MAAa,mCAAmC,gBAAgB;CAC9D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,SAAS,wBAAwB,GAA8B,MAAM,UAAU,CAAC;CACzH;AACF,CAAC;AAED,MAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,SAAS,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,SAAS,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,mCAAmC,gBAAgB;CAC9D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,UAAU,IAAI,IAAI,MAAM,SAAS,wBAAwB,GAA8B,MAAM,UAAU,CAAC;CACzH;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,OAAO;;AAEL,OAAO,EAAE,MAAM,CAAC,QAAQ,MAAM,EAAE,EAClC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,MAAM,QAAQ,cAAc,KAAK;EAEjC,aAAa,EACX,OACA,IAAI,IAAI,MAAM,SAAS,gBAAgB,EAAE,OAAO,MAAM,MAAM,CAAC,GAC7D,MAAM,UAAU,KAAM,IAAI,IAAI,MAAM,SAAS,OAAO,MAAM,MAAM,EAAE,gBAAgB,IAAI,IAAI,MAAM,SAAS,YAC3G;CACF;AACF,CAAC;AAED,MAAa,sCAAsC,gBAAgB;CACjE,MAAM;CACN,OAAO;;AAEL,OAAO,EAAE,MAAM,CAAC,QAAQ,MAAM,EAAE,EAClC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,MAAM,QAAQ,cAAc,KAAK;EAEjC,aAAa,EACX,UACA,IAAI,IAAI,MAAM,SAAS,2BAA2B,EAAE,OAAO,MAAM,MAAM,CAAC,GACxE,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,SAAS,OAAO,MAAM,MAAM,EAAE,WACnE;CACF;AACF,CAAC;AAED,MAAa,uCAAuC,gBAAgB;CAClE,MAAM;CACN,OAAO;;AAEL,OAAO,EAAE,MAAM,CAAC,QAAQ,MAAM,EAAE,EAClC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,MAAM,QAAQ,cAAc,KAAK;EACjC,aAAa,EACX,UACA,IAAI,IAAI,MAAM,SAAS,4BAA4B,EAAE,OAAO,MAAM,MAAM,CAAC,GACzE,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,SAAS,OAAO,MAAM,MAAM,EAAE,YACnE;CACF;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,OAAO;;AAEL,OAAO,EAAE,MAAM,CAAC,QAAQ,MAAM,EAAE,EAClC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,MAAM,QAAQ,cAAc,KAAK;EACjC,aAAa,EACX,OACA;GACE,GAAG,IAAI,IAAI,MAAM,SAAS,aAAa,EAAE,OAAO,MAAM,MAAM,CAAC;GAE7D,KAAK,MAAM,UAAU,IAAI,IAAI,UAAU,KAAA;EACzC,GACA,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CAC/G;AACF,CAAC;AAED,MAAa,4BAA4B,gBAAgB;CACvD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,iBAAiB,GAA8B,MAAM,UAAU,CAAC;CAC/G;AACF,CAAC;AAGD,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,gBAAgB,GAA8B,MAAM,UAAU,CAAC;CAC9G;AACF,CAAC;AAED,MAAa,8BAA8B,gBAAgB;CACzD,MAAM;CACN,OAAO;;AAEL,OAAO;EAAE,MAAM;EAAQ,UAAU;CAAK,EACxC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EAEtC,aAAa,EACX,QACA,IAAI,IAAI,MAAM,SAAS,mBAAmB,EAAE,OAAO,MAAM,MAAM,CAAC,GAChE,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,SAAS,kBAAkB,EAAE,OAAO,MAAM,MAAM,CAAC,CACtF;CACF;AACF,CAAC;AAED,MAAa,2BAA2B,gBAAgB;CACtD,MAAM;CACN,OAAO,EAEL,OAAO;EAAE,MAAM,CAAC,QAAQ,MAAM;EAAgC,UAAU;CAAK,EAC/E;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,MAAM,QAAQ,eAAe,OAAO,MAAM,KAAK,CAAC;EAChD,aAAa,EACX,QACA,IAAI,IAAI,MAAM,SAAS,gBAAgB,EAAE,OAAO,MAAM,MAAM,CAAC,GAC7D,MAAM,UAAU,KAAK,IAAI,IAAI,MAAM,SAAS,SAAS,MAAM,MAAM,EAAE,KACrE;CACF;AACF,CAAC;AAED,MAAa,wBAAwB,gBAAgB;CACnD,MAAM;CACN,OAAO;;EAEL,OAAO;GAAE,MAAM;GAAQ,UAAU;EAAK;;;;;EAKtC,OAAO,EAAE,MAAM,CAAC,QAAQ,MAAM,EAAE;CAClC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,0BAA0B;EACtC,MAAM,QAAQ,cAAc,KAAK;EACjC,MAAM,OAAO,gBAAmC;GAAE,OAAO,MAAM;GAAO,OAAO,MAAM;EAAM,EAAE;EAC3F,2BAA2B,EAAE,KAAK,CAAC;EAEnC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,SAAS,aAAa,KAAK,KAAK,GAA8B,MAAM,UAAU,CAAC;CACrH;AACF,CAAC;AAED,MAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,0BAA0B;EACtC,MAAM,EAAE,SAAS,8BAA8B;EAC/C,aAAa,EACX,OACA,IAAI,IAAI,MAAM,SAAS,oBAAoB,KAAK,KAAK,GACrD,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,+BAA+B,gBAAgB;CAC1D,MAAM;CACN,OAAO,EAEL,OAAO,EAAE,MAAM,CAAC,QAAQ,MAAM,EAA+B,EAC/D;CACA,MAAM,OAAO;EACX,MAAM,MAAM,0BAA0B;EACtC,MAAM,QAAQ,sCAAsC;EACpD,aAAa;GACX,MAAM,QAAQ,MAAM,UAAU,KAAA,IAAY,MAAM,MAAM,QAAQ,iCAAiC,MAAM,KAAK;GAC1G,OAAO,EAAE,SAAS,uBAAuB,IAAI,IAAI,OAAO,KAAK,CAAC,CAAC,oBAAoB,CAA4B;EACjH;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/date-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 date range picker 相关实现。\n\nimport type { ControlVariant, Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type {\n CalendarCellProps,\n CalendarGranularity,\n CalendarRangePickerApi,\n CalendarView,\n DateFieldSegmentState,\n DatePickerTimeUnit,\n DateRangePickerApi,\n DateRangePickerEndIndex,\n DateRangePickerPreset,\n DateRangePickerPresetState,\n DateRangePickerSchema,\n DateSegmentPlaceholders,\n DateSegmentSet,\n DateSegmentType,\n TimeHourCycle,\n TimeStep,\n TimeUnavailablePredicate,\n} from '@xihan-ui/headless'\nimport type { ComputedRef, PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { dateRangePickerFieldAt, resolveDateRangePickerFieldIndex, resolveDateRangePickerPanelIndex } from '@xihan-ui/headless'\nimport { computed, defineComponent, h, mergeProps, onUpdated, ref } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { XhPortal } from '../../runtime/portal'\nimport { slotPaints } from '../../runtime/slot-content'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { withHandlers } from '../../runtime/with-handlers'\nimport { useFieldLabelWiring, useFieldStateWiring } from '../field/use-field-control'\nimport { useFormControlProps } from '../form/use-form-control'\nimport {\n provideDateRangePicker,\n provideDateRangePickerCell,\n provideDateRangePickerPanel,\n provideDateRangePickerSegmentGroup,\n useDateRangePickerCellContext,\n useDateRangePickerContext,\n useDateRangePickerPanelContext,\n useDateRangePickerSegmentGroupContext,\n} from './context'\nimport { useDateRangePickerWithRoot } from './use-date-range-picker'\n\ntype DateRangePickerProps = DateRangePickerSchema['props']\n\n/**\n * 部件属于并排的第几张面板:自己写了即按自己写的,未写时跟随所在的日历。\n * 兼收字符串以支持模板中写 index=\"1\"。\n */\nfunction usePanelIndex(props: { index?: number | string }): ComputedRef<number> {\n const panel = useDateRangePickerPanelContext()\n return computed(() => resolveDateRangePickerPanelIndex(props.index, panel.index.value))\n}\n\n/** 默认插槽的载荷:选择器的开合与两端、内嵌范围日历的展示数据、两组段位,以及改写值的句柄。 */\nexport type DateRangePickerRootSlotProps\n = & Pick<\n DateRangePickerApi,\n | 'open'\n | 'value'\n | 'start'\n | 'end'\n | 'periodValue'\n | 'focusedValue'\n | 'canClear'\n | 'setOpen'\n | 'setValue'\n | 'clear'\n >\n & Pick<\n CalendarRangePickerApi,\n | 'visibleMonth'\n | 'panels'\n | 'periods'\n | 'weeks'\n | 'weekDays'\n | 'headingLabel'\n | 'canGoPrev'\n | 'canGoNext'\n >\n & {\n /** 起点组段位。 */\n segments: DateFieldSegmentState[]\n /** 终点组段位。 */\n endSegments: DateFieldSegmentState[]\n }\n\n/** 段位默认插槽的载荷:本段的投影;下标越界时缺席。 */\nexport interface DateRangePickerSegmentSlotProps {\n segment: DateFieldSegmentState | undefined\n}\n\n/** 快捷选项列默认插槽的载荷:逐条的投影,作者据此自行铺设条目。 */\nexport interface DateRangePickerPresetsSlotProps {\n presets: readonly DateRangePickerPresetState[]\n}\n\nexport const XhDateRangePickerRoot = defineComponent({\n name: 'XhDateRangePickerRoot',\n // 有 connect / machine 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n /** 区间两端 [start, end];空缺的一端用空串占位。 */\n value: { type: Array as PropType<string[]> },\n defaultValue: { type: Array as PropType<string[]> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n min: { type: String },\n max: { type: String },\n locale: { type: String },\n /** 周首日,0 = 星期日 … 6 = 星期六;不给按 locale。只改日历的表头、行首与 Home / End,月份名与星期名仍按 locale。 */\n firstDayOfWeek: { type: Number },\n timeZone: { type: String },\n /** 选择粒度;两组输入行铺设哪几段也跟随它。 */\n granularity: { type: String as PropType<CalendarGranularity> },\n /** 面板当前所处的层级;给定即受控,默认跟随 granularity。 */\n activeView: { type: String as PropType<CalendarView> },\n /** 输入行铺设哪几段;未提供时按 granularity 推导。 */\n segments: { type: Array as PropType<DateSegmentSet> },\n /** 逐段的占位串,两组段位共用,覆盖内置的 yyyy / mm / dd。 */\n placeholder: { type: Object as PropType<DateSegmentPlaceholders> },\n /** 起点那组段位的整条占位:一段都没填、焦点也不在段上时显示这句文字,焦点进到段上即换回段位。 */\n startPlaceholder: { type: String },\n /** 终点那组段位的整条占位,规则同 startPlaceholder。 */\n endPlaceholder: { type: String },\n /** 并排展示几页;默认 1,起止常跨月时可设为 2。 */\n visibleCount: { type: Number },\n /** 日历恒渲染六行,默认开启。关闭后翻页时浮层高度会随月份变化。 */\n fixedWeeks: { type: Boolean, default: undefined },\n /** 初始聚焦日,同时决定展开时先落在哪一页;未提供时退回起点,再退回今天。 */\n defaultFocusedValue: { type: String },\n /** 快捷选项;提供后浮层中多出一列,日期要在自己的 computed 中计算后再传入。 */\n presets: { type: Array as PropType<DateRangePickerPreset[]> },\n isDateUnavailable: { type: Function as PropType<(value: string, anchor: string | null) => boolean> },\n /** 允许跨过不可用的日期;默认关闭,落下起点后只能选到两侧最近的不可用日为止。 */\n allowsNonContiguousRanges: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n name: { type: String },\n // 终点那份隐藏输入的表单名;不给即终点不参与提交\n endName: { type: String },\n // 两组段位各自的读屏名字与快捷选项列的名字\n translations: { type: Object as PropType<DateRangePickerProps['translations']> },\n variant: { type: String as PropType<ControlVariant> },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n /** 文字方向;浮层迁移到落点后无法继承作者子树上的方向,需要 RTL 时显式提供。 */\n dir: { type: String as PropType<Direction> },\n closeOnSelect: { type: Boolean, default: undefined },\n /** 一体化时间:两端升格为日期时间,起止各多出一组时间列,由确认按钮收口;只在按天挑时生效。 */\n showTime: { type: Boolean, default: undefined },\n timeGranularity: { type: String as PropType<DateRangePickerProps['timeGranularity']> },\n /** showTime 的小时制,默认 24;12 时多出上下午列与上下午段。 */\n hourCycle: { type: Number as PropType<TimeHourCycle> },\n /** showTime 时间列按单位的步进:`{ hour?, minute?, second? }`。 */\n timeStep: { type: Object as PropType<TimeStep> },\n /** showTime 时间列的逐格可选性:时列按 24 小时制给值,第三个参数带这一端已选的时分、日期与端号。 */\n isTimeUnavailable: { type: Function as PropType<TimeUnavailablePredicate> },\n /** 只点日期时起止各补的时刻,例如 ['00:00:00', '23:59:59']。 */\n defaultTime: { type: Array as unknown as PropType<[string, string]> },\n /** 当前编辑哪一端;给定即受控,未给时每次展开按入口重定。 */\n activeIndex: { type: Number as PropType<DateRangePickerEndIndex> },\n },\n // *-change 携带 details 对象,update:* 携带裸值;值恒为 [start, end],只填了终点时是 ['', end]\n emits: {\n 'clear': () => true,\n 'value-change': (_details: PayloadOf<DateRangePickerProps, 'onValueChange'>) => true,\n 'open-change': (_details: PayloadOf<DateRangePickerProps, 'onOpenChange'>) => true,\n 'focused-value-change': (_details: PayloadOf<DateRangePickerProps, 'onFocusedValueChange'>) => true,\n 'active-view-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>) => true,\n 'update:value': (_value: PayloadOf<DateRangePickerProps, 'onValueChange'>['value']) => true,\n 'update:open': (_open: PayloadOf<DateRangePickerProps, 'onOpenChange'>['open']) => true,\n 'update:activeView': (_view: PayloadOf<DateRangePickerProps, 'onActiveViewChange'>['activeView']) => true,\n 'active-index-change': (_details: PayloadOf<DateRangePickerProps, 'onActiveIndexChange'>) => true,\n 'update:activeIndex': (_index: PayloadOf<DateRangePickerProps, 'onActiveIndexChange'>['activeIndex']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerRootSlotProps) => VNode[]\n }>,\n setup(props, { slots, emit }) {\n const rootRef = ref<HTMLElement | null>(null)\n const notifyValue: DateRangePickerProps['onValueChange'] = (details) => {\n emit('value-change', details)\n emit('update:value', details.value)\n }\n const notifyOpen: DateRangePickerProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n // 聚焦日只对外播报,不提供 v-model\n const notifyFocus: DateRangePickerProps['onFocusedValueChange'] = details => emit('focused-value-change', details)\n const notifyActiveView: DateRangePickerProps['onActiveViewChange'] = (details) => {\n emit('active-view-change', details)\n emit('update:activeView', details.activeView)\n }\n const notifyActiveIndex: DateRangePickerProps['onActiveIndexChange'] = (details) => {\n emit('active-index-change', details)\n emit('update:activeIndex', details.activeIndex)\n }\n const ctx = useDateRangePickerWithRoot(withHandlers(withXhConfig('date-range-picker', useFormControlProps(props)), { onClear: () => emit('clear') }) as DateRangePickerProps, {\n onValueChange: notifyValue,\n onOpenChange: notifyOpen,\n onFocusedValueChange: notifyFocus,\n onActiveViewChange: notifyActiveView,\n onActiveIndexChange: notifyActiveIndex,\n }, rootRef)\n provideDateRangePicker(ctx)\n // 网格与段位由作者照插槽里的 weeks / segments 自行渲染\n return () => h('div', { ...ctx.api.value.getRootProps() as Record<string, unknown>, ref: rootRef }, slots.default?.({\n open: ctx.api.value.open,\n value: ctx.api.value.value,\n start: ctx.api.value.start,\n end: ctx.api.value.end,\n periodValue: ctx.api.value.periodValue,\n focusedValue: ctx.api.value.focusedValue,\n visibleMonth: ctx.api.value.calendar.visibleMonth,\n panels: ctx.api.value.calendar.panels,\n periods: ctx.api.value.calendar.periods,\n weeks: ctx.api.value.calendar.weeks,\n weekDays: ctx.api.value.calendar.weekDays,\n headingLabel: ctx.api.value.calendar.headingLabel,\n canGoPrev: ctx.api.value.calendar.canGoPrev,\n canGoNext: ctx.api.value.calendar.canGoNext,\n segments: ctx.api.value.field.segments,\n endSegments: ctx.api.value.fieldEnd.segments,\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 XhDateRangePickerLabel = defineComponent({\n name: 'XhDateRangePickerLabel',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n // 渲染为 span 而非 label,点击聚焦由连接层接管\n return () => h('span', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerControl = defineComponent({\n name: 'XhDateRangePickerControl',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\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 XhDateRangePickerSegmentGroup = defineComponent({\n name: 'XhDateRangePickerSegmentGroup',\n props: {\n // 组号:0 起点、1 终点,兼收字符串以支持模板里写 index=\"1\"\n index: { type: [Number, String] as PropType<number | string>, default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed<0 | 1>(() => resolveDateRangePickerFieldIndex(props.index))\n // 组内的段位与隐藏输入据此认领起止\n provideDateRangePickerSegmentGroup({ index })\n // role=group 的分段容器,也是换段时的查询边界\n return () => h(\n 'div',\n ctx.api.value.getSegmentGroupProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerSegment = defineComponent({\n name: 'XhDateRangePickerSegment',\n props: {\n // 段位下标,兼收字符串以支持模板里写 index=\"0\"\n index: { type: [Number, String] as PropType<number | string> },\n /** 按段名声明该格。段集中没有该段时它收起;与 index 二选一,两个都写时按段名计算。 */\n segment: { type: String as PropType<DateSegmentType> },\n },\n slots: Object as SlotsType<{\n default?: (props: DateRangePickerSegmentSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const field = dateRangePickerFieldAt(ctx.api.value, group.index.value)\n // 落点由连接层算:按下标还是按段名是同一条路,适配器这边不重写一份\n const declared = props.segment != null\n ? { segment: props.segment }\n : { index: Math.trunc(Number(props.index)) }\n const state = field.segmentOf(declared)\n // 有插槽用插槽,否则渲染连接层算好的段位文本\n return h(\n 'div',\n field.getSegmentProps(declared) as Record<string, unknown>,\n slots.default ? slots.default({ segment: state }) : state?.text,\n )\n }\n },\n})\n\nexport const XhDateRangePickerRangeSeparator = defineComponent({\n name: 'XhDateRangePickerRangeSeparator',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h(\n 'span',\n ctx.api.value.getRangeSeparatorProps() as Record<string, unknown>,\n slots.default?.() ?? '-',\n )\n },\n})\n\nexport const XhDateRangePickerClearTrigger = defineComponent({\n name: 'XhDateRangePickerClearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getClearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerTrigger = defineComponent({\n name: 'XhDateRangePickerTrigger',\n setup(_, { slots }) {\n // 字段的说明与校验状态要落在真控件上,不能停在封装根的 div 上\n const fieldWiring = useFieldStateWiring()\n // 字段的标签也得并进名字链:控件自带的那条指的是它自己那个没渲染的 label 部件\n const fieldLabel = useFieldLabelWiring()\n const ctx = useDateRangePickerContext()\n return () => h('button', fieldLabel.value({ ...fieldWiring.value, ...ctx.api.value.getTriggerProps() as Record<string, unknown> }), slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPositioner = defineComponent({\n name: 'XhDateRangePickerPositioner',\n props: {\n /** 本实例的 Portal 容器;优先于应用级配置。 */\n container: { type: Object as PropType<Element> },\n },\n // 根是 Teleport,Vue 不会把直通属性合上去,作者写的 class 与 style 得自己接住落到 positioner 上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n // 浮层面板的自绘条:与 content 同级、绝对定位不占布局,壳是这层已经 fixed 的 positioner;\n // 面板皮肤两轴都滚,条子走浮层 4px 档\n const bars = useScrollbars({\n scrollable: () => ctx.contentRef.value,\n scope: ctx.services.root.scope,\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => {\n const target = props.container ?? ctx.portalTarget.value\n return h(XhPortal, {\n to: target,\n source: ctx.controlRef,\n // SSR 与客户端首帧都还没有真实 root:保持同一原地结构,绑定 Scope 后再搬运。\n disabled: props.container == null && typeof target === 'string',\n }, () => [\n h('div', {\n ...mergeProps(ctx.api.value.getPositionerProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { ctx.positionerRef.value = el as HTMLElement },\n }, [...(slots.default?.() ?? []), ...bars.render()]),\n ])\n }\n },\n})\n\nexport const XhDateRangePickerContent = defineComponent({\n name: 'XhDateRangePickerContent',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\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\n// 以下是内嵌范围日历的角色节点,DOM 上带 data-scope=\"calendar-range-picker\",行为取自本组件持有的日历机器\n\nexport const XhDateRangePickerCalendar = defineComponent({\n name: 'XhDateRangePickerCalendar',\n props: {\n /** 并排的第几张面板,默认 0。写在这里,面板内的标题、网格与格子就不必各写一遍。 */\n index: { type: [Number, String], default: 0 },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n provideDateRangePickerPanel({ index: usePanelIndex(props) })\n // 内嵌日历的挂载点,同时是日历的根节点\n return () => h('div', ctx.api.value.getCalendarProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPresetGroup = defineComponent({\n name: 'XhDateRangePickerPresetGroup',\n slots: Object as SlotsType<{\n /** 自行铺设条目;未写时按 presets 数据自动铺设,两者产出的 DOM 一致。 */\n default?: (props: DateRangePickerPresetsSlotProps) => VNode[]\n }>,\n // 根是片段(选项列节点 + 贴层的条子),Vue 不会把直通属性合上去:作者写的 class、style 与 data-* 自己接住落到列节点上\n inheritAttrs: false,\n setup(_, { slots, attrs }) {\n const ctx = useDateRangePickerContext()\n const presetGroupRef = ref<HTMLElement | null>(null)\n // 快捷选项列自己滚(窄视口横排横滚、宽视口竖排竖滚):两轴的条子贴在它的盒子上、紧跟在它后面\n const bars = useScrollbars({\n scrollable: () => presetGroupRef.value,\n anchor: 'layer',\n axes: ['vertical', 'horizontal'],\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const authored = slots.default?.({ presets: api.presets })\n return [\n h(\n 'div',\n {\n ...mergeProps(api.getPresetGroupProps() as Record<string, unknown>, attrs),\n ref: (el: unknown) => { presetGroupRef.value = el as HTMLElement },\n },\n slotPaints(authored)\n ? authored\n : api.presets.map(preset => h(\n 'div',\n { ...api.getPresetProps({ value: preset.value }) as Record<string, unknown>, key: preset.value },\n preset.label,\n )),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerPreset = defineComponent({\n name: 'XhDateRangePickerPreset',\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 = useDateRangePickerContext()\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\n/** 一列时间选项连同贴在它盒子上的竖条:每列一台滚动条机器,列数随精度与小时制变时组件实例跟着增减。 */\nconst XhDateRangePickerTimeColumnHost = defineComponent({\n name: 'XhDateRangePickerTimeColumnHost',\n props: {\n index: { type: Number as PropType<DateRangePickerEndIndex>, required: true },\n unit: { type: String as PropType<DatePickerTimeUnit>, required: true },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const timeColumnRef = ref<HTMLElement | null>(null)\n // 定高的时间列自己竖滚:条子贴在本列的盒子上、紧跟在它后面(浮层 4px 档)\n const bars = useScrollbars({\n scrollable: () => timeColumnRef.value,\n anchor: 'layer',\n props: () => ({ dir: (ctx.api.value.getPositionerProps() as { dir?: Direction }).dir, size: 'sm' }),\n })\n onUpdated(() => bars.measure())\n return () => {\n const api = ctx.api.value\n const column = api.timeColumnGroups[props.index].columns.find(item => item.unit === props.unit)\n if (!column)\n return null\n return [\n h(\n 'div',\n {\n ...api.getTimeColumnProps({ index: props.index, unit: column.unit }) as Record<string, unknown>,\n ref: (el: unknown) => { timeColumnRef.value = el as HTMLElement },\n },\n column.options.map(option =>\n h(\n 'div',\n { ...api.getTimeItemProps({ index: props.index, unit: column.unit, value: option }) as Record<string, unknown>, key: option },\n api.getTimeItemText({ unit: column.unit, value: option }),\n ),\n ),\n ),\n ...bars.render(),\n ]\n }\n },\n})\n\nexport const XhDateRangePickerTimePanel = defineComponent({\n name: 'XhDateRangePickerTimePanel',\n setup() {\n const ctx = useDateRangePickerContext()\n // 起止两组时间列整组自动铺:每组一个外壳、一行小标题与时/分[/秒][/上下午]各一列;没开 showTime 时整组带 hidden\n return () => ctx.api.value.timeColumnGroups.map(group =>\n h('div', { ...ctx.api.value.getColumnGroupProps({ index: group.index }) as Record<string, unknown>, key: group.index }, [\n h('div', ctx.api.value.getColumnGroupLabelProps({ index: group.index }) as Record<string, unknown>, group.label),\n ...group.columns.map(column =>\n h(XhDateRangePickerTimeColumnHost, { index: group.index, unit: column.unit, key: column.unit }),\n ),\n ]),\n )\n },\n})\n\nexport const XhDateRangePickerConfirmTrigger = defineComponent({\n name: 'XhDateRangePickerConfirmTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.getConfirmTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeader = defineComponent({\n name: 'XhDateRangePickerHeader',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevYearTrigger = defineComponent({\n name: 'XhDateRangePickerPrevYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerPrevTrigger = defineComponent({\n name: 'XhDateRangePickerPrevTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getPrevTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextTrigger = defineComponent({\n name: 'XhDateRangePickerNextTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerNextYearTrigger = defineComponent({\n name: 'XhDateRangePickerNextYearTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('button', ctx.api.value.calendar.getNextYearTriggerProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerHeading = defineComponent({\n name: 'XhDateRangePickerHeading',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染本面板的标题\n return () => h(\n 'div',\n ctx.api.value.calendar.getHeadingProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? (ctx.api.value.calendar.panels[index.value]?.headingLabel ?? ctx.api.value.calendar.headingLabel),\n )\n },\n})\n\nexport const XhDateRangePickerHeadingYearTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingYearTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n // 有插槽用插槽,否则渲染标题里年那一截;年视图下它是整个十年跨度\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingYearTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingYear,\n )\n },\n})\n\nexport const XhDateRangePickerHeadingMonthTrigger = defineComponent({\n name: 'XhDateRangePickerHeadingMonthTrigger',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'button',\n ctx.api.value.calendar.getHeadingMonthTriggerProps({ index: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.panels[index.value]?.headingMonth,\n )\n },\n})\n\nexport const XhDateRangePickerGrid = defineComponent({\n name: 'XhDateRangePickerGrid',\n props: {\n /** 属于第几个面板;未写时跟随所在的日历。 */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n return () => h(\n 'div',\n {\n ...ctx.api.value.calendar.getGridProps({ index: index.value }) as Record<string, unknown>,\n // 键盘在首个网格上收口;其余面板只渲染,方向键仍能跨面板走(落点按值现查)\n ref: index.value === 0 ? ctx.gridRef : undefined,\n },\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerGridHead = defineComponent({\n name: 'XhDateRangePickerGridHead',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridHeadProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerGridBody = defineComponent({\n name: 'XhDateRangePickerGridBody',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getGridBodyProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 表头行与日期行共用同一个 role=row\nexport const XhDateRangePickerWeekRow = defineComponent({\n name: 'XhDateRangePickerWeekRow',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n return () => h('div', ctx.api.value.calendar.getWeekRowProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerWeekNumber = defineComponent({\n name: 'XhDateRangePickerWeekNumber',\n props: {\n /** 该行行首那一天的 ISO 串。 */\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n // 有插槽用插槽,否则显示这一行的周序号\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekNumberProps({ value: props.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.getWeekNumberText({ value: props.value }),\n )\n },\n})\n\nexport const XhDateRangePickerWeekDay = defineComponent({\n name: 'XhDateRangePickerWeekDay',\n props: {\n // 列序 0-6,兼收字符串\n value: { type: [Number, String] as PropType<number | string>, required: true },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = computed(() => Number(props.value))\n return () => h(\n 'span',\n ctx.api.value.calendar.getWeekDayProps({ value: index.value }) as Record<string, unknown>,\n slots.default?.() ?? ctx.api.value.calendar.weekDays[index.value]?.label,\n )\n },\n})\n\nexport const XhDateRangePickerCell = defineComponent({\n name: 'XhDateRangePickerCell',\n props: {\n /** ISO 日期串。 */\n value: { type: String, required: true },\n /**\n * 属于第几个面板;未写时跟随所在的日历。同一天会同时出现在两个面板中\n * (8 月末的几天也铺在 9 月的首行),是否为本月只有连同面板一起看才能判定。\n */\n index: { type: [Number, String] },\n },\n setup(props, { slots }) {\n const ctx = useDateRangePickerContext()\n const index = usePanelIndex(props)\n const cell = computed<CalendarCellProps>(() => ({ value: props.value, index: index.value }))\n provideDateRangePickerCell({ cell })\n // 不上报格子卸载,翻月后由日历机器按聚焦日重新落点\n return () => h('div', ctx.api.value.calendar.getCellProps(cell.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDateRangePickerCellTrigger = defineComponent({\n name: 'XhDateRangePickerCellTrigger',\n setup(_, { slots }) {\n const ctx = useDateRangePickerContext()\n const { cell } = useDateRangePickerCellContext()\n return () => h(\n 'div',\n ctx.api.value.calendar.getCellTriggerProps(cell.value) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDateRangePickerHiddenInput = defineComponent({\n name: 'XhDateRangePickerHiddenInput',\n props: {\n // 写在分段容器外面时用它指明属于哪一端;写在容器里面不必给,跟着容器走\n index: { type: [Number, String] as PropType<number | string> },\n },\n setup(props) {\n const ctx = useDateRangePickerContext()\n const group = useDateRangePickerSegmentGroupContext()\n return () => {\n const index = props.index === undefined ? group.index.value : resolveDateRangePickerFieldIndex(props.index)\n return h('input', dateRangePickerFieldAt(ctx.api.value, index).getHiddenInputProps() as Record<string, unknown>)\n }\n },\n})\n"],"mappings":"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"}
@@ -15,7 +15,7 @@ interface DateRangePickerContext {
15
15
  /** 显式同 Document 目标优先,默认使用真实根所属运行时的 Portal。 */
16
16
  portalTarget: ComputedRef<string | Element>;
17
17
  }
18
- type DateRangePickerHandlers = Pick<DateRangePickerSchema['props'], 'onValueChange' | 'onOpenChange' | 'onFocusedValueChange' | 'onActiveViewChange'>;
18
+ type DateRangePickerHandlers = Pick<DateRangePickerSchema['props'], 'onValueChange' | 'onOpenChange' | 'onFocusedValueChange' | 'onActiveViewChange' | 'onActiveIndexChange'>;
19
19
  /** 公开 composable 保留 ambient Scope 合同。 */
20
20
  declare function useDateRangePicker(props: DateRangePickerSchema['props'], handlers?: DateRangePickerHandlers): DateRangePickerContext;
21
21
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/use-date-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 use date range picker 相关实现。\n\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/core'\nimport type { CalendarRangePickerSchema, DateFieldSchema, DateRangePickerApi, DateRangePickerSchema, DateRangePickerServices } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { createRuntimeConfig, createScope, isElement } from '@xihan-ui/core'\nimport {\n calendarRangePickerMachine,\n connectDateRangePicker,\n dateFieldMachine,\n dateRangePickerCalendarProps,\n dateRangePickerFieldEndProps,\n dateRangePickerFieldProps,\n dateRangePickerMachine,\n} from '@xihan-ui/headless'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref, shallowRef, watch } 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 DateRangePickerContext {\n api: ComputedRef<DateRangePickerApi>\n /** 四台状态机的句柄,供部件上报 DOM 侧的事实。 */\n services: DateRangePickerServices\n controlRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 当前是否应当渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n gridRef: Ref<HTMLElement | null>\n /** 显式同 Document 目标优先,默认使用真实根所属运行时的 Portal。 */\n portalTarget: ComputedRef<string | Element>\n}\n\ntype DateRangePickerHandlers = Pick<\n DateRangePickerSchema['props'],\n 'onValueChange' | 'onOpenChange' | 'onFocusedValueChange' | 'onActiveViewChange'\n>\n\n/** 已创建的 RuntimeConfig 永久归属首次根节点的 Document;动态 Scope 后续不能改写这份事实。 */\nexport function assertDateRangePickerRootDocument(expected: Document, node: Element): void {\n if (node.ownerDocument !== expected)\n throw new Error('[xh] DateRangePicker 根节点不能在运行期切换 Document')\n}\n\n/** 显式 Portal 是同 realm 目标,不是 Scope 来源;字段存在时 null 与伪节点都属于配置错误。 */\nexport function resolveDateRangePickerPortalTarget(\n runtime: RuntimeConfig,\n resolver: (() => unknown) | undefined,\n): Element | undefined {\n if (!resolver)\n return undefined\n const target = resolver()\n if (!isElement(target))\n throw new TypeError('[xh] DateRangePicker 的 portalContainer 必须返回 Element')\n if (target.ownerDocument !== runtime.layerRegistry.ownerDocument)\n throw new Error('[xh] DateRangePicker 的 portalContainer 必须与组件根属于同一 Document')\n return target\n}\n\nfunction createDateRangePickerContext(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers,\n rootRef?: Readonly<Ref<HTMLElement | null>>,\n): DateRangePickerContext {\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 const gridRef = ref<HTMLElement | null>(null)\n\n // 四台机器共用一份 scope,part id 里带组件名区分;两组段位不产出 id,同 scope 不会撞\n const idGen = createVueIdGenerator()\n const scope = rootRef ? createScope(() => rootRef.value, idGen) : createScope(null, idGen)\n\n // 三台内嵌机器的 props 都从编排机现读,编排机须先建立\n const root = useMachine(dateRangePickerMachine, () => ({ ...props, ...handlers }), scope)\n const calendar = useMachine<CalendarRangePickerSchema>(calendarRangePickerMachine, () => dateRangePickerCalendarProps(root), scope)\n const field = useMachine<DateFieldSchema>(dateFieldMachine, () => dateRangePickerFieldProps(root), scope)\n // 终点那组段位:与起点那组同一台分段输入机器,各管区间的一端\n const fieldEnd = useMachine<DateFieldSchema>(dateFieldMachine, () => dateRangePickerFieldEndProps(root), scope)\n const services: DateRangePickerServices = { root, calendar, field, fieldEnd }\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n const config = shallowRef<RuntimeConfig | null>(null)\n let runtimeDocument: Document | null = null\n\n if (typeof document !== 'undefined') {\n const installConfig = (node?: HTMLElement): void => {\n const current = config.value\n if (current) {\n // scope 读取的是动态 rootRef;这里必须与创建配置时冻结的 Document 比,不能拿新根和自己比。\n if (node)\n assertDateRangePickerRootDocument(runtimeDocument!, node)\n return\n }\n\n const next = createRuntimeConfig({ scope, idGenerator: idGen })\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => next.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点 trigger 或段位算层内交互;\n // 浮层壳一并记上:content 之外还浮着自绘滚动条,按住它拖动不该把浮层消解掉\n branches: () => [controlRef.value, positionerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n surfaces: () => [],\n })\n\n root.refs.set('config', next)\n root.refs.set('registerLayer', registerLayer)\n runtimeDocument = next.layerRegistry.ownerDocument\n config.value = next\n }\n\n if (rootRef) {\n // 元素 ref 在 mounted hooks 之前同步提交:先绑定真实 realm、再让四台 service 启动。\n watch(rootRef, (node) => {\n if (node)\n installConfig(node)\n }, { flush: 'sync', immediate: true })\n }\n else {\n // 直接调用公开 composable 的既有合同仍代表 ambient Document。\n installConfig()\n }\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n root.refs.set('position', createPositionEngine())\n root.refs.set('getAnchorEl', () => controlRef.value)\n root.refs.set('getFloatingEl', () => positionerRef.value)\n }\n\n // 跨月后的焦点落点要等重渲,日历机器推迟一拍再从这里取网格现查\n calendar.refs.set('getGridEl', () => gridRef.value)\n // 挑到一半时,指针在浮层与输入行之外松开就地收口\n calendar.refs.set('getBoundaryEls', () => [contentRef.value, controlRef.value])\n\n const api = computed(() => connectDateRangePicker(services, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({\n config,\n isOpen: () => api.value.open,\n contentRef,\n onPresence: presence => root.refs.set('presence', presence),\n })\n // 显式配置只选择同一 Document 内的落点,不能反过来决定 Scope,也不能跨 realm 搬运。\n const portalTarget = computed<string | Element>(() => {\n const runtime = config.value\n // 首次 render 时 rootRef 还没提交;不读取显式 getter,Portal 在来源位置正常挂载。\n if (!runtime)\n return 'body'\n const explicitTarget = resolveDateRangePickerPortalTarget(runtime, xhConfig.value.portalContainer)\n if (explicitTarget)\n return explicitTarget\n const defaultTarget = runtime.portalContainer()\n if (!isElement(defaultTarget))\n throw new TypeError('[xh] DateRangePicker 的运行时 portalContainer 必须返回 Element')\n return defaultTarget\n })\n\n if (typeof document !== 'undefined') {\n root.refs.set('getContentEl', () => {\n const content = contentRef.value\n if (!content || !rootRef)\n return content\n // 首次 mounted 时正文仍可能原地挂载,随后 Teleport 搬运会丢失刚取得的焦点。\n // 以真正进入目标容器为就绪事实,焦点域沿既有挂载流程等待,不提前聚焦临时位置。\n const runtime = config.value\n if (!runtime)\n return null\n // 焦点域在框架错误通道之外(flush / rAF)调这里,所以只回答 DOM 事实、不复核配置:\n // 配置错误由渲染读 portalTarget 时抛出并交给框架上报。若这里也读那个 computed,\n // 先到的一路会把异常截走,渲染只剩缓存的旧值,错误就成了未捕获 rejection。\n // 跨 Document 或非 Element 的落点不包含正文,正文自然还没进落点。\n const explicit = xhConfig.value.portalContainer\n const host = explicit ? explicit() : runtime.portalContainer()\n return isElement(host) && host.contains(content) ? content : null\n })\n }\n\n return { visible, api, services, controlRef, positionerRef, contentRef, gridRef, portalTarget }\n}\n\n/** 公开 composable 保留 ambient Scope 合同。 */\nexport function useDateRangePicker(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers = {},\n): DateRangePickerContext {\n return createDateRangePickerContext(props, handlers)\n}\n\n/** 组合组件内部从真实根节点绑定 Scope;不经包入口导出。 */\nexport function useDateRangePickerWithRoot(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers,\n rootRef: Readonly<Ref<HTMLElement | null>>,\n): DateRangePickerContext {\n return createDateRangePickerContext(props, handlers, rootRef)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-date-range-picker.js","names":[],"sources":["../../../src/components/date-range-picker/use-date-range-picker.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 use date range picker 相关实现。\n\nimport type { Cleanup, Layer, RuntimeConfig } from '@xihan-ui/core'\nimport type { CalendarRangePickerSchema, DateFieldSchema, DateRangePickerApi, DateRangePickerSchema, DateRangePickerServices } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { createRuntimeConfig, createScope, isElement } from '@xihan-ui/core'\nimport {\n calendarRangePickerMachine,\n connectDateRangePicker,\n dateFieldMachine,\n dateRangePickerCalendarProps,\n dateRangePickerFieldEndProps,\n dateRangePickerFieldProps,\n dateRangePickerMachine,\n} from '@xihan-ui/headless'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref, shallowRef, watch } 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 DateRangePickerContext {\n api: ComputedRef<DateRangePickerApi>\n /** 四台状态机的句柄,供部件上报 DOM 侧的事实。 */\n services: DateRangePickerServices\n controlRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 当前是否应当渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n gridRef: Ref<HTMLElement | null>\n /** 显式同 Document 目标优先,默认使用真实根所属运行时的 Portal。 */\n portalTarget: ComputedRef<string | Element>\n}\n\ntype DateRangePickerHandlers = Pick<\n DateRangePickerSchema['props'],\n 'onValueChange' | 'onOpenChange' | 'onFocusedValueChange' | 'onActiveViewChange' | 'onActiveIndexChange'\n>\n\n/** 已创建的 RuntimeConfig 永久归属首次根节点的 Document;动态 Scope 后续不能改写这份事实。 */\nexport function assertDateRangePickerRootDocument(expected: Document, node: Element): void {\n if (node.ownerDocument !== expected)\n throw new Error('[xh] DateRangePicker 根节点不能在运行期切换 Document')\n}\n\n/** 显式 Portal 是同 realm 目标,不是 Scope 来源;字段存在时 null 与伪节点都属于配置错误。 */\nexport function resolveDateRangePickerPortalTarget(\n runtime: RuntimeConfig,\n resolver: (() => unknown) | undefined,\n): Element | undefined {\n if (!resolver)\n return undefined\n const target = resolver()\n if (!isElement(target))\n throw new TypeError('[xh] DateRangePicker 的 portalContainer 必须返回 Element')\n if (target.ownerDocument !== runtime.layerRegistry.ownerDocument)\n throw new Error('[xh] DateRangePicker 的 portalContainer 必须与组件根属于同一 Document')\n return target\n}\n\nfunction createDateRangePickerContext(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers,\n rootRef?: Readonly<Ref<HTMLElement | null>>,\n): DateRangePickerContext {\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 const gridRef = ref<HTMLElement | null>(null)\n\n // 四台机器共用一份 scope,part id 里带组件名区分;两组段位不产出 id,同 scope 不会撞\n const idGen = createVueIdGenerator()\n const scope = rootRef ? createScope(() => rootRef.value, idGen) : createScope(null, idGen)\n\n // 三台内嵌机器的 props 都从编排机现读,编排机须先建立\n const root = useMachine(dateRangePickerMachine, () => ({ ...props, ...handlers }), scope)\n const calendar = useMachine<CalendarRangePickerSchema>(calendarRangePickerMachine, () => dateRangePickerCalendarProps(root), scope)\n const field = useMachine<DateFieldSchema>(dateFieldMachine, () => dateRangePickerFieldProps(root), scope)\n // 终点那组段位:与起点那组同一台分段输入机器,各管区间的一端\n const fieldEnd = useMachine<DateFieldSchema>(dateFieldMachine, () => dateRangePickerFieldEndProps(root), scope)\n const services: DateRangePickerServices = { root, calendar, field, fieldEnd }\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n const config = shallowRef<RuntimeConfig | null>(null)\n let runtimeDocument: Document | null = null\n\n if (typeof document !== 'undefined') {\n const installConfig = (node?: HTMLElement): void => {\n const current = config.value\n if (current) {\n // scope 读取的是动态 rootRef;这里必须与创建配置时冻结的 Document 比,不能拿新根和自己比。\n if (node)\n assertDateRangePickerRootDocument(runtimeDocument!, node)\n return\n }\n\n const next = createRuntimeConfig({ scope, idGenerator: idGen })\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => next.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 整个输入行记为本层分支,点 trigger 或段位算层内交互;\n // 浮层壳一并记上:content 之外还浮着自绘滚动条,按住它拖动不该把浮层消解掉\n branches: () => [controlRef.value, positionerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n surfaces: () => [],\n })\n\n root.refs.set('config', next)\n root.refs.set('registerLayer', registerLayer)\n runtimeDocument = next.layerRegistry.ownerDocument\n config.value = next\n }\n\n if (rootRef) {\n // 元素 ref 在 mounted hooks 之前同步提交:先绑定真实 realm、再让四台 service 启动。\n watch(rootRef, (node) => {\n if (node)\n installConfig(node)\n }, { flush: 'sync', immediate: true })\n }\n else {\n // 直接调用公开 composable 的既有合同仍代表 ambient Document。\n installConfig()\n }\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点取整个输入行\n root.refs.set('position', createPositionEngine())\n root.refs.set('getAnchorEl', () => controlRef.value)\n root.refs.set('getFloatingEl', () => positionerRef.value)\n }\n\n // 跨月后的焦点落点要等重渲,日历机器推迟一拍再从这里取网格现查\n calendar.refs.set('getGridEl', () => gridRef.value)\n // 挑到一半时,指针在浮层与输入行之外松开就地收口\n calendar.refs.set('getBoundaryEls', () => [contentRef.value, controlRef.value])\n\n const api = computed(() => connectDateRangePicker(services, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({\n config,\n isOpen: () => api.value.open,\n contentRef,\n onPresence: presence => root.refs.set('presence', presence),\n })\n // 显式配置只选择同一 Document 内的落点,不能反过来决定 Scope,也不能跨 realm 搬运。\n const portalTarget = computed<string | Element>(() => {\n const runtime = config.value\n // 首次 render 时 rootRef 还没提交;不读取显式 getter,Portal 在来源位置正常挂载。\n if (!runtime)\n return 'body'\n const explicitTarget = resolveDateRangePickerPortalTarget(runtime, xhConfig.value.portalContainer)\n if (explicitTarget)\n return explicitTarget\n const defaultTarget = runtime.portalContainer()\n if (!isElement(defaultTarget))\n throw new TypeError('[xh] DateRangePicker 的运行时 portalContainer 必须返回 Element')\n return defaultTarget\n })\n\n if (typeof document !== 'undefined') {\n root.refs.set('getContentEl', () => {\n const content = contentRef.value\n if (!content || !rootRef)\n return content\n // 首次 mounted 时正文仍可能原地挂载,随后 Teleport 搬运会丢失刚取得的焦点。\n // 以真正进入目标容器为就绪事实,焦点域沿既有挂载流程等待,不提前聚焦临时位置。\n const runtime = config.value\n if (!runtime)\n return null\n // 焦点域在框架错误通道之外(flush / rAF)调这里,所以只回答 DOM 事实、不复核配置:\n // 配置错误由渲染读 portalTarget 时抛出并交给框架上报。若这里也读那个 computed,\n // 先到的一路会把异常截走,渲染只剩缓存的旧值,错误就成了未捕获 rejection。\n // 跨 Document 或非 Element 的落点不包含正文,正文自然还没进落点。\n const explicit = xhConfig.value.portalContainer\n const host = explicit ? explicit() : runtime.portalContainer()\n return isElement(host) && host.contains(content) ? content : null\n })\n }\n\n return { visible, api, services, controlRef, positionerRef, contentRef, gridRef, portalTarget }\n}\n\n/** 公开 composable 保留 ambient Scope 合同。 */\nexport function useDateRangePicker(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers = {},\n): DateRangePickerContext {\n return createDateRangePickerContext(props, handlers)\n}\n\n/** 组合组件内部从真实根节点绑定 Scope;不经包入口导出。 */\nexport function useDateRangePickerWithRoot(\n props: DateRangePickerSchema['props'],\n handlers: DateRangePickerHandlers,\n rootRef: Readonly<Ref<HTMLElement | null>>,\n): DateRangePickerContext {\n return createDateRangePickerContext(props, handlers, rootRef)\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { PropType } from "vue";
1
+ import { PropType, SlotsType, VNode } from "vue";
2
2
  import { ControlVariant, Size } from "@xihan-ui/core";
3
3
  import { DescriptionsColumns, DescriptionsPlacement } from "@xihan-ui/headless";
4
4
  //#region src/components/descriptions/descriptions.d.ts
@@ -20,7 +20,7 @@ declare const XhDescriptionsRoot: import("vue").DefineComponent<import("vue").Ex
20
20
  type: StringConstructor;
21
21
  default: string;
22
22
  };
23
- }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
23
+ }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
24
24
  [key: string]: any;
25
25
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
26
26
  columns: {
@@ -42,7 +42,14 @@ declare const XhDescriptionsRoot: import("vue").DefineComponent<import("vue").Ex
42
42
  };
43
43
  }>> & Readonly<{}>, {
44
44
  as: string;
45
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
45
+ }, SlotsType<{
46
+ default?: () => VNode[];
47
+ /**
48
+ * 列表之前的头部:放 XhDescriptionsHeader(内含 Title 与 Extra)。
49
+ * 它渲染为根的兄弟排在列表前:根常写成 dl,dl 的子节点只能是成对的 dt / dd。
50
+ */
51
+ header?: () => VNode[];
52
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
46
53
  declare const XhDescriptionsItem: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
47
54
  /** 每一格渲染为哪个标签,默认 div。 */
48
55
  as: {
@@ -53,7 +60,7 @@ declare const XhDescriptionsItem: import("vue").DefineComponent<import("vue").Ex
53
60
  span: {
54
61
  type: NumberConstructor;
55
62
  };
56
- }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
63
+ }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
57
64
  [key: string]: any;
58
65
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
59
66
  /** 每一格渲染为哪个标签,默认 div。 */
@@ -74,7 +81,7 @@ declare const XhDescriptionsLabel: import("vue").DefineComponent<import("vue").E
74
81
  type: StringConstructor;
75
82
  default: string;
76
83
  };
77
- }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
84
+ }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
78
85
  [key: string]: any;
79
86
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
80
87
  /** 标签渲染为哪个标签,默认 dt。 */
@@ -91,7 +98,7 @@ declare const XhDescriptionsValue: import("vue").DefineComponent<import("vue").E
91
98
  type: StringConstructor;
92
99
  default: string;
93
100
  };
94
- }>, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
101
+ }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
95
102
  [key: string]: any;
96
103
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
97
104
  /** 取值渲染为哪个标签,默认 dd。 */
@@ -102,6 +109,30 @@ declare const XhDescriptionsValue: import("vue").DefineComponent<import("vue").E
102
109
  }>> & Readonly<{}>, {
103
110
  as: string;
104
111
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
112
+ /** 列表之前的头部:左侧标题、右侧附加内容。写在 XhDescriptionsRoot 的 header 插槽中。 */
113
+ declare const XhDescriptionsHeader: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
114
+ [key: string]: any;
115
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
116
+ declare const XhDescriptionsTitle: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
117
+ /** 标题渲染为哪个标签,默认 div:组件不往文档大纲里插标题,作者按页面层级改写成 h2 / h3。 */
118
+ as: {
119
+ type: StringConstructor;
120
+ default: string;
121
+ };
122
+ }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
123
+ [key: string]: any;
124
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
125
+ /** 标题渲染为哪个标签,默认 div:组件不往文档大纲里插标题,作者按页面层级改写成 h2 / h3。 */
126
+ as: {
127
+ type: StringConstructor;
128
+ default: string;
129
+ };
130
+ }>> & Readonly<{}>, {
131
+ as: string;
132
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
133
+ declare const XhDescriptionsExtra: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
134
+ [key: string]: any;
135
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
105
136
  //#endregion
106
- export { XhDescriptionsItem, XhDescriptionsLabel, XhDescriptionsRoot, XhDescriptionsValue };
137
+ export { XhDescriptionsExtra, XhDescriptionsHeader, XhDescriptionsItem, XhDescriptionsLabel, XhDescriptionsRoot, XhDescriptionsTitle, XhDescriptionsValue };
107
138
  //# sourceMappingURL=descriptions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"descriptions.d.ts","names":[],"sources":["../../../src/components/descriptions/descriptions.ts"],"mappings":";;;;cAgBa,kCAAkB,8BAAA;;IAIA,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACP,MAAA,SAAS;;;IACd,MAAA,SAAS;;;;;;;;;;;IAHN,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACP,MAAA,SAAS;;;IACd,MAAA,SAAS;;;;;;;;;qCAgBnC;cAGW,kCAAkB,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;qCAgB7B;cAEW,mCAAmB,8BAAA;;;;;;;;;;;;;;;;qCAU9B;cAEW,mCAAmB,8BAAA;;;;;;;;;;;;;;;;qCAU9B"}
1
+ {"version":3,"file":"descriptions.d.ts","names":[],"sources":["../../../src/components/descriptions/descriptions.ts"],"mappings":";;;;cAgBa,kCAAkB,8BAAA;;IAIA,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACP,MAAA,SAAS;;;IACd,MAAA,SAAS;;;;;;;;;;;IAHN,MAAA,SAAS;;;IACT,MAAA,SAAS;;;IACP,MAAA,SAAS;;;IACd,MAAA,SAAS;;;;;;;;;;EAKvB,gBAAM;;;;;EAKP,eAAM;kCAoBjB;cAGW,kCAAkB,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;qCAgB7B;cAEW,mCAAmB,8BAAA;;;;;;;;;;;;;;;;qCAU9B;cAEW,mCAAmB,8BAAA;;;;;;;;;;;;;;;;qCAU9B;;cAGW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAM/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,8BAAA;;;;;;;;;;;;;;;;qCAU9B;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -1,7 +1,7 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
2
  import { withXhConfig } from "../../config/config.js";
3
3
  import { provideDescriptions, useDescriptionsContext } from "./context.js";
4
- import { computed, defineComponent, h } from "vue";
4
+ import { Fragment, computed, defineComponent, h, mergeProps } from "vue";
5
5
  import { connectDescriptions } from "@xihan-ui/headless";
6
6
  //#region src/components/descriptions/descriptions.ts
7
7
  const XhDescriptionsRoot = defineComponent({
@@ -17,7 +17,9 @@ const XhDescriptionsRoot = defineComponent({
17
17
  default: "dl"
18
18
  }
19
19
  },
20
- setup(props, { slots }) {
20
+ slots: Object,
21
+ inheritAttrs: false,
22
+ setup(props, { slots, attrs }) {
21
23
  const configured = withXhConfig("descriptions", props);
22
24
  const api = computed(() => connectDescriptions({
23
25
  columns: configured.columns,
@@ -26,7 +28,11 @@ const XhDescriptionsRoot = defineComponent({
26
28
  size: configured.size
27
29
  }, vueNormalize));
28
30
  provideDescriptions({ api });
29
- return () => h(props.as, api.value.getRootProps(), slots.default?.());
31
+ return () => {
32
+ const list = h(props.as, mergeProps(api.value.getRootProps(), attrs), slots.default?.());
33
+ const header = slots.header?.();
34
+ return header ? h(Fragment, [...header, list]) : list;
35
+ };
30
36
  }
31
37
  });
32
38
  const XhDescriptionsItem = defineComponent({
@@ -71,7 +77,35 @@ as: {
71
77
  return () => h(props.as, ctx.api.value.getValueProps(), slots.default?.());
72
78
  }
73
79
  });
80
+ /** 列表之前的头部:左侧标题、右侧附加内容。写在 XhDescriptionsRoot 的 header 插槽中。 */
81
+ const XhDescriptionsHeader = defineComponent({
82
+ name: "XhDescriptionsHeader",
83
+ setup(_, { slots }) {
84
+ const ctx = useDescriptionsContext();
85
+ return () => h("div", ctx.api.value.getHeaderProps(), slots.default?.());
86
+ }
87
+ });
88
+ const XhDescriptionsTitle = defineComponent({
89
+ name: "XhDescriptionsTitle",
90
+ props: {
91
+ /** 标题渲染为哪个标签,默认 div:组件不往文档大纲里插标题,作者按页面层级改写成 h2 / h3。 */
92
+ as: {
93
+ type: String,
94
+ default: "div"
95
+ } },
96
+ setup(props, { slots }) {
97
+ const ctx = useDescriptionsContext();
98
+ return () => h(props.as, ctx.api.value.getTitleProps(), slots.default?.());
99
+ }
100
+ });
101
+ const XhDescriptionsExtra = defineComponent({
102
+ name: "XhDescriptionsExtra",
103
+ setup(_, { slots }) {
104
+ const ctx = useDescriptionsContext();
105
+ return () => h("div", ctx.api.value.getExtraProps(), slots.default?.());
106
+ }
107
+ });
74
108
  //#endregion
75
- export { XhDescriptionsItem, XhDescriptionsLabel, XhDescriptionsRoot, XhDescriptionsValue };
109
+ export { XhDescriptionsExtra, XhDescriptionsHeader, XhDescriptionsItem, XhDescriptionsLabel, XhDescriptionsRoot, XhDescriptionsTitle, XhDescriptionsValue };
76
110
 
77
111
  //# sourceMappingURL=descriptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"descriptions.js","names":[],"sources":["../../../src/components/descriptions/descriptions.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 descriptions 相关实现。\n\nimport type { ControlVariant, Size } from '@xihan-ui/core'\nimport type { DescriptionsColumns, DescriptionsPlacement } from '@xihan-ui/headless'\nimport type { PropType } from 'vue'\nimport { connectDescriptions } from '@xihan-ui/headless'\nimport { computed, defineComponent, h } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideDescriptions, useDescriptionsContext } from './context'\n\nexport const XhDescriptionsRoot = defineComponent({\n name: 'XhDescriptionsRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n columns: { type: Number as PropType<DescriptionsColumns> },\n variant: { type: String as PropType<ControlVariant> },\n placement: { type: String as PropType<DescriptionsPlacement> },\n size: { type: String as PropType<Size> },\n /** 根渲染为哪个标签,默认 dl。 */\n as: { type: String, default: 'dl' },\n },\n setup(props, { slots }) {\n // withXhConfig 只能在 setup 期调,连接层在渲染期读这份代理\n const configured = withXhConfig('descriptions', props)\n const api = computed(() => connectDescriptions({\n columns: configured.columns,\n variant: configured.variant,\n placement: configured.placement,\n size: configured.size,\n }, vueNormalize))\n provideDescriptions({ api })\n return () => h(props.as, api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n// 一组「标签 + 取值」包一层,让它成为网格里的一格;dl 允许 div 包裹成对的 dt/dd\nexport const XhDescriptionsItem = defineComponent({\n name: 'XhDescriptionsItem',\n props: {\n /** 每一格渲染为哪个标签,默认 div。 */\n as: { type: String, default: 'div' },\n /** 该格横跨几列,未写即占一列;上限是根上的 columns。 */\n span: { type: Number },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(\n props.as,\n ctx.api.value.getItemProps({ span: props.span }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDescriptionsLabel = defineComponent({\n name: 'XhDescriptionsLabel',\n props: {\n /** 标签渲染为哪个标签,默认 dt。 */\n as: { type: String, default: 'dt' },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(props.as, ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDescriptionsValue = defineComponent({\n name: 'XhDescriptionsValue',\n props: {\n /** 取值渲染为哪个标签,默认 dd。 */\n as: { type: String, default: 'dd' },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(props.as, ctx.api.value.getValueProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;AAgBA,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CAEN,OAAO;EACL,SAAS,EAAE,MAAM,OAAwC;EACzD,SAAS,EAAE,MAAM,OAAmC;EACpD,WAAW,EAAE,MAAM,OAA0C;EAC7D,MAAM,EAAE,MAAM,OAAyB;;EAEvC,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAK;CACpC;CACA,MAAM,OAAO,EAAE,SAAS;EAEtB,MAAM,aAAa,aAAa,gBAAgB,KAAK;EACrD,MAAM,MAAM,eAAe,oBAAoB;GAC7C,SAAS,WAAW;GACpB,SAAS,WAAW;GACpB,WAAW,WAAW;GACtB,MAAM,WAAW;EACnB,GAAG,YAAY,CAAC;EAChB,oBAAoB,EAAE,IAAI,CAAC;EAC3B,aAAa,EAAE,MAAM,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CACjG;AACF,CAAC;AAGD,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO;;EAEL,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAM;;EAEnC,MAAM,EAAE,MAAM,OAAO;CACvB;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EACX,MAAM,IACN,IAAI,IAAI,MAAM,aAAa,EAAE,MAAM,MAAM,KAAK,CAAC,GAC/C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;;AAEL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAK,EACpC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;;AAEL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAK,EACpC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC"}
1
+ {"version":3,"file":"descriptions.js","names":[],"sources":["../../../src/components/descriptions/descriptions.ts"],"sourcesContent":["/*\n * Copyright (c) 2021-Present XiHanFun and contributors.\n * Licensed under the MIT License. See LICENSE in the project root for license information.\n */\n\n// 提供 descriptions 相关实现。\n\nimport type { ControlVariant, Size } from '@xihan-ui/core'\nimport type { DescriptionsColumns, DescriptionsPlacement } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport { connectDescriptions } from '@xihan-ui/headless'\nimport { computed, defineComponent, Fragment, h, mergeProps } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { provideDescriptions, useDescriptionsContext } from './context'\n\nexport const XhDescriptionsRoot = defineComponent({\n name: 'XhDescriptionsRoot',\n // 有 connect 兜底的 prop:普通类型省略 default,Boolean 显式保留 undefined\n props: {\n columns: { type: Number as PropType<DescriptionsColumns> },\n variant: { type: String as PropType<ControlVariant> },\n placement: { type: String as PropType<DescriptionsPlacement> },\n size: { type: String as PropType<Size> },\n /** 根渲染为哪个标签,默认 dl。 */\n as: { type: String, default: 'dl' },\n },\n slots: Object as SlotsType<{\n default?: () => VNode[]\n /**\n * 列表之前的头部:放 XhDescriptionsHeader(内含 Title 与 Extra)。\n * 它渲染为根的兄弟排在列表前:根常写成 dl,dl 的子节点只能是成对的 dt / dd。\n */\n header?: () => VNode[]\n }>,\n // 写了头部时根是片段,接不住自动透传:作者写在 XhDescriptionsRoot 上的 class / aria-* 自己合到列表那个节点上\n inheritAttrs: false,\n setup(props, { slots, attrs }) {\n // withXhConfig 只能在 setup 期调,连接层在渲染期读这份代理\n const configured = withXhConfig('descriptions', props)\n const api = computed(() => connectDescriptions({\n columns: configured.columns,\n variant: configured.variant,\n placement: configured.placement,\n size: configured.size,\n }, vueNormalize))\n provideDescriptions({ api })\n return () => {\n const list = h(props.as, mergeProps(api.value.getRootProps() as Record<string, unknown>, attrs), slots.default?.())\n const header = slots.header?.()\n return header ? h(Fragment, [...header, list]) : list\n }\n },\n})\n\n// 一组「标签 + 取值」包一层,让它成为网格里的一格;dl 允许 div 包裹成对的 dt/dd\nexport const XhDescriptionsItem = defineComponent({\n name: 'XhDescriptionsItem',\n props: {\n /** 每一格渲染为哪个标签,默认 div。 */\n as: { type: String, default: 'div' },\n /** 该格横跨几列,未写即占一列;上限是根上的 columns。 */\n span: { type: Number },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(\n props.as,\n ctx.api.value.getItemProps({ span: props.span }) as Record<string, unknown>,\n slots.default?.(),\n )\n },\n})\n\nexport const XhDescriptionsLabel = defineComponent({\n name: 'XhDescriptionsLabel',\n props: {\n /** 标签渲染为哪个标签,默认 dt。 */\n as: { type: String, default: 'dt' },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(props.as, ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDescriptionsValue = defineComponent({\n name: 'XhDescriptionsValue',\n props: {\n /** 取值渲染为哪个标签,默认 dd。 */\n as: { type: String, default: 'dd' },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(props.as, ctx.api.value.getValueProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 列表之前的头部:左侧标题、右侧附加内容。写在 XhDescriptionsRoot 的 header 插槽中。 */\nexport const XhDescriptionsHeader = defineComponent({\n name: 'XhDescriptionsHeader',\n setup(_, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h('div', ctx.api.value.getHeaderProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDescriptionsTitle = defineComponent({\n name: 'XhDescriptionsTitle',\n props: {\n /** 标题渲染为哪个标签,默认 div:组件不往文档大纲里插标题,作者按页面层级改写成 h2 / h3。 */\n as: { type: String, default: 'div' },\n },\n setup(props, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h(props.as, ctx.api.value.getTitleProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhDescriptionsExtra = defineComponent({\n name: 'XhDescriptionsExtra',\n setup(_, { slots }) {\n const ctx = useDescriptionsContext()\n return () => h('div', ctx.api.value.getExtraProps() as Record<string, unknown>, slots.default?.())\n },\n})\n"],"mappings":";;;;;;AAgBA,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CAEN,OAAO;EACL,SAAS,EAAE,MAAM,OAAwC;EACzD,SAAS,EAAE,MAAM,OAAmC;EACpD,WAAW,EAAE,MAAM,OAA0C;EAC7D,MAAM,EAAE,MAAM,OAAyB;;EAEvC,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAK;CACpC;CACA,OAAO;CASP,cAAc;CACd,MAAM,OAAO,EAAE,OAAO,SAAS;EAE7B,MAAM,aAAa,aAAa,gBAAgB,KAAK;EACrD,MAAM,MAAM,eAAe,oBAAoB;GAC7C,SAAS,WAAW;GACpB,SAAS,WAAW;GACpB,WAAW,WAAW;GACtB,MAAM,WAAW;EACnB,GAAG,YAAY,CAAC;EAChB,oBAAoB,EAAE,IAAI,CAAC;EAC3B,aAAa;GACX,MAAM,OAAO,EAAE,MAAM,IAAI,WAAW,IAAI,MAAM,aAAa,GAA8B,KAAK,GAAG,MAAM,UAAU,CAAC;GAClH,MAAM,SAAS,MAAM,SAAS;GAC9B,OAAO,SAAS,EAAE,UAAU,CAAC,GAAG,QAAQ,IAAI,CAAC,IAAI;EACnD;CACF;AACF,CAAC;AAGD,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,OAAO;;EAEL,IAAI;GAAE,MAAM;GAAQ,SAAS;EAAM;;EAEnC,MAAM,EAAE,MAAM,OAAO;CACvB;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EACX,MAAM,IACN,IAAI,IAAI,MAAM,aAAa,EAAE,MAAM,MAAM,KAAK,CAAC,GAC/C,MAAM,UAAU,CAClB;CACF;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;;AAEL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAK,EACpC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;;AAEL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAK,EACpC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;;AAGD,MAAa,uBAAuB,gBAAgB;CAClD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,eAAe,GAA8B,MAAM,UAAU,CAAC;CACpG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,OAAO;;AAEL,IAAI;EAAE,MAAM;EAAQ,SAAS;CAAM,EACrC;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,MAAM,IAAI,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACtG;AACF,CAAC;AAED,MAAa,sBAAsB,gBAAgB;CACjD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,uBAAuB;EACnC,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACnG;AACF,CAAC"}
@@ -41,6 +41,11 @@ declare const XhDialogRoot: import("vue").DefineComponent<import("vue").ExtractP
41
41
  variant: {
42
42
  type: PropType<OverlayBackdropVariant>;
43
43
  };
44
+ /** 可拖动:按住标题栏或拖动把手挪走面板,方向键在把手上挪一步;面板始终夹在视口内。 */
45
+ draggable: {
46
+ type: BooleanConstructor;
47
+ default: undefined;
48
+ };
44
49
  translations: {
45
50
  type: PropType<DialogProps["translations"]>;
46
51
  };
@@ -85,6 +90,11 @@ declare const XhDialogRoot: import("vue").DefineComponent<import("vue").ExtractP
85
90
  variant: {
86
91
  type: PropType<OverlayBackdropVariant>;
87
92
  };
93
+ /** 可拖动:按住标题栏或拖动把手挪走面板,方向键在把手上挪一步;面板始终夹在视口内。 */
94
+ draggable: {
95
+ type: BooleanConstructor;
96
+ default: undefined;
97
+ };
88
98
  translations: {
89
99
  type: PropType<DialogProps["translations"]>;
90
100
  };
@@ -95,11 +105,12 @@ declare const XhDialogRoot: import("vue").DefineComponent<import("vue").ExtractP
95
105
  }>, {
96
106
  open: boolean;
97
107
  defaultOpen: boolean;
98
- modal: boolean;
99
108
  closeOnEscape: boolean;
100
109
  closeOnInteractOutside: boolean;
101
110
  restoreFocus: boolean;
111
+ modal: boolean;
102
112
  role: "dialog" | "alertdialog";
113
+ draggable: boolean;
103
114
  }, SlotsType<{
104
115
  default?: (props: DialogRootSlotProps) => VNode[];
105
116
  }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -130,6 +141,10 @@ declare const XhDialogContent: import("vue").DefineComponent<import("vue").Extra
130
141
  declare const XhDialogHeader: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
131
142
  [key: string]: any;
132
143
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
144
+ /** 拖动把手:键盘挪动面板的入口;放在 XhDialogHeader 里时铺满标题栏。 */
145
+ declare const XhDialogDragTrigger: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
146
+ [key: string]: any;
147
+ }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
133
148
  /** 语气徽记:未提供内容时由皮肤按节点上的 data-tone 绘制兜底字形,放入节点即整个替换。 */
134
149
  declare const XhDialogIndicator: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
135
150
  [key: string]: any;
@@ -150,5 +165,5 @@ declare const XhDialogCloseTrigger: import("vue").DefineComponent<{}, () => VNod
150
165
  [key: string]: any;
151
166
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
152
167
  //#endregion
153
- export { DialogRootSlotProps, XhDialogBody, XhDialogCloseTrigger, XhDialogContent, XhDialogDescription, XhDialogFooter, XhDialogHeader, XhDialogIndicator, XhDialogRoot, XhDialogTitle, XhDialogTrigger };
168
+ export { DialogRootSlotProps, XhDialogBody, XhDialogCloseTrigger, XhDialogContent, XhDialogDescription, XhDialogDragTrigger, XhDialogFooter, XhDialogHeader, XhDialogIndicator, XhDialogRoot, XhDialogTitle, XhDialogTrigger };
154
169
  //# sourceMappingURL=dialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog.d.ts","names":[],"sources":["../../../src/components/dialog/dialog.ts"],"mappings":";;;;;KAmBK,cAAc;;KAGP,sBAAsB,KAAK;cAE1B,4BAAY,8BAAA;;;;;;;;;;;IAMG,MAAA;;;;;;;;;;;;;;;;;;;IAKA,MAAA,SAAS;;;IACN,MAAA,SAAS;;;IACJ,MAAA,SAAS;;;;;EAIf,gBAAA,UAAA,UAAU;EACb,gBAAA,OAAA,UAAU;;;;;;;;;;;;;IAZT,MAAA;;;;;;;;;;;;;;;;;;;IAKA,MAAA,SAAS;;;IACN,MAAA,SAAS;;;IACJ,MAAA,SAAS;;;;;;;;;;;;;;;EAS/B,WAAC,OAAO,wBAAwB;kCAW5C;cAEW,+BAAe,8BAAA;;;;;;;;;;qCAsB1B;cAEW,+BAAe,8BAAA;;;IAIK,MAAA,SAAS;;;;;;;IAAT,MAAA,SAAS;;MA4BxC,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,0BAAA,oBAAA,4BAAA;;8BAMxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4BAAY,0BAAA,oBAAA,4BAAA;;8BAMvB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAM/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"dialog.d.ts","names":[],"sources":["../../../src/components/dialog/dialog.ts"],"mappings":";;;;;KAmBK,cAAc;;KAGP,sBAAsB,KAAK;cAE1B,4BAAY,8BAAA;;;;;;;;;;;IAMG,MAAA;;;;;;;;;;;;;;;;;;;IAKA,MAAA,SAAS;;;IACN,MAAA,SAAS;;;;;;;;IAGJ,MAAA,SAAS;;;;;EAIf,gBAAA,UAAA,UAAU;EACb,gBAAA,OAAA,UAAU;;;;;;;;;;;;;IAdT,MAAA;;;;;;;;;;;;;;;;;;;IAKA,MAAA,SAAS;;;IACN,MAAA,SAAS;;;;;;;;IAGJ,MAAA,SAAS;;;;;;;;;;;;;;;;EAS/B,WAAC,OAAO,wBAAwB;kCAW5C;cAEW,+BAAe,8BAAA;;;;;;;;;;qCAsB1B;cAEW,+BAAe,8BAAA;;;IAIK,MAAA,SAAS;;;;;;;IAAT,MAAA,SAAS;;MA4BxC,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;cAGW,iCAAiB,0BAAA,oBAAA,4BAAA;;8BAM5B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,6BAAa,0BAAA,oBAAA,4BAAA;;8BAMxB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,mCAAmB,0BAAA,oBAAA,4BAAA;;8BAM9B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4BAAY,0BAAA,oBAAA,4BAAA;;8BAMvB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,8BAAc,0BAAA,oBAAA,4BAAA;;8BAMzB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,oCAAoB,0BAAA,oBAAA,4BAAA;;8BAM/B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -1,7 +1,7 @@
1
1
  import { withXhConfig } from "../../config/config.js";
2
- import { XhPortal } from "../../runtime/portal.js";
3
2
  import { mergePartProps } from "../../runtime/merge-props.js";
4
3
  import { mergeIntoChild } from "../../runtime/as-child.js";
4
+ import { XhPortal } from "../../runtime/portal.js";
5
5
  import { provideDialog, useDialogContext } from "./context.js";
6
6
  import { useDialog } from "./use-dialog.js";
7
7
  import { defineComponent, h, mergeProps } from "vue";
@@ -37,6 +37,11 @@ const XhDialogRoot = /* @__PURE__ */ defineComponent({
37
37
  initialFocus: { type: String },
38
38
  size: { type: String },
39
39
  variant: { type: String },
40
+ /** 可拖动:按住标题栏或拖动把手挪走面板,方向键在把手上挪一步;面板始终夹在视口内。 */
41
+ draggable: {
42
+ type: Boolean,
43
+ default: void 0
44
+ },
40
45
  translations: { type: Object }
41
46
  },
42
47
  emits: {
@@ -111,6 +116,14 @@ const XhDialogHeader = /* @__PURE__ */ defineComponent({
111
116
  return () => h("header", ctx.api.value.getHeaderProps(), slots.default?.());
112
117
  }
113
118
  });
119
+ /** 拖动把手:键盘挪动面板的入口;放在 XhDialogHeader 里时铺满标题栏。 */
120
+ const XhDialogDragTrigger = /* @__PURE__ */ defineComponent({
121
+ name: "XhDialogDragTrigger",
122
+ setup(_, { slots }) {
123
+ const ctx = useDialogContext();
124
+ return () => h("button", ctx.api.value.getDragTriggerProps(), slots.default?.());
125
+ }
126
+ });
114
127
  /** 语气徽记:未提供内容时由皮肤按节点上的 data-tone 绘制兜底字形,放入节点即整个替换。 */
115
128
  const XhDialogIndicator = /* @__PURE__ */ defineComponent({
116
129
  name: "XhDialogIndicator",
@@ -155,6 +168,6 @@ const XhDialogCloseTrigger = /* @__PURE__ */ defineComponent({
155
168
  }
156
169
  });
157
170
  //#endregion
158
- export { XhDialogBody, XhDialogCloseTrigger, XhDialogContent, XhDialogDescription, XhDialogFooter, XhDialogHeader, XhDialogIndicator, XhDialogRoot, XhDialogTitle, XhDialogTrigger };
171
+ export { XhDialogBody, XhDialogCloseTrigger, XhDialogContent, XhDialogDescription, XhDialogDragTrigger, XhDialogFooter, XhDialogHeader, XhDialogIndicator, XhDialogRoot, XhDialogTitle, XhDialogTrigger };
159
172
 
160
173
  //# sourceMappingURL=dialog.js.map