@xihan-ui/vue 4.2.0 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (791) hide show
  1. package/CHANGELOG.md +788 -0
  2. package/dist/components/accordion/accordion.d.ts +7 -1
  3. package/dist/components/accordion/accordion.d.ts.map +1 -1
  4. package/dist/components/accordion/accordion.js +17 -10
  5. package/dist/components/accordion/accordion.js.map +1 -1
  6. package/dist/components/accordion/use-accordion.d.ts +1 -1
  7. package/dist/components/accordion/use-accordion.js +1 -1
  8. package/dist/components/affix/affix.d.ts +1 -1
  9. package/dist/components/affix/use-affix.d.ts +1 -1
  10. package/dist/components/affix/use-affix.js +1 -1
  11. package/dist/components/alert/alert.d.ts +1 -1
  12. package/dist/components/alert/alert.d.ts.map +1 -1
  13. package/dist/components/alert/alert.js +7 -1
  14. package/dist/components/alert/alert.js.map +1 -1
  15. package/dist/components/alert/use-alert.js +10 -3
  16. package/dist/components/alert/use-alert.js.map +1 -1
  17. package/dist/components/anchor/anchor.d.ts +1 -1
  18. package/dist/components/anchor/use-anchor.d.ts +1 -1
  19. package/dist/components/anchor/use-anchor.js +1 -1
  20. package/dist/components/approval/approval.d.ts +1 -1
  21. package/dist/components/approval/approval.d.ts.map +1 -1
  22. package/dist/components/approval/approval.js +7 -1
  23. package/dist/components/approval/approval.js.map +1 -1
  24. package/dist/components/approval/use-approval.d.ts +4 -1
  25. package/dist/components/approval/use-approval.d.ts.map +1 -1
  26. package/dist/components/approval/use-approval.js +10 -3
  27. package/dist/components/approval/use-approval.js.map +1 -1
  28. package/dist/components/avatar/avatar.d.ts +1 -1
  29. package/dist/components/avatar/use-avatar.d.ts +1 -1
  30. package/dist/components/avatar/use-avatar.js +1 -1
  31. package/dist/components/avatar-group/avatar-group.js +1 -1
  32. package/dist/components/avatar-group/context.d.ts +1 -1
  33. package/dist/components/back-top/back-top.d.ts +1 -1
  34. package/dist/components/back-top/use-back-top.d.ts +1 -1
  35. package/dist/components/back-top/use-back-top.js +1 -1
  36. package/dist/components/badge/badge.d.ts +1 -1
  37. package/dist/components/badge/badge.js +1 -1
  38. package/dist/components/bar-code/bar-code.d.ts +2 -2
  39. package/dist/components/bar-code/bar-code.js +1 -1
  40. package/dist/components/breadcrumb/breadcrumb.d.ts +1 -1
  41. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  42. package/dist/components/breadcrumb/breadcrumb.js +19 -23
  43. package/dist/components/breadcrumb/breadcrumb.js.map +1 -1
  44. package/dist/components/breadcrumb/use-breadcrumb.d.ts +1 -1
  45. package/dist/components/breadcrumb/use-breadcrumb.js +1 -1
  46. package/dist/components/button-group/button-group.js +1 -1
  47. package/dist/components/button.d.ts +1 -1
  48. package/dist/components/button.js +1 -1
  49. package/dist/components/calendar-picker/calendar-picker.d.ts +2 -2
  50. package/dist/components/calendar-picker/calendar-picker.d.ts.map +1 -1
  51. package/dist/components/calendar-picker/calendar-picker.js +1 -0
  52. package/dist/components/calendar-picker/calendar-picker.js.map +1 -1
  53. package/dist/components/calendar-picker/use-calendar-picker.d.ts +1 -1
  54. package/dist/components/calendar-picker/use-calendar-picker.js +1 -1
  55. package/dist/components/calendar-range-picker/calendar-range-picker.d.ts +2 -2
  56. package/dist/components/calendar-range-picker/calendar-range-picker.d.ts.map +1 -1
  57. package/dist/components/calendar-range-picker/calendar-range-picker.js +1 -0
  58. package/dist/components/calendar-range-picker/calendar-range-picker.js.map +1 -1
  59. package/dist/components/calendar-range-picker/use-calendar-range-picker.d.ts +1 -1
  60. package/dist/components/calendar-range-picker/use-calendar-range-picker.js +1 -1
  61. package/dist/components/card/card.d.ts +15 -9
  62. package/dist/components/card/card.d.ts.map +1 -1
  63. package/dist/components/card/card.js +24 -2
  64. package/dist/components/card/card.js.map +1 -1
  65. package/dist/components/card/context.d.ts +1 -1
  66. package/dist/components/carousel/carousel.d.ts +1 -1
  67. package/dist/components/carousel/use-carousel.d.ts +1 -1
  68. package/dist/components/carousel/use-carousel.js +1 -1
  69. package/dist/components/cartesian-chart/cartesian-chart.d.ts +6 -6
  70. package/dist/components/cartesian-chart/use-cartesian-chart.d.ts +1 -1
  71. package/dist/components/cartesian-chart/use-cartesian-chart.js +1 -1
  72. package/dist/components/cascader/cascader.d.ts +32 -1
  73. package/dist/components/cascader/cascader.d.ts.map +1 -1
  74. package/dist/components/cascader/cascader.js +105 -28
  75. package/dist/components/cascader/cascader.js.map +1 -1
  76. package/dist/components/cascader/use-cascader.d.ts +6 -1
  77. package/dist/components/cascader/use-cascader.d.ts.map +1 -1
  78. package/dist/components/cascader/use-cascader.js +4 -1
  79. package/dist/components/cascader/use-cascader.js.map +1 -1
  80. package/dist/components/checkbox/checkbox.d.ts +9 -1
  81. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  82. package/dist/components/checkbox/checkbox.js +33 -2
  83. package/dist/components/checkbox/checkbox.js.map +1 -1
  84. package/dist/components/checkbox/use-checkbox.d.ts +1 -1
  85. package/dist/components/checkbox/use-checkbox.js +1 -1
  86. package/dist/components/checkbox-group/checkbox-group.d.ts +18 -1
  87. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  88. package/dist/components/checkbox-group/checkbox-group.js +46 -18
  89. package/dist/components/checkbox-group/checkbox-group.js.map +1 -1
  90. package/dist/components/checkbox-group/use-checkbox-group.d.ts +1 -1
  91. package/dist/components/checkbox-group/use-checkbox-group.js +1 -1
  92. package/dist/components/citation/citation.d.ts +1 -1
  93. package/dist/components/citation/citation.js +1 -1
  94. package/dist/components/citation/context.d.ts +1 -1
  95. package/dist/components/citation/use-citation.d.ts +1 -1
  96. package/dist/components/citation/use-citation.js +1 -1
  97. package/dist/components/clipboard/clipboard.d.ts +1 -1
  98. package/dist/components/clipboard/clipboard.d.ts.map +1 -1
  99. package/dist/components/clipboard/clipboard.js +5 -1
  100. package/dist/components/clipboard/clipboard.js.map +1 -1
  101. package/dist/components/clipboard/use-clipboard.d.ts +6 -1
  102. package/dist/components/clipboard/use-clipboard.d.ts.map +1 -1
  103. package/dist/components/clipboard/use-clipboard.js +7 -2
  104. package/dist/components/clipboard/use-clipboard.js.map +1 -1
  105. package/dist/components/code-view/code-view.d.ts +1 -1
  106. package/dist/components/code-view/code-view.js +1 -1
  107. package/dist/components/code-view/use-code-view.d.ts +1 -1
  108. package/dist/components/code-view/use-code-view.js +1 -1
  109. package/dist/components/collapsible/collapsible.d.ts +1 -1
  110. package/dist/components/collapsible/use-collapsible.d.ts +1 -1
  111. package/dist/components/collapsible/use-collapsible.js +1 -1
  112. package/dist/components/color-field/color-field.d.ts +19 -1
  113. package/dist/components/color-field/color-field.d.ts.map +1 -1
  114. package/dist/components/color-field/color-field.js +46 -13
  115. package/dist/components/color-field/color-field.js.map +1 -1
  116. package/dist/components/color-field/use-color-field.d.ts +6 -1
  117. package/dist/components/color-field/use-color-field.d.ts.map +1 -1
  118. package/dist/components/color-field/use-color-field.js +7 -2
  119. package/dist/components/color-field/use-color-field.js.map +1 -1
  120. package/dist/components/color-picker/color-picker.d.ts +51 -2
  121. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  122. package/dist/components/color-picker/color-picker.js +116 -25
  123. package/dist/components/color-picker/color-picker.js.map +1 -1
  124. package/dist/components/color-picker/use-color-picker.d.ts +7 -2
  125. package/dist/components/color-picker/use-color-picker.d.ts.map +1 -1
  126. package/dist/components/color-picker/use-color-picker.js +15 -5
  127. package/dist/components/color-picker/use-color-picker.js.map +1 -1
  128. package/dist/components/color-slider/color-slider.d.ts +10 -1
  129. package/dist/components/color-slider/color-slider.d.ts.map +1 -1
  130. package/dist/components/color-slider/color-slider.js +7 -1
  131. package/dist/components/color-slider/color-slider.js.map +1 -1
  132. package/dist/components/color-slider/use-color-slider.d.ts +6 -1
  133. package/dist/components/color-slider/use-color-slider.d.ts.map +1 -1
  134. package/dist/components/color-slider/use-color-slider.js +4 -1
  135. package/dist/components/color-slider/use-color-slider.js.map +1 -1
  136. package/dist/components/color-swatch/color-swatch.js +1 -1
  137. package/dist/components/color-swatch-picker/color-swatch-picker.d.ts +9 -1
  138. package/dist/components/color-swatch-picker/color-swatch-picker.d.ts.map +1 -1
  139. package/dist/components/color-swatch-picker/color-swatch-picker.js +36 -13
  140. package/dist/components/color-swatch-picker/color-swatch-picker.js.map +1 -1
  141. package/dist/components/color-swatch-picker/use-color-swatch-picker.d.ts +1 -1
  142. package/dist/components/color-swatch-picker/use-color-swatch-picker.js +1 -1
  143. package/dist/components/combobox/combobox.d.ts +18 -1
  144. package/dist/components/combobox/combobox.d.ts.map +1 -1
  145. package/dist/components/combobox/combobox.js +68 -29
  146. package/dist/components/combobox/combobox.js.map +1 -1
  147. package/dist/components/combobox/use-combobox.d.ts +6 -1
  148. package/dist/components/combobox/use-combobox.d.ts.map +1 -1
  149. package/dist/components/combobox/use-combobox.js +4 -1
  150. package/dist/components/combobox/use-combobox.js.map +1 -1
  151. package/dist/components/command/command.d.ts +6 -6
  152. package/dist/components/command/command.d.ts.map +1 -1
  153. package/dist/components/command/command.js +57 -28
  154. package/dist/components/command/command.js.map +1 -1
  155. package/dist/components/command/use-command.d.ts +2 -2
  156. package/dist/components/command/use-command.d.ts.map +1 -1
  157. package/dist/components/command/use-command.js +1 -1
  158. package/dist/components/command/use-command.js.map +1 -1
  159. package/dist/components/context-menu/context-menu.d.ts +57 -7
  160. package/dist/components/context-menu/context-menu.d.ts.map +1 -1
  161. package/dist/components/context-menu/context-menu.js +110 -62
  162. package/dist/components/context-menu/context-menu.js.map +1 -1
  163. package/dist/components/context-menu/context.d.ts +1 -1
  164. package/dist/components/context-menu/use-context-menu.d.ts +2 -2
  165. package/dist/components/context-menu/use-context-menu.d.ts.map +1 -1
  166. package/dist/components/context-menu/use-context-menu.js +4 -4
  167. package/dist/components/context-menu/use-context-menu.js.map +1 -1
  168. package/dist/components/date-field/date-field.d.ts +18 -1
  169. package/dist/components/date-field/date-field.d.ts.map +1 -1
  170. package/dist/components/date-field/date-field.js +45 -13
  171. package/dist/components/date-field/date-field.js.map +1 -1
  172. package/dist/components/date-field/use-date-field.d.ts +6 -1
  173. package/dist/components/date-field/use-date-field.d.ts.map +1 -1
  174. package/dist/components/date-field/use-date-field.js +10 -4
  175. package/dist/components/date-field/use-date-field.js.map +1 -1
  176. package/dist/components/date-picker/date-picker.d.ts +62 -3
  177. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  178. package/dist/components/date-picker/date-picker.js +108 -21
  179. package/dist/components/date-picker/date-picker.js.map +1 -1
  180. package/dist/components/date-picker/use-date-picker.d.ts +6 -1
  181. package/dist/components/date-picker/use-date-picker.d.ts.map +1 -1
  182. package/dist/components/date-picker/use-date-picker.js +4 -1
  183. package/dist/components/date-picker/use-date-picker.js.map +1 -1
  184. package/dist/components/date-range-picker/context.js +19 -1
  185. package/dist/components/date-range-picker/context.js.map +1 -1
  186. package/dist/components/date-range-picker/date-range-picker.d.ts +93 -3
  187. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  188. package/dist/components/date-range-picker/date-range-picker.js +157 -40
  189. package/dist/components/date-range-picker/date-range-picker.js.map +1 -1
  190. package/dist/components/date-range-picker/use-date-range-picker.d.ts +6 -1
  191. package/dist/components/date-range-picker/use-date-range-picker.d.ts.map +1 -1
  192. package/dist/components/date-range-picker/use-date-range-picker.js +4 -1
  193. package/dist/components/date-range-picker/use-date-range-picker.js.map +1 -1
  194. package/dist/components/descriptions/context.d.ts +1 -1
  195. package/dist/components/descriptions/descriptions.d.ts +1 -1
  196. package/dist/components/descriptions/descriptions.js +1 -1
  197. package/dist/components/dialog/dialog.d.ts +2 -2
  198. package/dist/components/dialog/dialog.d.ts.map +1 -1
  199. package/dist/components/dialog/dialog.js +7 -1
  200. package/dist/components/dialog/dialog.js.map +1 -1
  201. package/dist/components/dialog/use-dialog.d.ts +4 -1
  202. package/dist/components/dialog/use-dialog.d.ts.map +1 -1
  203. package/dist/components/dialog/use-dialog.js +6 -2
  204. package/dist/components/dialog/use-dialog.js.map +1 -1
  205. package/dist/components/diff-view/diff-view.d.ts +1 -1
  206. package/dist/components/diff-view/diff-view.js +1 -1
  207. package/dist/components/diff-view/use-diff-view.d.ts +1 -1
  208. package/dist/components/diff-view/use-diff-view.js +1 -1
  209. package/dist/components/download-trigger/download-trigger.d.ts +1 -1
  210. package/dist/components/download-trigger/use-download-trigger.d.ts +1 -1
  211. package/dist/components/download-trigger/use-download-trigger.js +1 -1
  212. package/dist/components/drawer/drawer.d.ts +2 -2
  213. package/dist/components/drawer/drawer.d.ts.map +1 -1
  214. package/dist/components/drawer/drawer.js +7 -1
  215. package/dist/components/drawer/drawer.js.map +1 -1
  216. package/dist/components/drawer/use-drawer.d.ts +4 -1
  217. package/dist/components/drawer/use-drawer.d.ts.map +1 -1
  218. package/dist/components/drawer/use-drawer.js +6 -2
  219. package/dist/components/drawer/use-drawer.js.map +1 -1
  220. package/dist/components/editable/editable.d.ts +9 -1
  221. package/dist/components/editable/editable.d.ts.map +1 -1
  222. package/dist/components/editable/editable.js +7 -1
  223. package/dist/components/editable/editable.js.map +1 -1
  224. package/dist/components/editable/use-editable.d.ts +6 -1
  225. package/dist/components/editable/use-editable.d.ts.map +1 -1
  226. package/dist/components/editable/use-editable.js +6 -2
  227. package/dist/components/editable/use-editable.js.map +1 -1
  228. package/dist/components/empty-state/empty-state.d.ts +1 -1
  229. package/dist/components/empty-state/use-empty-state.js +1 -1
  230. package/dist/components/expression-input/context.d.ts +7 -0
  231. package/dist/components/expression-input/context.d.ts.map +1 -0
  232. package/dist/components/expression-input/context.js +15 -0
  233. package/dist/components/expression-input/context.js.map +1 -0
  234. package/dist/components/expression-input/expression-input.d.ts +294 -0
  235. package/dist/components/expression-input/expression-input.d.ts.map +1 -0
  236. package/dist/components/expression-input/expression-input.js +307 -0
  237. package/dist/components/expression-input/expression-input.js.map +1 -0
  238. package/dist/components/expression-input/use-expression-input.d.ts +26 -0
  239. package/dist/components/expression-input/use-expression-input.d.ts.map +1 -0
  240. package/dist/components/expression-input/use-expression-input.js +72 -0
  241. package/dist/components/expression-input/use-expression-input.js.map +1 -0
  242. package/dist/components/field/boundary.d.ts +12 -0
  243. package/dist/components/field/boundary.d.ts.map +1 -0
  244. package/dist/components/field/boundary.js +19 -0
  245. package/dist/components/field/boundary.js.map +1 -0
  246. package/dist/components/field/field.d.ts +32 -10
  247. package/dist/components/field/field.d.ts.map +1 -1
  248. package/dist/components/field/field.js +51 -20
  249. package/dist/components/field/field.js.map +1 -1
  250. package/dist/components/field/use-field-control.d.ts.map +1 -1
  251. package/dist/components/field/use-field-control.js +5 -25
  252. package/dist/components/field/use-field-control.js.map +1 -1
  253. package/dist/components/field/use-field.d.ts +6 -2
  254. package/dist/components/field/use-field.d.ts.map +1 -1
  255. package/dist/components/field/use-field.js +45 -4
  256. package/dist/components/field/use-field.js.map +1 -1
  257. package/dist/components/field-array/context.d.ts +1 -1
  258. package/dist/components/field-array/field-array.d.ts +87 -2
  259. package/dist/components/field-array/field-array.d.ts.map +1 -1
  260. package/dist/components/field-array/field-array.js +107 -3
  261. package/dist/components/field-array/field-array.js.map +1 -1
  262. package/dist/components/field-array/use-field-array.d.ts +4 -2
  263. package/dist/components/field-array/use-field-array.d.ts.map +1 -1
  264. package/dist/components/field-array/use-field-array.js +6 -2
  265. package/dist/components/field-array/use-field-array.js.map +1 -1
  266. package/dist/components/fieldset/fieldset.d.ts +23 -8
  267. package/dist/components/fieldset/fieldset.d.ts.map +1 -1
  268. package/dist/components/fieldset/fieldset.js +39 -4
  269. package/dist/components/fieldset/fieldset.js.map +1 -1
  270. package/dist/components/fieldset/use-fieldset.d.ts +6 -2
  271. package/dist/components/fieldset/use-fieldset.d.ts.map +1 -1
  272. package/dist/components/fieldset/use-fieldset.js +38 -4
  273. package/dist/components/fieldset/use-fieldset.js.map +1 -1
  274. package/dist/components/file-upload/file-upload.d.ts +56 -2
  275. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  276. package/dist/components/file-upload/file-upload.js +81 -6
  277. package/dist/components/file-upload/file-upload.js.map +1 -1
  278. package/dist/components/file-upload/use-file-upload.d.ts +6 -1
  279. package/dist/components/file-upload/use-file-upload.d.ts.map +1 -1
  280. package/dist/components/file-upload/use-file-upload.js +10 -4
  281. package/dist/components/file-upload/use-file-upload.js.map +1 -1
  282. package/dist/components/filter-builder/context.js +35 -0
  283. package/dist/components/filter-builder/context.js.map +1 -0
  284. package/dist/components/filter-builder/filter-builder.d.ts +216 -0
  285. package/dist/components/filter-builder/filter-builder.d.ts.map +1 -0
  286. package/dist/components/filter-builder/filter-builder.js +322 -0
  287. package/dist/components/filter-builder/filter-builder.js.map +1 -0
  288. package/dist/components/filter-builder/use-filter-builder.d.ts +16 -0
  289. package/dist/components/filter-builder/use-filter-builder.d.ts.map +1 -0
  290. package/dist/components/filter-builder/use-filter-builder.js +27 -0
  291. package/dist/components/filter-builder/use-filter-builder.js.map +1 -0
  292. package/dist/components/flex/context.d.ts +1 -1
  293. package/dist/components/flex/flex.d.ts +1 -1
  294. package/dist/components/flex/flex.js +1 -1
  295. package/dist/components/float-button/float-button.d.ts +1 -1
  296. package/dist/components/float-button/use-float-button.d.ts +1 -1
  297. package/dist/components/float-button/use-float-button.js +1 -1
  298. package/dist/components/floating-panel/floating-panel.d.ts +5 -1
  299. package/dist/components/floating-panel/floating-panel.d.ts.map +1 -1
  300. package/dist/components/floating-panel/floating-panel.js +8 -2
  301. package/dist/components/floating-panel/floating-panel.js.map +1 -1
  302. package/dist/components/floating-panel/use-floating-panel.d.ts +6 -3
  303. package/dist/components/floating-panel/use-floating-panel.d.ts.map +1 -1
  304. package/dist/components/floating-panel/use-floating-panel.js +6 -2
  305. package/dist/components/floating-panel/use-floating-panel.js.map +1 -1
  306. package/dist/components/form/form.d.ts +1 -1
  307. package/dist/components/form/form.js +1 -1
  308. package/dist/components/form/use-form.d.ts +1 -1
  309. package/dist/components/form/use-form.js +1 -1
  310. package/dist/components/format-input/context.js +15 -0
  311. package/dist/components/format-input/context.js.map +1 -0
  312. package/dist/components/format-input/format-input.d.ts +189 -0
  313. package/dist/components/format-input/format-input.d.ts.map +1 -0
  314. package/dist/components/format-input/format-input.js +189 -0
  315. package/dist/components/format-input/format-input.js.map +1 -0
  316. package/dist/components/format-input/use-format-input.d.ts +16 -0
  317. package/dist/components/format-input/use-format-input.d.ts.map +1 -0
  318. package/dist/components/format-input/use-format-input.js +27 -0
  319. package/dist/components/format-input/use-format-input.js.map +1 -0
  320. package/dist/components/funnel-chart/funnel-chart.d.ts +6 -6
  321. package/dist/components/funnel-chart/use-funnel-chart.d.ts +1 -1
  322. package/dist/components/funnel-chart/use-funnel-chart.js +1 -1
  323. package/dist/components/graph-chart/graph-chart.d.ts +6 -6
  324. package/dist/components/graph-chart/use-graph-chart.d.ts +1 -1
  325. package/dist/components/graph-chart/use-graph-chart.js +1 -1
  326. package/dist/components/grid/context.d.ts +1 -1
  327. package/dist/components/grid/grid.d.ts +12 -2
  328. package/dist/components/grid/grid.d.ts.map +1 -1
  329. package/dist/components/grid/grid.js +8 -3
  330. package/dist/components/grid/grid.js.map +1 -1
  331. package/dist/components/grid-list/context.d.ts +1 -1
  332. package/dist/components/grid-list/grid-list.d.ts +1 -1
  333. package/dist/components/grid-list/grid-list.d.ts.map +1 -1
  334. package/dist/components/grid-list/grid-list.js +5 -1
  335. package/dist/components/grid-list/grid-list.js.map +1 -1
  336. package/dist/components/grid-list/use-grid-list.d.ts +7 -2
  337. package/dist/components/grid-list/use-grid-list.d.ts.map +1 -1
  338. package/dist/components/grid-list/use-grid-list.js +4 -1
  339. package/dist/components/grid-list/use-grid-list.js.map +1 -1
  340. package/dist/components/heatmap/heatmap.d.ts +40 -11
  341. package/dist/components/heatmap/heatmap.d.ts.map +1 -1
  342. package/dist/components/heatmap/heatmap.js +56 -90
  343. package/dist/components/heatmap/heatmap.js.map +1 -1
  344. package/dist/components/heatmap/use-heatmap.d.ts +2 -2
  345. package/dist/components/heatmap/use-heatmap.d.ts.map +1 -1
  346. package/dist/components/heatmap/use-heatmap.js +3 -5
  347. package/dist/components/heatmap/use-heatmap.js.map +1 -1
  348. package/dist/components/hierarchy-chart/hierarchy-chart.d.ts +4 -4
  349. package/dist/components/hierarchy-chart/use-hierarchy-chart.d.ts +1 -1
  350. package/dist/components/hierarchy-chart/use-hierarchy-chart.js +1 -1
  351. package/dist/components/highlight/highlight.js +1 -1
  352. package/dist/components/hover-card/hover-card.d.ts +1 -1
  353. package/dist/components/hover-card/hover-card.d.ts.map +1 -1
  354. package/dist/components/hover-card/hover-card.js +5 -9
  355. package/dist/components/hover-card/hover-card.js.map +1 -1
  356. package/dist/components/hover-card/use-hover-card.d.ts +4 -5
  357. package/dist/components/hover-card/use-hover-card.d.ts.map +1 -1
  358. package/dist/components/hover-card/use-hover-card.js +5 -7
  359. package/dist/components/hover-card/use-hover-card.js.map +1 -1
  360. package/dist/components/icon/icon.d.ts +2 -2
  361. package/dist/components/icon/icon.d.ts.map +1 -1
  362. package/dist/components/icon/icon.js +10 -2
  363. package/dist/components/icon/icon.js.map +1 -1
  364. package/dist/components/icon/use-icon.d.ts +1 -1
  365. package/dist/components/icon/use-icon.js +1 -1
  366. package/dist/components/image/image.d.ts +1 -1
  367. package/dist/components/image/use-image.d.ts +1 -1
  368. package/dist/components/image/use-image.js +1 -1
  369. package/dist/components/image-cropper/image-cropper.d.ts +9 -1
  370. package/dist/components/image-cropper/image-cropper.d.ts.map +1 -1
  371. package/dist/components/image-cropper/image-cropper.js +2 -0
  372. package/dist/components/image-cropper/image-cropper.js.map +1 -1
  373. package/dist/components/image-cropper/use-image-cropper.d.ts +1 -1
  374. package/dist/components/image-cropper/use-image-cropper.js +1 -1
  375. package/dist/components/image-viewer/image-viewer.d.ts +1 -1
  376. package/dist/components/image-viewer/image-viewer.js +1 -1
  377. package/dist/components/image-viewer/use-image-viewer.d.ts +1 -1
  378. package/dist/components/image-viewer/use-image-viewer.js +1 -1
  379. package/dist/components/infinite-scroll/infinite-scroll.d.ts +1 -1
  380. package/dist/components/infinite-scroll/use-infinite-scroll.d.ts +1 -1
  381. package/dist/components/infinite-scroll/use-infinite-scroll.js +1 -1
  382. package/dist/components/input-group/context.d.ts +1 -1
  383. package/dist/components/input-group/input-group.js +1 -1
  384. package/dist/components/json-viewer/json-viewer.d.ts +1 -1
  385. package/dist/components/json-viewer/json-viewer.d.ts.map +1 -1
  386. package/dist/components/json-viewer/json-viewer.js +2 -1
  387. package/dist/components/json-viewer/json-viewer.js.map +1 -1
  388. package/dist/components/json-viewer/use-json-viewer.d.ts +1 -1
  389. package/dist/components/json-viewer/use-json-viewer.js +1 -1
  390. package/dist/components/kbd/kbd.d.ts +2 -1
  391. package/dist/components/kbd/kbd.d.ts.map +1 -1
  392. package/dist/components/kbd/kbd.js +1 -1
  393. package/dist/components/kbd/kbd.js.map +1 -1
  394. package/dist/components/kbd/use-kbd-platform.js +1 -1
  395. package/dist/components/kbd/use-kbd-platform.js.map +1 -1
  396. package/dist/components/layout/layout.d.ts +1 -1
  397. package/dist/components/layout/use-layout.d.ts +1 -1
  398. package/dist/components/layout/use-layout.js +1 -1
  399. package/dist/components/list/context.d.ts +1 -1
  400. package/dist/components/list/list.js +1 -1
  401. package/dist/components/listbox/listbox.d.ts +17 -1
  402. package/dist/components/listbox/listbox.d.ts.map +1 -1
  403. package/dist/components/listbox/listbox.js +57 -18
  404. package/dist/components/listbox/listbox.js.map +1 -1
  405. package/dist/components/listbox/use-listbox.d.ts +7 -2
  406. package/dist/components/listbox/use-listbox.d.ts.map +1 -1
  407. package/dist/components/listbox/use-listbox.js +7 -3
  408. package/dist/components/listbox/use-listbox.js.map +1 -1
  409. package/dist/components/loading-bar/loading-bar.d.ts +1 -1
  410. package/dist/components/loading-bar/use-loading-bar.d.ts +1 -1
  411. package/dist/components/loading-bar/use-loading-bar.js +1 -1
  412. package/dist/components/log/log.d.ts +1 -1
  413. package/dist/components/log/log.js +1 -1
  414. package/dist/components/log/use-log.d.ts +1 -1
  415. package/dist/components/log/use-log.js +1 -1
  416. package/dist/components/markdown-stream/markdown-stream.d.ts +1 -1
  417. package/dist/components/markdown-stream/markdown-stream.js +1 -1
  418. package/dist/components/markdown-stream/use-markdown-stream.d.ts +1 -1
  419. package/dist/components/markdown-stream/use-markdown-stream.js +1 -1
  420. package/dist/components/marquee/context.d.ts +1 -1
  421. package/dist/components/marquee/marquee.d.ts +1 -1
  422. package/dist/components/marquee/marquee.js +1 -1
  423. package/dist/components/masonry/masonry.d.ts +1 -1
  424. package/dist/components/masonry/masonry.js +1 -1
  425. package/dist/components/matrix-code/context.d.ts +1 -1
  426. package/dist/components/matrix-code/matrix-code.d.ts +1 -1
  427. package/dist/components/matrix-code/matrix-code.js +1 -1
  428. package/dist/components/mention/context.d.ts +1 -1
  429. package/dist/components/mention/mention.d.ts +25 -3
  430. package/dist/components/mention/mention.d.ts.map +1 -1
  431. package/dist/components/mention/mention.js +70 -17
  432. package/dist/components/mention/mention.js.map +1 -1
  433. package/dist/components/mention/use-mention.d.ts +7 -2
  434. package/dist/components/mention/use-mention.d.ts.map +1 -1
  435. package/dist/components/mention/use-mention.js +4 -1
  436. package/dist/components/mention/use-mention.js.map +1 -1
  437. package/dist/components/menu/context.d.ts +1 -1
  438. package/dist/components/menu/menu.d.ts +64 -7
  439. package/dist/components/menu/menu.d.ts.map +1 -1
  440. package/dist/components/menu/menu.js +184 -72
  441. package/dist/components/menu/menu.js.map +1 -1
  442. package/dist/components/menu/use-menu.d.ts +6 -2
  443. package/dist/components/menu/use-menu.d.ts.map +1 -1
  444. package/dist/components/menu/use-menu.js +14 -8
  445. package/dist/components/menu/use-menu.js.map +1 -1
  446. package/dist/components/menubar/context.d.ts +1 -1
  447. package/dist/components/menubar/menubar.d.ts +57 -7
  448. package/dist/components/menubar/menubar.d.ts.map +1 -1
  449. package/dist/components/menubar/menubar.js +121 -74
  450. package/dist/components/menubar/menubar.js.map +1 -1
  451. package/dist/components/menubar/use-menubar.d.ts +2 -2
  452. package/dist/components/menubar/use-menubar.d.ts.map +1 -1
  453. package/dist/components/menubar/use-menubar.js +4 -4
  454. package/dist/components/menubar/use-menubar.js.map +1 -1
  455. package/dist/components/message-feed/message-feed.d.ts +1 -1
  456. package/dist/components/message-feed/use-message-feed.d.ts +1 -1
  457. package/dist/components/message-feed/use-message-feed.js +1 -1
  458. package/dist/components/navigation-menu/navigation-menu.d.ts +1 -1
  459. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  460. package/dist/components/navigation-menu/navigation-menu.js +22 -24
  461. package/dist/components/navigation-menu/navigation-menu.js.map +1 -1
  462. package/dist/components/navigation-menu/use-navigation-menu.d.ts +1 -1
  463. package/dist/components/navigation-menu/use-navigation-menu.js +1 -1
  464. package/dist/components/notification/context.d.ts +4 -1
  465. package/dist/components/notification/context.d.ts.map +1 -1
  466. package/dist/components/notification/context.js.map +1 -1
  467. package/dist/components/notification/notification.d.ts +1 -1
  468. package/dist/components/notification/notification.d.ts.map +1 -1
  469. package/dist/components/notification/notification.js +7 -1
  470. package/dist/components/notification/notification.js.map +1 -1
  471. package/dist/components/notification/use-notification.d.ts +1 -1
  472. package/dist/components/notification/use-notification.d.ts.map +1 -1
  473. package/dist/components/notification/use-notification.js +6 -2
  474. package/dist/components/notification/use-notification.js.map +1 -1
  475. package/dist/components/number-animation/number-animation.d.ts +1 -1
  476. package/dist/components/number-animation/number-animation.js +1 -1
  477. package/dist/components/number-field/number-field.d.ts +24 -1
  478. package/dist/components/number-field/number-field.d.ts.map +1 -1
  479. package/dist/components/number-field/number-field.js +44 -12
  480. package/dist/components/number-field/number-field.js.map +1 -1
  481. package/dist/components/number-field/use-number-field.d.ts +6 -1
  482. package/dist/components/number-field/use-number-field.d.ts.map +1 -1
  483. package/dist/components/number-field/use-number-field.js +7 -2
  484. package/dist/components/number-field/use-number-field.js.map +1 -1
  485. package/dist/components/page-header/context.d.ts +1 -1
  486. package/dist/components/page-header/page-header.js +1 -1
  487. package/dist/components/pagination/pagination.d.ts +1 -1
  488. package/dist/components/pagination/use-pagination.d.ts +1 -1
  489. package/dist/components/pagination/use-pagination.js +1 -1
  490. package/dist/components/password-input/password-input.d.ts +19 -1
  491. package/dist/components/password-input/password-input.d.ts.map +1 -1
  492. package/dist/components/password-input/password-input.js +45 -13
  493. package/dist/components/password-input/password-input.js.map +1 -1
  494. package/dist/components/password-input/use-password-input.d.ts +6 -1
  495. package/dist/components/password-input/use-password-input.d.ts.map +1 -1
  496. package/dist/components/password-input/use-password-input.js +10 -4
  497. package/dist/components/password-input/use-password-input.js.map +1 -1
  498. package/dist/components/pie-chart/pie-chart.d.ts +6 -6
  499. package/dist/components/pie-chart/use-pie-chart.d.ts +1 -1
  500. package/dist/components/pie-chart/use-pie-chart.js +1 -1
  501. package/dist/components/pin-input/pin-input.d.ts +19 -1
  502. package/dist/components/pin-input/pin-input.d.ts.map +1 -1
  503. package/dist/components/pin-input/pin-input.js +33 -3
  504. package/dist/components/pin-input/pin-input.js.map +1 -1
  505. package/dist/components/pin-input/use-pin-input.d.ts +6 -1
  506. package/dist/components/pin-input/use-pin-input.d.ts.map +1 -1
  507. package/dist/components/pin-input/use-pin-input.js +10 -4
  508. package/dist/components/pin-input/use-pin-input.js.map +1 -1
  509. package/dist/components/popconfirm/popconfirm.d.ts +3 -3
  510. package/dist/components/popconfirm/popconfirm.d.ts.map +1 -1
  511. package/dist/components/popconfirm/popconfirm.js +10 -4
  512. package/dist/components/popconfirm/popconfirm.js.map +1 -1
  513. package/dist/components/popconfirm/use-popconfirm.d.ts +4 -1
  514. package/dist/components/popconfirm/use-popconfirm.d.ts.map +1 -1
  515. package/dist/components/popconfirm/use-popconfirm.js +8 -4
  516. package/dist/components/popconfirm/use-popconfirm.js.map +1 -1
  517. package/dist/components/popover/popover.d.ts +10 -2
  518. package/dist/components/popover/popover.d.ts.map +1 -1
  519. package/dist/components/popover/popover.js +10 -2
  520. package/dist/components/popover/popover.js.map +1 -1
  521. package/dist/components/popover/use-popover.d.ts +8 -1
  522. package/dist/components/popover/use-popover.d.ts.map +1 -1
  523. package/dist/components/popover/use-popover.js +12 -3
  524. package/dist/components/popover/use-popover.js.map +1 -1
  525. package/dist/components/progress/progress.d.ts +2 -2
  526. package/dist/components/progress/progress.js +1 -1
  527. package/dist/components/prompt-input/prompt-input.d.ts +1 -1
  528. package/dist/components/prompt-input/use-prompt-input.d.ts +1 -1
  529. package/dist/components/prompt-input/use-prompt-input.js +1 -1
  530. package/dist/components/question-flow/question-flow.d.ts +1 -1
  531. package/dist/components/question-flow/use-question-flow.d.ts +1 -1
  532. package/dist/components/question-flow/use-question-flow.js +1 -1
  533. package/dist/components/radar-chart/radar-chart.d.ts +6 -6
  534. package/dist/components/radar-chart/use-radar-chart.d.ts +1 -1
  535. package/dist/components/radar-chart/use-radar-chart.js +1 -1
  536. package/dist/components/radio-group/radio-group.d.ts +9 -1
  537. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  538. package/dist/components/radio-group/radio-group.js +44 -22
  539. package/dist/components/radio-group/radio-group.js.map +1 -1
  540. package/dist/components/radio-group/use-radio-group.d.ts +1 -1
  541. package/dist/components/radio-group/use-radio-group.js +1 -1
  542. package/dist/components/rating/rating.d.ts +27 -1
  543. package/dist/components/rating/rating.d.ts.map +1 -1
  544. package/dist/components/rating/rating.js +56 -12
  545. package/dist/components/rating/rating.js.map +1 -1
  546. package/dist/components/rating/use-rating.d.ts +7 -2
  547. package/dist/components/rating/use-rating.d.ts.map +1 -1
  548. package/dist/components/rating/use-rating.js +7 -3
  549. package/dist/components/rating/use-rating.js.map +1 -1
  550. package/dist/components/reasoning/reasoning.d.ts +1 -1
  551. package/dist/components/reasoning/use-reasoning.d.ts +1 -1
  552. package/dist/components/reasoning/use-reasoning.js +1 -1
  553. package/dist/components/resizable/resizable.d.ts +1 -1
  554. package/dist/components/resizable/use-resizable.d.ts +1 -1
  555. package/dist/components/resizable/use-resizable.js +1 -1
  556. package/dist/components/sankey-chart/sankey-chart.d.ts +6 -6
  557. package/dist/components/sankey-chart/use-sankey-chart.d.ts +1 -1
  558. package/dist/components/sankey-chart/use-sankey-chart.js +1 -1
  559. package/dist/components/scroll-area/scroll-area.d.ts +1 -1
  560. package/dist/components/scroll-area/use-scroll-area.d.ts +1 -1
  561. package/dist/components/scroll-area/use-scroll-area.js +1 -1
  562. package/dist/components/scrollbar/scrollbar.d.ts +3 -3
  563. package/dist/components/scrollbar/use-scrollbar.d.ts +1 -1
  564. package/dist/components/scrollbar/use-scrollbar.js +1 -1
  565. package/dist/components/select/select.d.ts +33 -2
  566. package/dist/components/select/select.d.ts.map +1 -1
  567. package/dist/components/select/select.js +115 -49
  568. package/dist/components/select/select.js.map +1 -1
  569. package/dist/components/select/use-select.d.ts +6 -1
  570. package/dist/components/select/use-select.d.ts.map +1 -1
  571. package/dist/components/select/use-select.js +4 -1
  572. package/dist/components/select/use-select.js.map +1 -1
  573. package/dist/components/separator/separator.d.ts +3 -2
  574. package/dist/components/separator/separator.d.ts.map +1 -1
  575. package/dist/components/separator/separator.js +12 -8
  576. package/dist/components/separator/separator.js.map +1 -1
  577. package/dist/components/side-nav/side-nav.d.ts +1 -1
  578. package/dist/components/side-nav/side-nav.js +1 -1
  579. package/dist/components/side-nav/use-side-nav.d.ts +1 -1
  580. package/dist/components/side-nav/use-side-nav.js +1 -1
  581. package/dist/components/signature-pad/signature-pad.d.ts +18 -1
  582. package/dist/components/signature-pad/signature-pad.d.ts.map +1 -1
  583. package/dist/components/signature-pad/signature-pad.js +57 -17
  584. package/dist/components/signature-pad/signature-pad.js.map +1 -1
  585. package/dist/components/signature-pad/use-signature-pad.d.ts +6 -1
  586. package/dist/components/signature-pad/use-signature-pad.d.ts.map +1 -1
  587. package/dist/components/signature-pad/use-signature-pad.js +6 -2
  588. package/dist/components/signature-pad/use-signature-pad.js.map +1 -1
  589. package/dist/components/skeleton/skeleton.d.ts +1 -1
  590. package/dist/components/skeleton/use-skeleton.js +1 -1
  591. package/dist/components/slider/slider.d.ts +27 -1
  592. package/dist/components/slider/slider.d.ts.map +1 -1
  593. package/dist/components/slider/slider.js +58 -9
  594. package/dist/components/slider/slider.js.map +1 -1
  595. package/dist/components/slider/use-slider.d.ts +6 -1
  596. package/dist/components/slider/use-slider.d.ts.map +1 -1
  597. package/dist/components/slider/use-slider.js +6 -2
  598. package/dist/components/slider/use-slider.js.map +1 -1
  599. package/dist/components/sortable/sortable.d.ts +1 -1
  600. package/dist/components/sortable/use-sortable.d.ts +1 -1
  601. package/dist/components/sortable/use-sortable.js +1 -1
  602. package/dist/components/sparkline/sparkline.d.ts +1 -1
  603. package/dist/components/sparkline/use-sparkline.d.ts +1 -1
  604. package/dist/components/sparkline/use-sparkline.js +1 -1
  605. package/dist/components/spinner/spinner.d.ts +1 -1
  606. package/dist/components/spinner/use-spinner.js +1 -1
  607. package/dist/components/splitter/splitter.d.ts +1 -1
  608. package/dist/components/splitter/use-splitter.d.ts +1 -1
  609. package/dist/components/splitter/use-splitter.js +1 -1
  610. package/dist/components/statistic/context.d.ts +1 -1
  611. package/dist/components/statistic/statistic.d.ts +1 -1
  612. package/dist/components/statistic/statistic.js +1 -1
  613. package/dist/components/steps/steps.d.ts +1 -1
  614. package/dist/components/steps/use-steps.d.ts +1 -1
  615. package/dist/components/steps/use-steps.js +1 -1
  616. package/dist/components/switch/switch.d.ts +9 -1
  617. package/dist/components/switch/switch.d.ts.map +1 -1
  618. package/dist/components/switch/switch.js +30 -2
  619. package/dist/components/switch/switch.js.map +1 -1
  620. package/dist/components/switch/use-switch.d.ts +1 -1
  621. package/dist/components/switch/use-switch.js +1 -1
  622. package/dist/components/table/context.js +9 -1
  623. package/dist/components/table/context.js.map +1 -1
  624. package/dist/components/table/table.d.ts +44 -11
  625. package/dist/components/table/table.d.ts.map +1 -1
  626. package/dist/components/table/table.js +28 -7
  627. package/dist/components/table/table.js.map +1 -1
  628. package/dist/components/table/use-table.d.ts +4 -2
  629. package/dist/components/table/use-table.d.ts.map +1 -1
  630. package/dist/components/table/use-table.js +10 -5
  631. package/dist/components/table/use-table.js.map +1 -1
  632. package/dist/components/tabs/tabs.d.ts +1 -1
  633. package/dist/components/tabs/tabs.d.ts.map +1 -1
  634. package/dist/components/tabs/tabs.js +16 -15
  635. package/dist/components/tabs/tabs.js.map +1 -1
  636. package/dist/components/tabs/use-tabs.d.ts +1 -1
  637. package/dist/components/tabs/use-tabs.js +1 -1
  638. package/dist/components/tag/tag.d.ts +1 -1
  639. package/dist/components/tag/use-tag.d.ts +1 -1
  640. package/dist/components/tag/use-tag.js +1 -1
  641. package/dist/components/tag-group/context.d.ts +1 -1
  642. package/dist/components/tag-group/tag-group.d.ts +32 -2
  643. package/dist/components/tag-group/tag-group.d.ts.map +1 -1
  644. package/dist/components/tag-group/tag-group.js +55 -15
  645. package/dist/components/tag-group/tag-group.js.map +1 -1
  646. package/dist/components/tag-group/use-tag-group.d.ts +7 -2
  647. package/dist/components/tag-group/use-tag-group.d.ts.map +1 -1
  648. package/dist/components/tag-group/use-tag-group.js +7 -3
  649. package/dist/components/tag-group/use-tag-group.js.map +1 -1
  650. package/dist/components/tags-input/tags-input.d.ts +22 -1
  651. package/dist/components/tags-input/tags-input.d.ts.map +1 -1
  652. package/dist/components/tags-input/tags-input.js +66 -19
  653. package/dist/components/tags-input/tags-input.js.map +1 -1
  654. package/dist/components/tags-input/use-tags-input.d.ts +6 -1
  655. package/dist/components/tags-input/use-tags-input.d.ts.map +1 -1
  656. package/dist/components/tags-input/use-tags-input.js +6 -2
  657. package/dist/components/tags-input/use-tags-input.js.map +1 -1
  658. package/dist/components/text-field/text-field.d.ts +24 -2
  659. package/dist/components/text-field/text-field.d.ts.map +1 -1
  660. package/dist/components/text-field/text-field.js +60 -11
  661. package/dist/components/text-field/text-field.js.map +1 -1
  662. package/dist/components/text-field/use-text-field.d.ts +6 -1
  663. package/dist/components/text-field/use-text-field.d.ts.map +1 -1
  664. package/dist/components/text-field/use-text-field.js +7 -2
  665. package/dist/components/text-field/use-text-field.js.map +1 -1
  666. package/dist/components/time-field/time-field.d.ts +9 -1
  667. package/dist/components/time-field/time-field.d.ts.map +1 -1
  668. package/dist/components/time-field/time-field.js +7 -1
  669. package/dist/components/time-field/time-field.js.map +1 -1
  670. package/dist/components/time-field/use-time-field.d.ts +6 -1
  671. package/dist/components/time-field/use-time-field.d.ts.map +1 -1
  672. package/dist/components/time-field/use-time-field.js +10 -4
  673. package/dist/components/time-field/use-time-field.js.map +1 -1
  674. package/dist/components/time-picker/time-picker.d.ts +25 -1
  675. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  676. package/dist/components/time-picker/time-picker.js +48 -4
  677. package/dist/components/time-picker/time-picker.js.map +1 -1
  678. package/dist/components/time-picker/use-time-picker.d.ts +6 -1
  679. package/dist/components/time-picker/use-time-picker.d.ts.map +1 -1
  680. package/dist/components/time-picker/use-time-picker.js +4 -1
  681. package/dist/components/time-picker/use-time-picker.js.map +1 -1
  682. package/dist/components/time-range-picker/time-range-picker.d.ts +35 -1
  683. package/dist/components/time-range-picker/time-range-picker.d.ts.map +1 -1
  684. package/dist/components/time-range-picker/time-range-picker.js +47 -5
  685. package/dist/components/time-range-picker/time-range-picker.js.map +1 -1
  686. package/dist/components/time-range-picker/use-time-range-picker.d.ts +6 -1
  687. package/dist/components/time-range-picker/use-time-range-picker.d.ts.map +1 -1
  688. package/dist/components/time-range-picker/use-time-range-picker.js +4 -1
  689. package/dist/components/time-range-picker/use-time-range-picker.js.map +1 -1
  690. package/dist/components/timeline/context.d.ts +1 -1
  691. package/dist/components/timeline/timeline.d.ts +1 -1
  692. package/dist/components/timeline/timeline.js +1 -1
  693. package/dist/components/timer/timer.d.ts +1 -1
  694. package/dist/components/timer/use-timer.d.ts +1 -1
  695. package/dist/components/timer/use-timer.js +1 -1
  696. package/dist/components/timestamp/timestamp.d.ts +1 -1
  697. package/dist/components/timestamp/timestamp.js +1 -1
  698. package/dist/components/toggle/toggle.d.ts +1 -1
  699. package/dist/components/toggle/use-toggle.d.ts +1 -1
  700. package/dist/components/toggle/use-toggle.js +1 -1
  701. package/dist/components/toggle-group/toggle-group.d.ts +36 -1
  702. package/dist/components/toggle-group/toggle-group.d.ts.map +1 -1
  703. package/dist/components/toggle-group/toggle-group.js +30 -9
  704. package/dist/components/toggle-group/toggle-group.js.map +1 -1
  705. package/dist/components/toggle-group/use-toggle-group.d.ts +1 -1
  706. package/dist/components/toggle-group/use-toggle-group.js +1 -1
  707. package/dist/components/tool-call/tool-call.d.ts +1 -1
  708. package/dist/components/tool-call/tool-call.js +1 -1
  709. package/dist/components/tool-call/use-tool-call.d.ts +1 -1
  710. package/dist/components/tool-call/use-tool-call.js +1 -1
  711. package/dist/components/toolbar/toolbar.d.ts +13 -2
  712. package/dist/components/toolbar/toolbar.d.ts.map +1 -1
  713. package/dist/components/toolbar/toolbar.js +7 -3
  714. package/dist/components/toolbar/toolbar.js.map +1 -1
  715. package/dist/components/toolbar/use-toolbar.d.ts +1 -1
  716. package/dist/components/toolbar/use-toolbar.js +1 -1
  717. package/dist/components/tooltip/context.d.ts +1 -1
  718. package/dist/components/tooltip/tooltip.d.ts +33 -2
  719. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  720. package/dist/components/tooltip/tooltip.js +33 -6
  721. package/dist/components/tooltip/tooltip.js.map +1 -1
  722. package/dist/components/tooltip/use-tooltip.js +1 -1
  723. package/dist/components/tour/tour.d.ts +9 -1
  724. package/dist/components/tour/tour.d.ts.map +1 -1
  725. package/dist/components/tour/tour.js +13 -1
  726. package/dist/components/tour/tour.js.map +1 -1
  727. package/dist/components/tour/use-tour.d.ts +4 -1
  728. package/dist/components/tour/use-tour.d.ts.map +1 -1
  729. package/dist/components/tour/use-tour.js +14 -3
  730. package/dist/components/tour/use-tour.js.map +1 -1
  731. package/dist/components/transfer/transfer.d.ts +18 -1
  732. package/dist/components/transfer/transfer.d.ts.map +1 -1
  733. package/dist/components/transfer/transfer.js +65 -18
  734. package/dist/components/transfer/transfer.js.map +1 -1
  735. package/dist/components/transfer/use-transfer.d.ts +1 -1
  736. package/dist/components/transfer/use-transfer.js +1 -1
  737. package/dist/components/tree/tree.d.ts +12 -9
  738. package/dist/components/tree/tree.d.ts.map +1 -1
  739. package/dist/components/tree/tree.js +17 -6
  740. package/dist/components/tree/tree.js.map +1 -1
  741. package/dist/components/tree/use-tree.d.ts +7 -2
  742. package/dist/components/tree/use-tree.d.ts.map +1 -1
  743. package/dist/components/tree/use-tree.js +7 -3
  744. package/dist/components/tree/use-tree.js.map +1 -1
  745. package/dist/components/tree-select/tree-select.d.ts +19 -2
  746. package/dist/components/tree-select/tree-select.d.ts.map +1 -1
  747. package/dist/components/tree-select/tree-select.js +54 -35
  748. package/dist/components/tree-select/tree-select.js.map +1 -1
  749. package/dist/components/tree-select/use-tree-select.d.ts +6 -1
  750. package/dist/components/tree-select/use-tree-select.d.ts.map +1 -1
  751. package/dist/components/tree-select/use-tree-select.js +4 -1
  752. package/dist/components/tree-select/use-tree-select.js.map +1 -1
  753. package/dist/components/truncate/truncate.d.ts +2 -2
  754. package/dist/components/truncate/use-truncate.d.ts +1 -1
  755. package/dist/components/truncate/use-truncate.js +1 -1
  756. package/dist/components/typography/context.d.ts +1 -1
  757. package/dist/components/typography/typography.d.ts +1 -1
  758. package/dist/components/typography/typography.js +1 -1
  759. package/dist/components/virtualizer/use-virtualizer.d.ts +1 -1
  760. package/dist/components/virtualizer/use-virtualizer.js +1 -1
  761. package/dist/components/virtualizer/virtualizer.d.ts +10 -1
  762. package/dist/components/virtualizer/virtualizer.d.ts.map +1 -1
  763. package/dist/components/virtualizer/virtualizer.js +5 -1
  764. package/dist/components/virtualizer/virtualizer.js.map +1 -1
  765. package/dist/components/watermark/context.d.ts +1 -1
  766. package/dist/components/watermark/watermark.d.ts +1 -1
  767. package/dist/components/watermark/watermark.js +1 -1
  768. package/dist/config/config.d.ts +1 -1
  769. package/dist/config/config.js +2 -2
  770. package/dist/config/config.js.map +1 -1
  771. package/dist/index.d.ts +22 -14
  772. package/dist/index.js +36 -28
  773. package/dist/package.js +1 -1
  774. package/dist/runtime/live-props.js +27 -0
  775. package/dist/runtime/live-props.js.map +1 -0
  776. package/dist/runtime/merge-props.js +23 -3
  777. package/dist/runtime/merge-props.js.map +1 -1
  778. package/dist/runtime/structure.js +36 -0
  779. package/dist/runtime/structure.js.map +1 -0
  780. package/dist/runtime/title-description.d.ts +13 -0
  781. package/dist/runtime/title-description.d.ts.map +1 -0
  782. package/dist/runtime/title-description.js +47 -0
  783. package/dist/runtime/title-description.js.map +1 -0
  784. package/dist/runtime/use-scrollbars.js +1 -1
  785. package/dist/services/dialog-service.d.ts +1 -1
  786. package/dist/services/dialog-service.js +1 -1
  787. package/dist/services/loading-bar-service.d.ts +1 -1
  788. package/dist/services/loading-bar-service.js +1 -1
  789. package/dist/services/notification-service.d.ts +1 -1
  790. package/dist/services/notification-service.js +1 -1
  791. package/package.json +16 -15
@@ -0,0 +1,26 @@
1
+ import { ExpressionInputApi, ExpressionInputEl, ExpressionInputSchema } from "@xihan-ui/headless";
2
+ import { ComputedRef, Ref } from "vue";
3
+ import { Service } from "@xihan-ui/core";
4
+ //#region src/components/expression-input/use-expression-input.d.ts
5
+ interface ExpressionInputContext {
6
+ /** 已渲染的 label 部件数量,由 XhExpressionInputLabel 在 setup 里同步登记、卸载时撤销。 */
7
+ labelCount: Ref<number>;
8
+ /** 已渲染的 issues 部件数量,决定输入框的描述链引不引用它。 */
9
+ issuesCount: Ref<number>;
10
+ /** 输入框是不是多行宿主,由 XhExpressionInputInput 按 as 登记。 */
11
+ multiline: Ref<boolean>;
12
+ service: Service<ExpressionInputSchema>;
13
+ api: ComputedRef<ExpressionInputApi>;
14
+ inputRef: Ref<ExpressionInputEl | null>;
15
+ highlightRef: Ref<HTMLElement | null>;
16
+ positionerRef: Ref<HTMLElement | null>;
17
+ contentRef: Ref<HTMLElement | null>;
18
+ /** 当前是否应当渲染:退场动画播完之前仍为真。 */
19
+ visible: Ref<boolean>;
20
+ /** 浮层迁移到的位置:全局配置的容器 > 运行时的浮层落点 > body。 */
21
+ portalTarget: ComputedRef<string | Element>;
22
+ }
23
+ declare function useExpressionInput(props: ExpressionInputSchema['props'], handlers?: Pick<ExpressionInputSchema['props'], 'onValueChange' | 'onIssuesChange' | 'onCompletionSelect' | 'onOpenChange'>): ExpressionInputContext;
24
+ //#endregion
25
+ export { ExpressionInputContext, useExpressionInput };
26
+ //# sourceMappingURL=use-expression-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-expression-input.d.ts","names":[],"sources":["../../../src/components/expression-input/use-expression-input.ts"],"mappings":";;;;UAoBiB;;EAEf,YAAY;;EAEZ,aAAa;;EAEb,WAAW;EACX,SAAS,QAAQ;EACjB,KAAK,YAAY;EACjB,UAAU,IAAI;EACd,cAAc,IAAI;EAClB,eAAe,IAAI;EACnB,YAAY,IAAI;;EAEhB,SAAS;;EAET,cAAc,qBAAqB;;iBAGrB,mBACd,OAAO,gCACP,WAAU,KAAK,8GACd"}
@@ -0,0 +1,72 @@
1
+ import { useOverlayExit } from "../../runtime/use-overlay-exit.js";
2
+ import { vueNormalize } from "../../runtime/normalize-props.js";
3
+ import { useXhConfig } from "../../config/config.js";
4
+ import { useMachine } from "../../runtime/use-machine.js";
5
+ import { createVueIdGenerator } from "../../runtime/vue-id.js";
6
+ import { connectExpressionInput, expressionInputMachine } from "@xihan-ui/headless";
7
+ import { computed, ref } from "vue";
8
+ import { createRuntimeConfig, createScope } from "@xihan-ui/core";
9
+ import { createPositionEngine } from "@xihan-ui/position";
10
+ //#region src/components/expression-input/use-expression-input.ts
11
+ function useExpressionInput(props, handlers = {}) {
12
+ const xhConfig = useXhConfig();
13
+ const inputRef = ref(null);
14
+ const highlightRef = ref(null);
15
+ const positionerRef = ref(null);
16
+ const contentRef = ref(null);
17
+ const idGen = createVueIdGenerator();
18
+ const scope = createScope(null, idGen);
19
+ const labelCount = ref(0);
20
+ const issuesCount = ref(0);
21
+ const multiline = ref(false);
22
+ const service = useMachine(expressionInputMachine, () => ({
23
+ ...props,
24
+ labelled: labelCount.value > 0,
25
+ issuesRendered: issuesCount.value > 0,
26
+ multiline: multiline.value,
27
+ ...handlers
28
+ }), scope);
29
+ let config = null;
30
+ if (typeof document !== "undefined") {
31
+ config = createRuntimeConfig({
32
+ scope,
33
+ idGenerator: idGen
34
+ });
35
+ const registerLayer = () => config.layerRegistry.register({
36
+ kind: "popover",
37
+ node: () => contentRef.value,
38
+ branches: () => [inputRef.value, positionerRef.value].filter(Boolean),
39
+ isModal: () => false,
40
+ surfaces: () => []
41
+ });
42
+ service.refs.set("config", config);
43
+ service.refs.set("registerLayer", registerLayer);
44
+ service.refs.set("position", createPositionEngine());
45
+ service.refs.set("getFloatingEl", () => positionerRef.value);
46
+ service.refs.set("getInputEl", () => inputRef.value);
47
+ service.refs.set("getHighlightEl", () => highlightRef.value);
48
+ }
49
+ const api = computed(() => connectExpressionInput(service, vueNormalize));
50
+ return {
51
+ labelCount,
52
+ issuesCount,
53
+ multiline,
54
+ visible: useOverlayExit({
55
+ config,
56
+ isOpen: () => api.value.open,
57
+ contentRef,
58
+ onPresence: (presence) => service.refs.set("presence", presence)
59
+ }),
60
+ service,
61
+ api,
62
+ inputRef,
63
+ highlightRef,
64
+ positionerRef,
65
+ contentRef,
66
+ portalTarget: computed(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? "body")
67
+ };
68
+ }
69
+ //#endregion
70
+ export { useExpressionInput };
71
+
72
+ //# sourceMappingURL=use-expression-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-expression-input.js","names":[],"sources":["../../../src/components/expression-input/use-expression-input.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 expression input 相关实现。\n\nimport type { Cleanup, Layer, RuntimeConfig, Service } from '@xihan-ui/core'\nimport type { ExpressionInputApi, ExpressionInputEl, ExpressionInputSchema } from '@xihan-ui/headless'\nimport type { ComputedRef, Ref } from 'vue'\nimport { createRuntimeConfig, createScope } from '@xihan-ui/core'\nimport { connectExpressionInput, expressionInputMachine } 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 ExpressionInputContext {\n /** 已渲染的 label 部件数量,由 XhExpressionInputLabel 在 setup 里同步登记、卸载时撤销。 */\n labelCount: Ref<number>\n /** 已渲染的 issues 部件数量,决定输入框的描述链引不引用它。 */\n issuesCount: Ref<number>\n /** 输入框是不是多行宿主,由 XhExpressionInputInput 按 as 登记。 */\n multiline: Ref<boolean>\n service: Service<ExpressionInputSchema>\n api: ComputedRef<ExpressionInputApi>\n inputRef: Ref<ExpressionInputEl | null>\n highlightRef: Ref<HTMLElement | null>\n positionerRef: Ref<HTMLElement | null>\n contentRef: Ref<HTMLElement | null>\n /** 当前是否应当渲染:退场动画播完之前仍为真。 */\n visible: Ref<boolean>\n /** 浮层迁移到的位置:全局配置的容器 > 运行时的浮层落点 > body。 */\n portalTarget: ComputedRef<string | Element>\n}\n\nexport function useExpressionInput(\n props: ExpressionInputSchema['props'],\n handlers: Pick<ExpressionInputSchema['props'], 'onValueChange' | 'onIssuesChange' | 'onCompletionSelect' | 'onOpenChange'> = {},\n): ExpressionInputContext {\n const xhConfig = useXhConfig()\n const inputRef = ref<ExpressionInputEl | null>(null)\n const highlightRef = 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 const labelCount = ref(0)\n const issuesCount = ref(0)\n const multiline = ref(false)\n const service = useMachine(expressionInputMachine, () => ({\n ...props,\n labelled: labelCount.value > 0,\n issuesRendered: issuesCount.value > 0,\n multiline: multiline.value,\n ...handlers,\n }), scope)\n\n let config: RuntimeConfig | null = null\n\n if (typeof document !== 'undefined') {\n config = createRuntimeConfig({ scope, idGenerator: idGen })\n\n // 只提供注册函数,实际入栈出栈由机器的 trackLayer 效应按展开态驱动\n const registerLayer = (): { layer: Layer, dispose: Cleanup } => config!.layerRegistry.register({\n kind: 'popover',\n node: () => contentRef.value,\n // 输入框记为本层分支:在里面打字、点击都算层内交互,不该把补全点没\n branches: () => [inputRef.value, positionerRef.value].filter(Boolean) as Element[],\n isModal: () => false,\n surfaces: () => [],\n })\n\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 service.refs.set('getInputEl', () => inputRef.value)\n service.refs.set('getHighlightEl', () => highlightRef.value)\n }\n\n const api = computed(() => connectExpressionInput(service, vueNormalize))\n const visible = useOverlayExit({\n config,\n isOpen: () => api.value.open,\n contentRef,\n onPresence: presence => service.refs.set('presence', presence),\n })\n const portalTarget = computed<string | Element>(() => xhConfig.value.portalContainer?.() ?? config?.portalContainer() ?? 'body')\n\n return { labelCount, issuesCount, multiline, visible, service, api, inputRef, highlightRef, positionerRef, contentRef, portalTarget }\n}\n"],"mappings":";;;;;;;;;;AAuCA,SAAgB,mBACd,OACA,WAA6H,CAAC,GACtG;CACxB,MAAM,WAAW,YAAY;CAC7B,MAAM,WAAW,IAA8B,IAAI;CACnD,MAAM,eAAe,IAAwB,IAAI;CACjD,MAAM,gBAAgB,IAAwB,IAAI;CAClD,MAAM,aAAa,IAAwB,IAAI;CAE/C,MAAM,QAAQ,qBAAqB;CACnC,MAAM,QAAQ,YAAY,MAAM,KAAK;CACrC,MAAM,aAAa,IAAI,CAAC;CACxB,MAAM,cAAc,IAAI,CAAC;CACzB,MAAM,YAAY,IAAI,KAAK;CAC3B,MAAM,UAAU,WAAW,+BAA+B;EACxD,GAAG;EACH,UAAU,WAAW,QAAQ;EAC7B,gBAAgB,YAAY,QAAQ;EACpC,WAAW,UAAU;EACrB,GAAG;CACL,IAAI,KAAK;CAET,IAAI,SAA+B;CAEnC,IAAI,OAAO,aAAa,aAAa;EACnC,SAAS,oBAAoB;GAAE;GAAO,aAAa;EAAM,CAAC;EAG1D,MAAM,sBAA0D,OAAQ,cAAc,SAAS;GAC7F,MAAM;GACN,YAAY,WAAW;GAEvB,gBAAgB,CAAC,SAAS,OAAO,cAAc,KAAK,CAAC,CAAC,OAAO,OAAO;GACpE,eAAe;GACf,gBAAgB,CAAC;EACnB,CAAC;EAED,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;EAC3D,QAAQ,KAAK,IAAI,oBAAoB,SAAS,KAAK;EACnD,QAAQ,KAAK,IAAI,wBAAwB,aAAa,KAAK;CAC7D;CAEA,MAAM,MAAM,eAAe,uBAAuB,SAAS,YAAY,CAAC;CASxE,OAAO;EAAE;EAAY;EAAa;EAAW,SAR7B,eAAe;GAC7B;GACA,cAAc,IAAI,MAAM;GACxB;GACA,aAAY,aAAY,QAAQ,KAAK,IAAI,YAAY,QAAQ;EAC/D,CAGmD;EAAG;EAAS;EAAK;EAAU;EAAc;EAAe;EAAY,cAFlG,eAAiC,SAAS,MAAM,kBAAkB,KAAK,QAAQ,gBAAgB,KAAK,MAES;CAAE;AACtI"}
@@ -0,0 +1,12 @@
1
+ //#region src/components/field/boundary.d.ts
2
+ /**
3
+ * 字段边界:子树里的控件不再继承外层字段的标签、说明、状态与控件 id,表单字段组也一并断开。
4
+ * 组合控件把自己的内部输入(图标选择器里的搜索框、筛选框)包进来,它们就不会被读成外层字段的名字,
5
+ * 两个封装同处一个字段时也不会拿到同一个 id。本身不渲染节点;浮层内容经 Portal 搬走时已自动断开。
6
+ */
7
+ declare const XhFieldBoundary: import("vue").DefineComponent<{}, () => import("vue").VNode<import("vue").RendererNode, import("vue").RendererElement, {
8
+ [key: string]: any;
9
+ }>[] | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
10
+ //#endregion
11
+ export { XhFieldBoundary };
12
+ //# sourceMappingURL=boundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary.d.ts","names":[],"sources":["../../../src/components/field/boundary.ts"],"mappings":";;;;;;cAea,+BAAe,wCAAA,oBAAA,4BAAA;;4CAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -0,0 +1,19 @@
1
+ import { clearFieldContext } from "./context.js";
2
+ import { defineComponent } from "vue";
3
+ //#region src/components/field/boundary.ts
4
+ /**
5
+ * 字段边界:子树里的控件不再继承外层字段的标签、说明、状态与控件 id,表单字段组也一并断开。
6
+ * 组合控件把自己的内部输入(图标选择器里的搜索框、筛选框)包进来,它们就不会被读成外层字段的名字,
7
+ * 两个封装同处一个字段时也不会拿到同一个 id。本身不渲染节点;浮层内容经 Portal 搬走时已自动断开。
8
+ */
9
+ const XhFieldBoundary = defineComponent({
10
+ name: "XhFieldBoundary",
11
+ setup(_, { slots }) {
12
+ clearFieldContext();
13
+ return () => slots.default?.();
14
+ }
15
+ });
16
+ //#endregion
17
+ export { XhFieldBoundary };
18
+
19
+ //# sourceMappingURL=boundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary.js","names":[],"sources":["../../../src/components/field/boundary.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// 提供 field boundary 相关实现。\n\nimport { defineComponent } from 'vue'\nimport { clearFieldContext } from './context'\n\n/**\n * 字段边界:子树里的控件不再继承外层字段的标签、说明、状态与控件 id,表单字段组也一并断开。\n * 组合控件把自己的内部输入(图标选择器里的搜索框、筛选框)包进来,它们就不会被读成外层字段的名字,\n * 两个封装同处一个字段时也不会拿到同一个 id。本身不渲染节点;浮层内容经 Portal 搬走时已自动断开。\n */\nexport const XhFieldBoundary = defineComponent({\n name: 'XhFieldBoundary',\n setup(_, { slots }) {\n clearFieldContext()\n return () => slots.default?.()\n },\n})\n"],"mappings":";;;;;;;;AAeA,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,kBAAkB;EAClB,aAAa,MAAM,UAAU;CAC/B;AACF,CAAC"}
@@ -1,6 +1,18 @@
1
1
  import { SlotsType, VNode } from "vue";
2
2
  //#region src/components/field/field.d.ts
3
3
  declare const XhFieldRoot: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
4
+ /** 标题文字。不写默认插槽时铺 label 部件;需要放置其他内容时改用 label 插槽。 */
5
+ label: {
6
+ type: StringConstructor;
7
+ };
8
+ /** 说明文字。不写默认插槽时铺说明部件;需要放置其他内容时改用 description 插槽。 */
9
+ description: {
10
+ type: StringConstructor;
11
+ };
12
+ /** 错误文案。不写默认插槽时给了(空串也算)就铺错误文案部件,空串时在表单里自取该项的错误。 */
13
+ errorText: {
14
+ type: StringConstructor;
15
+ };
4
16
  invalid: {
5
17
  type: BooleanConstructor;
6
18
  default: undefined;
@@ -23,6 +35,18 @@ declare const XhFieldRoot: import("vue").DefineComponent<import("vue").ExtractPr
23
35
  }>, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
24
36
  [key: string]: any;
25
37
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
38
+ /** 标题文字。不写默认插槽时铺 label 部件;需要放置其他内容时改用 label 插槽。 */
39
+ label: {
40
+ type: StringConstructor;
41
+ };
42
+ /** 说明文字。不写默认插槽时铺说明部件;需要放置其他内容时改用 description 插槽。 */
43
+ description: {
44
+ type: StringConstructor;
45
+ };
46
+ /** 错误文案。不写默认插槽时给了(空串也算)就铺错误文案部件,空串时在表单里自取该项的错误。 */
47
+ errorText: {
48
+ type: StringConstructor;
49
+ };
26
50
  invalid: {
27
51
  type: BooleanConstructor;
28
52
  default: undefined;
@@ -47,15 +71,13 @@ declare const XhFieldRoot: import("vue").DefineComponent<import("vue").ExtractPr
47
71
  invalid: boolean;
48
72
  disabled: boolean;
49
73
  readOnly: boolean;
50
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
51
- /**
52
- * 字段边界:子树里的控件不再继承外层字段的标签、说明、状态与控件 id,表单字段组也一并断开。
53
- * 组合控件把自己的内部输入(图标选择器里的搜索框、筛选框)包进来,它们就不会被读成外层字段的名字,
54
- * 两个封装同处一个字段时也不会拿到同一个 id。本身不渲染节点;浮层内容经 Portal 搬走时已自动断开。
55
- */
56
- declare const XhFieldBoundary: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
57
- [key: string]: any;
58
- }>[] | undefined, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
74
+ }, SlotsType<{
75
+ default?: () => VNode[];
76
+ label?: () => VNode[];
77
+ control?: () => VNode[];
78
+ description?: () => VNode[];
79
+ errorText?: () => VNode[];
80
+ }>, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
59
81
  declare const XhFieldLabel: import("vue").DefineComponent<{}, () => VNode<import("vue").RendererNode, import("vue").RendererElement, {
60
82
  [key: string]: any;
61
83
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -99,5 +121,5 @@ declare const XhFieldErrorText: import("vue").DefineComponent<{}, () => VNode<im
99
121
  [key: string]: any;
100
122
  }>, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
101
123
  //#endregion
102
- export { FieldControlSlotProps, XhFieldBoundary, XhFieldControl, XhFieldDescription, XhFieldErrorText, XhFieldLabel, XhFieldRoot };
124
+ export { FieldControlSlotProps, XhFieldControl, XhFieldDescription, XhFieldErrorText, XhFieldLabel, XhFieldRoot };
103
125
  //# sourceMappingURL=field.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"field.d.ts","names":[],"sources":["../../../src/components/field/field.ts"],"mappings":";;cAea,2BAAW,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAgBtB;;;;;;cAOW,+BAAe,0BAAA,oBAAA,4BAAA;;4CAM1B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,4BAAY,0BAAA,oBAAA,4BAAA;;8BAMvB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;KAGU,wBAAwB;cAiBvB,8BAAc,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYb,WAAC,OAAO,0BAA0B;kCAc9C;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAM7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAe3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
1
+ {"version":3,"file":"field.d.ts","names":[],"sources":["../../../src/components/field/field.ts"],"mappings":";;cAmBa,2BAAW,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBV,gBAAM;EACR,cAAM;EACJ,gBAAM;EACF,oBAAM;EACR,kBAAM;kCAapB;cAEW,4BAAY,0BAAA,oBAAA,4BAAA;;8BAOvB,qCAAA,iDAAA,aAAA,eAAA,oDAAA;;KAGU,wBAAwB;cAiBvB,8BAAc,8BAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYb,WAAC,OAAO,0BAA0B;kCAgB9C;cAEW,kCAAkB,0BAAA,oBAAA,4BAAA;;8BAS7B,qCAAA,iDAAA,aAAA,eAAA,oDAAA;cAEW,gCAAgB,0BAAA,oBAAA,4BAAA;;8BAgB3B,qCAAA,iDAAA,aAAA,eAAA,oDAAA"}
@@ -1,13 +1,22 @@
1
- import { isRoleMarker, mergeIntoChild } from "../../runtime/as-child.js";
2
1
  import { useOptionalFormContext, useOptionalFormField } from "../form/context.js";
3
- import { clearFieldContext, provideField, useFieldContext } from "./context.js";
2
+ import { provideField, useFieldContext } from "./context.js";
3
+ import { renderStructure } from "../../runtime/structure.js";
4
+ import { withXhConfig } from "../../config/config.js";
5
+ import { isRoleMarker, mergeIntoChild } from "../../runtime/as-child.js";
4
6
  import { useFormControlProps } from "../form/use-form-control.js";
5
- import { useField } from "./use-field.js";
6
- import { defineComponent, h } from "vue";
7
+ import { useField, useFieldPartPresence } from "./use-field.js";
8
+ import { fieldStructure, hasNamingContent } from "@xihan-ui/headless";
9
+ import { defineComponent, h, ref } from "vue";
7
10
  //#region src/components/field/field.ts
8
11
  const XhFieldRoot = defineComponent({
9
12
  name: "XhFieldRoot",
10
13
  props: {
14
+ /** 标题文字。不写默认插槽时铺 label 部件;需要放置其他内容时改用 label 插槽。 */
15
+ label: { type: String },
16
+ /** 说明文字。不写默认插槽时铺说明部件;需要放置其他内容时改用 description 插槽。 */
17
+ description: { type: String },
18
+ /** 错误文案。不写默认插槽时给了(空串也算)就铺错误文案部件,空串时在表单里自取该项的错误。 */
19
+ errorText: { type: String },
11
20
  invalid: {
12
21
  type: Boolean,
13
22
  default: void 0
@@ -26,28 +35,27 @@ const XhFieldRoot = defineComponent({
26
35
  },
27
36
  controlId: { type: String }
28
37
  },
38
+ slots: Object,
29
39
  setup(props, { slots }) {
30
- const ctx = useField(useFormControlProps(props));
40
+ const ctx = useField(withXhConfig("field", useFormControlProps(props)));
31
41
  provideField(ctx);
32
- return () => h("div", ctx.api.value.getRootProps(), slots.default?.());
33
- }
34
- });
35
- /**
36
- * 字段边界:子树里的控件不再继承外层字段的标签、说明、状态与控件 id,表单字段组也一并断开。
37
- * 组合控件把自己的内部输入(图标选择器里的搜索框、筛选框)包进来,它们就不会被读成外层字段的名字,
38
- * 两个封装同处一个字段时也不会拿到同一个 id。本身不渲染节点;浮层内容经 Portal 搬走时已自动断开。
39
- */
40
- const XhFieldBoundary = defineComponent({
41
- name: "XhFieldBoundary",
42
- setup(_, { slots }) {
43
- clearFieldContext();
44
- return () => slots.default?.();
42
+ return () => h("div", ctx.api.value.getRootProps(), slots.default ? slots.default() : renderDefaultStructure({
43
+ label: props.label,
44
+ description: props.description,
45
+ errorText: props.errorText
46
+ }, {
47
+ "label": slots.label,
48
+ "control": slots.control,
49
+ "description": slots.description,
50
+ "error-text": slots.errorText
51
+ }));
45
52
  }
46
53
  });
47
54
  const XhFieldLabel = defineComponent({
48
55
  name: "XhFieldLabel",
49
56
  setup(_, { slots }) {
50
57
  const ctx = useFieldContext();
58
+ useFieldPartPresence(ctx, "label");
51
59
  return () => h("label", ctx.api.value.getLabelProps(), slots.default?.());
52
60
  }
53
61
  });
@@ -78,6 +86,7 @@ asChild: {
78
86
  slots: Object,
79
87
  setup(props, { slots }) {
80
88
  const ctx = useFieldContext();
89
+ useFieldPartPresence(ctx, "control");
81
90
  return () => {
82
91
  const controlProps = ctx.api.value.getControlProps();
83
92
  const children = slots.default?.(controlProps) ?? [];
@@ -90,13 +99,19 @@ const XhFieldDescription = defineComponent({
90
99
  name: "XhFieldDescription",
91
100
  setup(_, { slots }) {
92
101
  const ctx = useFieldContext();
93
- return () => h("p", ctx.api.value.getDescriptionProps(), slots.default?.());
102
+ const el = ref(null);
103
+ useFieldPartPresence(ctx, "description", () => el.value != null && hasNamingContent(el.value));
104
+ return () => h("p", {
105
+ ...ctx.api.value.getDescriptionProps(),
106
+ ref: el
107
+ }, slots.default?.());
94
108
  }
95
109
  });
96
110
  const XhFieldErrorText = defineComponent({
97
111
  name: "XhFieldErrorText",
98
112
  setup(_, { slots }) {
99
113
  const ctx = useFieldContext();
114
+ useFieldPartPresence(ctx, "errorText");
100
115
  const form = useOptionalFormContext();
101
116
  const handle = useOptionalFormField();
102
117
  return () => {
@@ -106,7 +121,23 @@ const XhFieldErrorText = defineComponent({
106
121
  };
107
122
  }
108
123
  });
124
+ /** 标准结构里各部件对应的组件;控件是出口,原样放作者给的内容。 */
125
+ const FIELD_PARTS = {
126
+ "label": XhFieldLabel,
127
+ "description": XhFieldDescription,
128
+ "error-text": XhFieldErrorText
129
+ };
130
+ /**
131
+ * 未写默认插槽时铺开的整套结构:照 headless 的 fieldStructure 渲,与 Web Components 不写部件时元素生成的节点出自同一份。
132
+ * control 插槽的内容原样放在标题之后;标题、说明、错误文案取文字,或由同名插槽接管。
133
+ */
134
+ function renderDefaultStructure(text, sections) {
135
+ return renderStructure(fieldStructure({
136
+ ...text,
137
+ slotted: (name) => sections[name] != null
138
+ }), FIELD_PARTS, (node) => node.slot ? sections[node.slot.name]?.() : void 0, {}, () => sections.control?.());
139
+ }
109
140
  //#endregion
110
- export { XhFieldBoundary, XhFieldControl, XhFieldDescription, XhFieldErrorText, XhFieldLabel, XhFieldRoot, wiringOnly };
141
+ export { XhFieldControl, XhFieldDescription, XhFieldErrorText, XhFieldLabel, XhFieldRoot, wiringOnly };
111
142
 
112
143
  //# sourceMappingURL=field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","names":[],"sources":["../../../src/components/field/field.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// 提供 field 相关实现。\n\nimport type { SlotsType, VNode } from 'vue'\nimport { defineComponent, h } from 'vue'\nimport { isRoleMarker, mergeIntoChild } from '../../runtime/as-child'\nimport { useOptionalFormContext, useOptionalFormField } from '../form/context'\nimport { useFormControlProps } from '../form/use-form-control'\nimport { clearFieldContext, provideField, useFieldContext } from './context'\nimport { useField } from './use-field'\n\nexport const XhFieldRoot = defineComponent({\n name: 'XhFieldRoot',\n // 三个布尔缺省 undefined:在 XhFormFieldGroup 里没写就从表单上下文自取,写了以写的为准\n props: {\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n // 控件节点的 id,不占用根节点自己的 DOM id\n controlId: { type: String },\n },\n setup(props, { slots }) {\n const ctx = useField(useFormControlProps(props))\n provideField(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/**\n * 字段边界:子树里的控件不再继承外层字段的标签、说明、状态与控件 id,表单字段组也一并断开。\n * 组合控件把自己的内部输入(图标选择器里的搜索框、筛选框)包进来,它们就不会被读成外层字段的名字,\n * 两个封装同处一个字段时也不会拿到同一个 id。本身不渲染节点;浮层内容经 Portal 搬走时已自动断开。\n */\nexport const XhFieldBoundary = defineComponent({\n name: 'XhFieldBoundary',\n setup(_, { slots }) {\n clearFieldContext()\n return () => slots.default?.()\n },\n})\n\nexport const XhFieldLabel = defineComponent({\n name: 'XhFieldLabel',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 默认插槽的载荷:控件节点应挂载的那组属性,作者把它交给自己渲染的控件。 */\nexport type FieldControlSlotProps = Record<string, unknown>\n\n/**\n * 去掉角色标记,只保留接线属性(id、aria-* 与状态位)。\n *\n * 角色标记含解剖两位与家族标记(data-xh-*):control 投影了 Field Chrome 的视觉盒标记,\n * 落到薄封装的根上会在封装自己的视觉盒外再画一层壳。\n */\nexport function wiringOnly(controlProps: Record<string, unknown>): Record<string, unknown> {\n const rest: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(controlProps)) {\n if (!isRoleMarker(key))\n rest[key] = value\n }\n return rest\n}\n\nexport const XhFieldControl = defineComponent({\n name: 'XhFieldControl',\n props: {\n /**\n * 把接线属性合并到唯一的子节点上,默认开启。\n *\n * 子节点是薄封装(根不是可聚焦元素)时关闭它:属性只经插槽载荷交出,\n * 由封装内部调用 useFieldControl 绑定到真实控件上。\n */\n asChild: { type: Boolean, default: true },\n },\n slots: Object as SlotsType<{\n default?: (props: FieldControlSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useFieldContext()\n return () => {\n const controlProps = ctx.api.value.getControlProps() as Record<string, unknown>\n // control props 经 slot props 交给作者,控件节点由作者渲染\n const children = slots.default?.(controlProps) ?? []\n // 手工接线必须显式关闭 asChild,不能根据无效结构猜测作者意图。\n if (!props.asChild)\n return children\n return mergeIntoChild(children, controlProps, 'field/control')\n }\n },\n})\n\nexport const XhFieldDescription = defineComponent({\n name: 'XhFieldDescription',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n return () => h('p', ctx.api.value.getDescriptionProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\nexport const XhFieldErrorText = defineComponent({\n name: 'XhFieldErrorText',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n const form = useOptionalFormContext()\n const handle = useOptionalFormField()\n // 节点常挂,靠 hidden 显隐;插槽没给内容时在表单里自取该字段的错误文案\n return () => {\n const kids = slots.default?.()\n const auto = (!kids || kids.length === 0) && form && handle\n ? form.api.value.getFieldError(handle.name())\n : undefined\n return h('p', ctx.api.value.getErrorTextProps() as Record<string, unknown>, kids?.length ? kids : auto)\n }\n },\n})\n"],"mappings":";;;;;;;AAeA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;EACL,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC7C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAE9C,WAAW,EAAE,MAAM,OAAO;CAC5B;CACA,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,SAAS,oBAAoB,KAAK,CAAC;EAC/C,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UAAU,CAAC;CAClG;AACF,CAAC;;;;;;AAOD,MAAa,kBAAkB,gBAAgB;CAC7C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,kBAAkB;EAClB,aAAa,MAAM,UAAU;CAC/B;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;;;;;AAWD,SAAgB,WAAW,cAAgE;CACzF,MAAM,OAAgC,CAAC;CACvC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,YAAY,GACpD,IAAI,CAAC,aAAa,GAAG,GACnB,KAAK,OAAO;CAEhB,OAAO;AACT;AAEA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO;;;;;;;AAOL,SAAS;EAAE,MAAM;EAAS,SAAS;CAAK,EAC1C;CACA,OAAO;CAGP,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAC5B,aAAa;GACX,MAAM,eAAe,IAAI,IAAI,MAAM,gBAAgB;GAEnD,MAAM,WAAW,MAAM,UAAU,YAAY,KAAK,CAAC;GAEnD,IAAI,CAAC,MAAM,SACT,OAAO;GACT,OAAO,eAAe,UAAU,cAAc,eAAe;EAC/D;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,aAAa,EAAE,KAAK,IAAI,IAAI,MAAM,oBAAoB,GAA8B,MAAM,UAAU,CAAC;CACvG;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,OAAO,uBAAuB;EACpC,MAAM,SAAS,qBAAqB;EAEpC,aAAa;GACX,MAAM,OAAO,MAAM,UAAU;GAC7B,MAAM,QAAQ,CAAC,QAAQ,KAAK,WAAW,MAAM,QAAQ,SACjD,KAAK,IAAI,MAAM,cAAc,OAAO,KAAK,CAAC,IAC1C,KAAA;GACJ,OAAO,EAAE,KAAK,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,SAAS,OAAO,IAAI;EACxG;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"field.js","names":[],"sources":["../../../src/components/field/field.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// 提供 field 相关实现。\n\nimport type { FieldStructureOptions } from '@xihan-ui/headless'\nimport type { SlotsType, VNode } from 'vue'\nimport { fieldStructure, hasNamingContent } from '@xihan-ui/headless'\nimport { defineComponent, h, ref } from 'vue'\nimport { withXhConfig } from '../../config/config'\nimport { isRoleMarker, mergeIntoChild } from '../../runtime/as-child'\nimport { renderStructure } from '../../runtime/structure'\nimport { useOptionalFormContext, useOptionalFormField } from '../form/context'\nimport { useFormControlProps } from '../form/use-form-control'\nimport { provideField, useFieldContext } from './context'\nimport { useField, useFieldPartPresence } from './use-field'\n\nexport const XhFieldRoot = defineComponent({\n name: 'XhFieldRoot',\n // 三个布尔缺省 undefined:在 XhFormFieldGroup 里没写就从表单上下文自取,写了以写的为准\n props: {\n /** 标题文字。不写默认插槽时铺 label 部件;需要放置其他内容时改用 label 插槽。 */\n label: { type: String },\n /** 说明文字。不写默认插槽时铺说明部件;需要放置其他内容时改用 description 插槽。 */\n description: { type: String },\n /** 错误文案。不写默认插槽时给了(空串也算)就铺错误文案部件,空串时在表单里自取该项的错误。 */\n errorText: { type: String },\n invalid: { type: Boolean, default: undefined },\n required: { type: Boolean, default: undefined },\n disabled: { type: Boolean, default: undefined },\n readOnly: { type: Boolean, default: undefined },\n // 控件节点的 id,不占用根节点自己的 DOM id\n controlId: { type: String },\n },\n slots: Object as SlotsType<{\n default?: () => VNode[]\n label?: () => VNode[]\n control?: () => VNode[]\n description?: () => VNode[]\n errorText?: () => VNode[]\n }>,\n setup(props, { slots }) {\n // 字段集压下来的作用域禁用也落到字段上:标题与说明随组内控件一起变淡\n const ctx = useField(withXhConfig('field', useFormControlProps(props)))\n provideField(ctx)\n return () => h('div', ctx.api.value.getRootProps() as Record<string, unknown>, slots.default\n ? slots.default()\n : renderDefaultStructure(\n { label: props.label, description: props.description, errorText: props.errorText },\n { 'label': slots.label, 'control': slots.control, 'description': slots.description, 'error-text': slots.errorText },\n ))\n },\n})\n\nexport const XhFieldLabel = defineComponent({\n name: 'XhFieldLabel',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n useFieldPartPresence(ctx, 'label')\n return () => h('label', ctx.api.value.getLabelProps() as Record<string, unknown>, slots.default?.())\n },\n})\n\n/** 默认插槽的载荷:控件节点应挂载的那组属性,作者把它交给自己渲染的控件。 */\nexport type FieldControlSlotProps = Record<string, unknown>\n\n/**\n * 去掉角色标记,只保留接线属性(id、aria-* 与状态位)。\n *\n * 角色标记含解剖两位与家族标记(data-xh-*):control 投影了 Field Chrome 的视觉盒标记,\n * 落到薄封装的根上会在封装自己的视觉盒外再画一层壳。\n */\nexport function wiringOnly(controlProps: Record<string, unknown>): Record<string, unknown> {\n const rest: Record<string, unknown> = {}\n for (const [key, value] of Object.entries(controlProps)) {\n if (!isRoleMarker(key))\n rest[key] = value\n }\n return rest\n}\n\nexport const XhFieldControl = defineComponent({\n name: 'XhFieldControl',\n props: {\n /**\n * 把接线属性合并到唯一的子节点上,默认开启。\n *\n * 子节点是薄封装(根不是可聚焦元素)时关闭它:属性只经插槽载荷交出,\n * 由封装内部调用 useFieldControl 绑定到真实控件上。\n */\n asChild: { type: Boolean, default: true },\n },\n slots: Object as SlotsType<{\n default?: (props: FieldControlSlotProps) => VNode[]\n }>,\n setup(props, { slots }) {\n const ctx = useFieldContext()\n // control 在场:label 的 for 指向它;不在场时由字段代为聚焦库内控件\n useFieldPartPresence(ctx, 'control')\n return () => {\n const controlProps = ctx.api.value.getControlProps() as Record<string, unknown>\n // control props 经 slot props 交给作者,控件节点由作者渲染\n const children = slots.default?.(controlProps) ?? []\n // 手工接线必须显式关闭 asChild,不能根据无效结构猜测作者意图。\n if (!props.asChild)\n return children\n return mergeIntoChild(children, controlProps, 'field/control')\n }\n },\n})\n\nexport const XhFieldDescription = defineComponent({\n name: 'XhFieldDescription',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n const el = ref<HTMLElement | null>(null)\n // 读不出一句话的说明不进描述链\n useFieldPartPresence(ctx, 'description', () => el.value != null && hasNamingContent(el.value))\n return () => h('p', { ...ctx.api.value.getDescriptionProps() as Record<string, unknown>, ref: el }, slots.default?.())\n },\n})\n\nexport const XhFieldErrorText = defineComponent({\n name: 'XhFieldErrorText',\n setup(_, { slots }) {\n const ctx = useFieldContext()\n useFieldPartPresence(ctx, 'errorText')\n const form = useOptionalFormContext()\n const handle = useOptionalFormField()\n // 节点常挂,靠 hidden 显隐;插槽没给内容时在表单里自取该字段的错误文案\n return () => {\n const kids = slots.default?.()\n const auto = (!kids || kids.length === 0) && form && handle\n ? form.api.value.getFieldError(handle.name())\n : undefined\n return h('p', ctx.api.value.getErrorTextProps() as Record<string, unknown>, kids?.length ? kids : auto)\n }\n },\n})\n\n/** 标准结构里各部件对应的组件;控件是出口,原样放作者给的内容。 */\nconst FIELD_PARTS = {\n 'label': XhFieldLabel,\n 'description': XhFieldDescription,\n 'error-text': XhFieldErrorText,\n}\n\ntype FieldSectionSlots = Readonly<Partial<Record<'label' | 'control' | 'description' | 'error-text', () => VNode[]>>>\n\n/**\n * 未写默认插槽时铺开的整套结构:照 headless 的 fieldStructure 渲,与 Web Components 不写部件时元素生成的节点出自同一份。\n * control 插槽的内容原样放在标题之后;标题、说明、错误文案取文字,或由同名插槽接管。\n */\nfunction renderDefaultStructure(text: Pick<FieldStructureOptions, 'label' | 'description' | 'errorText'>, sections: FieldSectionSlots): VNode[] {\n const nodes = fieldStructure({ ...text, slotted: name => sections[name as keyof FieldSectionSlots] != null })\n return renderStructure(\n nodes,\n FIELD_PARTS,\n node => (node.slot ? sections[node.slot.name as keyof FieldSectionSlots]?.() : undefined),\n {},\n () => sections.control?.(),\n )\n}\n"],"mappings":";;;;;;;;;;AAmBA,MAAa,cAAc,gBAAgB;CACzC,MAAM;CAEN,OAAO;;EAEL,OAAO,EAAE,MAAM,OAAO;;EAEtB,aAAa,EAAE,MAAM,OAAO;;EAE5B,WAAW,EAAE,MAAM,OAAO;EAC1B,SAAS;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC7C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAC9C,UAAU;GAAE,MAAM;GAAS,SAAS,KAAA;EAAU;EAE9C,WAAW,EAAE,MAAM,OAAO;CAC5B;CACA,OAAO;CAOP,MAAM,OAAO,EAAE,SAAS;EAEtB,MAAM,MAAM,SAAS,aAAa,SAAS,oBAAoB,KAAK,CAAC,CAAC;EACtE,aAAa,GAAG;EAChB,aAAa,EAAE,OAAO,IAAI,IAAI,MAAM,aAAa,GAA8B,MAAM,UACjF,MAAM,QAAQ,IACd,uBACE;GAAE,OAAO,MAAM;GAAO,aAAa,MAAM;GAAa,WAAW,MAAM;EAAU,GACjF;GAAE,SAAS,MAAM;GAAO,WAAW,MAAM;GAAS,eAAe,MAAM;GAAa,cAAc,MAAM;EAAU,CACpH,CAAC;CACP;AACF,CAAC;AAED,MAAa,eAAe,gBAAgB;CAC1C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,qBAAqB,KAAK,OAAO;EACjC,aAAa,EAAE,SAAS,IAAI,IAAI,MAAM,cAAc,GAA8B,MAAM,UAAU,CAAC;CACrG;AACF,CAAC;;;;;;;AAWD,SAAgB,WAAW,cAAgE;CACzF,MAAM,OAAgC,CAAC;CACvC,KAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,YAAY,GACpD,IAAI,CAAC,aAAa,GAAG,GACnB,KAAK,OAAO;CAEhB,OAAO;AACT;AAEA,MAAa,iBAAiB,gBAAgB;CAC5C,MAAM;CACN,OAAO;;;;;;;AAOL,SAAS;EAAE,MAAM;EAAS,SAAS;CAAK,EAC1C;CACA,OAAO;CAGP,MAAM,OAAO,EAAE,SAAS;EACtB,MAAM,MAAM,gBAAgB;EAE5B,qBAAqB,KAAK,SAAS;EACnC,aAAa;GACX,MAAM,eAAe,IAAI,IAAI,MAAM,gBAAgB;GAEnD,MAAM,WAAW,MAAM,UAAU,YAAY,KAAK,CAAC;GAEnD,IAAI,CAAC,MAAM,SACT,OAAO;GACT,OAAO,eAAe,UAAU,cAAc,eAAe;EAC/D;CACF;AACF,CAAC;AAED,MAAa,qBAAqB,gBAAgB;CAChD,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,MAAM,KAAK,IAAwB,IAAI;EAEvC,qBAAqB,KAAK,qBAAqB,GAAG,SAAS,QAAQ,iBAAiB,GAAG,KAAK,CAAC;EAC7F,aAAa,EAAE,KAAK;GAAE,GAAG,IAAI,IAAI,MAAM,oBAAoB;GAA8B,KAAK;EAAG,GAAG,MAAM,UAAU,CAAC;CACvH;AACF,CAAC;AAED,MAAa,mBAAmB,gBAAgB;CAC9C,MAAM;CACN,MAAM,GAAG,EAAE,SAAS;EAClB,MAAM,MAAM,gBAAgB;EAC5B,qBAAqB,KAAK,WAAW;EACrC,MAAM,OAAO,uBAAuB;EACpC,MAAM,SAAS,qBAAqB;EAEpC,aAAa;GACX,MAAM,OAAO,MAAM,UAAU;GAC7B,MAAM,QAAQ,CAAC,QAAQ,KAAK,WAAW,MAAM,QAAQ,SACjD,KAAK,IAAI,MAAM,cAAc,OAAO,KAAK,CAAC,IAC1C,KAAA;GACJ,OAAO,EAAE,KAAK,IAAI,IAAI,MAAM,kBAAkB,GAA8B,MAAM,SAAS,OAAO,IAAI;EACxG;CACF;AACF,CAAC;;AAGD,MAAM,cAAc;CAClB,SAAS;CACT,eAAe;CACf,cAAc;AAChB;;;;;AAQA,SAAS,uBAAuB,MAA0E,UAAsC;CAE9I,OAAO,gBADO,eAAe;EAAE,GAAG;EAAM,UAAS,SAAQ,SAAS,SAAoC;CAAK,CAErG,GACJ,cACA,SAAS,KAAK,OAAO,SAAS,KAAK,KAAK,KAAgC,GAAG,IAAI,KAAA,GAC/E,CAAC,SACK,SAAS,UAAU,CAC3B;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-field-control.d.ts","names":[],"sources":["../../../src/components/field/use-field-control.ts"],"mappings":";;;;;;;;;;;;iBAsBgB,mBAAmB,YAAY;;;;;;;;;;;;;iBAqB/B,uBAAuB,YAAY;;;;;;;iBAqBnC,uBAAuB,YAAY;;;;;;;;;;;;iBAmBnC,uBAAuB,aAAa,OAAO,4BAA4B"}
1
+ {"version":3,"file":"use-field-control.d.ts","names":[],"sources":["../../../src/components/field/use-field-control.ts"],"mappings":";;;;;;;;;;;;iBAuBgB,mBAAmB,YAAY;;;;;;;;;;;;;iBAqB/B,uBAAuB,YAAY;;;;;;;iBAWnC,uBAAuB,YAAY;;;;;;;;;;;;iBAgBnC,uBAAuB,aAAa,OAAO,4BAA4B"}
@@ -1,5 +1,6 @@
1
1
  import { useOptionalFieldContext } from "./context.js";
2
2
  import { wiringOnly } from "./field.js";
3
+ import { fieldControlWiring, fieldGroupAttrs, fieldStateAttrs, withFieldLabel } from "@xihan-ui/headless";
3
4
  import { computed } from "vue";
4
5
  //#region src/components/field/use-field-control.ts
5
6
  /**
@@ -33,18 +34,7 @@ function useFieldControl() {
33
34
  */
34
35
  function useFieldStateWiring() {
35
36
  const ctx = useOptionalFieldContext();
36
- return computed(() => {
37
- if (!ctx) return {};
38
- const control = ctx.api.value.getControlProps();
39
- const wiring = {};
40
- for (const key of [
41
- "aria-describedby",
42
- "aria-invalid",
43
- "aria-required",
44
- "aria-readonly"
45
- ]) if (control[key] !== void 0) wiring[key] = control[key];
46
- return wiring;
47
- });
37
+ return computed(() => ctx ? fieldStateAttrs(fieldControlWiring(ctx.api.value)) : {});
48
38
  }
49
39
  /**
50
40
  * 组类控件(单选组、复选框组、滑块、评分、分格输入……)只取字段的描述链。
@@ -54,10 +44,7 @@ function useFieldStateWiring() {
54
44
  */
55
45
  function useFieldGroupWiring() {
56
46
  const ctx = useOptionalFieldContext();
57
- return computed(() => {
58
- const describedBy = ctx ? ctx.api.value.getControlProps()["aria-describedby"] : void 0;
59
- return describedBy === void 0 ? {} : { "aria-describedby": describedBy };
60
- });
47
+ return computed(() => ctx ? fieldGroupAttrs(fieldControlWiring(ctx.api.value)) : {});
61
48
  }
62
49
  /**
63
50
  * 把字段标签的 id 并入该份属性中的名字链,供库自身的薄封装包在渲染属性外面。
@@ -73,15 +60,8 @@ function useFieldGroupWiring() {
73
60
  function useFieldLabelWiring() {
74
61
  const ctx = useOptionalFieldContext();
75
62
  return computed(() => {
76
- const labelId = ctx?.api.value.labelId;
77
- return (props) => {
78
- if (!labelId) return props;
79
- const own = props["aria-labelledby"];
80
- return {
81
- ...props,
82
- "aria-labelledby": typeof own === "string" && own ? `${labelId} ${own}` : labelId
83
- };
84
- };
63
+ const labelId = ctx ? fieldControlWiring(ctx.api.value).labelId : void 0;
64
+ return (props) => withFieldLabel(props, labelId);
85
65
  });
86
66
  }
87
67
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"use-field-control.js","names":[],"sources":["../../../src/components/field/use-field-control.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 field control 相关实现。\n\nimport type { ComputedRef } from 'vue'\nimport { computed } from 'vue'\nimport { useOptionalFieldContext } from './context'\nimport { wiringOnly } from './field'\n\n/**\n * 在薄封装内部取字段的控件接线属性(id 与 aria-*),把它们绑定到真正可聚焦的节点上。\n *\n * XhFieldControl 默认把属性合并到它唯一的子节点上,而子节点是组件时合并的是组件根:\n * 封装的根往往是一个 div,label 的 for 指向它时无法聚焦(for 只对可标注元素生效),\n * 且这种失效不报错。封装内部调用一次本组合式,接线就落在应落的节点上。\n *\n * 外层要写 `<XhFieldControl :as-child=\"false\">`,否则属性会被合并两遍。\n * 不在字段内时返回空对象,封装仍可单独使用。\n */\nexport function useFieldControl(): ComputedRef<Record<string, unknown>> {\n const ctx = useOptionalFieldContext()\n return computed(() => {\n if (!ctx)\n return {}\n return wiringOnly(ctx.api.value.getControlProps() as Record<string, unknown>)\n })\n}\n\n/**\n * 只取字段的状态接线(说明、校验、只读),不含 id 与名字。\n *\n * 供库自身的薄封装使用:XhFieldControl 默认把整套属性合并到封装根上,id 与\n * aria-labelledby 落在那里是正确的(label 的 for 必须指向一个真实节点);但\n * aria-describedby 与 aria-invalid 落在根上等于未落:焦点进入的是内部的\n * input / button,读屏只朗读焦点所在节点的描述,说明与错误文本因此无法播报。\n * 封装把这几条补到真实控件上,两边不冲突:id 只有一份,描述有两份不影响播报。\n *\n * 作者自行编写封装时使用上面的 useFieldControl(配合 `:as-child=\"false\"`),\n * 该路径整套属性都落到真实控件上。\n */\nexport function useFieldStateWiring(): ComputedRef<Record<string, unknown>> {\n const ctx = useOptionalFieldContext()\n return computed(() => {\n if (!ctx)\n return {}\n const control = ctx.api.value.getControlProps() as Record<string, unknown>\n const wiring: Record<string, unknown> = {}\n for (const key of ['aria-describedby', 'aria-invalid', 'aria-required', 'aria-readonly']) {\n if (control[key] !== undefined)\n wiring[key] = control[key]\n }\n return wiring\n })\n}\n\n/**\n * 组类控件(单选组、复选框组、滑块、评分、分格输入……)只取字段的描述链。\n *\n * 焦点宿主是组根、拇指或格子,名字由 useFieldLabelWiring 并入;校验、必填与只读由组件按字段状态\n * 自己投影(role=group 不接受 aria-invalid / aria-required,组件的 connect 也只在支持它们的角色上发)。\n */\nexport function useFieldGroupWiring(): ComputedRef<Record<string, unknown>> {\n const ctx = useOptionalFieldContext()\n return computed(() => {\n const describedBy = ctx ? (ctx.api.value.getControlProps() as Record<string, unknown>)['aria-describedby'] : undefined\n return describedBy === undefined ? {} : { 'aria-describedby': describedBy }\n })\n}\n\n/**\n * 把字段标签的 id 并入该份属性中的名字链,供库自身的薄封装包在渲染属性外面。\n *\n * 复合控件的可聚焦部件自带 aria-labelledby,指向它自己的 label 部件。放入字段时\n * 作者使用的是字段的标签、组件的 label 部件并未渲染,该引用于是指向一个不存在的\n * 节点:按 accname 规则悬空 IDREF 直接跳过,而名字也无法回退到 label 的 for:for 指向的\n * 是封装根的 div,只对可标注元素生效。结果是焦点所在的控件没有任何名字。\n *\n * 字段的标签排在最前,控件自己的部分(值文本等)跟在后面,两边都可朗读。\n * 不在字段内时属性原样返回。\n */\nexport function useFieldLabelWiring(): ComputedRef<(props: Record<string, unknown>) => Record<string, unknown>> {\n const ctx = useOptionalFieldContext()\n return computed(() => {\n const labelId = ctx?.api.value.labelId\n return (props: Record<string, unknown>) => {\n if (!labelId)\n return props\n const own = props['aria-labelledby']\n return {\n ...props,\n 'aria-labelledby': typeof own === 'string' && own ? `${labelId} ${own}` : labelId,\n }\n }\n })\n}\n"],"mappings":";;;;;;;;;;;;;;AAsBA,SAAgB,kBAAwD;CACtE,MAAM,MAAM,wBAAwB;CACpC,OAAO,eAAe;EACpB,IAAI,CAAC,KACH,OAAO,CAAC;EACV,OAAO,WAAW,IAAI,IAAI,MAAM,gBAAgB,CAA4B;CAC9E,CAAC;AACH;;;;;;;;;;;;;AAcA,SAAgB,sBAA4D;CAC1E,MAAM,MAAM,wBAAwB;CACpC,OAAO,eAAe;EACpB,IAAI,CAAC,KACH,OAAO,CAAC;EACV,MAAM,UAAU,IAAI,IAAI,MAAM,gBAAgB;EAC9C,MAAM,SAAkC,CAAC;EACzC,KAAK,MAAM,OAAO;GAAC;GAAoB;GAAgB;GAAiB;EAAe,GACrF,IAAI,QAAQ,SAAS,KAAA,GACnB,OAAO,OAAO,QAAQ;EAE1B,OAAO;CACT,CAAC;AACH;;;;;;;AAQA,SAAgB,sBAA4D;CAC1E,MAAM,MAAM,wBAAwB;CACpC,OAAO,eAAe;EACpB,MAAM,cAAc,MAAO,IAAI,IAAI,MAAM,gBAAgB,CAAC,CAA6B,sBAAsB,KAAA;EAC7G,OAAO,gBAAgB,KAAA,IAAY,CAAC,IAAI,EAAE,oBAAoB,YAAY;CAC5E,CAAC;AACH;;;;;;;;;;;;AAaA,SAAgB,sBAAgG;CAC9G,MAAM,MAAM,wBAAwB;CACpC,OAAO,eAAe;EACpB,MAAM,UAAU,KAAK,IAAI,MAAM;EAC/B,QAAQ,UAAmC;GACzC,IAAI,CAAC,SACH,OAAO;GACT,MAAM,MAAM,MAAM;GAClB,OAAO;IACL,GAAG;IACH,mBAAmB,OAAO,QAAQ,YAAY,MAAM,GAAG,QAAQ,GAAG,QAAQ;GAC5E;EACF;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"use-field-control.js","names":[],"sources":["../../../src/components/field/use-field-control.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 field control 相关实现。\n\nimport type { ComputedRef } from 'vue'\nimport { fieldControlWiring, fieldGroupAttrs, fieldStateAttrs, withFieldLabel } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { useOptionalFieldContext } from './context'\nimport { wiringOnly } from './field'\n\n/**\n * 在薄封装内部取字段的控件接线属性(id 与 aria-*),把它们绑定到真正可聚焦的节点上。\n *\n * XhFieldControl 默认把属性合并到它唯一的子节点上,而子节点是组件时合并的是组件根:\n * 封装的根往往是一个 div,label 的 for 指向它时无法聚焦(for 只对可标注元素生效),\n * 且这种失效不报错。封装内部调用一次本组合式,接线就落在应落的节点上。\n *\n * 外层要写 `<XhFieldControl :as-child=\"false\">`,否则属性会被合并两遍。\n * 不在字段内时返回空对象,封装仍可单独使用。\n */\nexport function useFieldControl(): ComputedRef<Record<string, unknown>> {\n const ctx = useOptionalFieldContext()\n return computed(() => {\n if (!ctx)\n return {}\n return wiringOnly(ctx.api.value.getControlProps() as Record<string, unknown>)\n })\n}\n\n/**\n * 只取字段的状态接线(说明、校验、只读),不含 id 与名字。\n *\n * 供库自身的薄封装使用:XhFieldControl 默认把整套属性合并到封装根上,id 与\n * aria-labelledby 落在那里是正确的(label 的 for 必须指向一个真实节点);但\n * aria-describedby 与 aria-invalid 落在根上等于未落:焦点进入的是内部的\n * input / button,读屏只朗读焦点所在节点的描述,说明与错误文本因此无法播报。\n * 封装把这几条补到真实控件上,两边不冲突:id 只有一份,描述有两份不影响播报。\n *\n * 作者自行编写封装时使用上面的 useFieldControl(配合 `:as-child=\"false\"`),\n * 该路径整套属性都落到真实控件上。\n */\nexport function useFieldStateWiring(): ComputedRef<Record<string, unknown>> {\n const ctx = useOptionalFieldContext()\n return computed(() => (ctx ? fieldStateAttrs(fieldControlWiring(ctx.api.value)) : {}))\n}\n\n/**\n * 组类控件(单选组、复选框组、滑块、评分、分格输入……)只取字段的描述链。\n *\n * 焦点宿主是组根、拇指或格子,名字由 useFieldLabelWiring 并入;校验、必填与只读由组件按字段状态\n * 自己投影(role=group 不接受 aria-invalid / aria-required,组件的 connect 也只在支持它们的角色上发)。\n */\nexport function useFieldGroupWiring(): ComputedRef<Record<string, unknown>> {\n const ctx = useOptionalFieldContext()\n return computed(() => (ctx ? fieldGroupAttrs(fieldControlWiring(ctx.api.value)) : {}))\n}\n\n/**\n * 把字段标签的 id 并入该份属性中的名字链,供库自身的薄封装包在渲染属性外面。\n *\n * 复合控件的可聚焦部件自带 aria-labelledby,指向它自己的 label 部件。放入字段时\n * 作者使用的是字段的标签、组件的 label 部件并未渲染,该引用于是指向一个不存在的\n * 节点:按 accname 规则悬空 IDREF 直接跳过,而名字也无法回退到 label 的 for:for 指向的\n * 是封装根的 div,只对可标注元素生效。结果是焦点所在的控件没有任何名字。\n *\n * 字段的标签排在最前,控件自己的部分(值文本等)跟在后面,两边都可朗读。\n * 不在字段内时属性原样返回。\n */\nexport function useFieldLabelWiring(): ComputedRef<(props: Record<string, unknown>) => Record<string, unknown>> {\n const ctx = useOptionalFieldContext()\n return computed(() => {\n const labelId = ctx ? fieldControlWiring(ctx.api.value).labelId : undefined\n return (props: Record<string, unknown>) => withFieldLabel(props, labelId)\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;AAuBA,SAAgB,kBAAwD;CACtE,MAAM,MAAM,wBAAwB;CACpC,OAAO,eAAe;EACpB,IAAI,CAAC,KACH,OAAO,CAAC;EACV,OAAO,WAAW,IAAI,IAAI,MAAM,gBAAgB,CAA4B;CAC9E,CAAC;AACH;;;;;;;;;;;;;AAcA,SAAgB,sBAA4D;CAC1E,MAAM,MAAM,wBAAwB;CACpC,OAAO,eAAgB,MAAM,gBAAgB,mBAAmB,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAE;AACvF;;;;;;;AAQA,SAAgB,sBAA4D;CAC1E,MAAM,MAAM,wBAAwB;CACpC,OAAO,eAAgB,MAAM,gBAAgB,mBAAmB,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAE;AACvF;;;;;;;;;;;;AAaA,SAAgB,sBAAgG;CAC9G,MAAM,MAAM,wBAAwB;CACpC,OAAO,eAAe;EACpB,MAAM,UAAU,MAAM,mBAAmB,IAAI,IAAI,KAAK,CAAC,CAAC,UAAU,KAAA;EAClE,QAAQ,UAAmC,eAAe,OAAO,OAAO;CAC1E,CAAC;AACH"}
@@ -1,10 +1,14 @@
1
+ import { FieldApi, FieldProps, FieldRenderedParts } from "@xihan-ui/headless";
1
2
  import { ComputedRef } from "vue";
2
- import { FieldApi, FieldProps } from "@xihan-ui/headless";
3
3
  //#region src/components/field/use-field.d.ts
4
+ /** 字段里登记在场的部件名。 */
5
+ type FieldPartName = keyof FieldRenderedParts;
4
6
  interface FieldContext {
5
7
  api: ComputedRef<FieldApi>;
8
+ /** 已挂载的 label / description / error-text 各几个,由部件自行登记。 */
9
+ partCounts: Record<FieldPartName, number>;
6
10
  }
7
11
  declare function useField(props: FieldProps): FieldContext;
8
12
  //#endregion
9
- export { FieldContext, useField };
13
+ export { FieldContext, FieldPartName, useField };
10
14
  //# sourceMappingURL=use-field.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-field.d.ts","names":[],"sources":["../../../src/components/field/use-field.ts"],"mappings":";;;UAeiB;EACf,KAAK,YAAY;;iBAIH,SAAS,OAAO,aAAa"}
1
+ {"version":3,"file":"use-field.d.ts","names":[],"sources":["../../../src/components/field/use-field.ts"],"mappings":";;;;KAgBY,sBAAsB;UAEjB;EACf,KAAK,YAAY;;EAEjB,YAAY,OAAO;;iBAIL,SAAS,OAAO,aAAa"}
@@ -1,14 +1,55 @@
1
1
  import { vueNormalize } from "../../runtime/normalize-props.js";
2
2
  import { createVueIdGenerator } from "../../runtime/vue-id.js";
3
- import { computed } from "vue";
4
- import { createScope } from "@xihan-ui/core";
5
3
  import { connectField } from "@xihan-ui/headless";
4
+ import { computed, onBeforeUnmount, onMounted, onUpdated, reactive, ref } from "vue";
5
+ import { createScope } from "@xihan-ui/core";
6
6
  //#region src/components/field/use-field.ts
7
7
  function useField(props) {
8
8
  const scope = createScope(null, createVueIdGenerator());
9
- return { api: computed(() => connectField(props, scope, vueNormalize)) };
9
+ const partCounts = reactive({
10
+ label: 0,
11
+ description: 0,
12
+ errorText: 0,
13
+ control: 0
14
+ });
15
+ const mounted = ref(false);
16
+ onMounted(() => {
17
+ mounted.value = true;
18
+ });
19
+ const parts = computed(() => mounted.value ? {
20
+ label: partCounts.label > 0,
21
+ description: partCounts.description > 0,
22
+ errorText: partCounts.errorText > 0,
23
+ control: partCounts.control > 0
24
+ } : void 0);
25
+ return {
26
+ api: computed(() => connectField({
27
+ ...props,
28
+ parts: parts.value
29
+ }, scope, vueNormalize)),
30
+ partCounts
31
+ };
32
+ }
33
+ /**
34
+ * 部件挂载期间登记在场,卸载时撤销;present 给出时每次渲染后现判(说明没有文字时不算在场)。
35
+ * 控件的名字链与描述链只收登记在场的部件 id。
36
+ */
37
+ function useFieldPartPresence(ctx, part, present = () => true) {
38
+ let counted = false;
39
+ const sync = () => {
40
+ const next = present();
41
+ if (next === counted) return;
42
+ ctx.partCounts[part] += next ? 1 : -1;
43
+ counted = next;
44
+ };
45
+ onMounted(sync);
46
+ onUpdated(sync);
47
+ onBeforeUnmount(() => {
48
+ if (counted) ctx.partCounts[part]--;
49
+ counted = false;
50
+ });
10
51
  }
11
52
  //#endregion
12
- export { useField };
53
+ export { useField, useFieldPartPresence };
13
54
 
14
55
  //# sourceMappingURL=use-field.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-field.js","names":[],"sources":["../../../src/components/field/use-field.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 field 相关实现。\n\nimport type { FieldApi, FieldProps } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { createScope } from '@xihan-ui/core'\nimport { connectField } from '@xihan-ui/headless'\nimport { computed } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\nexport interface FieldContext {\n api: ComputedRef<FieldApi>\n}\n\n// Field 无状态机,只用一份实例级 scope 派生 part id,props 变了由 computed 重算属性\nexport function useField(props: FieldProps): FieldContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const api = computed(() => connectField(props, scope, vueNormalize))\n return { api }\n}\n"],"mappings":";;;;;;AAoBA,SAAgB,SAAS,OAAiC;CAExD,MAAM,QAAQ,YAAY,MADZ,qBACsB,CAAC;CAErC,OAAO,EAAE,KADG,eAAe,aAAa,OAAO,OAAO,YAAY,CACvD,EAAE;AACf"}
1
+ {"version":3,"file":"use-field.js","names":[],"sources":["../../../src/components/field/use-field.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 field 相关实现。\n\nimport type { FieldApi, FieldProps, FieldRenderedParts } from '@xihan-ui/headless'\nimport type { ComputedRef } from 'vue'\nimport { createScope } from '@xihan-ui/core'\nimport { connectField } from '@xihan-ui/headless'\nimport { computed, onBeforeUnmount, onMounted, onUpdated, reactive, ref } from 'vue'\nimport { vueNormalize } from '../../runtime/normalize-props'\nimport { createVueIdGenerator } from '../../runtime/vue-id'\n\n/** 字段里登记在场的部件名。 */\nexport type FieldPartName = keyof FieldRenderedParts\n\nexport interface FieldContext {\n api: ComputedRef<FieldApi>\n /** 已挂载的 label / description / error-text 各几个,由部件自行登记。 */\n partCounts: Record<FieldPartName, number>\n}\n\n// Field 无状态机,只用一份实例级 scope 派生 part id,props 变了由 computed 重算属性\nexport function useField(props: FieldProps): FieldContext {\n const idGen = createVueIdGenerator()\n const scope = createScope(null, idGen)\n const partCounts = reactive<Record<FieldPartName, number>>({ label: 0, description: 0, errorText: 0, control: 0 })\n // 挂载前(含服务端直出)不知道部件在不在场,按在场处理;子部件先于根挂载,根挂载时登记已齐\n const mounted = ref(false)\n onMounted(() => {\n mounted.value = true\n })\n const parts = computed<FieldRenderedParts | undefined>(() => mounted.value\n ? { label: partCounts.label > 0, description: partCounts.description > 0, errorText: partCounts.errorText > 0, control: partCounts.control > 0 }\n : undefined)\n const api = computed(() => connectField({ ...props, parts: parts.value }, scope, vueNormalize))\n return { api, partCounts }\n}\n\n/**\n * 部件挂载期间登记在场,卸载时撤销;present 给出时每次渲染后现判(说明没有文字时不算在场)。\n * 控件的名字链与描述链只收登记在场的部件 id。\n */\nexport function useFieldPartPresence(ctx: FieldContext, part: FieldPartName, present: () => boolean = () => true): void {\n let counted = false\n const sync = (): void => {\n const next = present()\n if (next === counted)\n return\n ctx.partCounts[part] += next ? 1 : -1\n counted = next\n }\n onMounted(sync)\n onUpdated(sync)\n onBeforeUnmount(() => {\n if (counted)\n ctx.partCounts[part]--\n counted = false\n })\n}\n"],"mappings":";;;;;;AAyBA,SAAgB,SAAS,OAAiC;CAExD,MAAM,QAAQ,YAAY,MADZ,qBACsB,CAAC;CACrC,MAAM,aAAa,SAAwC;EAAE,OAAO;EAAG,aAAa;EAAG,WAAW;EAAG,SAAS;CAAE,CAAC;CAEjH,MAAM,UAAU,IAAI,KAAK;CACzB,gBAAgB;EACd,QAAQ,QAAQ;CAClB,CAAC;CACD,MAAM,QAAQ,eAA+C,QAAQ,QACjE;EAAE,OAAO,WAAW,QAAQ;EAAG,aAAa,WAAW,cAAc;EAAG,WAAW,WAAW,YAAY;EAAG,SAAS,WAAW,UAAU;CAAE,IAC7I,KAAA,CAAS;CAEb,OAAO;EAAE,KADG,eAAe,aAAa;GAAE,GAAG;GAAO,OAAO,MAAM;EAAM,GAAG,OAAO,YAAY,CAClF;EAAG;CAAW;AAC3B;;;;;AAMA,SAAgB,qBAAqB,KAAmB,MAAqB,gBAA+B,MAAY;CACtH,IAAI,UAAU;CACd,MAAM,aAAmB;EACvB,MAAM,OAAO,QAAQ;EACrB,IAAI,SAAS,SACX;EACF,IAAI,WAAW,SAAS,OAAO,IAAI;EACnC,UAAU;CACZ;CACA,UAAU,IAAI;CACd,UAAU,IAAI;CACd,sBAAsB;EACpB,IAAI,SACF,IAAI,WAAW,KAAK;EACtB,UAAU;CACZ,CAAC;AACH"}
@@ -1,6 +1,6 @@
1
1
  import { FieldArrayContext } from "./use-field-array.js";
2
- import { ComputedRef } from "vue";
3
2
  import { FieldArrayItemProps } from "@xihan-ui/headless";
3
+ import { ComputedRef } from "vue";
4
4
  //#region src/components/field-array/context.d.ts
5
5
  /** 行声明的下标,供 item-content / item-action 与三个操作按钮复用同一份声明。 */
6
6
  interface FieldArrayItemContext {