@xihan-ui/vue 2.0.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/CHANGELOG.md +1593 -0
  2. package/README.md +1 -1
  3. package/dist/components/accordion/accordion.d.ts +6 -0
  4. package/dist/components/accordion/accordion.d.ts.map +1 -1
  5. package/dist/components/accordion/accordion.js +4 -2
  6. package/dist/components/accordion/accordion.js.map +1 -1
  7. package/dist/components/alert/alert.d.ts +9 -0
  8. package/dist/components/alert/alert.d.ts.map +1 -1
  9. package/dist/components/alert/alert.js +4 -0
  10. package/dist/components/alert/alert.js.map +1 -1
  11. package/dist/components/anchor/anchor.d.ts +2 -2
  12. package/dist/components/anchor/anchor.d.ts.map +1 -1
  13. package/dist/components/anchor/anchor.js +2 -2
  14. package/dist/components/anchor/anchor.js.map +1 -1
  15. package/dist/components/anchor/use-anchor.d.ts +2 -2
  16. package/dist/components/anchor/use-anchor.js +3 -3
  17. package/dist/components/anchor/use-anchor.js.map +1 -1
  18. package/dist/components/approval/approval.d.ts +8 -1
  19. package/dist/components/approval/approval.d.ts.map +1 -1
  20. package/dist/components/approval/approval.js +10 -1
  21. package/dist/components/approval/approval.js.map +1 -1
  22. package/dist/components/avatar/avatar.d.ts +8 -0
  23. package/dist/components/avatar/avatar.d.ts.map +1 -1
  24. package/dist/components/avatar/avatar.js +3 -1
  25. package/dist/components/avatar/avatar.js.map +1 -1
  26. package/dist/components/avatar/use-avatar.d.ts.map +1 -1
  27. package/dist/components/avatar/use-avatar.js +3 -1
  28. package/dist/components/avatar/use-avatar.js.map +1 -1
  29. package/dist/components/avatar-group/avatar-group.d.ts.map +1 -1
  30. package/dist/components/avatar-group/avatar-group.js +2 -1
  31. package/dist/components/avatar-group/avatar-group.js.map +1 -1
  32. package/dist/components/back-top/use-back-top.d.ts.map +1 -1
  33. package/dist/components/back-top/use-back-top.js +3 -1
  34. package/dist/components/back-top/use-back-top.js.map +1 -1
  35. package/dist/components/badge/badge.d.ts +22 -0
  36. package/dist/components/badge/badge.d.ts.map +1 -1
  37. package/dist/components/badge/badge.js +11 -2
  38. package/dist/components/badge/badge.js.map +1 -1
  39. package/dist/components/breadcrumb/breadcrumb.d.ts +11 -1
  40. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  41. package/dist/components/breadcrumb/breadcrumb.js +28 -9
  42. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  43. package/dist/components/calendar-picker/calendar-picker.d.ts +16 -0
  44. package/dist/components/calendar-picker/calendar-picker.d.ts.map +1 -1
  45. package/dist/components/calendar-picker/calendar-picker.js +4 -0
  46. package/dist/components/calendar-picker/calendar-picker.js.map +1 -1
  47. package/dist/components/calendar-range-picker/calendar-range-picker.d.ts +16 -0
  48. package/dist/components/calendar-range-picker/calendar-range-picker.d.ts.map +1 -1
  49. package/dist/components/calendar-range-picker/calendar-range-picker.js +4 -0
  50. package/dist/components/calendar-range-picker/calendar-range-picker.js.map +1 -1
  51. package/dist/components/card/card.d.ts +37 -2
  52. package/dist/components/card/card.d.ts.map +1 -1
  53. package/dist/components/card/card.js +42 -3
  54. package/dist/components/card/card.js.map +1 -1
  55. package/dist/components/carousel/carousel.d.ts +7 -1
  56. package/dist/components/carousel/carousel.d.ts.map +1 -1
  57. package/dist/components/carousel/carousel.js +1 -0
  58. package/dist/components/carousel/carousel.js.map +1 -1
  59. package/dist/components/carousel/use-carousel.d.ts.map +1 -1
  60. package/dist/components/carousel/use-carousel.js +3 -1
  61. package/dist/components/carousel/use-carousel.js.map +1 -1
  62. package/dist/components/cartesian-chart/cartesian-chart.d.ts +262 -0
  63. package/dist/components/cartesian-chart/cartesian-chart.d.ts.map +1 -0
  64. package/dist/components/cartesian-chart/cartesian-chart.js +293 -0
  65. package/dist/components/cartesian-chart/cartesian-chart.js.map +1 -0
  66. package/dist/components/cartesian-chart/context.js +15 -0
  67. package/dist/components/cartesian-chart/context.js.map +1 -0
  68. package/dist/components/cartesian-chart/use-cartesian-chart.d.ts +21 -0
  69. package/dist/components/cartesian-chart/use-cartesian-chart.d.ts.map +1 -0
  70. package/dist/components/cartesian-chart/use-cartesian-chart.js +29 -0
  71. package/dist/components/cartesian-chart/use-cartesian-chart.js.map +1 -0
  72. package/dist/components/cascader/cascader.d.ts +72 -3
  73. package/dist/components/cascader/cascader.d.ts.map +1 -1
  74. package/dist/components/cascader/cascader.js +125 -7
  75. package/dist/components/cascader/cascader.js.map +1 -1
  76. package/dist/components/cascader/context.js +10 -1
  77. package/dist/components/cascader/context.js.map +1 -1
  78. package/dist/components/cascader/use-cascader.d.ts +2 -1
  79. package/dist/components/cascader/use-cascader.d.ts.map +1 -1
  80. package/dist/components/cascader/use-cascader.js +4 -1
  81. package/dist/components/cascader/use-cascader.js.map +1 -1
  82. package/dist/components/checkbox/checkbox.js +1 -1
  83. package/dist/components/checkbox-group/checkbox-group.d.ts +24 -3
  84. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  85. package/dist/components/checkbox-group/checkbox-group.js +20 -3
  86. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  87. package/dist/components/citation/citation.d.ts +211 -0
  88. package/dist/components/citation/citation.d.ts.map +1 -0
  89. package/dist/components/citation/citation.js +222 -0
  90. package/dist/components/citation/citation.js.map +1 -0
  91. package/dist/components/citation/context.d.ts +11 -0
  92. package/dist/components/citation/context.d.ts.map +1 -0
  93. package/dist/components/citation/context.js +24 -0
  94. package/dist/components/citation/context.js.map +1 -0
  95. package/dist/components/citation/use-citation.d.ts +19 -0
  96. package/dist/components/citation/use-citation.d.ts.map +1 -0
  97. package/dist/components/citation/use-citation.js +51 -0
  98. package/dist/components/citation/use-citation.js.map +1 -0
  99. package/dist/components/code-view/code-view.d.ts +21 -0
  100. package/dist/components/code-view/code-view.d.ts.map +1 -1
  101. package/dist/components/code-view/code-view.js +23 -4
  102. package/dist/components/code-view/code-view.js.map +1 -1
  103. package/dist/components/collapsible/collapsible.d.ts +6 -0
  104. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  105. package/dist/components/collapsible/collapsible.js +4 -2
  106. package/dist/components/collapsible/collapsible.js.map +1 -1
  107. package/dist/components/color-field/color-field.d.ts +2 -2
  108. package/dist/components/color-field/color-field.js +1 -1
  109. package/dist/components/color-field/color-field.js.map +1 -1
  110. package/dist/components/color-picker/color-picker.d.ts +41 -3
  111. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  112. package/dist/components/color-picker/color-picker.js +33 -4
  113. package/dist/components/color-picker/color-picker.js.map +1 -1
  114. package/dist/components/color-picker/use-color-picker.d.ts +3 -1
  115. package/dist/components/color-picker/use-color-picker.d.ts.map +1 -1
  116. package/dist/components/color-picker/use-color-picker.js +8 -2
  117. package/dist/components/color-picker/use-color-picker.js.map +1 -1
  118. package/dist/components/color-slider/color-slider.d.ts +2 -2
  119. package/dist/components/color-slider/color-slider.js +1 -1
  120. package/dist/components/color-slider/color-slider.js.map +1 -1
  121. package/dist/components/combobox/combobox.d.ts +66 -4
  122. package/dist/components/combobox/combobox.d.ts.map +1 -1
  123. package/dist/components/combobox/combobox.js +107 -6
  124. package/dist/components/combobox/combobox.js.map +1 -1
  125. package/dist/components/combobox/context.js +10 -1
  126. package/dist/components/combobox/context.js.map +1 -1
  127. package/dist/components/command/command.d.ts +23 -2
  128. package/dist/components/command/command.d.ts.map +1 -1
  129. package/dist/components/command/command.js +48 -6
  130. package/dist/components/command/command.js.map +1 -1
  131. package/dist/components/command/use-command.d.ts.map +1 -1
  132. package/dist/components/command/use-command.js +9 -30
  133. package/dist/components/command/use-command.js.map +1 -1
  134. package/dist/components/context-menu/context-menu.d.ts +63 -18
  135. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  136. package/dist/components/context-menu/context-menu.js +141 -57
  137. package/dist/components/context-menu/context-menu.js.map +1 -1
  138. package/dist/components/context-menu/context.js +1 -1
  139. package/dist/components/context-menu/context.js.map +1 -1
  140. package/dist/components/context-menu/use-context-menu.d.ts +1 -1
  141. package/dist/components/context-menu/use-context-menu.d.ts.map +1 -1
  142. package/dist/components/context-menu/use-context-menu.js +4 -2
  143. package/dist/components/context-menu/use-context-menu.js.map +1 -1
  144. package/dist/components/date-field/date-field.d.ts +9 -1
  145. package/dist/components/date-field/date-field.d.ts.map +1 -1
  146. package/dist/components/date-field/date-field.js +2 -0
  147. package/dist/components/date-field/date-field.js.map +1 -1
  148. package/dist/components/date-picker/date-picker.d.ts +41 -1
  149. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  150. package/dist/components/date-picker/date-picker.js +16 -3
  151. package/dist/components/date-picker/date-picker.js.map +1 -1
  152. package/dist/components/date-range-picker/date-range-picker.d.ts +77 -2
  153. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  154. package/dist/components/date-range-picker/date-range-picker.js +102 -5
  155. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  156. package/dist/components/date-range-picker/use-date-range-picker.d.ts +1 -1
  157. package/dist/components/date-range-picker/use-date-range-picker.js.map +1 -1
  158. package/dist/components/descriptions/descriptions.d.ts +38 -7
  159. package/dist/components/descriptions/descriptions.d.ts.map +1 -1
  160. package/dist/components/descriptions/descriptions.js +38 -4
  161. package/dist/components/descriptions/descriptions.js.map +1 -1
  162. package/dist/components/dialog/dialog.d.ts +16 -1
  163. package/dist/components/dialog/dialog.d.ts.map +1 -1
  164. package/dist/components/dialog/dialog.js +15 -2
  165. package/dist/components/dialog/dialog.js.map +1 -1
  166. package/dist/components/dialog/use-dialog.d.ts.map +1 -1
  167. package/dist/components/dialog/use-dialog.js +9 -27
  168. package/dist/components/dialog/use-dialog.js.map +1 -1
  169. package/dist/components/diff-view/diff-view.d.ts +22 -2
  170. package/dist/components/diff-view/diff-view.d.ts.map +1 -1
  171. package/dist/components/diff-view/diff-view.js +37 -14
  172. package/dist/components/diff-view/diff-view.js.map +1 -1
  173. package/dist/components/diff-view/use-diff-view.d.ts +7 -2
  174. package/dist/components/diff-view/use-diff-view.d.ts.map +1 -1
  175. package/dist/components/diff-view/use-diff-view.js +12 -5
  176. package/dist/components/diff-view/use-diff-view.js.map +1 -1
  177. package/dist/components/drawer/drawer.d.ts +46 -1
  178. package/dist/components/drawer/drawer.d.ts.map +1 -1
  179. package/dist/components/drawer/drawer.js +28 -4
  180. package/dist/components/drawer/drawer.js.map +1 -1
  181. package/dist/components/drawer/use-drawer.d.ts +1 -1
  182. package/dist/components/drawer/use-drawer.d.ts.map +1 -1
  183. package/dist/components/drawer/use-drawer.js +12 -29
  184. package/dist/components/drawer/use-drawer.js.map +1 -1
  185. package/dist/components/empty-state/empty-state.js +4 -1
  186. package/dist/components/empty-state/empty-state.js.map +1 -1
  187. package/dist/components/empty-state/use-empty-state.js +12 -3
  188. package/dist/components/empty-state/use-empty-state.js.map +1 -1
  189. package/dist/components/field/field.js +1 -1
  190. package/dist/components/field-array/field-array.d.ts +1 -1
  191. package/dist/components/field-array/field-array.d.ts.map +1 -1
  192. package/dist/components/field-array/field-array.js +5 -1
  193. package/dist/components/field-array/field-array.js.map +1 -1
  194. package/dist/components/field-array/use-field-array.d.ts +3 -1
  195. package/dist/components/field-array/use-field-array.d.ts.map +1 -1
  196. package/dist/components/field-array/use-field-array.js +5 -2
  197. package/dist/components/field-array/use-field-array.js.map +1 -1
  198. package/dist/components/file-upload/file-upload.d.ts +24 -1
  199. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  200. package/dist/components/file-upload/file-upload.js +12 -2
  201. package/dist/components/file-upload/file-upload.js.map +1 -1
  202. package/dist/components/file-upload/use-file-upload.d.ts +1 -1
  203. package/dist/components/file-upload/use-file-upload.d.ts.map +1 -1
  204. package/dist/components/file-upload/use-file-upload.js.map +1 -1
  205. package/dist/components/flex/flex.d.ts +1 -1
  206. package/dist/components/flex/flex.d.ts.map +1 -1
  207. package/dist/components/flex/flex.js +4 -4
  208. package/dist/components/flex/flex.js.map +1 -1
  209. package/dist/components/form/form.d.ts +18 -4
  210. package/dist/components/form/form.d.ts.map +1 -1
  211. package/dist/components/form/form.js +21 -7
  212. package/dist/components/form/form.js.map +1 -1
  213. package/dist/components/form/use-form.d.ts +6 -0
  214. package/dist/components/form/use-form.d.ts.map +1 -1
  215. package/dist/components/form/use-form.js +4 -0
  216. package/dist/components/form/use-form.js.map +1 -1
  217. package/dist/components/funnel-chart/context.js +15 -0
  218. package/dist/components/funnel-chart/context.js.map +1 -0
  219. package/dist/components/funnel-chart/funnel-chart.d.ts +175 -0
  220. package/dist/components/funnel-chart/funnel-chart.d.ts.map +1 -0
  221. package/dist/components/funnel-chart/funnel-chart.js +188 -0
  222. package/dist/components/funnel-chart/funnel-chart.js.map +1 -0
  223. package/dist/components/funnel-chart/use-funnel-chart.d.ts +19 -0
  224. package/dist/components/funnel-chart/use-funnel-chart.d.ts.map +1 -0
  225. package/dist/components/funnel-chart/use-funnel-chart.js +26 -0
  226. package/dist/components/funnel-chart/use-funnel-chart.js.map +1 -0
  227. package/dist/components/graph-chart/context.js +15 -0
  228. package/dist/components/graph-chart/context.js.map +1 -0
  229. package/dist/components/graph-chart/graph-chart.d.ts +194 -0
  230. package/dist/components/graph-chart/graph-chart.d.ts.map +1 -0
  231. package/dist/components/graph-chart/graph-chart.js +219 -0
  232. package/dist/components/graph-chart/graph-chart.js.map +1 -0
  233. package/dist/components/graph-chart/use-graph-chart.d.ts +19 -0
  234. package/dist/components/graph-chart/use-graph-chart.d.ts.map +1 -0
  235. package/dist/components/graph-chart/use-graph-chart.js +26 -0
  236. package/dist/components/graph-chart/use-graph-chart.js.map +1 -0
  237. package/dist/components/grid/grid.d.ts +7 -0
  238. package/dist/components/grid/grid.d.ts.map +1 -1
  239. package/dist/components/grid/grid.js +7 -1
  240. package/dist/components/grid/grid.js.map +1 -1
  241. package/dist/components/grid-list/context.d.ts +9 -0
  242. package/dist/components/grid-list/context.d.ts.map +1 -0
  243. package/dist/components/grid-list/context.js +24 -0
  244. package/dist/components/grid-list/context.js.map +1 -0
  245. package/dist/components/grid-list/grid-list.d.ts +149 -0
  246. package/dist/components/grid-list/grid-list.d.ts.map +1 -0
  247. package/dist/components/grid-list/grid-list.js +118 -0
  248. package/dist/components/grid-list/grid-list.js.map +1 -0
  249. package/dist/components/grid-list/use-grid-list.d.ts +12 -0
  250. package/dist/components/grid-list/use-grid-list.d.ts.map +1 -0
  251. package/dist/components/grid-list/use-grid-list.js +20 -0
  252. package/dist/components/grid-list/use-grid-list.js.map +1 -0
  253. package/dist/components/heatmap/heatmap.d.ts +45 -4
  254. package/dist/components/heatmap/heatmap.d.ts.map +1 -1
  255. package/dist/components/heatmap/heatmap.js +40 -14
  256. package/dist/components/heatmap/heatmap.js.map +1 -1
  257. package/dist/components/heatmap/use-heatmap.d.ts +4 -2
  258. package/dist/components/heatmap/use-heatmap.d.ts.map +1 -1
  259. package/dist/components/heatmap/use-heatmap.js +8 -4
  260. package/dist/components/heatmap/use-heatmap.js.map +1 -1
  261. package/dist/components/hierarchy-chart/context.js +15 -0
  262. package/dist/components/hierarchy-chart/context.js.map +1 -0
  263. package/dist/components/hierarchy-chart/hierarchy-chart.d.ts +201 -0
  264. package/dist/components/hierarchy-chart/hierarchy-chart.d.ts.map +1 -0
  265. package/dist/components/hierarchy-chart/hierarchy-chart.js +228 -0
  266. package/dist/components/hierarchy-chart/hierarchy-chart.js.map +1 -0
  267. package/dist/components/hierarchy-chart/use-hierarchy-chart.d.ts +19 -0
  268. package/dist/components/hierarchy-chart/use-hierarchy-chart.d.ts.map +1 -0
  269. package/dist/components/hierarchy-chart/use-hierarchy-chart.js +26 -0
  270. package/dist/components/hierarchy-chart/use-hierarchy-chart.js.map +1 -0
  271. package/dist/components/hover-card/hover-card.js +2 -2
  272. package/dist/components/icon/icon.d.ts +7 -1
  273. package/dist/components/icon/icon.d.ts.map +1 -1
  274. package/dist/components/icon/icon.js +1 -0
  275. package/dist/components/icon/icon.js.map +1 -1
  276. package/dist/components/image/use-image.d.ts.map +1 -1
  277. package/dist/components/image/use-image.js +3 -1
  278. package/dist/components/image/use-image.js.map +1 -1
  279. package/dist/components/image-cropper/image-cropper.d.ts +35 -4
  280. package/dist/components/image-cropper/image-cropper.d.ts.map +1 -1
  281. package/dist/components/image-cropper/image-cropper.js +34 -5
  282. package/dist/components/image-cropper/image-cropper.js.map +1 -1
  283. package/dist/components/image-cropper/use-image-cropper.d.ts +3 -1
  284. package/dist/components/image-cropper/use-image-cropper.d.ts.map +1 -1
  285. package/dist/components/image-cropper/use-image-cropper.js +4 -1
  286. package/dist/components/image-cropper/use-image-cropper.js.map +1 -1
  287. package/dist/components/image-viewer/image-viewer.js +1 -1
  288. package/dist/components/image-viewer/use-image-viewer.d.ts.map +1 -1
  289. package/dist/components/image-viewer/use-image-viewer.js +9 -27
  290. package/dist/components/image-viewer/use-image-viewer.js.map +1 -1
  291. package/dist/components/infinite-scroll/infinite-scroll.d.ts +9 -1
  292. package/dist/components/infinite-scroll/infinite-scroll.d.ts.map +1 -1
  293. package/dist/components/infinite-scroll/infinite-scroll.js +2 -0
  294. package/dist/components/infinite-scroll/infinite-scroll.js.map +1 -1
  295. package/dist/components/input-group/input-group.d.ts.map +1 -1
  296. package/dist/components/input-group/input-group.js +2 -1
  297. package/dist/components/input-group/input-group.js.map +1 -1
  298. package/dist/components/json-viewer/json-viewer.d.ts +17 -2
  299. package/dist/components/json-viewer/json-viewer.d.ts.map +1 -1
  300. package/dist/components/json-viewer/json-viewer.js +26 -8
  301. package/dist/components/json-viewer/json-viewer.js.map +1 -1
  302. package/dist/components/kbd/kbd.d.ts.map +1 -1
  303. package/dist/components/kbd/kbd.js +27 -10
  304. package/dist/components/kbd/kbd.js.map +1 -1
  305. package/dist/components/listbox/listbox.d.ts +25 -2
  306. package/dist/components/listbox/listbox.d.ts.map +1 -1
  307. package/dist/components/listbox/listbox.js +39 -4
  308. package/dist/components/listbox/listbox.js.map +1 -1
  309. package/dist/components/loading-bar/use-loading-bar.d.ts.map +1 -1
  310. package/dist/components/loading-bar/use-loading-bar.js +3 -1
  311. package/dist/components/loading-bar/use-loading-bar.js.map +1 -1
  312. package/dist/components/log/log.d.ts +41 -2
  313. package/dist/components/log/log.d.ts.map +1 -1
  314. package/dist/components/log/log.js +25 -3
  315. package/dist/components/log/log.js.map +1 -1
  316. package/dist/components/log/use-log.d.ts +1 -1
  317. package/dist/components/log/use-log.d.ts.map +1 -1
  318. package/dist/components/log/use-log.js +4 -1
  319. package/dist/components/log/use-log.js.map +1 -1
  320. package/dist/components/markdown-stream/markdown-stream.d.ts +22 -2
  321. package/dist/components/markdown-stream/markdown-stream.d.ts.map +1 -1
  322. package/dist/components/markdown-stream/markdown-stream.js +43 -4
  323. package/dist/components/markdown-stream/markdown-stream.js.map +1 -1
  324. package/dist/components/marquee/marquee.d.ts +68 -12
  325. package/dist/components/marquee/marquee.d.ts.map +1 -1
  326. package/dist/components/marquee/marquee.js +52 -7
  327. package/dist/components/marquee/marquee.js.map +1 -1
  328. package/dist/components/mention/mention.d.ts +43 -7
  329. package/dist/components/mention/mention.d.ts.map +1 -1
  330. package/dist/components/mention/mention.js +50 -8
  331. package/dist/components/mention/mention.js.map +1 -1
  332. package/dist/components/menu/context.js +1 -1
  333. package/dist/components/menu/context.js.map +1 -1
  334. package/dist/components/menu/menu.d.ts +92 -28
  335. package/dist/components/menu/menu.d.ts.map +1 -1
  336. package/dist/components/menu/menu.js +162 -54
  337. package/dist/components/menu/menu.js.map +1 -1
  338. package/dist/components/menu/use-menu.d.ts +1 -1
  339. package/dist/components/menu/use-menu.d.ts.map +1 -1
  340. package/dist/components/menu/use-menu.js +8 -6
  341. package/dist/components/menu/use-menu.js.map +1 -1
  342. package/dist/components/menubar/context.js +1 -1
  343. package/dist/components/menubar/context.js.map +1 -1
  344. package/dist/components/menubar/menubar.d.ts +52 -19
  345. package/dist/components/menubar/menubar.d.ts.map +1 -1
  346. package/dist/components/menubar/menubar.js +137 -56
  347. package/dist/components/menubar/menubar.js.map +1 -1
  348. package/dist/components/menubar/use-menubar.d.ts +1 -1
  349. package/dist/components/menubar/use-menubar.d.ts.map +1 -1
  350. package/dist/components/menubar/use-menubar.js +4 -2
  351. package/dist/components/menubar/use-menubar.js.map +1 -1
  352. package/dist/components/message-feed/message-feed.d.ts +13 -1
  353. package/dist/components/message-feed/message-feed.d.ts.map +1 -1
  354. package/dist/components/message-feed/message-feed.js +25 -1
  355. package/dist/components/message-feed/message-feed.js.map +1 -1
  356. package/dist/components/navigation-menu/navigation-menu.d.ts +58 -1
  357. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  358. package/dist/components/navigation-menu/navigation-menu.js +82 -10
  359. package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
  360. package/dist/components/notification/context.d.ts +5 -1
  361. package/dist/components/notification/context.d.ts.map +1 -1
  362. package/dist/components/notification/context.js.map +1 -1
  363. package/dist/components/notification/notification.d.ts +39 -23
  364. package/dist/components/notification/notification.d.ts.map +1 -1
  365. package/dist/components/notification/notification.js +27 -9
  366. package/dist/components/notification/notification.js.map +1 -1
  367. package/dist/components/notification/use-item-exit.js +22 -0
  368. package/dist/components/notification/use-item-exit.js.map +1 -0
  369. package/dist/components/notification/use-notification.d.ts +3 -3
  370. package/dist/components/notification/use-notification.d.ts.map +1 -1
  371. package/dist/components/notification/use-notification.js +20 -5
  372. package/dist/components/notification/use-notification.js.map +1 -1
  373. package/dist/components/number-animation/number-animation.d.ts +14 -2
  374. package/dist/components/number-animation/number-animation.d.ts.map +1 -1
  375. package/dist/components/number-animation/number-animation.js +5 -1
  376. package/dist/components/number-animation/number-animation.js.map +1 -1
  377. package/dist/components/number-field/number-field.d.ts +16 -1
  378. package/dist/components/number-field/number-field.d.ts.map +1 -1
  379. package/dist/components/number-field/number-field.js +6 -0
  380. package/dist/components/number-field/number-field.js.map +1 -1
  381. package/dist/components/page-header/page-header.d.ts.map +1 -1
  382. package/dist/components/page-header/page-header.js +2 -1
  383. package/dist/components/page-header/page-header.js.map +1 -1
  384. package/dist/components/pagination/pagination.d.ts +22 -2
  385. package/dist/components/pagination/pagination.d.ts.map +1 -1
  386. package/dist/components/pagination/pagination.js +22 -1
  387. package/dist/components/pagination/pagination.js.map +1 -1
  388. package/dist/components/pagination/use-pagination.js +1 -0
  389. package/dist/components/pagination/use-pagination.js.map +1 -1
  390. package/dist/components/pie-chart/context.js +15 -0
  391. package/dist/components/pie-chart/context.js.map +1 -0
  392. package/dist/components/pie-chart/pie-chart.d.ts +203 -0
  393. package/dist/components/pie-chart/pie-chart.d.ts.map +1 -0
  394. package/dist/components/pie-chart/pie-chart.js +236 -0
  395. package/dist/components/pie-chart/pie-chart.js.map +1 -0
  396. package/dist/components/pie-chart/use-pie-chart.d.ts +19 -0
  397. package/dist/components/pie-chart/use-pie-chart.d.ts.map +1 -0
  398. package/dist/components/pie-chart/use-pie-chart.js +26 -0
  399. package/dist/components/pie-chart/use-pie-chart.js.map +1 -0
  400. package/dist/components/popconfirm/popconfirm.js +2 -2
  401. package/dist/components/popover/popover.d.ts +11 -0
  402. package/dist/components/popover/popover.d.ts.map +1 -1
  403. package/dist/components/popover/popover.js +7 -2
  404. package/dist/components/popover/popover.js.map +1 -1
  405. package/dist/components/progress/progress.d.ts +63 -3
  406. package/dist/components/progress/progress.d.ts.map +1 -1
  407. package/dist/components/progress/progress.js +55 -3
  408. package/dist/components/progress/progress.js.map +1 -1
  409. package/dist/components/question-flow/question-flow.d.ts +40 -1
  410. package/dist/components/question-flow/question-flow.d.ts.map +1 -1
  411. package/dist/components/question-flow/question-flow.js +37 -1
  412. package/dist/components/question-flow/question-flow.js.map +1 -1
  413. package/dist/components/radar-chart/context.js +15 -0
  414. package/dist/components/radar-chart/context.js.map +1 -0
  415. package/dist/components/radar-chart/radar-chart.d.ts +189 -0
  416. package/dist/components/radar-chart/radar-chart.d.ts.map +1 -0
  417. package/dist/components/radar-chart/radar-chart.js +220 -0
  418. package/dist/components/radar-chart/radar-chart.js.map +1 -0
  419. package/dist/components/radar-chart/use-radar-chart.d.ts +19 -0
  420. package/dist/components/radar-chart/use-radar-chart.d.ts.map +1 -0
  421. package/dist/components/radar-chart/use-radar-chart.js +26 -0
  422. package/dist/components/radar-chart/use-radar-chart.js.map +1 -0
  423. package/dist/components/radio-group/radio-group.d.ts +37 -2
  424. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  425. package/dist/components/radio-group/radio-group.js +54 -8
  426. package/dist/components/radio-group/radio-group.js.map +1 -1
  427. package/dist/components/radio-group/use-radio-group.d.ts +3 -1
  428. package/dist/components/radio-group/use-radio-group.d.ts.map +1 -1
  429. package/dist/components/radio-group/use-radio-group.js +7 -3
  430. package/dist/components/radio-group/use-radio-group.js.map +1 -1
  431. package/dist/components/reasoning/reasoning.d.ts.map +1 -1
  432. package/dist/components/reasoning/reasoning.js +1 -0
  433. package/dist/components/reasoning/reasoning.js.map +1 -1
  434. package/dist/components/sankey-chart/context.js +15 -0
  435. package/dist/components/sankey-chart/context.js.map +1 -0
  436. package/dist/components/sankey-chart/sankey-chart.d.ts +161 -0
  437. package/dist/components/sankey-chart/sankey-chart.d.ts.map +1 -0
  438. package/dist/components/sankey-chart/sankey-chart.js +208 -0
  439. package/dist/components/sankey-chart/sankey-chart.js.map +1 -0
  440. package/dist/components/sankey-chart/use-sankey-chart.d.ts +19 -0
  441. package/dist/components/sankey-chart/use-sankey-chart.d.ts.map +1 -0
  442. package/dist/components/sankey-chart/use-sankey-chart.js +26 -0
  443. package/dist/components/sankey-chart/use-sankey-chart.js.map +1 -0
  444. package/dist/components/scroll-area/scroll-area.d.ts +13 -5
  445. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  446. package/dist/components/scroll-area/scroll-area.js +17 -3
  447. package/dist/components/scroll-area/scroll-area.js.map +1 -1
  448. package/dist/components/select/select.d.ts +25 -2
  449. package/dist/components/select/select.d.ts.map +1 -1
  450. package/dist/components/select/select.js +48 -6
  451. package/dist/components/select/select.js.map +1 -1
  452. package/dist/components/select/use-select.js +2 -1
  453. package/dist/components/select/use-select.js.map +1 -1
  454. package/dist/components/side-nav/context.js +17 -1
  455. package/dist/components/side-nav/context.js.map +1 -1
  456. package/dist/components/side-nav/side-nav.d.ts +51 -7
  457. package/dist/components/side-nav/side-nav.d.ts.map +1 -1
  458. package/dist/components/side-nav/side-nav.js +152 -13
  459. package/dist/components/side-nav/side-nav.js.map +1 -1
  460. package/dist/components/side-nav/use-side-nav.d.ts +4 -2
  461. package/dist/components/side-nav/use-side-nav.d.ts.map +1 -1
  462. package/dist/components/side-nav/use-side-nav.js +5 -3
  463. package/dist/components/side-nav/use-side-nav.js.map +1 -1
  464. package/dist/components/signature-pad/signature-pad.d.ts +26 -4
  465. package/dist/components/signature-pad/signature-pad.d.ts.map +1 -1
  466. package/dist/components/signature-pad/signature-pad.js +32 -4
  467. package/dist/components/signature-pad/signature-pad.js.map +1 -1
  468. package/dist/components/signature-pad/use-signature-pad.d.ts +1 -1
  469. package/dist/components/signature-pad/use-signature-pad.d.ts.map +1 -1
  470. package/dist/components/signature-pad/use-signature-pad.js.map +1 -1
  471. package/dist/components/skeleton/use-skeleton.js +6 -2
  472. package/dist/components/skeleton/use-skeleton.js.map +1 -1
  473. package/dist/components/slider/slider.d.ts +27 -0
  474. package/dist/components/slider/slider.d.ts.map +1 -1
  475. package/dist/components/slider/slider.js +12 -0
  476. package/dist/components/slider/slider.js.map +1 -1
  477. package/dist/components/sortable/sortable.d.ts +18 -0
  478. package/dist/components/sortable/sortable.d.ts.map +1 -1
  479. package/dist/components/sortable/sortable.js +7 -2
  480. package/dist/components/sortable/sortable.js.map +1 -1
  481. package/dist/components/sortable/use-sortable.d.ts +1 -1
  482. package/dist/components/sortable/use-sortable.d.ts.map +1 -1
  483. package/dist/components/sortable/use-sortable.js +2 -1
  484. package/dist/components/sortable/use-sortable.js.map +1 -1
  485. package/dist/components/sparkline/sparkline.d.ts +101 -0
  486. package/dist/components/sparkline/sparkline.d.ts.map +1 -0
  487. package/dist/components/sparkline/sparkline.js +54 -0
  488. package/dist/components/sparkline/sparkline.js.map +1 -0
  489. package/dist/components/sparkline/use-sparkline.d.ts +15 -0
  490. package/dist/components/sparkline/use-sparkline.d.ts.map +1 -0
  491. package/dist/components/sparkline/use-sparkline.js +21 -0
  492. package/dist/components/sparkline/use-sparkline.js.map +1 -0
  493. package/dist/components/spinner/spinner.d.ts +8 -0
  494. package/dist/components/spinner/spinner.d.ts.map +1 -1
  495. package/dist/components/spinner/spinner.js +2 -0
  496. package/dist/components/spinner/spinner.js.map +1 -1
  497. package/dist/components/spinner/use-spinner.js +4 -2
  498. package/dist/components/spinner/use-spinner.js.map +1 -1
  499. package/dist/components/statistic/statistic.d.ts.map +1 -1
  500. package/dist/components/statistic/statistic.js +2 -1
  501. package/dist/components/statistic/statistic.js.map +1 -1
  502. package/dist/components/steps/steps.d.ts +28 -1
  503. package/dist/components/steps/steps.d.ts.map +1 -1
  504. package/dist/components/steps/steps.js +11 -2
  505. package/dist/components/steps/steps.js.map +1 -1
  506. package/dist/components/switch/switch.js +1 -1
  507. package/dist/components/table/context.js +9 -1
  508. package/dist/components/table/context.js.map +1 -1
  509. package/dist/components/table/table.d.ts +52 -3
  510. package/dist/components/table/table.d.ts.map +1 -1
  511. package/dist/components/table/table.js +40 -11
  512. package/dist/components/table/table.js.map +1 -1
  513. package/dist/components/table/use-table.d.ts +3 -1
  514. package/dist/components/table/use-table.d.ts.map +1 -1
  515. package/dist/components/table/use-table.js +5 -2
  516. package/dist/components/table/use-table.js.map +1 -1
  517. package/dist/components/tabs/tabs.d.ts +51 -3
  518. package/dist/components/tabs/tabs.d.ts.map +1 -1
  519. package/dist/components/tabs/tabs.js +60 -8
  520. package/dist/components/tabs/tabs.js.map +1 -1
  521. package/dist/components/tag/use-tag.d.ts.map +1 -1
  522. package/dist/components/tag/use-tag.js +3 -1
  523. package/dist/components/tag/use-tag.js.map +1 -1
  524. package/dist/components/tag-group/tag-group.js +1 -1
  525. package/dist/components/tag-group/tag-group.js.map +1 -1
  526. package/dist/components/tags-input/tags-input.d.ts +10 -2
  527. package/dist/components/tags-input/tags-input.d.ts.map +1 -1
  528. package/dist/components/tags-input/tags-input.js +11 -4
  529. package/dist/components/tags-input/tags-input.js.map +1 -1
  530. package/dist/components/tags-input/use-tags-input.d.ts +4 -2
  531. package/dist/components/tags-input/use-tags-input.d.ts.map +1 -1
  532. package/dist/components/tags-input/use-tags-input.js +5 -2
  533. package/dist/components/tags-input/use-tags-input.js.map +1 -1
  534. package/dist/components/time-picker/time-picker.d.ts +11 -7
  535. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  536. package/dist/components/time-picker/time-picker.js +4 -2
  537. package/dist/components/time-picker/time-picker.js.map +1 -1
  538. package/dist/components/time-range-picker/time-range-picker.d.ts +11 -7
  539. package/dist/components/time-range-picker/time-range-picker.d.ts.map +1 -1
  540. package/dist/components/time-range-picker/time-range-picker.js +4 -2
  541. package/dist/components/time-range-picker/time-range-picker.js.map +1 -1
  542. package/dist/components/timeline/timeline.d.ts.map +1 -1
  543. package/dist/components/timeline/timeline.js +2 -1
  544. package/dist/components/timeline/timeline.js.map +1 -1
  545. package/dist/components/timestamp/timestamp.d.ts +20 -1
  546. package/dist/components/timestamp/timestamp.d.ts.map +1 -1
  547. package/dist/components/timestamp/timestamp.js +16 -5
  548. package/dist/components/timestamp/timestamp.js.map +1 -1
  549. package/dist/components/toolbar/toolbar.d.ts +17 -2
  550. package/dist/components/toolbar/toolbar.d.ts.map +1 -1
  551. package/dist/components/toolbar/toolbar.js +31 -4
  552. package/dist/components/toolbar/toolbar.js.map +1 -1
  553. package/dist/components/toolbar/use-toolbar.d.ts +4 -2
  554. package/dist/components/toolbar/use-toolbar.d.ts.map +1 -1
  555. package/dist/components/toolbar/use-toolbar.js +5 -2
  556. package/dist/components/toolbar/use-toolbar.js.map +1 -1
  557. package/dist/components/tooltip/context.d.ts +21 -0
  558. package/dist/components/tooltip/context.d.ts.map +1 -0
  559. package/dist/components/tooltip/context.js +10 -1
  560. package/dist/components/tooltip/context.js.map +1 -1
  561. package/dist/components/tooltip/tooltip.d.ts +53 -1
  562. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  563. package/dist/components/tooltip/tooltip.js +34 -3
  564. package/dist/components/tooltip/tooltip.js.map +1 -1
  565. package/dist/components/tooltip/use-tooltip.d.ts +3 -18
  566. package/dist/components/tooltip/use-tooltip.d.ts.map +1 -1
  567. package/dist/components/tooltip/use-tooltip.js +2 -0
  568. package/dist/components/tooltip/use-tooltip.js.map +1 -1
  569. package/dist/components/tour/tour.d.ts +8 -0
  570. package/dist/components/tour/tour.d.ts.map +1 -1
  571. package/dist/components/tour/tour.js +2 -0
  572. package/dist/components/tour/tour.js.map +1 -1
  573. package/dist/components/transfer/transfer.d.ts +30 -2
  574. package/dist/components/transfer/transfer.d.ts.map +1 -1
  575. package/dist/components/transfer/transfer.js +29 -3
  576. package/dist/components/transfer/transfer.js.map +1 -1
  577. package/dist/components/tree/tree.d.ts +43 -8
  578. package/dist/components/tree/tree.d.ts.map +1 -1
  579. package/dist/components/tree/tree.js +28 -15
  580. package/dist/components/tree/tree.js.map +1 -1
  581. package/dist/components/tree-select/context.js +10 -1
  582. package/dist/components/tree-select/context.js.map +1 -1
  583. package/dist/components/tree-select/tree-select.d.ts +78 -6
  584. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  585. package/dist/components/tree-select/tree-select.js +127 -12
  586. package/dist/components/tree-select/tree-select.js.map +1 -1
  587. package/dist/components/tree-select/use-tree-select.d.ts +3 -0
  588. package/dist/components/tree-select/use-tree-select.d.ts.map +1 -1
  589. package/dist/components/tree-select/use-tree-select.js +6 -1
  590. package/dist/components/tree-select/use-tree-select.js.map +1 -1
  591. package/dist/components/truncate/truncate.d.ts +25 -4
  592. package/dist/components/truncate/truncate.d.ts.map +1 -1
  593. package/dist/components/truncate/truncate.js +29 -14
  594. package/dist/components/truncate/truncate.js.map +1 -1
  595. package/dist/components/truncate/use-truncate.d.ts.map +1 -1
  596. package/dist/components/truncate/use-truncate.js +3 -1
  597. package/dist/components/truncate/use-truncate.js.map +1 -1
  598. package/dist/components/typography/typography.d.ts +35 -2
  599. package/dist/components/typography/typography.d.ts.map +1 -1
  600. package/dist/components/typography/typography.js +23 -4
  601. package/dist/components/typography/typography.js.map +1 -1
  602. package/dist/components/virtualizer/virtualizer.d.ts +26 -2
  603. package/dist/components/virtualizer/virtualizer.d.ts.map +1 -1
  604. package/dist/components/virtualizer/virtualizer.js +20 -3
  605. package/dist/components/virtualizer/virtualizer.js.map +1 -1
  606. package/dist/components/watermark/watermark.d.ts +14 -1
  607. package/dist/components/watermark/watermark.d.ts.map +1 -1
  608. package/dist/components/watermark/watermark.js +20 -5
  609. package/dist/components/watermark/watermark.js.map +1 -1
  610. package/dist/config/config.d.ts +1 -1
  611. package/dist/config/config.d.ts.map +1 -1
  612. package/dist/config/config.js +2 -1
  613. package/dist/config/config.js.map +1 -1
  614. package/dist/index.d.ts +65 -50
  615. package/dist/index.js +59 -44
  616. package/dist/package.js +1 -1
  617. package/dist/runtime/as-child.js +3 -2
  618. package/dist/runtime/as-child.js.map +1 -1
  619. package/dist/runtime/hydration.js +14 -0
  620. package/dist/runtime/hydration.js.map +1 -0
  621. package/dist/runtime/use-machine.js +3 -2
  622. package/dist/runtime/use-machine.js.map +1 -1
  623. package/dist/runtime/use-overlay-exit.js +0 -1
  624. package/dist/runtime/use-overlay-exit.js.map +1 -1
  625. package/dist/runtime/use-scrollbars.js +3 -1
  626. package/dist/runtime/use-scrollbars.js.map +1 -1
  627. package/dist/services/notification-service.d.ts +26 -7
  628. package/dist/services/notification-service.d.ts.map +1 -1
  629. package/dist/services/notification-service.js +35 -8
  630. package/dist/services/notification-service.js.map +1 -1
  631. package/dist/sound.d.ts +6 -7
  632. package/dist/sound.d.ts.map +1 -1
  633. package/dist/sound.js +6 -6
  634. package/dist/sound.js.map +1 -1
  635. package/package.json +15 -14
  636. package/dist/components/gradient-text/gradient-text.d.ts +0 -36
  637. package/dist/components/gradient-text/gradient-text.d.ts.map +0 -1
  638. package/dist/components/gradient-text/gradient-text.js +0 -20
  639. package/dist/components/gradient-text/gradient-text.js.map +0 -1
  640. package/dist/components/icon-wrapper/icon-wrapper.d.ts +0 -29
  641. package/dist/components/icon-wrapper/icon-wrapper.d.ts.map +0 -1
  642. package/dist/components/icon-wrapper/icon-wrapper.js +0 -20
  643. package/dist/components/icon-wrapper/icon-wrapper.js.map +0 -1
  644. package/dist/components/segmented/context.d.ts +0 -13
  645. package/dist/components/segmented/context.d.ts.map +0 -1
  646. package/dist/components/segmented/context.js +0 -24
  647. package/dist/components/segmented/context.js.map +0 -1
  648. package/dist/components/segmented/segmented.d.ts +0 -161
  649. package/dist/components/segmented/segmented.d.ts.map +0 -1
  650. package/dist/components/segmented/segmented.js +0 -142
  651. package/dist/components/segmented/segmented.js.map +0 -1
  652. package/dist/components/segmented/use-segmented.d.ts +0 -15
  653. package/dist/components/segmented/use-segmented.d.ts.map +0 -1
  654. package/dist/components/segmented/use-segmented.js +0 -22
  655. package/dist/components/segmented/use-segmented.js.map +0 -1
  656. package/dist/components/toast/context.js +0 -15
  657. package/dist/components/toast/context.js.map +0 -1
  658. package/dist/components/toast/toast.d.ts +0 -123
  659. package/dist/components/toast/toast.d.ts.map +0 -1
  660. package/dist/components/toast/toast.js +0 -112
  661. package/dist/components/toast/toast.js.map +0 -1
  662. package/dist/components/toast/use-toast.d.ts +0 -10
  663. package/dist/components/toast/use-toast.d.ts.map +0 -1
  664. package/dist/components/toast/use-toast.js +0 -17
  665. package/dist/components/toast/use-toast.js.map +0 -1
  666. package/dist/services/toast-service.d.ts +0 -69
  667. package/dist/services/toast-service.d.ts.map +0 -1
  668. package/dist/services/toast-service.js +0 -161
  669. package/dist/services/toast-service.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { withXhConfig } from "../../config/config.js";
2
- import { XhPortal } from "../../runtime/portal.js";
3
- import { useScrollbars } from "../../runtime/use-scrollbars.js";
4
2
  import { mergePartProps } from "../../runtime/merge-props.js";
5
3
  import { mergeIntoChild } from "../../runtime/as-child.js";
4
+ import { XhPortal } from "../../runtime/portal.js";
5
+ import { useScrollbars } from "../../runtime/use-scrollbars.js";
6
6
  import { provideContextMenu, provideContextMenuGroup, provideContextMenuItem, provideContextMenuSub, useContextMenuContext, useContextMenuGroupContext, useContextMenuItemContext, useContextMenuSubContext } from "./context.js";
7
7
  import { provideMenu, useMenuContext } from "../menu/context.js";
8
8
  import { useMenuWithParent } from "../menu/use-menu.js";
@@ -14,6 +14,10 @@ const XhContextMenuRoot = defineComponent({
14
14
  name: "XhContextMenuRoot",
15
15
  props: {
16
16
  collection: { type: Array },
17
+ checkboxValue: { type: Array },
18
+ defaultCheckboxValue: { type: Array },
19
+ radioValue: { type: Object },
20
+ defaultRadioValue: { type: Object },
17
21
  open: {
18
22
  type: Boolean,
19
23
  default: void 0
@@ -32,12 +36,19 @@ const XhContextMenuRoot = defineComponent({
32
36
  translations: { type: Object },
33
37
  dir: { type: String },
34
38
  longPressDelay: { type: Number },
39
+ /** 整张菜单禁用:不再展开,浏览器自己的右键菜单照常出现。 */
40
+ disabled: {
41
+ type: Boolean,
42
+ default: void 0
43
+ },
35
44
  tone: { type: String },
36
45
  size: { type: String }
37
46
  },
38
47
  emits: {
39
48
  "open-change": (_details) => true,
40
49
  "select": (_details) => true,
50
+ "checkbox-value-change": (_details) => true,
51
+ "radio-value-change": (_details) => true,
41
52
  "update:open": (_open) => true
42
53
  },
43
54
  slots: Object,
@@ -47,7 +58,7 @@ const XhContextMenuRoot = defineComponent({
47
58
  emit("update:open", details.open);
48
59
  };
49
60
  const notifySelect = (details) => emit("select", details);
50
- const ctx = useContextMenu(withXhConfig("context-menu", props), notifyOpen, notifySelect);
61
+ const ctx = useContextMenu(withXhConfig("context-menu", props), notifyOpen, notifySelect, (details) => emit("checkbox-value-change", details), (details) => emit("radio-value-change", details));
51
62
  provideContextMenu(ctx);
52
63
  expose({
53
64
  openAt: (x, y) => ctx.api.value.openAt(x, y),
@@ -63,8 +74,16 @@ const XhContextMenuRoot = defineComponent({
63
74
  open: ctx.api.value.open,
64
75
  point: ctx.api.value.point,
65
76
  setOpen: ctx.api.value.setOpen,
66
- openAt: ctx.api.value.openAt
67
- }) : props.collection ? renderDefaultTree(ctx.api.value.collection, slots.trigger?.() ?? null, slots.item) : []);
77
+ openAt: ctx.api.value.openAt,
78
+ checkboxValue: ctx.api.value.checkboxValue,
79
+ radioValue: ctx.api.value.radioValue,
80
+ setCheckboxValue: ctx.api.value.setCheckboxValue,
81
+ setRadioValue: ctx.api.value.setRadioValue
82
+ }) : props.collection ? renderDefaultTree(ctx.api.value.collection, slots.trigger?.() ?? null, {
83
+ "item": slots.item,
84
+ "item-prefix": slots["item-prefix"],
85
+ "item-suffix": slots["item-suffix"]
86
+ }) : []);
68
87
  }
69
88
  });
70
89
  const XhContextMenuTrigger = defineComponent({
@@ -140,6 +159,19 @@ const XhContextMenuGroup = defineComponent({
140
159
  return () => h("div", ctx.api.value.getGroupProps(group.value), slots.default?.());
141
160
  }
142
161
  });
162
+ const XhContextMenuRadioGroup = defineComponent({
163
+ name: "XhContextMenuRadioGroup",
164
+ props: { value: {
165
+ type: String,
166
+ required: true
167
+ } },
168
+ setup(props, { slots }) {
169
+ const ctx = useContextMenuContext();
170
+ const group = computed(() => ({ value: props.value }));
171
+ provideContextMenuGroup({ group });
172
+ return () => h("div", ctx.api.value.getRadioGroupProps(group.value), slots.default?.());
173
+ }
174
+ });
143
175
  const XhContextMenuGroupLabel = defineComponent({
144
176
  name: "XhContextMenuGroupLabel",
145
177
  setup(_, { slots }) {
@@ -148,46 +180,71 @@ const XhContextMenuGroupLabel = defineComponent({
148
180
  return () => h("span", ctx.api.value.getGroupLabelProps(group.value), slots.default?.());
149
181
  }
150
182
  });
151
- const XhContextMenuItem = defineComponent({
152
- name: "XhContextMenuItem",
153
- props: {
154
- value: {
155
- type: String,
156
- required: true
183
+ function createContextMenuItemComponent(name, kind) {
184
+ return defineComponent({
185
+ name,
186
+ props: {
187
+ value: {
188
+ type: String,
189
+ required: true
190
+ },
191
+ disabled: {
192
+ type: Boolean,
193
+ default: void 0
194
+ },
195
+ closeOnSelect: {
196
+ type: Boolean,
197
+ default: void 0
198
+ }
157
199
  },
158
- disabled: {
159
- type: Boolean,
160
- default: void 0
161
- }
162
- },
163
- setup(props, { slots }) {
164
- const ctx = useContextMenuContext();
165
- const item = computed(() => ({
166
- value: props.value,
167
- disabled: props.disabled
168
- }));
169
- provideContextMenuItem({ item });
170
- const itemEl = ref(null);
171
- watch(() => props.value, (next, prev) => {
172
- if (next === prev) return;
173
- const { service } = ctx;
174
- if (service.getStatus() !== "Started") return;
175
- if (itemEl.value && service.scope.getActiveElement() === itemEl.value) service.send({
176
- type: "ITEM.FOCUS",
177
- value: next
200
+ setup(props, { slots }) {
201
+ const ctx = useContextMenuContext();
202
+ const radioGroup = kind === "radio" ? useContextMenuGroupContext() : null;
203
+ const item = computed(() => kind === "radio" ? {
204
+ value: props.value,
205
+ disabled: props.disabled,
206
+ closeOnSelect: props.closeOnSelect,
207
+ kind,
208
+ group: radioGroup.group.value.value
209
+ } : kind === "checkbox" ? {
210
+ value: props.value,
211
+ disabled: props.disabled,
212
+ closeOnSelect: props.closeOnSelect,
213
+ kind
214
+ } : {
215
+ value: props.value,
216
+ disabled: props.disabled,
217
+ kind
178
218
  });
179
- });
180
- onBeforeUnmount(() => {
181
- const { service } = ctx;
182
- if (service.getStatus() !== "Started") return;
183
- if (itemEl.value && service.scope.getActiveElement() === itemEl.value) service.send({ type: "ITEM.LOST" });
184
- });
185
- return () => h("div", {
186
- ...ctx.api.value.getItemProps(item.value),
187
- ref: itemEl
188
- }, slots.default?.());
189
- }
190
- });
219
+ provideContextMenuItem({ item });
220
+ const itemEl = ref(null);
221
+ watch(() => props.value, (next, prev) => {
222
+ if (next === prev) return;
223
+ const { service } = ctx;
224
+ if (service.getStatus() !== "Started") return;
225
+ if (itemEl.value && service.scope.getActiveElement() === itemEl.value) service.send({
226
+ type: "ITEM.FOCUS",
227
+ value: next
228
+ });
229
+ });
230
+ onBeforeUnmount(() => {
231
+ const { service } = ctx;
232
+ if (service.getStatus() !== "Started") return;
233
+ if (itemEl.value && service.scope.getActiveElement() === itemEl.value) service.send({ type: "ITEM.LOST" });
234
+ });
235
+ return () => {
236
+ const declaration = item.value;
237
+ return h("div", {
238
+ ...declaration.kind === "checkbox" ? ctx.api.value.getCheckboxItemProps(declaration) : declaration.kind === "radio" ? ctx.api.value.getRadioItemProps(declaration) : ctx.api.value.getItemProps(declaration),
239
+ ref: itemEl
240
+ }, slots.default?.());
241
+ };
242
+ }
243
+ });
244
+ }
245
+ const XhContextMenuItem = /* @__PURE__ */ createContextMenuItemComponent("XhContextMenuItem", "item");
246
+ const XhContextMenuCheckboxItem = /* @__PURE__ */ createContextMenuItemComponent("XhContextMenuCheckboxItem", "checkbox");
247
+ const XhContextMenuRadioItem = /* @__PURE__ */ createContextMenuItemComponent("XhContextMenuRadioItem", "radio");
191
248
  /**
192
249
  * 右键菜单中的子菜单:子层运行一台 submenu 模式的 menu 状态机,触发条目由
193
250
  * XhContextMenuSubTrigger 渲染为父层条目与子层触发器的双重身份。
@@ -293,6 +350,24 @@ const XhContextMenuItemDescription = defineComponent({
293
350
  return () => h("span", ctx.api.value.getItemDescriptionProps(item.value), slots.default?.());
294
351
  }
295
352
  });
353
+ /** 条目中的快捷键提示,贴行尾;纯装饰,读屏从条目文字取意 */
354
+ const XhContextMenuItemShortcut = defineComponent({
355
+ name: "XhContextMenuItemShortcut",
356
+ setup(_, { slots }) {
357
+ const ctx = useContextMenuContext();
358
+ const { item } = useContextMenuItemContext();
359
+ return () => h("span", ctx.api.value.getItemShortcutProps(item.value), slots.default?.());
360
+ }
361
+ });
362
+ /** 条目行尾的作者内容(计数、徽标、次级图标);家族只管落位,不规定字号与颜色 */
363
+ const XhContextMenuItemSuffix = defineComponent({
364
+ name: "XhContextMenuItemSuffix",
365
+ setup(_, { slots }) {
366
+ const ctx = useContextMenuContext();
367
+ const { item } = useContextMenuItemContext();
368
+ return () => h("span", ctx.api.value.getItemSuffixProps(item.value), slots.default?.());
369
+ }
370
+ });
296
371
  const XhContextMenuSeparator = defineComponent({
297
372
  name: "XhContextMenuSeparator",
298
373
  setup() {
@@ -313,34 +388,43 @@ const XhContextMenuArrow = defineComponent({
313
388
  * 与手写部件产出的 DOM 完全一致,需要修改结构时写默认插槽,行为不变。
314
389
  * 触发区中放置的内容由作者决定,经 trigger 插槽给出。
315
390
  */
316
- function renderDefaultTree(collection, trigger, itemSlot) {
317
- return [h(XhContextMenuTrigger, null, () => trigger ?? []), h(XhContextMenuPositioner, null, () => [h(XhContextMenuContent, null, () => renderNodes(collection, itemSlot))])];
391
+ function renderDefaultTree(collection, trigger, itemSlots) {
392
+ return [h(XhContextMenuTrigger, null, () => trigger ?? []), h(XhContextMenuPositioner, null, () => [h(XhContextMenuContent, null, () => renderNodes(collection, itemSlots))])];
318
393
  }
319
394
  /** content 的内容:分组段铺为 group,段首的分隔线落在 group 外面。 */
320
- function renderNodes(collection, itemSlot) {
395
+ function renderNodes(collection, itemSlots) {
321
396
  return groupAdjacentRuns(collection, (node) => node.group).flatMap((run, runIndex) => {
322
397
  const head = run[0];
323
398
  const lead = runIndex > 0 && head.separatorBefore ? [h(XhContextMenuSeparator, { key: `separator:${head.value}` })] : [];
324
- if (head.group == null) return [...lead, renderItem(head, itemSlot)];
399
+ if (head.group == null) return [...lead, renderItem(head, itemSlots)];
325
400
  const groupLabel = run.find((node) => node.groupLabel != null)?.groupLabel ?? null;
326
- return [...lead, h(XhContextMenuGroup, {
401
+ return [...lead, h(head.kind === "radio" ? XhContextMenuRadioGroup : XhContextMenuGroup, {
327
402
  key: `group:${head.group}`,
328
403
  value: head.group
329
- }, () => [...groupLabel != null ? [h(XhContextMenuGroupLabel, null, () => groupLabel)] : [], ...run.flatMap((node, index) => [...index > 0 && node.separatorBefore ? [h(XhContextMenuSeparator, { key: `separator:${node.value}` })] : [], renderItem(node, itemSlot)])])];
404
+ }, () => [...groupLabel != null ? [h(XhContextMenuGroupLabel, null, () => groupLabel)] : [], ...run.flatMap((node, index) => [...index > 0 && node.separatorBefore ? [h(XhContextMenuSeparator, { key: `separator:${node.value}` })] : [], renderItem(node, itemSlots)])])];
330
405
  });
331
406
  }
332
- /** 单个条目:标记位排在文字前面,未提供标记位时不铺该部件。 */
333
- function renderItem(meta, itemSlot) {
334
- return h(XhContextMenuItem, {
407
+ /**
408
+ * 单个条目:标记位排在文字前面,未提供标记位时不铺该部件。
409
+ * `item-prefix` / `item-suffix` 插槽各接管首尾一格,其余槽照旧由数据铺;
410
+ * 行首那一格与数据里的 `indicator` 同一个部件,插槽在场时以它为准。
411
+ */
412
+ function renderItem(meta, itemSlots) {
413
+ const prefix = itemSlots["item-prefix"];
414
+ const suffix = itemSlots["item-suffix"];
415
+ return h(meta.kind === "checkbox" ? XhContextMenuCheckboxItem : meta.kind === "radio" ? XhContextMenuRadioItem : XhContextMenuItem, {
335
416
  key: meta.value,
336
- value: meta.value
417
+ value: meta.value,
418
+ closeOnSelect: meta.closeOnSelect
337
419
  }, () => [
338
- ...meta.indicator != null ? [h(XhContextMenuItemIndicator, null, () => meta.indicator)] : [],
339
- h(XhContextMenuItemText, null, () => itemSlot?.(meta) ?? meta.label),
340
- ...meta.description != null ? [h(XhContextMenuItemDescription, null, () => meta.description)] : []
420
+ ...prefix ? [h(XhContextMenuItemIndicator, null, () => prefix(meta))] : meta.indicator != null ? [h(XhContextMenuItemIndicator, null, () => meta.indicator)] : meta.kind !== "item" ? [h(XhContextMenuItemIndicator)] : [],
421
+ h(XhContextMenuItemText, null, () => itemSlots.item?.(meta) ?? meta.label),
422
+ ...meta.description != null ? [h(XhContextMenuItemDescription, null, () => meta.description)] : [],
423
+ ...meta.shortcut != null ? [h(XhContextMenuItemShortcut, null, () => meta.shortcut)] : [],
424
+ ...suffix ? [h(XhContextMenuItemSuffix, null, () => suffix(meta))] : []
341
425
  ]);
342
426
  }
343
427
  //#endregion
344
- export { XhContextMenuArrow, XhContextMenuContent, XhContextMenuGroup, XhContextMenuGroupLabel, XhContextMenuItem, XhContextMenuItemDescription, XhContextMenuItemIndicator, XhContextMenuItemText, XhContextMenuPositioner, XhContextMenuRoot, XhContextMenuSeparator, XhContextMenuSub, XhContextMenuSubTrigger, XhContextMenuTrigger };
428
+ export { XhContextMenuArrow, XhContextMenuCheckboxItem, XhContextMenuContent, XhContextMenuGroup, XhContextMenuGroupLabel, XhContextMenuItem, XhContextMenuItemDescription, XhContextMenuItemIndicator, XhContextMenuItemShortcut, XhContextMenuItemSuffix, XhContextMenuItemText, XhContextMenuPositioner, XhContextMenuRadioGroup, XhContextMenuRadioItem, XhContextMenuRoot, XhContextMenuSeparator, XhContextMenuSub, XhContextMenuSubTrigger, XhContextMenuTrigger };
345
429
 
346
430
  //# sourceMappingURL=context-menu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu.js","names":["mergeVueProps","mergeProps"],"sources":["../../../src/components/context-menu/context-menu.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// 提供 context menu 相关实现。\n\nimport type { Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type { ContextMenuApi, ContextMenuGroupProps, ContextMenuItemProps, ContextMenuNode, ContextMenuNodeMeta, ContextMenuSchema, MenuApi } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { groupAdjacentRuns, mergeProps } from '@xihan-ui/core'\nimport { computed, defineComponent, h, mergeProps as mergeVueProps, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { mergeIntoChild } from '../../runtime/as-child'\nimport { mergePartProps } from '../../runtime/merge-props'\nimport { XhPortal } from '../../runtime/portal'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { provideMenu, useMenuContext } from '../menu/context'\nimport { useMenuWithParent } from '../menu/use-menu'\nimport {\n provideContextMenu,\n provideContextMenuGroup,\n provideContextMenuItem,\n provideContextMenuSub,\n useContextMenuContext,\n useContextMenuGroupContext,\n useContextMenuItemContext,\n useContextMenuSubContext,\n} from './context'\nimport { useContextMenu } from './use-context-menu'\n\ntype ContextMenuProps = ContextMenuSchema['props']\n\n/** 默认插槽的载荷:右键菜单的展开态与锚点坐标,以及开合、按坐标展开的命令。 */\nexport type ContextMenuRootSlotProps = Pick<ContextMenuApi, 'open' | 'point' | 'setOpen' | 'openAt'>\n\n/** 子菜单默认插槽的载荷:该层子菜单自己的展开态与开合命令。 */\nexport type ContextMenuSubSlotProps = Pick<MenuApi, 'open' | 'setOpen'>\n\nexport const XhContextMenuRoot = defineComponent({\n name: 'XhContextMenuRoot',\n // 缺省值由 connect 与机器给出;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n collection: { type: Array as PropType<ContextMenuNode[]> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n loop: { type: Boolean, default: undefined },\n typeahead: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<ContextMenuProps['translations']> },\n dir: { type: String as PropType<Direction> },\n longPressDelay: { type: Number },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n },\n // open-change 携带 { open }、select 携带 { value },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<ContextMenuProps, 'onOpenChange'>) => true,\n 'select': (_details: PayloadOf<ContextMenuProps, 'onSelect'>) => true,\n 'update:open': (_open: PayloadOf<ContextMenuProps, 'onOpenChange'>['open']) => true,\n },\n slots: Object as SlotsType<{\n default?: (props: ContextMenuRootSlotProps) => VNode[]\n trigger?: () => VNode[]\n item?: (node: ContextMenuNodeMeta) => VNode[]\n }>,\n setup(props, { slots, emit, expose }) {\n const notifyOpen: ContextMenuProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const notifySelect: ContextMenuProps['onSelect'] = details => emit('select', details)\n const ctx = useContextMenu(withXhConfig('context-menu', props) as ContextMenuProps, notifyOpen, notifySelect)\n provideContextMenu(ctx)\n // 菜单钉在坐标上,坐标只能由 openAt 交进来。默认插槽那条路从载荷里拿,\n // 只交 collection 的那条路没有载荷,所以同一组命令也从实例上暴露一份。\n expose({\n openAt: (x: number, y: number) => ctx.api.value.openAt(x, y),\n setOpen: (open: boolean) => ctx.api.value.setOpen(open),\n get open() {\n return ctx.api.value.open\n },\n get point() {\n return ctx.api.value.point\n },\n })\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default({\n open: ctx.api.value.open,\n point: ctx.api.value.point,\n setOpen: ctx.api.value.setOpen,\n openAt: ctx.api.value.openAt,\n })\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.trigger?.() ?? null, slots.item)\n : [],\n )\n },\n})\n\nexport const XhContextMenuTrigger = defineComponent({\n name: 'XhContextMenuTrigger',\n // 直通属性自己合:Vue 默认把作者的处理器排在部件的后面,这里改成作者先跑\n inheritAttrs: false,\n props: {\n /** 借用作者的子节点作为触发器,不再渲染自己的包裹元素;子节点须恰好一个。 */\n asChild: Boolean,\n },\n setup(props, { slots, attrs }) {\n const ctx = useContextMenuContext()\n // 触发区渲染为 div,语义由 connect 打上的 ARIA 属性给出\n return () => {\n const part = mergePartProps({\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, attrs)\n const children = slots.default?.()\n // asChild:把触发器属性合到作者的节点上,不再自己渲染包裹元素\n if (props.asChild) {\n const merged = mergeIntoChild(children, part, 'context-menu')\n if (merged)\n return merged\n }\n return h('div', part, children)\n }\n },\n})\n\nexport const XhContextMenuPositioner = defineComponent({\n name: 'XhContextMenuPositioner',\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 = useContextMenuContext()\n // 条目列表的自绘条:与 content 同级、绝对定位不占布局,壳是这层已经 fixed 的 positioner\n // 浮层里的条子走 4px 档\n const bars = useScrollbars({ scrollable: () => ctx.contentRef.value, props: { size: 'sm' } })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => h(XhPortal, { to: props.container ?? ctx.portalTarget.value, source: ctx.triggerRef }, () => [\n h('div', {\n ...mergeVueProps(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\nexport const XhContextMenuContent = defineComponent({\n name: 'XhContextMenuContent',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhContextMenuGroup = defineComponent({\n name: 'XhContextMenuGroup',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useContextMenuContext()\n const group = computed<ContextMenuGroupProps>(() => ({ value: props.value }))\n provideContextMenuGroup({ group })\n return () => h('div', ctx.api.value.getGroupProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuGroupLabel = defineComponent({\n name: 'XhContextMenuGroupLabel',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { group } = useContextMenuGroupContext()\n return () => h('span', ctx.api.value.getGroupLabelProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuItem = defineComponent({\n name: 'XhContextMenuItem',\n props: {\n value: { type: String, required: true },\n // 缺省交给 connect 回 collection 里查,写死 false 会盖掉数据里的禁用\n disabled: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useContextMenuContext()\n const item = computed<ContextMenuItemProps>(() => ({ value: props.value, disabled: props.disabled }))\n provideContextMenuItem({ item })\n // 本条目持有焦点时,value 变更按新值重报焦点条目,卸载时上报焦点丢失\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 根已停机时不再送事件\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.LOST' })\n })\n return () => h(\n 'div',\n { ...ctx.api.value.getItemProps(item.value) as Record<string, unknown>, ref: itemEl },\n slots.default?.(),\n )\n },\n})\n\n/**\n * 右键菜单中的子菜单:子层运行一台 submenu 模式的 menu 状态机,触发条目由\n * XhContextMenuSubTrigger 渲染为父层条目与子层触发器的双重身份。\n * 子层内部使用 XhMenu 系部件(再往深嵌套即 menu 嵌套 menu)。本身不渲染节点。\n */\nexport const XhContextMenuSub = defineComponent({\n name: 'XhContextMenuSub',\n props: {\n /** 它在父右键菜单中的条目身份。 */\n value: { type: String, required: true },\n disabled: { type: Boolean, default: undefined },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n loop: { type: Boolean, default: undefined },\n openOnHover: { type: Boolean, default: undefined },\n hoverOpenDelay: { type: Number },\n /** 文字方向;默认继承父层。子层被迁移到浮层落点,无法继承父层的方向。 */\n dir: { type: String as PropType<Direction> },\n /** 语气;默认继承父层。子层是浮层落点下的同级节点,CSS 私有槽无法继承。 */\n tone: { type: String as PropType<Tone> },\n /** 尺寸;默认继承父层,理由同 tone。 */\n size: { type: String as PropType<Size> },\n hoverCloseDelay: { type: Number },\n },\n slots: Object as SlotsType<{\n default?: (props: ContextMenuSubSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const parent = useContextMenuContext()\n const sub = useMenuWithParent(\n {\n ...props,\n submenu: true,\n dir: props.dir ?? parent.service.prop('dir'),\n tone: props.tone ?? parent.service.prop('tone'),\n size: props.size ?? parent.service.prop('size'),\n },\n undefined,\n parent.tree,\n )\n // 子树内的 XhMenu 系部件都归子机器\n provideMenu(sub)\n provideContextMenuSub({ parent, value: props.value, disabled: props.disabled })\n // 父层收起(Escape、外点、选中)时本层跟着收,层层传导\n watch(() => parent.api.value.open, (open) => {\n if (!open)\n sub.api.value.setOpen(false)\n })\n return () => slots.default?.({ open: sub.api.value.open, setOpen: sub.api.value.setOpen })\n },\n})\n\nexport const XhContextMenuSubTrigger = defineComponent({\n name: 'XhContextMenuSubTrigger',\n setup(_, { slots }) {\n const handle = useContextMenuSubContext()\n const sub = useMenuContext()\n return () => h('div', {\n // 合并序=子先父后:父层的 data-scope/data-part 胜出,父层的方向键与选中照常认它\n ...mergeProps(\n sub.api.value.getSubmenuTriggerProps({ value: handle.value, disabled: handle.disabled }) as Record<string, unknown>,\n handle.parent.api.value.getItemProps({ value: handle.value, disabled: handle.disabled }) as Record<string, unknown>,\n ),\n // 子菜单的定位锚点就是这一条\n ref: (el: unknown) => {\n sub.triggerRef.value = el as HTMLElement\n },\n }, slots.default?.())\n },\n})\n\nexport const XhContextMenuItemText = defineComponent({\n name: 'XhContextMenuItemText',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuItemIndicator = defineComponent({\n name: 'XhContextMenuItemIndicator',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 条目中的副文本,排在文字下一行 */\nexport const XhContextMenuItemDescription = defineComponent({\n name: 'XhContextMenuItemDescription',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemDescriptionProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuSeparator = defineComponent({\n name: 'XhContextMenuSeparator',\n setup() {\n const ctx = useContextMenuContext()\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\nexport const XhContextMenuArrow = defineComponent({\n name: 'XhContextMenuArrow',\n setup() {\n const ctx = useContextMenuContext()\n return () => h('div', ctx.api.value.getArrowProps() as Record<string, unknown>)\n },\n})\n\n/** 一段连续的同组条目;不分组的条目各自单独成段。 */\n/**\n * 未写默认插槽时按 collection 铺开的整套结构,作者只提供数据。\n * 与手写部件产出的 DOM 完全一致,需要修改结构时写默认插槽,行为不变。\n * 触发区中放置的内容由作者决定,经 trigger 插槽给出。\n */\nfunction renderDefaultTree(\n collection: readonly ContextMenuNodeMeta[],\n trigger: (VNode | string)[] | null,\n itemSlot?: (node: ContextMenuNodeMeta) => VNode[],\n): VNode[] {\n return [\n h(XhContextMenuTrigger, null, () => trigger ?? []),\n h(XhContextMenuPositioner, null, () => [\n h(XhContextMenuContent, null, () => renderNodes(collection, itemSlot)),\n ]),\n ]\n}\n\n/** content 的内容:分组段铺为 group,段首的分隔线落在 group 外面。 */\nfunction renderNodes(\n collection: readonly ContextMenuNodeMeta[],\n itemSlot?: (node: ContextMenuNodeMeta) => VNode[],\n): VNode[] {\n return groupAdjacentRuns(collection, node => node.group).flatMap((run, runIndex) => {\n const head = run[0]\n // 首条上的标记不产出分隔线:菜单开头不留一道空隔\n const lead = runIndex > 0 && head.separatorBefore\n ? [h(XhContextMenuSeparator, { key: `separator:${head.value}` })]\n : []\n if (head.group == null)\n return [...lead, renderItem(head, itemSlot)]\n const groupLabel = run.find(node => node.groupLabel != null)?.groupLabel ?? null\n return [\n ...lead,\n h(XhContextMenuGroup, { key: `group:${head.group}`, value: head.group }, () => [\n ...(groupLabel != null ? [h(XhContextMenuGroupLabel, null, () => groupLabel)] : []),\n ...run.flatMap((node, index) => [\n ...(index > 0 && node.separatorBefore ? [h(XhContextMenuSeparator, { key: `separator:${node.value}` })] : []),\n renderItem(node, itemSlot),\n ]),\n ]),\n ]\n })\n}\n\n/** 单个条目:标记位排在文字前面,未提供标记位时不铺该部件。 */\nfunction renderItem(\n meta: ContextMenuNodeMeta,\n itemSlot?: (node: ContextMenuNodeMeta) => VNode[],\n): VNode {\n return h(XhContextMenuItem, { key: meta.value, value: meta.value }, () => [\n ...(meta.indicator != null ? [h(XhContextMenuItemIndicator, null, () => meta.indicator)] : []),\n h(XhContextMenuItemText, null, () => itemSlot?.(meta) ?? meta.label),\n ...(meta.description != null ? [h(XhContextMenuItemDescription, null, () => meta.description)] : []),\n ])\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"context-menu.js","names":["mergeVueProps","mergeProps"],"sources":["../../../src/components/context-menu/context-menu.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// 提供 context menu 相关实现。\n\nimport type { Direction, Placement, Size, Tone } from '@xihan-ui/core'\nimport type { ContextMenuAnyItemProps, ContextMenuApi, ContextMenuGroupProps, ContextMenuNode, ContextMenuNodeMeta, ContextMenuRadioValue, ContextMenuSchema, MenuApi } from '@xihan-ui/headless'\nimport type { PropType, SlotsType, VNode } from 'vue'\nimport type { PayloadOf } from '../../runtime/payload'\nimport { groupAdjacentRuns, mergeProps } from '@xihan-ui/core'\nimport { computed, defineComponent, h, mergeProps as mergeVueProps, onBeforeUnmount, ref, watch } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { mergeIntoChild } from '../../runtime/as-child'\nimport { mergePartProps } from '../../runtime/merge-props'\nimport { XhPortal } from '../../runtime/portal'\nimport { useScrollbars } from '../../runtime/use-scrollbars'\nimport { provideMenu, useMenuContext } from '../menu/context'\nimport { useMenuWithParent } from '../menu/use-menu'\nimport {\n provideContextMenu,\n provideContextMenuGroup,\n provideContextMenuItem,\n provideContextMenuSub,\n useContextMenuContext,\n useContextMenuGroupContext,\n useContextMenuItemContext,\n useContextMenuSubContext,\n} from './context'\nimport { useContextMenu } from './use-context-menu'\n\ntype ContextMenuProps = ContextMenuSchema['props']\n\n/** 默认插槽的载荷:右键菜单的展开态与锚点坐标,以及开合、按坐标展开的命令。 */\nexport type ContextMenuRootSlotProps = Pick<ContextMenuApi, 'open' | 'point' | 'setOpen' | 'openAt' | 'checkboxValue' | 'radioValue' | 'setCheckboxValue' | 'setRadioValue'>\n\n/** 子菜单默认插槽的载荷:该层子菜单自己的展开态与开合命令。 */\nexport type ContextMenuSubSlotProps = Pick<MenuApi, 'open' | 'setOpen'>\n\n/** 代铺条目时可逐槽接管的三个插槽;三个都不写即完全按数据铺。 */\nexport interface ContextMenuItemSlots {\n /** 只填条目的文字槽,其余槽照旧由数据铺。 */\n item?: (node: ContextMenuNodeMeta) => VNode[]\n /** 只接管行首那一格,其余槽照旧由数据铺。 */\n ['item-prefix']?: (node: ContextMenuNodeMeta) => VNode[]\n /** 只接管行尾那一格(计数、徽标、次级图标),其余槽照旧由数据铺。 */\n ['item-suffix']?: (node: ContextMenuNodeMeta) => VNode[]\n}\n\nexport const XhContextMenuRoot = defineComponent({\n name: 'XhContextMenuRoot',\n // 缺省值由 connect 与机器给出;普通类型省略 default,Boolean 显式保留 undefined\n props: {\n collection: { type: Array as PropType<ContextMenuNode[]> },\n checkboxValue: { type: Array as PropType<string[]> },\n defaultCheckboxValue: { type: Array as PropType<string[]> },\n radioValue: { type: Object as PropType<ContextMenuRadioValue> },\n defaultRadioValue: { type: Object as PropType<ContextMenuRadioValue> },\n open: { type: Boolean, default: undefined },\n defaultOpen: Boolean,\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n loop: { type: Boolean, default: undefined },\n typeahead: { type: Boolean, default: undefined },\n translations: { type: Object as PropType<ContextMenuProps['translations']> },\n dir: { type: String as PropType<Direction> },\n longPressDelay: { type: Number },\n /** 整张菜单禁用:不再展开,浏览器自己的右键菜单照常出现。 */\n disabled: { type: Boolean, default: undefined },\n tone: { type: String as PropType<Tone> },\n size: { type: String as PropType<Size> },\n },\n // open-change 携带 { open }、select 携带 { value },update:open 携带裸布尔\n emits: {\n 'open-change': (_details: PayloadOf<ContextMenuProps, 'onOpenChange'>) => true,\n 'select': (_details: PayloadOf<ContextMenuProps, 'onSelect'>) => true,\n 'checkbox-value-change': (_details: PayloadOf<ContextMenuProps, 'onCheckboxValueChange'>) => true,\n 'radio-value-change': (_details: PayloadOf<ContextMenuProps, 'onRadioValueChange'>) => true,\n 'update:open': (_open: PayloadOf<ContextMenuProps, 'onOpenChange'>['open']) => true,\n },\n slots: Object as SlotsType<{\n 'default'?: (props: ContextMenuRootSlotProps) => VNode[]\n 'trigger'?: () => VNode[]\n /** 只填条目的文字槽,标记位、副文本与快捷键照旧由数据铺 */\n 'item'?: (node: ContextMenuNodeMeta) => VNode[]\n /** 只接管行首那一格,其余槽照旧由数据铺 */\n 'item-prefix'?: (node: ContextMenuNodeMeta) => VNode[]\n /** 只接管行尾那一格(计数、徽标、次级图标),其余槽照旧由数据铺 */\n 'item-suffix'?: (node: ContextMenuNodeMeta) => VNode[]\n }>,\n setup(props, { slots, emit, expose }) {\n const notifyOpen: ContextMenuProps['onOpenChange'] = (details) => {\n emit('open-change', details)\n emit('update:open', details.open)\n }\n const notifySelect: ContextMenuProps['onSelect'] = details => emit('select', details)\n const ctx = useContextMenu(\n withXhConfig('context-menu', props) as ContextMenuProps,\n notifyOpen,\n notifySelect,\n details => emit('checkbox-value-change', details),\n details => emit('radio-value-change', details),\n )\n provideContextMenu(ctx)\n // 菜单钉在坐标上,坐标只能由 openAt 交进来。默认插槽那条路从载荷里拿,\n // 只交 collection 的那条路没有载荷,所以同一组命令也从实例上暴露一份。\n expose({\n openAt: (x: number, y: number) => ctx.api.value.openAt(x, y),\n setOpen: (open: boolean) => ctx.api.value.setOpen(open),\n get open() {\n return ctx.api.value.open\n },\n get point() {\n return ctx.api.value.point\n },\n })\n return () => h(\n 'div',\n ctx.api.value.getRootProps() as Record<string, unknown>,\n slots.default\n ? slots.default({\n open: ctx.api.value.open,\n point: ctx.api.value.point,\n setOpen: ctx.api.value.setOpen,\n openAt: ctx.api.value.openAt,\n checkboxValue: ctx.api.value.checkboxValue,\n radioValue: ctx.api.value.radioValue,\n setCheckboxValue: ctx.api.value.setCheckboxValue,\n setRadioValue: ctx.api.value.setRadioValue,\n })\n : props.collection\n ? renderDefaultTree(ctx.api.value.collection, slots.trigger?.() ?? null, { 'item': slots.item, 'item-prefix': slots['item-prefix'], 'item-suffix': slots['item-suffix'] })\n : [],\n )\n },\n})\n\nexport const XhContextMenuTrigger = defineComponent({\n name: 'XhContextMenuTrigger',\n // 直通属性自己合:Vue 默认把作者的处理器排在部件的后面,这里改成作者先跑\n inheritAttrs: false,\n props: {\n /** 借用作者的子节点作为触发器,不再渲染自己的包裹元素;子节点须恰好一个。 */\n asChild: Boolean,\n },\n setup(props, { slots, attrs }) {\n const ctx = useContextMenuContext()\n // 触发区渲染为 div,语义由 connect 打上的 ARIA 属性给出\n return () => {\n const part = mergePartProps({\n ...ctx.api.value.getTriggerProps() as Record<string, unknown>,\n ref: (el: unknown) => { ctx.triggerRef.value = el as HTMLElement },\n }, attrs)\n const children = slots.default?.()\n // asChild:把触发器属性合到作者的节点上,不再自己渲染包裹元素\n if (props.asChild) {\n const merged = mergeIntoChild(children, part, 'context-menu')\n if (merged)\n return merged\n }\n return h('div', part, children)\n }\n },\n})\n\nexport const XhContextMenuPositioner = defineComponent({\n name: 'XhContextMenuPositioner',\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 = useContextMenuContext()\n // 条目列表的自绘条:与 content 同级、绝对定位不占布局,壳是这层已经 fixed 的 positioner\n // 浮层里的条子走 4px 档\n const bars = useScrollbars({ scrollable: () => ctx.contentRef.value, props: { size: 'sm' } })\n // 搬到 portal 落点:留在原地的话,宿主祖先只要建了层叠上下文就能盖住浮层\n return () => h(XhPortal, { to: props.container ?? ctx.portalTarget.value, source: ctx.triggerRef }, () => [\n h('div', {\n ...mergeVueProps(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\nexport const XhContextMenuContent = defineComponent({\n name: 'XhContextMenuContent',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n return () => h('div', {\n ...ctx.api.value.getContentProps() as Record<string, unknown>,\n // 收起跟着退场闸门走:皮肤刻意没给 content 补 [hidden]{display:none}(补了退场\n // 就一帧都播不出来),所以真正的收起落成内联 display——节点始终留在原地\n style: ctx.visible.value ? undefined : { display: 'none' },\n ref: (el: unknown) => { ctx.contentRef.value = el as HTMLElement },\n }, slots.default?.())\n },\n})\n\nexport const XhContextMenuGroup = defineComponent({\n name: 'XhContextMenuGroup',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useContextMenuContext()\n const group = computed<ContextMenuGroupProps>(() => ({ value: props.value }))\n provideContextMenuGroup({ group })\n return () => h('div', ctx.api.value.getGroupProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuRadioGroup = defineComponent({\n name: 'XhContextMenuRadioGroup',\n props: {\n value: { type: String, required: true },\n },\n setup(props, { slots }) {\n const ctx = useContextMenuContext()\n const group = computed<ContextMenuGroupProps>(() => ({ value: props.value }))\n provideContextMenuGroup({ group })\n return () => h('div', ctx.api.value.getRadioGroupProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuGroupLabel = defineComponent({\n name: 'XhContextMenuGroupLabel',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { group } = useContextMenuGroupContext()\n return () => h('span', ctx.api.value.getGroupLabelProps(group.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nfunction createContextMenuItemComponent(name: string, kind: 'item' | 'checkbox' | 'radio'): ReturnType<typeof defineComponent> {\n return defineComponent({\n name,\n props: {\n value: { type: String, required: true },\n disabled: { type: Boolean, default: undefined },\n closeOnSelect: { type: Boolean, default: undefined },\n },\n setup(props, { slots }) {\n const ctx = useContextMenuContext()\n const radioGroup = kind === 'radio' ? useContextMenuGroupContext() : null\n const item = computed<ContextMenuAnyItemProps>(() => kind === 'radio'\n ? { value: props.value, disabled: props.disabled, closeOnSelect: props.closeOnSelect, kind, group: radioGroup!.group.value.value }\n : kind === 'checkbox'\n ? { value: props.value, disabled: props.disabled, closeOnSelect: props.closeOnSelect, kind }\n : { value: props.value, disabled: props.disabled, kind })\n provideContextMenuItem({ item })\n // 本条目持有焦点时,value 变更按新值重报焦点条目,卸载时上报焦点丢失\n const itemEl = ref<HTMLElement | null>(null)\n watch(() => props.value, (next, prev) => {\n if (next === prev)\n return\n const { service } = ctx\n if (service.getStatus() !== 'Started')\n return\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.FOCUS', value: next })\n })\n onBeforeUnmount(() => {\n const { service } = ctx\n // 根已停机时不再送事件\n if (service.getStatus() !== 'Started')\n return\n // 按「本节点当下正持有焦点」判定,不按 value 比对\n if (itemEl.value && service.scope.getActiveElement() === itemEl.value)\n service.send({ type: 'ITEM.LOST' })\n })\n return () => {\n const declaration = item.value\n const part = declaration.kind === 'checkbox'\n ? ctx.api.value.getCheckboxItemProps(declaration)\n : declaration.kind === 'radio'\n ? ctx.api.value.getRadioItemProps(declaration)\n : ctx.api.value.getItemProps(declaration)\n return h('div', { ...part as Record<string, unknown>, ref: itemEl }, slots.default?.())\n }\n },\n })\n}\n\nexport const XhContextMenuItem = /* @__PURE__ */ createContextMenuItemComponent('XhContextMenuItem', 'item')\nexport const XhContextMenuCheckboxItem = /* @__PURE__ */ createContextMenuItemComponent('XhContextMenuCheckboxItem', 'checkbox')\nexport const XhContextMenuRadioItem = /* @__PURE__ */ createContextMenuItemComponent('XhContextMenuRadioItem', 'radio')\n\n/**\n * 右键菜单中的子菜单:子层运行一台 submenu 模式的 menu 状态机,触发条目由\n * XhContextMenuSubTrigger 渲染为父层条目与子层触发器的双重身份。\n * 子层内部使用 XhMenu 系部件(再往深嵌套即 menu 嵌套 menu)。本身不渲染节点。\n */\nexport const XhContextMenuSub = defineComponent({\n name: 'XhContextMenuSub',\n props: {\n /** 它在父右键菜单中的条目身份。 */\n value: { type: String, required: true },\n disabled: { type: Boolean, default: undefined },\n placement: { type: String as PropType<Placement> },\n offset: { type: Number },\n loop: { type: Boolean, default: undefined },\n openOnHover: { type: Boolean, default: undefined },\n hoverOpenDelay: { type: Number },\n /** 文字方向;默认继承父层。子层被迁移到浮层落点,无法继承父层的方向。 */\n dir: { type: String as PropType<Direction> },\n /** 语气;默认继承父层。子层是浮层落点下的同级节点,CSS 私有槽无法继承。 */\n tone: { type: String as PropType<Tone> },\n /** 尺寸;默认继承父层,理由同 tone。 */\n size: { type: String as PropType<Size> },\n hoverCloseDelay: { type: Number },\n },\n slots: Object as SlotsType<{\n default?: (props: ContextMenuSubSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const parent = useContextMenuContext()\n const sub = useMenuWithParent(\n {\n ...props,\n submenu: true,\n dir: props.dir ?? parent.service.prop('dir'),\n tone: props.tone ?? parent.service.prop('tone'),\n size: props.size ?? parent.service.prop('size'),\n },\n undefined,\n parent.tree,\n )\n // 子树内的 XhMenu 系部件都归子机器\n provideMenu(sub)\n provideContextMenuSub({ parent, value: props.value, disabled: props.disabled })\n // 父层收起(Escape、外点、选中)时本层跟着收,层层传导\n watch(() => parent.api.value.open, (open) => {\n if (!open)\n sub.api.value.setOpen(false)\n })\n return () => slots.default?.({ open: sub.api.value.open, setOpen: sub.api.value.setOpen })\n },\n})\n\nexport const XhContextMenuSubTrigger = defineComponent({\n name: 'XhContextMenuSubTrigger',\n setup(_, { slots }) {\n const handle = useContextMenuSubContext()\n const sub = useMenuContext()\n return () => h('div', {\n // 合并序=子先父后:父层的 data-scope/data-part 胜出,父层的方向键与选中照常认它\n ...mergeProps(\n sub.api.value.getSubmenuTriggerProps({ value: handle.value, disabled: handle.disabled }) as Record<string, unknown>,\n handle.parent.api.value.getItemProps({ value: handle.value, disabled: handle.disabled }) as Record<string, unknown>,\n ),\n // 子菜单的定位锚点就是这一条\n ref: (el: unknown) => {\n sub.triggerRef.value = el as HTMLElement\n },\n }, slots.default?.())\n },\n})\n\nexport const XhContextMenuItemText = defineComponent({\n name: 'XhContextMenuItemText',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemTextProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuItemIndicator = defineComponent({\n name: 'XhContextMenuItemIndicator',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemIndicatorProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 条目中的副文本,排在文字下一行 */\nexport const XhContextMenuItemDescription = defineComponent({\n name: 'XhContextMenuItemDescription',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemDescriptionProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 条目中的快捷键提示,贴行尾;纯装饰,读屏从条目文字取意 */\nexport const XhContextMenuItemShortcut = defineComponent({\n name: 'XhContextMenuItemShortcut',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemShortcutProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 条目行尾的作者内容(计数、徽标、次级图标);家族只管落位,不规定字号与颜色 */\nexport const XhContextMenuItemSuffix = defineComponent({\n name: 'XhContextMenuItemSuffix',\n setup(_, { slots }) {\n const ctx = useContextMenuContext()\n const { item } = useContextMenuItemContext()\n return () => h('span', ctx.api.value.getItemSuffixProps(item.value) as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhContextMenuSeparator = defineComponent({\n name: 'XhContextMenuSeparator',\n setup() {\n const ctx = useContextMenuContext()\n return () => h('div', ctx.api.value.getSeparatorProps() as Record<string, unknown>)\n },\n})\n\nexport const XhContextMenuArrow = defineComponent({\n name: 'XhContextMenuArrow',\n setup() {\n const ctx = useContextMenuContext()\n return () => h('div', ctx.api.value.getArrowProps() as Record<string, unknown>)\n },\n})\n\n/** 一段连续的同组条目;不分组的条目各自单独成段。 */\n/**\n * 未写默认插槽时按 collection 铺开的整套结构,作者只提供数据。\n * 与手写部件产出的 DOM 完全一致,需要修改结构时写默认插槽,行为不变。\n * 触发区中放置的内容由作者决定,经 trigger 插槽给出。\n */\nfunction renderDefaultTree(\n collection: readonly ContextMenuNodeMeta[],\n trigger: (VNode | string)[] | null,\n itemSlots: ContextMenuItemSlots,\n): VNode[] {\n return [\n h(XhContextMenuTrigger, null, () => trigger ?? []),\n h(XhContextMenuPositioner, null, () => [\n h(XhContextMenuContent, null, () => renderNodes(collection, itemSlots)),\n ]),\n ]\n}\n\n/** content 的内容:分组段铺为 group,段首的分隔线落在 group 外面。 */\nfunction renderNodes(\n collection: readonly ContextMenuNodeMeta[],\n itemSlots: ContextMenuItemSlots,\n): VNode[] {\n return groupAdjacentRuns(collection, node => node.group).flatMap((run, runIndex) => {\n const head = run[0]\n // 首条上的标记不产出分隔线:菜单开头不留一道空隔\n const lead = runIndex > 0 && head.separatorBefore\n ? [h(XhContextMenuSeparator, { key: `separator:${head.value}` })]\n : []\n if (head.group == null)\n return [...lead, renderItem(head, itemSlots)]\n const groupLabel = run.find(node => node.groupLabel != null)?.groupLabel ?? null\n return [\n ...lead,\n h(head.kind === 'radio' ? XhContextMenuRadioGroup : XhContextMenuGroup, { key: `group:${head.group}`, value: head.group }, () => [\n ...(groupLabel != null ? [h(XhContextMenuGroupLabel, null, () => groupLabel)] : []),\n ...run.flatMap((node, index) => [\n ...(index > 0 && node.separatorBefore ? [h(XhContextMenuSeparator, { key: `separator:${node.value}` })] : []),\n renderItem(node, itemSlots),\n ]),\n ]),\n ]\n })\n}\n\n/**\n * 单个条目:标记位排在文字前面,未提供标记位时不铺该部件。\n * `item-prefix` / `item-suffix` 插槽各接管首尾一格,其余槽照旧由数据铺;\n * 行首那一格与数据里的 `indicator` 同一个部件,插槽在场时以它为准。\n */\nfunction renderItem(\n meta: ContextMenuNodeMeta,\n itemSlots: ContextMenuItemSlots,\n): VNode {\n const prefix = itemSlots['item-prefix']\n const suffix = itemSlots['item-suffix']\n const Item = meta.kind === 'checkbox' ? XhContextMenuCheckboxItem : meta.kind === 'radio' ? XhContextMenuRadioItem : XhContextMenuItem\n return h(Item, { key: meta.value, value: meta.value, closeOnSelect: meta.closeOnSelect }, () => [\n ...(prefix\n ? [h(XhContextMenuItemIndicator, null, () => prefix(meta))]\n : meta.indicator != null\n ? [h(XhContextMenuItemIndicator, null, () => meta.indicator)]\n : meta.kind !== 'item' ? [h(XhContextMenuItemIndicator)] : []),\n h(XhContextMenuItemText, null, () => itemSlots.item?.(meta) ?? meta.label),\n ...(meta.description != null ? [h(XhContextMenuItemDescription, null, () => meta.description)] : []),\n ...(meta.shortcut != null ? [h(XhContextMenuItemShortcut, null, () => meta.shortcut)] : []),\n ...(suffix ? [h(XhContextMenuItemSuffix, null, () => suffix(meta))] : []),\n ])\n}\n"],"mappings":"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"}
@@ -16,7 +16,7 @@ function provideContextMenuItem(ctx) {
16
16
  }
17
17
  function useContextMenuItemContext() {
18
18
  const ctx = inject(ITEM_KEY, null);
19
- if (!ctx) throw new Error("[xh] ContextMenu 条目子部件必须用在 XhContextMenuItem 内");
19
+ if (!ctx) throw new Error("[xh] ContextMenu 条目子部件必须用在 XhContextMenuItem / XhContextMenuCheckboxItem / XhContextMenuRadioItem 内");
20
20
  return ctx;
21
21
  }
22
22
  function provideContextMenuGroup(ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/context-menu/context.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// 提供 context 相关实现。\n\nimport type { ContextMenuGroupProps, ContextMenuItemProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { ContextMenuContext } from './use-context-menu'\nimport { inject, provide } from 'vue'\n\n/** 条目声明的值与禁用,供 item-text / item-indicator 等子部件复用同一份声明。 */\nexport interface ContextMenuItemContext {\n item: ComputedRef<ContextMenuItemProps>\n}\n\n/** 分组声明的身份,供分组标题取到同一个值(标题的 id 由它派生)。 */\nexport interface ContextMenuGroupContext {\n group: ComputedRef<ContextMenuGroupProps>\n}\n\nconst KEY: InjectionKey<ContextMenuContext> = Symbol.for('xh-context-menu')\nconst ITEM_KEY: InjectionKey<ContextMenuItemContext> = Symbol.for('xh-context-menu-item')\nconst GROUP_KEY: InjectionKey<ContextMenuGroupContext> = Symbol.for('xh-context-menu-group')\n\nexport function provideContextMenu(ctx: ContextMenuContext): void {\n provide(KEY, ctx)\n}\n\nexport function useContextMenuContext(): ContextMenuContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ContextMenu 部件必须用在 XhContextMenuRoot 内')\n return ctx\n}\n\nexport function provideContextMenuItem(ctx: ContextMenuItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useContextMenuItemContext(): ContextMenuItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] ContextMenu 条目子部件必须用在 XhContextMenuItem 内')\n return ctx\n}\n\nexport function provideContextMenuGroup(ctx: ContextMenuGroupContext): void {\n provide(GROUP_KEY, ctx)\n}\n\nexport function useContextMenuGroupContext(): ContextMenuGroupContext {\n const ctx = inject(GROUP_KEY, null)\n if (!ctx)\n throw new Error('[xh] ContextMenu 分组标题必须用在 XhContextMenuGroup 内')\n return ctx\n}\n\n/** 子菜单触发条目要同时访问父右键菜单与本子菜单,这里保存父层句柄与它在父层中的身份。 */\nexport interface ContextMenuSubHandle {\n parent: ContextMenuContext\n value: string\n disabled?: boolean\n}\n\nconst SUB_KEY: InjectionKey<ContextMenuSubHandle> = Symbol.for('xh-context-menu-sub')\n\nexport function provideContextMenuSub(handle: ContextMenuSubHandle): void {\n provide(SUB_KEY, handle)\n}\n\nexport function useContextMenuSubContext(): ContextMenuSubHandle {\n const handle = inject(SUB_KEY, null)\n if (!handle)\n throw new Error('[xh] ContextMenuSubTrigger 必须用在 XhContextMenuSub 内')\n return handle\n}\n"],"mappings":";;AAsBA,MAAM,MAAwC,OAAO,IAAI,iBAAiB;AAC1E,MAAM,WAAiD,OAAO,IAAI,sBAAsB;AACxF,MAAM,YAAmD,OAAO,IAAI,uBAAuB;AAE3F,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;AAEA,SAAgB,uBAAuB,KAAmC;CACxE,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,4BAAoD;CAClE,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,gDAAgD;CAClE,OAAO;AACT;AAEA,SAAgB,wBAAwB,KAAoC;CAC1E,QAAQ,WAAW,GAAG;AACxB;AAEA,SAAgB,6BAAsD;CACpE,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,gDAAgD;CAClE,OAAO;AACT;AASA,MAAM,UAA8C,OAAO,IAAI,qBAAqB;AAEpF,SAAgB,sBAAsB,QAAoC;CACxE,QAAQ,SAAS,MAAM;AACzB;AAEA,SAAgB,2BAAiD;CAC/D,MAAM,SAAS,OAAO,SAAS,IAAI;CACnC,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,oDAAoD;CACtE,OAAO;AACT"}
1
+ {"version":3,"file":"context.js","names":[],"sources":["../../../src/components/context-menu/context.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// 提供 context 相关实现。\n\nimport type { ContextMenuAnyItemProps, ContextMenuGroupProps } from '@xihan-ui/headless'\nimport type { ComputedRef, InjectionKey } from 'vue'\nimport type { ContextMenuContext } from './use-context-menu'\nimport { inject, provide } from 'vue'\n\n/** 条目声明的值与禁用,供 item-text / item-indicator 等子部件复用同一份声明。 */\nexport interface ContextMenuItemContext {\n item: ComputedRef<ContextMenuAnyItemProps>\n}\n\n/** 分组声明的身份,供分组标题取到同一个值(标题的 id 由它派生)。 */\nexport interface ContextMenuGroupContext {\n group: ComputedRef<ContextMenuGroupProps>\n}\n\nconst KEY: InjectionKey<ContextMenuContext> = Symbol.for('xh-context-menu')\nconst ITEM_KEY: InjectionKey<ContextMenuItemContext> = Symbol.for('xh-context-menu-item')\nconst GROUP_KEY: InjectionKey<ContextMenuGroupContext> = Symbol.for('xh-context-menu-group')\n\nexport function provideContextMenu(ctx: ContextMenuContext): void {\n provide(KEY, ctx)\n}\n\nexport function useContextMenuContext(): ContextMenuContext {\n const ctx = inject(KEY, null)\n if (!ctx)\n throw new Error('[xh] ContextMenu 部件必须用在 XhContextMenuRoot 内')\n return ctx\n}\n\nexport function provideContextMenuItem(ctx: ContextMenuItemContext): void {\n provide(ITEM_KEY, ctx)\n}\n\nexport function useContextMenuItemContext(): ContextMenuItemContext {\n const ctx = inject(ITEM_KEY, null)\n if (!ctx)\n throw new Error('[xh] ContextMenu 条目子部件必须用在 XhContextMenuItem / XhContextMenuCheckboxItem / XhContextMenuRadioItem 内')\n return ctx\n}\n\nexport function provideContextMenuGroup(ctx: ContextMenuGroupContext): void {\n provide(GROUP_KEY, ctx)\n}\n\nexport function useContextMenuGroupContext(): ContextMenuGroupContext {\n const ctx = inject(GROUP_KEY, null)\n if (!ctx)\n throw new Error('[xh] ContextMenu 分组标题必须用在 XhContextMenuGroup 内')\n return ctx\n}\n\n/** 子菜单触发条目要同时访问父右键菜单与本子菜单,这里保存父层句柄与它在父层中的身份。 */\nexport interface ContextMenuSubHandle {\n parent: ContextMenuContext\n value: string\n disabled?: boolean\n}\n\nconst SUB_KEY: InjectionKey<ContextMenuSubHandle> = Symbol.for('xh-context-menu-sub')\n\nexport function provideContextMenuSub(handle: ContextMenuSubHandle): void {\n provide(SUB_KEY, handle)\n}\n\nexport function useContextMenuSubContext(): ContextMenuSubHandle {\n const handle = inject(SUB_KEY, null)\n if (!handle)\n throw new Error('[xh] ContextMenuSubTrigger 必须用在 XhContextMenuSub 内')\n return handle\n}\n"],"mappings":";;AAsBA,MAAM,MAAwC,OAAO,IAAI,iBAAiB;AAC1E,MAAM,WAAiD,OAAO,IAAI,sBAAsB;AACxF,MAAM,YAAmD,OAAO,IAAI,uBAAuB;AAE3F,SAAgB,mBAAmB,KAA+B;CAChE,QAAQ,KAAK,GAAG;AAClB;AAEA,SAAgB,wBAA4C;CAC1D,MAAM,MAAM,OAAO,KAAK,IAAI;CAC5B,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,6CAA6C;CAC/D,OAAO;AACT;AAEA,SAAgB,uBAAuB,KAAmC;CACxE,QAAQ,UAAU,GAAG;AACvB;AAEA,SAAgB,4BAAoD;CAClE,MAAM,MAAM,OAAO,UAAU,IAAI;CACjC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,qGAAqG;CACvH,OAAO;AACT;AAEA,SAAgB,wBAAwB,KAAoC;CAC1E,QAAQ,WAAW,GAAG;AACxB;AAEA,SAAgB,6BAAsD;CACpE,MAAM,MAAM,OAAO,WAAW,IAAI;CAClC,IAAI,CAAC,KACH,MAAM,IAAI,MAAM,gDAAgD;CAClE,OAAO;AACT;AASA,MAAM,UAA8C,OAAO,IAAI,qBAAqB;AAEpF,SAAgB,sBAAsB,QAAoC;CACxE,QAAQ,SAAS,MAAM;AACzB;AAEA,SAAgB,2BAAiD;CAC/D,MAAM,SAAS,OAAO,SAAS,IAAI;CACnC,IAAI,CAAC,QACH,MAAM,IAAI,MAAM,oDAAoD;CACtE,OAAO;AACT"}
@@ -15,7 +15,7 @@ interface ContextMenuContext {
15
15
  /** 浮层迁移到的位置:全局配置的 portalContainer > body。 */
16
16
  portalTarget: ComputedRef<string | Element>;
17
17
  }
18
- declare function useContextMenu(props: ContextMenuSchema['props'], onOpenChange?: ContextMenuSchema['props']['onOpenChange'], onSelect?: ContextMenuSchema['props']['onSelect']): ContextMenuContext;
18
+ declare function useContextMenu(props: ContextMenuSchema['props'], onOpenChange?: ContextMenuSchema['props']['onOpenChange'], onSelect?: ContextMenuSchema['props']['onSelect'], onCheckboxValueChange?: ContextMenuSchema['props']['onCheckboxValueChange'], onRadioValueChange?: ContextMenuSchema['props']['onRadioValueChange']): ContextMenuContext;
19
19
  //#endregion
20
20
  export { ContextMenuContext, useContextMenu };
21
21
  //# sourceMappingURL=use-context-menu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-context-menu.d.ts","names":[],"sources":["../../../src/components/context-menu/use-context-menu.ts"],"mappings":";;;;UAoBiB;EACf,SAAS,QAAQ;EACjB,KAAK,YAAY;EACjB,YAAY,IAAI;EAChB,eAAe,IAAI;EACnB,YAAY,IAAI;;EAEhB,MAAM;;EAEN,SAAS;;EAET,cAAc,qBAAqB;;iBAGrB,eACd,OAAO,4BACP,eAAe,4CACf,WAAW,yCACV"}
1
+ {"version":3,"file":"use-context-menu.d.ts","names":[],"sources":["../../../src/components/context-menu/use-context-menu.ts"],"mappings":";;;;UAoBiB;EACf,SAAS,QAAQ;EACjB,KAAK,YAAY;EACjB,YAAY,IAAI;EAChB,eAAe,IAAI;EACnB,YAAY,IAAI;;EAEhB,MAAM;;EAEN,SAAS;;EAET,cAAc,qBAAqB;;iBAGrB,eACd,OAAO,4BACP,eAAe,4CACf,WAAW,wCACX,wBAAwB,qDACxB,qBAAqB,mDACpB"}
@@ -8,7 +8,7 @@ import { createRuntimeConfig, createScope } from "@xihan-ui/core";
8
8
  import { connectContextMenu, contextMenuMachine, createMenuTreeNode } from "@xihan-ui/headless";
9
9
  import { createPositionEngine } from "@xihan-ui/position";
10
10
  //#region src/components/context-menu/use-context-menu.ts
11
- function useContextMenu(props, onOpenChange, onSelect) {
11
+ function useContextMenu(props, onOpenChange, onSelect, onCheckboxValueChange, onRadioValueChange) {
12
12
  const xhConfig = useXhConfig();
13
13
  const triggerRef = ref(null);
14
14
  const positionerRef = ref(null);
@@ -26,7 +26,9 @@ function useContextMenu(props, onOpenChange, onSelect) {
26
26
  service = useMachine(contextMenuMachine, () => ({
27
27
  ...props,
28
28
  onOpenChange,
29
- onSelect
29
+ onSelect,
30
+ onCheckboxValueChange,
31
+ onRadioValueChange
30
32
  }), scope);
31
33
  let config = null;
32
34
  if (typeof document !== "undefined") {
@@ -1 +1 @@
1
- {"version":3,"file":"use-context-menu.js","names":[],"sources":["../../../src/components/context-menu/use-context-menu.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 context menu 相关实现。\n\nimport type { Cleanup, Layer, RuntimeConfig, Service } from '@xihan-ui/core'\nimport type { ContextMenuApi, ContextMenuSchema, MenuTreeNode } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/core'\nimport { connectContextMenu, contextMenuMachine, createMenuTreeNode } from '@xihan-ui/headless'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { useXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { useOverlayExit } from '../../runtime/use-overlay-exit'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface ContextMenuContext {\n service: Service<ContextMenuSchema>\n api: ComputedRef<ContextMenuApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 子菜单经 Portal 分离后的逻辑父节点。 */\n tree: MenuTreeNode\n /** 当前是否应当渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n /** 浮层迁移到的位置:全局配置的 portalContainer > body。 */\n portalTarget: ComputedRef<string | Element>\n}\n\nexport function useContextMenu(\n props: ContextMenuSchema['props'],\n onOpenChange?: ContextMenuSchema['props']['onOpenChange'],\n onSelect?: ContextMenuSchema['props']['onSelect'],\n): ContextMenuContext {\n const xhConfig = useXhConfig()\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n let service: Service<ContextMenuSchema> | null = null\n const tree = createMenuTreeNode({\n getPositioner: () => positionerRef.value,\n isOpen: () => service?.state.get() === 'open',\n close: () => service?.send({ type: 'CLOSE' }),\n isRoot: () => true,\n onRootSelect: details => onSelect?.(details),\n })\n service = useMachine(contextMenuMachine, () => ({ ...props, onOpenChange, onSelect }), scope)\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n let config: RuntimeConfig | null = null\n\n if (typeof document !== 'undefined') {\n config = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config!.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 触发区记为本层分支,展开着再右键可就地换坐标;左键关闭由 connect 在 pointerdown 上收口。\n // 浮层壳一并记上:条目列表之外还浮着自绘滚动条,按住它拖动不该把菜单消解掉\n branches: () => [triggerRef.value, positionerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点是光标坐标,故无 getAnchorEl\n service.refs.set('config', config!)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getFloatingEl', () => positionerRef.value)\n // 触发区兼作两用:收起时焦点归还它,没有光标坐标时它的起始角就是锚点\n service.refs.set('getTriggerEl', () => triggerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectContextMenu(service, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({\n config,\n isOpen: () => api.value.open,\n contentRef,\n onPresence: presence => service.refs.set('presence', presence),\n })\n // 先问全局配置的落点,没有才落 body\n const portalTarget = computed<string | Element>(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? 'body')\n\n return { visible, service, api, triggerRef, positionerRef, contentRef, tree, portalTarget }\n}\n"],"mappings":";;;;;;;;;;AAkCA,SAAgB,eACd,OACA,cACA,UACoB;CACpB,MAAM,WAAW,YAAY;CAC7B,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,IAAI,UAA6C;CACjD,MAAM,OAAO,mBAAmB;EAC9B,qBAAqB,cAAc;EACnC,cAAc,SAAS,MAAM,IAAI,MAAM;EACvC,aAAa,SAAS,KAAK,EAAE,MAAM,QAAQ,CAAC;EAC5C,cAAc;EACd,eAAc,YAAW,WAAW,OAAO;CAC7C,CAAC;CACD,UAAU,WAAW,2BAA2B;EAAE,GAAG;EAAO;EAAc;CAAS,IAAI,KAAK;CAG5F,IAAI,SAA+B;CAEnC,IAAI,OAAO,aAAa,aAAa;EACnC,SAAS,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG1D,MAAM,sBAA0D,OAAQ,cAAc,SAAS;GAC7F,MAAM;GACN,YAAY,WAAW;GAGvB,gBAAgB,CAAC,WAAW,OAAO,cAAc,KAAK,CAAC,CAAC,OAAO,OAAO;GACtE,eAAe;GACf,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAO;EAClC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAE3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;EACvD,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAEA,MAAM,MAAM,eAAe,mBAAmB,SAAS,YAAY,CAAC;CAEpE,MAAM,UAAU,eAAe;EAC7B;EACA,cAAc,IAAI,MAAM;EACxB;EACA,aAAY,aAAY,QAAQ,KAAK,IAAI,YAAY,QAAQ;CAC/D,CAAC;CAED,MAAM,eAAe,eAAiC,SAAS,MAAM,kBAAkB,KAAK,QAAQ,gBAAgB,KAAK,MAAM;CAE/H,OAAO;EAAE;EAAS;EAAS;EAAK;EAAY;EAAe;EAAY;EAAM;CAAa;AAC5F"}
1
+ {"version":3,"file":"use-context-menu.js","names":[],"sources":["../../../src/components/context-menu/use-context-menu.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 context menu 相关实现。\n\nimport type { Cleanup, Layer, RuntimeConfig, Service } from '@xihan-ui/core'\nimport type { ContextMenuApi, ContextMenuSchema, MenuTreeNode } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/core'\nimport { connectContextMenu, contextMenuMachine, createMenuTreeNode } from '@xihan-ui/headless'\nimport { createPositionEngine } from '@xihan-ui/position'\nimport { computed, ref } from 'vue'\nimport { useXhConfig } from '../../config/config'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { useMachine } from '../../runtime/use-machine'\nimport { useOverlayExit } from '../../runtime/use-overlay-exit'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface ContextMenuContext {\n service: Service<ContextMenuSchema>\n api: ComputedRef<ContextMenuApi>\n triggerRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 子菜单经 Portal 分离后的逻辑父节点。 */\n tree: MenuTreeNode\n /** 当前是否应当渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n /** 浮层迁移到的位置:全局配置的 portalContainer > body。 */\n portalTarget: ComputedRef<string | Element>\n}\n\nexport function useContextMenu(\n props: ContextMenuSchema['props'],\n onOpenChange?: ContextMenuSchema['props']['onOpenChange'],\n onSelect?: ContextMenuSchema['props']['onSelect'],\n onCheckboxValueChange?: ContextMenuSchema['props']['onCheckboxValueChange'],\n onRadioValueChange?: ContextMenuSchema['props']['onRadioValueChange'],\n): ContextMenuContext {\n const xhConfig = useXhConfig()\n const triggerRef = ref<HTMLElement | null>(null)\n const positionerRef = ref<HTMLElement | null>(null)\n const contentRef = ref<HTMLElement | null>(null)\n\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n let service: Service<ContextMenuSchema> | null = null\n const tree = createMenuTreeNode({\n getPositioner: () => positionerRef.value,\n isOpen: () => service?.state.get() === 'open',\n close: () => service?.send({ type: 'CLOSE' }),\n isRoot: () => true,\n onRootSelect: details => onSelect?.(details),\n })\n service = useMachine(contextMenuMachine, () => ({ ...props, onOpenChange, onSelect, onCheckboxValueChange, onRadioValueChange }), scope)\n\n // 服务端没有 DOM、也就没有退场:config 传 null 时闸门退化成「跟着展开态」\n let config: RuntimeConfig | null = null\n\n if (typeof document !== 'undefined') {\n config = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config!.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 触发区记为本层分支,展开着再右键可就地换坐标;左键关闭由 connect 在 pointerdown 上收口。\n // 浮层壳一并记上:条目列表之外还浮着自绘滚动条,按住它拖动不该把菜单消解掉\n branches: () => [triggerRef.value, positionerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n surfaces: () => [],\n })\n\n // 定位引擎由适配器注入,机器只经端口驱动;锚点是光标坐标,故无 getAnchorEl\n service.refs.set('config', config!)\n service.refs.set('registerLayer', registerLayer)\n service.refs.set('position', createPositionEngine())\n service.refs.set('getFloatingEl', () => positionerRef.value)\n // 触发区兼作两用:收起时焦点归还它,没有光标坐标时它的起始角就是锚点\n service.refs.set('getTriggerEl', () => triggerRef.value)\n service.refs.set('getContentEl', () => contentRef.value)\n }\n\n const api = computed(() => connectContextMenu(service, vueNormalize))\n // 退场闸门:收起从跟着 open 走,改成跟着 presence 走\n const visible = useOverlayExit({\n config,\n isOpen: () => api.value.open,\n contentRef,\n onPresence: presence => service.refs.set('presence', presence),\n })\n // 先问全局配置的落点,没有才落 body\n const portalTarget = computed<string | Element>(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? 'body')\n\n return { visible, service, api, triggerRef, positionerRef, contentRef, tree, portalTarget }\n}\n"],"mappings":";;;;;;;;;;AAkCA,SAAgB,eACd,OACA,cACA,UACA,uBACA,oBACoB;CACpB,MAAM,WAAW,YAAY;CAC7B,MAAM,aAAa,IAAwB,IAAI;CAC/C,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,IAAI,UAA6C;CACjD,MAAM,OAAO,mBAAmB;EAC9B,qBAAqB,cAAc;EACnC,cAAc,SAAS,MAAM,IAAI,MAAM;EACvC,aAAa,SAAS,KAAK,EAAE,MAAM,QAAQ,CAAC;EAC5C,cAAc;EACd,eAAc,YAAW,WAAW,OAAO;CAC7C,CAAC;CACD,UAAU,WAAW,2BAA2B;EAAE,GAAG;EAAO;EAAc;EAAU;EAAuB;CAAmB,IAAI,KAAK;CAGvI,IAAI,SAA+B;CAEnC,IAAI,OAAO,aAAa,aAAa;EACnC,SAAS,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG1D,MAAM,sBAA0D,OAAQ,cAAc,SAAS;GAC7F,MAAM;GACN,YAAY,WAAW;GAGvB,gBAAgB,CAAC,WAAW,OAAO,cAAc,KAAK,CAAC,CAAC,OAAO,OAAO;GACtE,eAAe;GACf,gBAAgB,CAAC;EACnB,CAAC;EAGD,QAAQ,KAAK,IAAI,UAAU,MAAO;EAClC,QAAQ,KAAK,IAAI,iBAAiB,aAAa;EAC/C,QAAQ,KAAK,IAAI,YAAY,qBAAqB,CAAC;EACnD,QAAQ,KAAK,IAAI,uBAAuB,cAAc,KAAK;EAE3D,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;EACvD,QAAQ,KAAK,IAAI,sBAAsB,WAAW,KAAK;CACzD;CAEA,MAAM,MAAM,eAAe,mBAAmB,SAAS,YAAY,CAAC;CAEpE,MAAM,UAAU,eAAe;EAC7B;EACA,cAAc,IAAI,MAAM;EACxB;EACA,aAAY,aAAY,QAAQ,KAAK,IAAI,YAAY,QAAQ;CAC/D,CAAC;CAED,MAAM,eAAe,eAAiC,SAAS,MAAM,kBAAkB,KAAK,QAAQ,gBAAgB,KAAK,MAAM;CAE/H,OAAO;EAAE;EAAS;EAAS;EAAK;EAAY;EAAe;EAAY;EAAM;CAAa;AAC5F"}
@@ -1,7 +1,7 @@
1
1
  import { PayloadOf } from "../../runtime/payload.js";
2
2
  import { PropType, SlotsType, VNode } from "vue";
3
3
  import { ControlVariant, Size, Tone } from "@xihan-ui/core";
4
- import { DateFieldApi, DateFieldSchema, DateFieldSegmentState, DateFieldTranslations, DateGranularity, DateSegmentSet, DateSegmentType } from "@xihan-ui/headless";
4
+ import { DateFieldApi, DateFieldSchema, DateFieldSegmentState, DateFieldTranslations, DateGranularity, DateHourCycle, DateSegmentSet, DateSegmentType } from "@xihan-ui/headless";
5
5
  //#region src/components/date-field/date-field.d.ts
6
6
  type DateFieldProps = DateFieldSchema['props'];
7
7
  type SegmentTexts = { readonly [K in DateSegmentType]?: string; };
@@ -33,6 +33,10 @@ declare const XhDateFieldRoot: import("vue").DefineComponent<import("vue").Extra
33
33
  granularity: {
34
34
  type: PropType<DateGranularity>;
35
35
  };
36
+ /** 时刻段的小时制,默认 24;12 时小时段收 1-12 并多出上下午段。 */
37
+ hourCycle: {
38
+ type: PropType<DateHourCycle>;
39
+ };
36
40
  segments: {
37
41
  type: PropType<DateSegmentSet>;
38
42
  };
@@ -97,6 +101,10 @@ declare const XhDateFieldRoot: import("vue").DefineComponent<import("vue").Extra
97
101
  granularity: {
98
102
  type: PropType<DateGranularity>;
99
103
  };
104
+ /** 时刻段的小时制,默认 24;12 时小时段收 1-12 并多出上下午段。 */
105
+ hourCycle: {
106
+ type: PropType<DateHourCycle>;
107
+ };
100
108
  segments: {
101
109
  type: PropType<DateSegmentSet>;
102
110
  };
@@ -1 +1 @@
1
- {"version":3,"file":"date-field.d.ts","names":[],"sources":["../../../src/components/date-field/date-field.ts"],"mappings":";;;;;KAiBK,iBAAiB;KACjB,2BAA2B,KAAK;;KAGzB,yBAAyB,KACnC;;UAce;EACf,SAAS;;cAGE,+BAAe,8BAAA;;IAIC,MAAA;;;IACO,MAAA;;;;;;;;;;;;;;;IAKD,MAAA,SAAS;;;IAEb,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;IAML,MAAA,SAAS;;;IACR,MAAA,SAAS;;;IACd,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;EAIN,iBAAA,UAAA,UAAU;EACZ,iBAAA,QAAA,UAAU;;;IAvBV,MAAA;;;IACO,MAAA;;;;;;;;;;;;;;;IAKD,MAAA,SAAS;;;IAEb,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;IAML,MAAA,SAAS;;;IACR,MAAA,SAAS;;;IACd,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;;;;;EAQvB,WAAC,OAAO,2BAA2B;kCAsB/C;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAM7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAMlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,8BAAA;;IAIQ,MAAA;;;;IAER,MAAA,SAAS;;;;;;IAFD,MAAA;;;;IAER,MAAA,SAAS;;;EAG1B,WAAC,OAAO,8BAA8B;kCAmBlD;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAOlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,sCAAsB,0BAAA,oBAAA,4BAAA;;8BAMjC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"date-field.d.ts","names":[],"sources":["../../../src/components/date-field/date-field.ts"],"mappings":";;;;;KAiBK,iBAAiB;KACjB,2BAA2B,KAAK;;KAGzB,yBAAyB,KACnC;;UAce;EACf,SAAS;;cAGE,+BAAe,8BAAA;;IAIC,MAAA;;;IACO,MAAA;;;;;;;;;;;;;;;IAKD,MAAA,SAAS;;;;IAEX,MAAA,SAAS;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;IAML,MAAA,SAAS;;;IACR,MAAA,SAAS;;;IACd,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;EAIN,iBAAA,UAAA,UAAU;EACZ,iBAAA,QAAA,UAAU;;;IAzBV,MAAA;;;IACO,MAAA;;;;;;;;;;;;;;;IAKD,MAAA,SAAS;;;;IAEX,MAAA,SAAS;;;IAEX,MAAA,SAAS;;;;;;;;;;;;;;;;;;;;;;IAML,MAAA,SAAS;;;IACR,MAAA,SAAS;;;IACd,MAAA,SAAS;;;IACZ,MAAA,SAAS;;;IACT,MAAA,SAAS;;;;;;;;;;;EAQvB,WAAC,OAAO,2BAA2B;kCAsB/C;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAO3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAM7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAMlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,kCAAkB,8BAAA;;IAIQ,MAAA;;;;IAER,MAAA,SAAS;;;;;;IAFD,MAAA;;;;IAER,MAAA,SAAS;;;EAG1B,WAAC,OAAO,8BAA8B;kCAmBlD;cAEW,uCAAuB,0BAAA,oBAAA,4BAAA;;8BAOlC,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,sCAAsB,0BAAA,oBAAA,4BAAA;;8BAMjC,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -14,6 +14,8 @@ const XhDateFieldRoot = defineComponent({
14
14
  locale: { type: String },
15
15
  timeZone: { type: String },
16
16
  granularity: { type: String },
17
+ /** 时刻段的小时制,默认 24;12 时小时段收 1-12 并多出上下午段。 */
18
+ hourCycle: { type: Number },
17
19
  segments: { type: Array },
18
20
  disabled: {
19
21
  type: Boolean,