@astryx-vue/core 0.2.6 → 0.4.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 (524) hide show
  1. package/THIRD_PARTY_NOTICES.md +9 -0
  2. package/dist/AlertDialog/index.js +1 -1
  3. package/dist/{AlertDialog-BBhl5P1X.js → AlertDialog-C2inDZWG.js} +13 -7
  4. package/dist/AppShell/index.d.ts +1 -1
  5. package/dist/AppShell/index.js +1 -1
  6. package/dist/{AppShell-mrflO0Uy.js → AppShell-CumzH-8z.js} +3 -3
  7. package/dist/Avatar/index.d.ts +1 -1
  8. package/dist/Avatar/index.js +1 -1
  9. package/dist/{Avatar-pPZ4dI_s.js → Avatar-BW0TE8t9.js} +47 -34
  10. package/dist/AvatarGroup/index.d.ts +1 -1
  11. package/dist/AvatarGroup/index.js +1 -1
  12. package/dist/{AvatarGroup-B--NQSB3.js → AvatarGroup-DLC_FFR5.js} +57 -13
  13. package/dist/Banner/index.d.ts +1 -1
  14. package/dist/Banner/index.js +1 -1
  15. package/dist/{Banner-GbGxrqQO.js → Banner-C5VAwo4D.js} +68 -34
  16. package/dist/Blockquote/index.js +1 -1
  17. package/dist/Blockquote-DRoKdcxZ.js +27 -0
  18. package/dist/BottomSheet/index.d.ts +1 -1
  19. package/dist/BottomSheet/index.js +2 -2
  20. package/dist/{BottomSheet-eJ3FzTBD.js → BottomSheet-B4sc3F1S.js} +288 -140
  21. package/dist/{BottomSheet-DIVwbGr3.js → BottomSheet-m54uCMJN.js} +20 -4
  22. package/dist/Breadcrumbs/index.d.ts +2 -2
  23. package/dist/Breadcrumbs/index.js +2 -2
  24. package/dist/Breadcrumbs-CTaz7Kh4.js +223 -0
  25. package/dist/Button/index.d.ts +1 -1
  26. package/dist/Button/index.js +1 -1
  27. package/dist/{Button-B6Hj_O_s.js → Button-ONOoHdkg.js} +25 -15
  28. package/dist/ButtonGroup/index.d.ts +1 -1
  29. package/dist/ButtonGroup/index.js +1 -1
  30. package/dist/ButtonGroup-DnkSZ9a5.js +87 -0
  31. package/dist/{ButtonTooltip-nWWrth8j.js → ButtonTooltip-CNKOQHYR.js} +7 -4
  32. package/dist/Calendar/index.d.ts +1 -1
  33. package/dist/Calendar/index.js +1 -1
  34. package/dist/{Calendar-B7vIowKq.js → Calendar-BAqzzQm2.js} +5 -5
  35. package/dist/Card/index.d.ts +2 -2
  36. package/dist/Card/index.js +1 -1
  37. package/dist/{Card-HAjZQg2s.js → Card-B-I24X9S.js} +2 -0
  38. package/dist/Carousel/index.js +1 -1
  39. package/dist/{Carousel-DAkOa7KK.js → Carousel-DXC22UWq.js} +50 -33
  40. package/dist/Chat/index.d.ts +1 -1
  41. package/dist/Chat/index.js +1 -1
  42. package/dist/{Chat-DVoI6UOA.js → Chat-BdJW6IX5.js} +152 -83
  43. package/dist/CheckboxIndicator/index.js +1 -1
  44. package/dist/{CheckboxIndicator-D37cm2Rh.js → CheckboxIndicator-fH4d-JE1.js} +9 -3
  45. package/dist/CheckboxInput/index.d.ts +1 -1
  46. package/dist/CheckboxInput/index.js +1 -1
  47. package/dist/{CheckboxInput-BS9J6edf.js → CheckboxInput-DJHCbwgC.js} +19 -11
  48. package/dist/CheckboxList/index.d.ts +1 -1
  49. package/dist/CheckboxList/index.js +1 -1
  50. package/dist/{CheckboxList-CX1i_jVP.js → CheckboxList-BdZIP4_J.js} +155 -38
  51. package/dist/Citation/index.js +1 -1
  52. package/dist/{Citation-Djgwa0ko.js → Citation-DbZn2vms.js} +8 -3
  53. package/dist/ClickableCard/index.d.ts +1 -1
  54. package/dist/ClickableCard/index.js +1 -1
  55. package/dist/{ClickableCard-Bhds4RRe.js → ClickableCard-ChAfiw9T.js} +10 -7
  56. package/dist/Code/index.d.ts +1 -1
  57. package/dist/Code/index.js +3 -3
  58. package/dist/{Code-XnPuGxey.js → Code-Bg7GBdxy.js} +2 -1
  59. package/dist/{CodeBlock-BUM3czCS.js → CodeBlock-Caaflp7C.js} +7 -3
  60. package/dist/Collapsible/index.d.ts +1 -1
  61. package/dist/Collapsible/index.js +1 -1
  62. package/dist/{Collapsible-Cov3Pyq5.js → Collapsible-Bdj0WYpb.js} +13 -11
  63. package/dist/CommandPalette/index.d.ts +1 -1
  64. package/dist/CommandPalette/index.js +1 -1
  65. package/dist/{CommandPalette-D6wYS30d.js → CommandPalette-C_MClfAg.js} +146 -62
  66. package/dist/ComplexSelector/index.d.ts +1 -1
  67. package/dist/ComplexSelector/index.js +1 -1
  68. package/dist/{ComplexSelector-Bil81sfq.js → ComplexSelector-BeVQaqRf.js} +94 -22
  69. package/dist/ContextMenu/index.d.ts +2 -2
  70. package/dist/ContextMenu/index.js +2 -2
  71. package/dist/{ContextMenu-DdLJnxNN.js → ContextMenu-C6hPYvYz.js} +299 -179
  72. package/dist/DateInput/index.d.ts +1 -1
  73. package/dist/DateInput/index.js +1 -1
  74. package/dist/{DateInput-u2XKccpK.js → DateInput-BjLdmYor.js} +567 -76
  75. package/dist/DateRangeInput/index.d.ts +1 -1
  76. package/dist/DateRangeInput/index.js +1 -1
  77. package/dist/{DateRangeInput-u7LhH6up.js → DateRangeInput-Br3wVEfD.js} +99 -28
  78. package/dist/DateTimeInput/index.d.ts +1 -1
  79. package/dist/DateTimeInput/index.js +1 -1
  80. package/dist/DateTimeInput-CAZBwoRe.js +562 -0
  81. package/dist/Dialog/index.d.ts +1 -1
  82. package/dist/Dialog/index.js +2 -2
  83. package/dist/{Dialog-BiOSKQso.js → Dialog-Dce4Y97V.js} +28 -11
  84. package/dist/{Dialog-FGHfDu5M.js → Dialog-fhyxB00e.js} +32 -5
  85. package/dist/Divider/index.d.ts +1 -1
  86. package/dist/Divider/index.js +1 -1
  87. package/dist/{Divider-BtwnL18I.js → Divider-mOZ6vIQw.js} +5 -1
  88. package/dist/DropdownMenu/index.d.ts +2 -2
  89. package/dist/DropdownMenu/index.js +3 -3
  90. package/dist/{DropdownMenu-SM_BEOgM.js → DropdownMenu-BdGmQVb1.js} +85 -57
  91. package/dist/{DropdownMenu-BEasdJ6R.js → DropdownMenu-BzQrNV9C.js} +481 -264
  92. package/dist/{DropdownMenuRadioItem.vue-CXEURBcq.d.ts → DropdownMenuRadioItem.vue-Qd-8Rg4Q.d.ts} +236 -230
  93. package/dist/EmptyState/index.js +1 -1
  94. package/dist/{EmptyState-C_GH7IV5.js → EmptyState-CmOQf2SH.js} +2 -2
  95. package/dist/Field/index.d.ts +4 -3
  96. package/dist/Field/index.js +4 -3
  97. package/dist/{Field-D5gUEGw4.js → Field--OEsLBfE.js} +4 -3
  98. package/dist/{FieldInfoTip-Ds-sW_jY.js → FieldInfoTip-gxsnfkZw.js} +3 -3
  99. package/dist/{FieldLabel-BNeXRuGH.js → FieldLabel-jxIiWgLw.js} +12 -7
  100. package/dist/FieldStatus/index.d.ts +1 -1
  101. package/dist/FileInput/index.d.ts +1 -1
  102. package/dist/FileInput/index.js +1 -1
  103. package/dist/{FileInput-BpdiO1V8.js → FileInput-B_pUxB0Y.js} +106 -29
  104. package/dist/FormLayout/index.d.ts +1 -1
  105. package/dist/FormLayout/index.js +1 -1
  106. package/dist/{FormLayout-D47FjiOq.js → FormLayout-B9dUB6Ps.js} +1 -1
  107. package/dist/Heading/index.d.ts +1 -1
  108. package/dist/Heading/index.js +1 -1
  109. package/dist/{Heading-BnwWEWkp.js → Heading-BzBunfN7.js} +1 -1
  110. package/dist/HoverCard/index.js +1 -1
  111. package/dist/{HoverCard-ycY50pRN.js → HoverCard-BpJhT0sn.js} +35 -22
  112. package/dist/Icon/index.d.ts +4 -4
  113. package/dist/Icon/index.js +1 -1
  114. package/dist/{Icon-bteSId7T.js → Icon-KDnUyY7f.js} +12 -20
  115. package/dist/IconButton/index.js +1 -1
  116. package/dist/{IconButton-DDNgNl7B.js → IconButton-DI-XBbtV.js} +1 -1
  117. package/dist/Indicator/index.d.ts +2 -2
  118. package/dist/Indicator/index.js +2 -1
  119. package/dist/InputClearButton-CwXPan8c.js +40 -0
  120. package/dist/InputGroup/index.d.ts +1 -1
  121. package/dist/InputGroup/index.js +2 -2
  122. package/dist/{InputGroup-CA03Smrs.js → InputGroup-DiiocoIW.js} +2 -2
  123. package/dist/InternationalizationProvider/index.d.ts +1 -1
  124. package/dist/InternationalizationProvider/index.js +1 -1
  125. package/dist/{InternationalizationProvider-DJay_w3B.js → InternationalizationProvider-kBapgKAQ.js} +5 -9
  126. package/dist/{Item-KhFKX9St.js → Item-DWMIjN8n.js} +34 -9
  127. package/dist/Kbd/index.js +1 -1
  128. package/dist/{Kbd-BB-Dw6zE.js → Kbd-CV3LO2Ge.js} +18 -2
  129. package/dist/LayerContentBoundary-CvsKxwwm.js +27 -0
  130. package/dist/LayerProvider/index.js +1 -1
  131. package/dist/{LayerProvider-D9NsQFzL.js → LayerProvider-B6zpMBWC.js} +15 -3
  132. package/dist/Layout/index.d.ts +1 -1
  133. package/dist/Layout/index.js +2 -2
  134. package/dist/{Layout-9X6eCUoY.js → Layout-JJRCG7Mf.js} +1 -1
  135. package/dist/{LayoutPanel-DeOh00p5.js → LayoutPanel-zM5vjrKS.js} +15 -8
  136. package/dist/Lightbox/index.js +1 -1
  137. package/dist/{Lightbox-DTF9EdTG.js → Lightbox-D8wyPgMK.js} +8 -6
  138. package/dist/Link/index.d.ts +2 -2
  139. package/dist/Link/index.js +1 -1
  140. package/dist/{Link-BqHCtiyt.js → Link-DweIpOtN.js} +29 -12
  141. package/dist/List/index.d.ts +1 -1
  142. package/dist/List/index.js +2 -2
  143. package/dist/{ListItem-8RWT8XAG.js → ListItem-BQXMu1Tb.js} +1 -1
  144. package/dist/Markdown/index.d.ts +5 -2
  145. package/dist/Markdown/index.js +5 -2
  146. package/dist/Markdown/parser/index.d.ts +4 -0
  147. package/dist/Markdown/parser/index.js +3 -0
  148. package/dist/Markdown/plugin-protocol/index.d.ts +35 -0
  149. package/dist/Markdown/plugin-protocol/index.js +107 -0
  150. package/dist/Markdown/plugin-renderer/index.d.ts +31 -0
  151. package/dist/Markdown/plugin-renderer/index.js +42 -0
  152. package/dist/{Markdown-2CVyZDuB.js → Markdown-DhVfOvXk.js} +195 -484
  153. package/dist/MediaTheme-DlLqYhDy.js +433 -0
  154. package/dist/MetadataList/index.js +1 -1
  155. package/dist/{MetadataList-B-OelQlt.js → MetadataList-CEYceIlN.js} +15 -7
  156. package/dist/MobileNav/index.js +1 -1
  157. package/dist/{MobileNavToggle-C3dkrM98.js → MobileNavToggle-pdoJFZHx.js} +60 -19
  158. package/dist/MoreMenu/index.d.ts +1 -1
  159. package/dist/MoreMenu/index.js +1 -1
  160. package/dist/{MoreMenu-D1WFGqGU.js → MoreMenu-CFNqSRev.js} +87 -67
  161. package/dist/MultiSelector/index.d.ts +1 -1
  162. package/dist/MultiSelector/index.js +1 -1
  163. package/dist/MultiSelector-DuVatmq5.js +1456 -0
  164. package/dist/{NavDisclosure-C_fugrQ3.js → NavDisclosure-Bq9DTZLO.js} +29 -7
  165. package/dist/{NavHeadingSurface-B3yJspSN.js → NavHeadingSurface-C4v_MtkX.js} +29 -26
  166. package/dist/NavItem/index.d.ts +1 -1
  167. package/dist/NavItem/index.js +2 -2
  168. package/dist/{NavItem-BBIGSvDj.js → NavItem-BPb3yfgz.js} +17 -4
  169. package/dist/NavMenu/index.d.ts +1 -1
  170. package/dist/NavMenu/index.js +3 -3
  171. package/dist/{NavMenu-ThXguZAz.js → NavMenu-BYIDzjix.js} +42 -15
  172. package/dist/{NavMenuItem-BvJNsDFC.js → NavMenuItem-D3FO90GR.js} +14 -12
  173. package/dist/NumberInput/index.d.ts +1 -1
  174. package/dist/NumberInput/index.js +1 -1
  175. package/dist/NumberInput-B0vzOg3N.js +727 -0
  176. package/dist/Outline/index.d.ts +2 -2
  177. package/dist/Outline/index.js +2 -2
  178. package/dist/{Outline-755h-lMP.js → Outline-CfGv2F1o.js} +91 -6
  179. package/dist/OverflowList/index.d.ts +2 -2
  180. package/dist/OverflowList/index.js +1 -1
  181. package/dist/{OverflowList-NmrSMbxb.js → OverflowList-BgRLZ3dh.js} +23 -6
  182. package/dist/Pagination/index.d.ts +1 -1
  183. package/dist/Pagination/index.js +1 -1
  184. package/dist/{Pagination-Cc4BrjQg.js → Pagination-Bfe12018.js} +2 -2
  185. package/dist/PickerWheel-CSwUYfes.js +69 -0
  186. package/dist/Popover/index.d.ts +1 -1
  187. package/dist/Popover/index.js +1 -1
  188. package/dist/{Popover-CtoBfVlD.js → Popover-78dFjTb9.js} +28 -17
  189. package/dist/PowerSearch/index.d.ts +1 -1
  190. package/dist/PowerSearch/index.js +1 -1
  191. package/dist/{PowerSearch-DHoiObLn.js → PowerSearch-BoAMdFaT.js} +776 -586
  192. package/dist/ProgressBar/index.d.ts +1 -1
  193. package/dist/ProgressBar/index.js +1 -1
  194. package/dist/{ProgressBar-CVLzdoBK.js → ProgressBar-VP4JS7vm.js} +10 -7
  195. package/dist/Radio/index.d.ts +1 -1
  196. package/dist/Radio/index.js +1 -1
  197. package/dist/{RadioGroup-Bfu6JSNV.js → RadioGroup-BIipql-L.js} +94 -26
  198. package/dist/RadioList/index.d.ts +1 -1
  199. package/dist/RadioList/index.js +1 -1
  200. package/dist/{RadioList-xY1cwLdZ.js → RadioList-GyhgBg4j.js} +57 -8
  201. package/dist/Resizable/index.d.ts +1 -1
  202. package/dist/Resizable/index.js +1 -1
  203. package/dist/{ResizeHandle-q4nD_586.js → ResizeHandle-TPlUCAHD.js} +103 -50
  204. package/dist/ScrollableArea/index.d.ts +1 -1
  205. package/dist/ScrollableArea/index.js +1 -1
  206. package/dist/{ScrollableArea-CJiaALHm.js → ScrollableArea-0u6RWtGG.js} +14 -3
  207. package/dist/Scrollbars/index.d.ts +2 -0
  208. package/dist/Scrollbars/index.js +3 -0
  209. package/dist/Scrollbars-D_93hJYK.js +75 -0
  210. package/dist/SegmentedControl/index.js +1 -1
  211. package/dist/{SegmentedControl-ChHmFrrC.js → SegmentedControl-D1wWGBZo.js} +11 -5
  212. package/dist/SelectableCard/index.d.ts +1 -1
  213. package/dist/SelectableCard/index.js +1 -1
  214. package/dist/{SelectableCard-Bj5s_tIN.js → SelectableCard-BEqnhPaX.js} +17 -12
  215. package/dist/Selector/index.d.ts +1 -1
  216. package/dist/Selector/index.js +1 -1
  217. package/dist/Selector-CPISLzp7.js +1049 -0
  218. package/dist/SideNav/index.d.ts +1 -1
  219. package/dist/SideNav/index.js +1 -1
  220. package/dist/{SideNav-Dtv8eA2j.js → SideNav-CN2QeAtY.js} +64 -41
  221. package/dist/Slider/index.d.ts +1 -1
  222. package/dist/Slider/index.js +1 -1
  223. package/dist/{Slider-DWobsPgm.js → Slider-pdC0jpHu.js} +172 -46
  224. package/dist/Spinner/index.js +1 -1
  225. package/dist/Spinner-DdVUadii.js +200 -0
  226. package/dist/Stack/index.d.ts +1 -1
  227. package/dist/Stack/index.js +2 -2
  228. package/dist/{Stack-CjQEavuq.js → Stack-Bb_h60t3.js} +10 -3
  229. package/dist/{Stack-D_Bhs-3r.js → Stack-Bp-XN9J4.js} +20 -9
  230. package/dist/StatusDot/index.d.ts +1 -1
  231. package/dist/StatusDot/index.js +1 -1
  232. package/dist/{StatusDot-BPUhMOff.js → StatusDot-BS_ohXhd.js} +8 -4
  233. package/dist/Stepper/index.d.ts +1 -1
  234. package/dist/Stepper/index.js +1 -1
  235. package/dist/{Stepper-CE8dHysu.js → Stepper-CyaSRSdu.js} +101 -79
  236. package/dist/Switch/index.d.ts +1 -1
  237. package/dist/Switch/index.js +1 -1
  238. package/dist/{Switch-DaVPRxvN.js → Switch-Z2Vfiiic.js} +38 -22
  239. package/dist/TabList/index.d.ts +2 -2
  240. package/dist/TabList/index.js +1 -1
  241. package/dist/{TabList-DIkK9sgK.js → TabList-DRqP0Hrv.js} +205 -63
  242. package/dist/Table/index.d.ts +3 -3
  243. package/dist/Table/index.js +1 -1
  244. package/dist/{Table-hqZMmzfU.js → Table-BcrrylMX.js} +727 -448
  245. package/dist/Text/index.d.ts +2 -2
  246. package/dist/Text/index.js +1 -1
  247. package/dist/{Text-CV3LmscH.js → Text-CmTOgYXf.js} +1 -1
  248. package/dist/TextArea/index.d.ts +1 -1
  249. package/dist/TextArea/index.js +1 -1
  250. package/dist/{TextArea-Ab5Sw60T.js → TextArea-DA9CCG_J.js} +104 -50
  251. package/dist/TextInput/index.d.ts +1 -1
  252. package/dist/TextInput/index.js +1 -1
  253. package/dist/{TextInput-zFT1_qgI.js → TextInput-CI96einV.js} +71 -38
  254. package/dist/Theme/index.d.ts +3 -3
  255. package/dist/Theme/index.js +3 -2
  256. package/dist/Theme-BbDT8B_C.js +2125 -0
  257. package/dist/Thumbnail/index.js +1 -1
  258. package/dist/{Thumbnail-C3NnJUFG.js → Thumbnail-B2ZAY59J.js} +13 -10
  259. package/dist/{TimeField-ByiJKBRM.js → TimeField-CpAgja9D.js} +299 -40
  260. package/dist/TimeInput/index.d.ts +1 -1
  261. package/dist/TimeInput/index.js +1 -1
  262. package/dist/{TimeInput-S8n946tp.js → TimeInput-Bw_lHS4M.js} +78 -9
  263. package/dist/Timer/index.d.ts +1 -1
  264. package/dist/Timer/index.js +1 -1
  265. package/dist/{Timer-avMQk5DN.js → Timer-CH7GsEVu.js} +1 -1
  266. package/dist/Timestamp/index.d.ts +1 -1
  267. package/dist/Timestamp/index.js +1 -1
  268. package/dist/{Timestamp-xpQKCk0d.js → Timestamp-BFNuoTZ0.js} +5 -5
  269. package/dist/Toast/index.d.ts +1 -1
  270. package/dist/Toast/index.js +1 -1
  271. package/dist/Toast-DwnPjx6j.js +685 -0
  272. package/dist/ToggleButton/index.d.ts +1 -1
  273. package/dist/ToggleButton/index.js +1 -1
  274. package/dist/{ToggleButton-B-C-Q7XP.js → ToggleButton-cLjh9W-x.js} +5 -4
  275. package/dist/Token/index.d.ts +1 -1
  276. package/dist/Token/index.js +1 -1
  277. package/dist/{Token-DsntTYhQ.js → Token-BfS4vi__.js} +32 -17
  278. package/dist/Tokenizer/index.d.ts +1 -1
  279. package/dist/Tokenizer/index.js +1 -1
  280. package/dist/{Tokenizer-41p035dX.js → Tokenizer-Ci3E5bvP.js} +109 -23
  281. package/dist/Toolbar/index.d.ts +2 -2
  282. package/dist/Toolbar/index.js +1 -1
  283. package/dist/{Toolbar-BrgvvTCk.js → Toolbar-C0pMWL4S.js} +1 -1
  284. package/dist/Tooltip/index.d.ts +1 -1
  285. package/dist/Tooltip/index.js +1 -1
  286. package/dist/{Tooltip-C4Vaqd3G.js → Tooltip-sAM8i1eO.js} +23 -19
  287. package/dist/TopNav/index.d.ts +1 -1
  288. package/dist/TopNav/index.js +1 -1
  289. package/dist/{TopNav-CeSeEMX3.js → TopNav-gW59zp1o.js} +16 -15
  290. package/dist/TreeList/index.d.ts +1 -1
  291. package/dist/TreeList/index.js +1 -1
  292. package/dist/{TreeList-BUz-KZJd.js → TreeList-DaoI7zaH.js} +124 -41
  293. package/dist/Typeahead/index.d.ts +1 -1
  294. package/dist/Typeahead/index.js +2 -2
  295. package/dist/{Typeahead-k3xhFxkr.js → Typeahead-D4JjvjK4.js} +125 -26
  296. package/dist/{TypeaheadMenu-DBW6rHeO.js → TypeaheadMenu-BQlMrfqX.js} +141 -51
  297. package/dist/{announce-Cnio10Wk.js → announce-B210eJVf.js} +17 -2
  298. package/dist/characterReferences-BJ-jLhsR.js +65 -0
  299. package/dist/characters-rcDbGt71.d.ts +29 -0
  300. package/dist/characters-wTnzjkkR.js +58 -0
  301. package/dist/{colorMode-CBgdgDSn.js → colorMode-BxqfDP4P.js} +1 -4
  302. package/dist/composables/index.d.ts +5 -4
  303. package/dist/composables/index.js +23 -18
  304. package/dist/{composables-CbKx9C1Y.js → composables-Bc02zKAO.js} +167 -197
  305. package/dist/context-B6UElI5X.js +5 -0
  306. package/dist/{context-Cfjh8te1.js → context-Cfml4jaK.js} +5 -3
  307. package/dist/{context-iABt_ueM.js → context-DWfi56sq.js} +451 -122
  308. package/dist/context-IvbU9c3T.js +8 -0
  309. package/dist/context-pjBxaMSh.js +28 -0
  310. package/dist/fieldParts--SyRZVQG.js +44 -0
  311. package/dist/fieldParts-LXpQMKE8.d.ts +27 -0
  312. package/dist/{focus-CpficIgf.js → focus-l8jVTcqd.js} +1 -1
  313. package/dist/hoverIntent-DMHGb85c.js +115 -0
  314. package/dist/{index-Cde5JvtX.d.ts → index-B-nESNam.d.ts} +8 -7
  315. package/dist/{index-CsNi1I8j.d.ts → index-B08-Uxhv.d.ts} +4 -2
  316. package/dist/{index-Cn-sSds-.d.ts → index-B56j4eI2.d.ts} +24 -1
  317. package/dist/{index-BJMJ09K-.d.ts → index-BEZ4ezJk.d.ts} +1 -1
  318. package/dist/{index-DeQwYJbg.d.ts → index-BNaRK-s5.d.ts} +10 -1
  319. package/dist/{index-CQCTKjIO.d.ts → index-BO9TY87G.d.ts} +5 -4
  320. package/dist/{index-BJSxFVXH.d.ts → index-BQEJj72c.d.ts} +21 -8
  321. package/dist/{index-BXk7Wng7.d.ts → index-BULhhnGf.d.ts} +1 -1
  322. package/dist/{index-D97pQbua.d.ts → index-BV2D2x_u.d.ts} +1 -1
  323. package/dist/{index-BPYzIIYn.d.ts → index-BZKgbyN9.d.ts} +2 -2
  324. package/dist/index-BkUkm6Al.d.ts +11 -0
  325. package/dist/{index-ClNU2Th8.d.ts → index-Bn-v89Vt.d.ts} +10 -6
  326. package/dist/{index-Bu8NA2SD.d.ts → index-BnEhvmdR.d.ts} +16 -7
  327. package/dist/index-Bo-ofFyg.d.ts +166 -0
  328. package/dist/{index-i0tNFWfz.d.ts → index-BqhgeAT4.d.ts} +2 -0
  329. package/dist/{index-DWh2WC8W.d.ts → index-C4Cjz6OK.d.ts} +2 -2
  330. package/dist/{index-B7yhzGUT.d.ts → index-C7sam-SB.d.ts} +2 -2
  331. package/dist/{index-BrJzFA5X.d.ts → index-C90l2rH1.d.ts} +1 -1
  332. package/dist/{index-vP0EtrJJ.d.ts → index-C9gAlDt_.d.ts} +6 -3
  333. package/dist/{index-csA1lH_0.d.ts → index-CJ6ajsUC.d.ts} +2 -2
  334. package/dist/{index-CY-KvZ9B.d.ts → index-CK-Dbh0f.d.ts} +1 -1
  335. package/dist/index-CKUfpmFL.d.ts +375 -0
  336. package/dist/{index-DXpSFlPG.d.ts → index-CKgBTAzC.d.ts} +4 -4
  337. package/dist/{index-EFqQF2Bx.d.ts → index-CPtDjmcX.d.ts} +4 -4
  338. package/dist/{index-12QYAbiz.d.ts → index-CRrSHbok.d.ts} +3 -2
  339. package/dist/{index-DG52Bg0W.d.ts → index-CTf3SK0b.d.ts} +6 -0
  340. package/dist/{index-BNy3SW4S.d.ts → index-CTjkJP4x.d.ts} +32 -3
  341. package/dist/{index-Ca8VIE4l.d.ts → index-CVn0GBdB.d.ts} +1 -1
  342. package/dist/{index-YKCx03zD.d.ts → index-CdvmnNMH.d.ts} +1 -1
  343. package/dist/{index-BUEPz7BL.d.ts → index-CikMzeab.d.ts} +3 -3
  344. package/dist/{index-CdtZjkmG.d.ts → index-CpNlPLBF.d.ts} +183 -129
  345. package/dist/{index-N7OVZ38M.d.ts → index-Cs1xsHKi.d.ts} +28 -16
  346. package/dist/{index-Cyb9Du5Z.d.ts → index-CtTGt6Dv.d.ts} +1 -1
  347. package/dist/{index-HV6W3xCx.d.ts → index-D05JGsT3.d.ts} +5 -2
  348. package/dist/{index-CsTbMVDS.d.ts → index-D0_HsuC3.d.ts} +4 -4
  349. package/dist/{index-BgT6mH3U.d.ts → index-D7ShT2c-.d.ts} +1 -1
  350. package/dist/{index-CkKPMIeX.d.ts → index-D7XRtUTY.d.ts} +9 -0
  351. package/dist/{index-TntQsADQ.d.ts → index-DEm3kRBO.d.ts} +4 -3
  352. package/dist/{index-DamRHh1i.d.ts → index-DLAG3m9W.d.ts} +11 -1
  353. package/dist/{index-DUnDGFQE.d.ts → index-DNA2l1RN.d.ts} +1 -1
  354. package/dist/{index-WnUY4Kxu.d.ts → index-DRJZ-v1E.d.ts} +4 -4
  355. package/dist/{index-DYp2RWkM.d.ts → index-DY8Wph-A.d.ts} +3 -3
  356. package/dist/{index-B1WJxt-n.d.ts → index-DfC05uKG.d.ts} +17 -7
  357. package/dist/{index-C5e-7Obr.d.ts → index-Dj1_1t3j.d.ts} +19 -6
  358. package/dist/{index-jW-mP58D.d.ts → index-Dr4b_oji.d.ts} +22 -15
  359. package/dist/{index-uKnRGtzi.d.ts → index-Ds201-d2.d.ts} +18 -4
  360. package/dist/{index-DIXAzTKL.d.ts → index-DxxudRgB.d.ts} +1 -1
  361. package/dist/{index-DQmK3Lq_.d.ts → index-IfsSCj8J.d.ts} +19 -6
  362. package/dist/{index-B1eCxBCY.d.ts → index-TXcNH86P.d.ts} +1 -1
  363. package/dist/{index-XuAAcYiP.d.ts → index-f3d9cVtj.d.ts} +1 -1
  364. package/dist/index-fAZaRruV.d.ts +125 -0
  365. package/dist/{index-D5N9ikrS.d.ts → index-hCpxKePE.d.ts} +1 -1
  366. package/dist/{index-T2FOcOuI.d.ts → index-jOwU3YoR.d.ts} +400 -90
  367. package/dist/{index-DdGck82Y.d.ts → index-pNtfr-RW.d.ts} +2 -2
  368. package/dist/{index-BhpAUzUr.d.ts → index-unAZVFGz.d.ts} +2 -2
  369. package/dist/index.d.ts +84 -77
  370. package/dist/index.js +151 -134
  371. package/dist/inlineSize-BNe8wggI.js +66 -0
  372. package/dist/inputPresentation-BOyHkCDr.js +62 -0
  373. package/dist/interactionModality-ACpTMhak.js +44 -0
  374. package/dist/isApplePlatform-B1ju6F5B.js +27 -0
  375. package/dist/isRenderable-BnKHIqfd.js +21 -0
  376. package/dist/layerDepth-CNDh-IHb.js +181 -0
  377. package/dist/link-DuuA2eCL.js +30 -0
  378. package/dist/{loadCatalog-BGHKG_9N.d.ts → loadCatalog-DlLFZreI.d.ts} +281 -7
  379. package/dist/loadCatalog-eopw74qb.js +424 -0
  380. package/dist/locale/index.d.ts +2 -2
  381. package/dist/locale/index.js +4 -3
  382. package/dist/locale-CabGJlGp.js +343 -0
  383. package/dist/modalOutlet-CUOcrhIu.js +56 -0
  384. package/dist/optionAction-Cg7xQLUA.d.ts +6 -0
  385. package/dist/{power-search-DrDfcoL1.d.ts → power-search-gHLIYXs5.d.ts} +2 -0
  386. package/dist/protocol-DHxY0NI8.js +113 -0
  387. package/dist/protocol-RSeMzAN1.d.ts +238 -0
  388. package/dist/publicParser-B0MRoikr.d.ts +141 -0
  389. package/dist/publicParser-uHC_T0Fo.js +895 -0
  390. package/dist/resizableChannel-3vivrEcT.js +20 -0
  391. package/dist/safeUrl-CsvfcZ9m.js +54 -0
  392. package/dist/scopedProvide-C-Df7c15.js +30 -0
  393. package/dist/scrollKeyboardDelegation-D7cumnOl.js +238 -0
  394. package/dist/scrollLock-C3aT4-0z.js +102 -0
  395. package/dist/{searchResultMessage-hXXNOFJP.js → searchResultMessage-mCpJBvra.js} +5 -14
  396. package/dist/{semantic-CKH9XVqa.d.ts → semantic-BF_AjLvk.d.ts} +6 -3
  397. package/dist/slug-C65CUsf9.js +32 -0
  398. package/dist/syntaxContext-DmIfNNtb.js +4 -0
  399. package/dist/triggerVariant-BsL8jMHs.js +16 -0
  400. package/dist/{types-0Q_SJv_F.d.ts → types-Bb7OGivY.d.ts} +6 -1
  401. package/dist/{types-H4Bbbxiw.d.ts → types-BnNTzEnd.d.ts} +1 -1
  402. package/dist/{types-CwyibrRB.d.ts → types-C5GQ2KCK.d.ts} +23 -3
  403. package/dist/{types-BBWrcHMD.d.ts → types-Ckih2YJi.d.ts} +3 -2
  404. package/dist/{types-gKsEkk2g.d.ts → types-CsqwQkf1.d.ts} +143 -10
  405. package/dist/upstreamMap-xr3gvREu.js +731 -0
  406. package/dist/{useAnchoredListbox-DwztMNjP.js → useAnchoredListbox-DGxxKHZb.js} +2 -2
  407. package/dist/{useAsyncSource-xpQovjV_.d.ts → useAsyncSource-aGzrvRkI.d.ts} +3 -0
  408. package/dist/{useClickableContainer-DyNpnSEa.js → useClickableContainer-CdGp_Cev.js} +1 -1
  409. package/dist/{useClipboard-BDfbEsWd.js → useClipboard-Dk8cS810.js} +1 -1
  410. package/dist/useHoverLayerDismiss-kYJ_NqL4.js +27 -0
  411. package/dist/{useIndicator-i1NORM7W.js → useIndicator-MZmfBWid.js} +5 -23
  412. package/dist/{useInputContainer-CpgDe2-4.js → useInputContainer-CLcYrby4.js} +1 -1
  413. package/dist/{useInputStatusIcon-DBOwxV4x.js → useInputStatusIcon-DAE7PExr.js} +1 -1
  414. package/dist/useLayerMountTarget-BmZyeKWE.js +156 -0
  415. package/dist/{useListFocus-D0iOJl39.js → useListFocus-ChxLg0b4.js} +3 -2
  416. package/dist/{useMenuDrillIn-DzKGkTho.js → useMenuDrillIn-DhUnPvKs.js} +6 -5
  417. package/dist/useMenuHover-Djreu23i.js +170 -0
  418. package/dist/useMenuPress-8foxY8z4.js +764 -0
  419. package/dist/{useMergedRefs-CfHHlCsn.js → useMergedRefs-Cb6_w93m.js} +24 -4
  420. package/dist/{useNumberField-4-dIGVed.js → useNumberField-Dk1BE3-K.js} +3 -3
  421. package/dist/useOptionActionGrid-CkJcuvaU.js +97 -0
  422. package/dist/{usePositionedLayer-Cru9_00b.js → usePositionedLayer-B7cvG-_v.js} +43 -49
  423. package/dist/usePressFeedback-BJCpjEpv.js +319 -0
  424. package/dist/{useResizable-DDwPpPe6.d.ts → useResizable-1MHPNaRD.d.ts} +19 -1
  425. package/dist/{useResizable-B3ahKLoZ.js → useResizable-I3BCiLSL.js} +72 -40
  426. package/dist/useResolvedLabelHidden-B2rlWiaI.js +30 -0
  427. package/dist/{useRestoreFocus-Djw9RUIf.js → useRestoreFocus-XEKs5-gp.js} +49 -7
  428. package/dist/useScrollOverflow-DuMoGXmm.js +67 -0
  429. package/dist/useScrollableArea-BE8b3qm7.js +222 -0
  430. package/dist/useScrollbars-C2NJ6Qwq.js +43 -0
  431. package/dist/{useTimeValue-6ufHM15W.js → useTimeValue-BJd0xBhG.js} +4 -22
  432. package/dist/useTranslator-BmWt2BBt.js +35 -0
  433. package/dist/{useTypeahead-PAK8lMYz.js → useTypeahead-BvtflkRk.js} +4 -5
  434. package/dist/utils/index.d.ts +3 -0
  435. package/dist/utils/index.js +5 -0
  436. package/dist/{utils-D33VQDnk.js → utils-ClVseK2w.js} +29 -2
  437. package/dist/utils-z3Q6BGIJ.js +819 -0
  438. package/locales/SOURCE.json +1 -1
  439. package/package.json +24 -3
  440. package/reset.css +364 -1
  441. package/styles/avatar-group.css +9 -1
  442. package/styles/badge.css +8 -5
  443. package/styles/banner.css +124 -26
  444. package/styles/blockquote.css +1 -0
  445. package/styles/bordered-control.css +1 -1
  446. package/styles/bottom-sheet.css +74 -6
  447. package/styles/breadcrumbs.css +16 -2
  448. package/styles/button-group.css +3 -1
  449. package/styles/button.css +53 -11
  450. package/styles/card.css +1 -1
  451. package/styles/chat.css +16 -6
  452. package/styles/checkbox-input.css +10 -0
  453. package/styles/clickable-card.css +10 -3
  454. package/styles/collapsible.css +12 -5
  455. package/styles/command-palette.css +29 -14
  456. package/styles/complex-selector.css +22 -5
  457. package/styles/context-menu.css +3 -3
  458. package/styles/date-input.css +111 -1
  459. package/styles/dialog-header.css +4 -1
  460. package/styles/dialog.css +7 -0
  461. package/styles/dropdown-menu.css +12 -3
  462. package/styles/field.css +5 -0
  463. package/styles/form-layout.css +1 -0
  464. package/styles/heading.css +18 -8
  465. package/styles/icon.css +4 -0
  466. package/styles/kbd.css +1 -1
  467. package/styles/layer.css +72 -0
  468. package/styles/list.css +9 -2
  469. package/styles/metadata-list.css +1 -0
  470. package/styles/mobile-nav.css +4 -1
  471. package/styles/multi-selector.css +48 -1
  472. package/styles/nav-item.css +9 -2
  473. package/styles/nav-menu.css +12 -2
  474. package/styles/number-input.css +9 -1
  475. package/styles/overflow-list.css +1 -1
  476. package/styles/popover.css +2 -1
  477. package/styles/power-search.css +5 -3
  478. package/styles/pressable.css +63 -22
  479. package/styles/progress-bar.css +15 -3
  480. package/styles/radio.css +16 -0
  481. package/styles/resize-handle.css +42 -0
  482. package/styles/scrollbars.css +28 -0
  483. package/styles/segmented-control.css +12 -4
  484. package/styles/selector.css +53 -1
  485. package/styles/side-nav.css +19 -0
  486. package/styles/slider.css +4 -3
  487. package/styles/spinner.css +48 -42
  488. package/styles/stepper.css +58 -4
  489. package/styles/switch.css +26 -0
  490. package/styles/tab-list.css +132 -3
  491. package/styles/table.css +88 -10
  492. package/styles/text-area.css +1 -1
  493. package/styles/text-input.css +1 -1
  494. package/styles/text.css +6 -6
  495. package/styles/thumbnail.css +11 -3
  496. package/styles/time-input.css +8 -0
  497. package/styles/toast.css +37 -3
  498. package/styles/token.css +2 -2
  499. package/styles/tokenizer.css +1 -1
  500. package/styles/toolbar.css +4 -1
  501. package/styles/tree-list.css +1 -1
  502. package/styles/typeahead.css +34 -1
  503. package/styles.css +1 -0
  504. package/dist/Blockquote-DFqBv_oJ.js +0 -18
  505. package/dist/Breadcrumbs-DPVaziH4.js +0 -141
  506. package/dist/ButtonGroup-ySQWanDP.js +0 -125
  507. package/dist/DateTimeInput-DHp683jZ.js +0 -268
  508. package/dist/MultiSelector-BeV98x7X.js +0 -988
  509. package/dist/NumberInput-AZ9x3oja.js +0 -473
  510. package/dist/Selector-DuVozKNq.js +0 -675
  511. package/dist/Spinner-9cYUCnDy.js +0 -84
  512. package/dist/Theme-CtaUWo4g.js +0 -1246
  513. package/dist/Toast-BuqIZV5z.js +0 -322
  514. package/dist/context-4PuqD1Ic.js +0 -4
  515. package/dist/context-D5-MwxnN.js +0 -4
  516. package/dist/index-BH9PzQ1F.d.ts +0 -87
  517. package/dist/link-C4_WogdF.js +0 -18
  518. package/dist/loadCatalog-CXKqEB9s.js +0 -877
  519. package/dist/locale-DgkZEMTn.js +0 -105
  520. package/dist/platform-B_9W_aHW.js +0 -33
  521. package/dist/scrollLock-BzIvIimL.js +0 -42
  522. package/dist/useMenuPress-D-FRNrBW.js +0 -573
  523. package/dist/useScrollableArea-DDk_CluT.js +0 -172
  524. /package/dist/{index-lgvUFSCO.d.ts → index-CryFtTT6.d.ts} +0 -0
@@ -1,19 +1,24 @@
1
- import { t as _sfc_main$14 } from "./VisuallyHidden-C7NN3VEP.js";
2
- import { t as _sfc_main$15 } from "./Button-B6Hj_O_s.js";
3
- import { t as _sfc_main$16 } from "./IconButton-DDNgNl7B.js";
4
- import { o as useAstryxMessages } from "./context-iABt_ueM.js";
5
- import { t as _sfc_main$17 } from "./Tooltip-C4Vaqd3G.js";
6
- import { t as _sfc_main$18 } from "./Icon-bteSId7T.js";
7
- import { t as _sfc_main$19 } from "./CheckboxInput-BS9J6edf.js";
8
- import { t as _sfc_main$20 } from "./Popover-CtoBfVlD.js";
9
- import { t as _sfc_main$21 } from "./DateInput-u2XKccpK.js";
10
- import { t as _sfc_main$22 } from "./MultiSelector-BeV98x7X.js";
11
- import { t as _sfc_main$23 } from "./NumberInput-AZ9x3oja.js";
12
- import { t as _sfc_main$24 } from "./Pagination-Cc4BrjQg.js";
13
- import { t as _sfc_main$25 } from "./Selector-DuVozKNq.js";
14
- import { t as _sfc_main$26 } from "./TextInput-zFT1_qgI.js";
15
- import { t as _sfc_main$27 } from "./Toolbar-BrgvvTCk.js";
16
- import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, h, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, ref, renderList, renderSlot, toDisplayString, toValue, unref, watch, withCtx, withModifiers } from "vue";
1
+ import { t as _sfc_main$15 } from "./VisuallyHidden-C7NN3VEP.js";
2
+ import { t as _sfc_main$16 } from "./Button-ONOoHdkg.js";
3
+ import { n as useLayerTeleportTarget } from "./useLayerMountTarget-BmZyeKWE.js";
4
+ import { n as firstCharacter } from "./characters-wTnzjkkR.js";
5
+ import { s as useAstryxMessages } from "./context-DWfi56sq.js";
6
+ import { n as useCollator } from "./locale-CabGJlGp.js";
7
+ import { t as useScrollableArea } from "./useScrollableArea-BE8b3qm7.js";
8
+ import { t as _sfc_main$17 } from "./Tooltip-sAM8i1eO.js";
9
+ import { t as useScrollbars } from "./useScrollbars-C2NJ6Qwq.js";
10
+ import { t as _sfc_main$18 } from "./Icon-KDnUyY7f.js";
11
+ import { t as _sfc_main$19 } from "./CheckboxInput-DJHCbwgC.js";
12
+ import { t as _sfc_main$20 } from "./Popover-78dFjTb9.js";
13
+ import { t as _sfc_main$21 } from "./DateInput-BjLdmYor.js";
14
+ import { t as _sfc_main$22 } from "./MultiSelector-DuVatmq5.js";
15
+ import { t as _sfc_main$23 } from "./NumberInput-B0vzOg3N.js";
16
+ import { t as _sfc_main$24 } from "./Pagination-Bfe12018.js";
17
+ import { t as _sfc_main$25 } from "./Selector-CPISLzp7.js";
18
+ import { t as _sfc_main$26 } from "./TextInput-CI96einV.js";
19
+ import { t as _sfc_main$27 } from "./Toolbar-C0pMWL4S.js";
20
+ import { Fragment, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, h, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onMounted, onScopeDispose, openBlock, ref, renderList, renderSlot, shallowRef, toDisplayString, toValue, unref, useAttrs, watch, withCtx, withModifiers } from "vue";
21
+ import "../styles/layer.css";
17
22
  import "../styles/table.css";
18
23
  function proportional(value = 1, options) {
19
24
  return {
@@ -74,6 +79,118 @@ function resolveColumnFloorWidths(columns) {
74
79
  }
75
80
  return widths;
76
81
  }
82
+ const MAX_COMPATIBLE_FUNCTION = /^(?:calc|min|max|clamp|var)\(/i;
83
+ const PX_LENGTH = /^(\d+(?:\.\d+)?)px$/i;
84
+ const LENGTH_UNITS = /* @__PURE__ */ new Set([
85
+ "px",
86
+ "em",
87
+ "rem",
88
+ "lh",
89
+ "rlh",
90
+ "ex",
91
+ "rex",
92
+ "ch",
93
+ "rch",
94
+ "cap",
95
+ "rcap",
96
+ "ic",
97
+ "ric",
98
+ "vw",
99
+ "vh",
100
+ "vi",
101
+ "vb",
102
+ "vmin",
103
+ "vmax",
104
+ "svw",
105
+ "svh",
106
+ "svi",
107
+ "svb",
108
+ "svmin",
109
+ "svmax",
110
+ "lvw",
111
+ "lvh",
112
+ "lvi",
113
+ "lvb",
114
+ "lvmin",
115
+ "lvmax",
116
+ "dvw",
117
+ "dvh",
118
+ "dvi",
119
+ "dvb",
120
+ "dvmin",
121
+ "dvmax",
122
+ "cqw",
123
+ "cqh",
124
+ "cqi",
125
+ "cqb",
126
+ "cqmin",
127
+ "cqmax",
128
+ "cm",
129
+ "mm",
130
+ "q",
131
+ "in",
132
+ "pt",
133
+ "pc",
134
+ "%"
135
+ ]);
136
+ function isZeroLength(value) {
137
+ const magnitude = value.trim().replace(/[a-z%]+$/i, "");
138
+ if (!/^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(magnitude)) return false;
139
+ return Number(magnitude) === 0;
140
+ }
141
+ function isCssMaxLength(value) {
142
+ if (value.endsWith("%")) return /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(value.slice(0, -1));
143
+ const unit = value.match(/[a-z]+$/i)?.[0]?.toLowerCase();
144
+ if (unit == null || !LENGTH_UNITS.has(unit)) return false;
145
+ return /^[+-]?(?:\d+(?:\.\d+)?|\.\d+)$/.test(value.slice(0, -unit.length));
146
+ }
147
+ /**
148
+ * 数据表的内联最小宽度:列宽下限和调用方写的 `minWidth` 里较大的那个。
149
+ *
150
+ * 数字、0 和 px 直接比较。其它长度、百分比、`calc()` / `var()` 交给 CSS `max()`。
151
+ * `auto`、`max-content` 这类关键字不能放进 `max()`,这时列宽下限胜出。
152
+ */
153
+ function resolveTableMinWidth(consumer, floorPx) {
154
+ const floor = `${floorPx}px`;
155
+ if (consumer == null) return floor;
156
+ if (typeof consumer === "number") return `${Math.max(consumer, floorPx)}px`;
157
+ const value = consumer.trim();
158
+ if (value === "" || isZeroLength(value)) return floor;
159
+ const px = PX_LENGTH.exec(value);
160
+ if (px) return `${Math.max(Number(px[1]), floorPx)}px`;
161
+ if (isCssMaxLength(value) || MAX_COMPATIBLE_FUNCTION.test(value)) return `max(${value}, ${floor})`;
162
+ return floor;
163
+ }
164
+ /** 把样式里的 `minWidth` 拆出来,剩下的继续留给滚动容器。字符串样式拆不开,原样返回。 */
165
+ function splitStyleMinWidth(style) {
166
+ if (style == null || typeof style === "string") return {
167
+ minWidth: void 0,
168
+ style
169
+ };
170
+ if (Array.isArray(style)) {
171
+ let minWidth;
172
+ const next = style.map((item) => {
173
+ const split = splitStyleMinWidth(item);
174
+ if (split.minWidth != null) minWidth = split.minWidth;
175
+ return split.style;
176
+ });
177
+ return {
178
+ minWidth,
179
+ style: next
180
+ };
181
+ }
182
+ if (typeof style === "object") {
183
+ const { minWidth, ...rest } = style;
184
+ return {
185
+ minWidth,
186
+ style: rest
187
+ };
188
+ }
189
+ return {
190
+ minWidth: void 0,
191
+ style
192
+ };
193
+ }
77
194
  function resolveColumnWidths(columns) {
78
195
  const { totalProportion, pixelTotal, maxProportionalSpace } = planColumnSpace(columns);
79
196
  const result = /* @__PURE__ */ new Map();
@@ -97,7 +214,8 @@ function resolveColumnWidths(columns) {
97
214
  }
98
215
  function capitalize(value) {
99
216
  if (value.length === 0) return value;
100
- return value.charAt(0).toUpperCase() + value.slice(1);
217
+ const first = firstCharacter(value);
218
+ return first.toUpperCase() + value.slice(first.length);
101
219
  }
102
220
  function cellText(value) {
103
221
  if (value == null) return "";
@@ -139,7 +257,7 @@ function generateColumns(data) {
139
257
  };
140
258
  });
141
259
  }
142
- function sortRows(rows, sort, columns = []) {
260
+ function sortRows(rows, sort, columns = [], collator) {
143
261
  if (sort.length === 0) return [...rows];
144
262
  const comparators = /* @__PURE__ */ new Map();
145
263
  for (const column of columns) {
@@ -151,19 +269,21 @@ function sortRows(rows, sort, columns = []) {
151
269
  copy.sort((a, b) => {
152
270
  for (const entry of sort) {
153
271
  const custom = comparators.get(entry.sortKey);
154
- const result = custom ? custom(a, b) : compareValues(a[entry.sortKey], b[entry.sortKey]);
272
+ const result = custom ? custom(a, b) : compareValues(a[entry.sortKey], b[entry.sortKey], collator);
155
273
  if (result !== 0) return entry.direction === "ascending" ? result : -result;
156
274
  }
157
275
  return 0;
158
276
  });
159
277
  return copy;
160
278
  }
161
- function compareValues(a, b) {
279
+ function compareValues(a, b, collator) {
162
280
  if (a == null && b == null) return 0;
163
281
  if (a == null) return 1;
164
282
  if (b == null) return -1;
165
283
  if (typeof a === "number" && typeof b === "number") return a - b;
166
- return String(a).localeCompare(String(b));
284
+ const left = String(a);
285
+ const right = String(b);
286
+ return collator ? collator.compare(left, right) : left.localeCompare(right);
167
287
  }
168
288
  //#endregion
169
289
  //#region src/Table/plugins/columnResize.ts
@@ -587,8 +707,8 @@ function useTablePagination(config) {
587
707
  }
588
708
  //#endregion
589
709
  //#region src/Table/TableExpansionChevron.vue
590
- const _hoisted_1$10 = ["aria-expanded", "aria-label"];
591
- const _sfc_main$13 = /*@__PURE__*/ defineComponent({
710
+ const _hoisted_1$11 = ["aria-expanded", "aria-label"];
711
+ const _sfc_main$14 = /*@__PURE__*/ defineComponent({
592
712
  name: "AstryxTableExpansionChevron",
593
713
  __name: "TableExpansionChevron",
594
714
  props: { expanded: { type: Boolean } },
@@ -606,7 +726,7 @@ const _sfc_main$13 = /*@__PURE__*/ defineComponent({
606
726
  }, [createElementVNode("span", { class: normalizeClass(["astryx-table__chevron-icon", { "is-expanded": __props.expanded }]) }, [createVNode(_sfc_main$18, {
607
727
  icon: "chevronRight",
608
728
  size: "xsm"
609
- })], 2)], 8, _hoisted_1$10);
729
+ })], 2)], 8, _hoisted_1$11);
610
730
  };
611
731
  }
612
732
  });
@@ -627,7 +747,7 @@ function useTableRowExpansion(config) {
627
747
  const current = toValue(config);
628
748
  if (!(current.getIsItemExpandable?.(item) ?? true)) return null;
629
749
  const key = current.getRowKey(item);
630
- return h(_sfc_main$13, {
750
+ return h(_sfc_main$14, {
631
751
  expanded: current.expandedKeys.has(key),
632
752
  onToggle: () => current.onToggle(key)
633
753
  });
@@ -870,9 +990,10 @@ function useTableSelection(config) {
870
990
  //#endregion
871
991
  //#region src/Table/plugins/sortable.ts
872
992
  function useTableSortableState(options) {
873
- const sort = ref(options.defaultSort ?? []);
993
+ const sort = ref(toValue(options.defaultSort) ?? []);
994
+ const collator = useCollator({ numeric: true });
874
995
  return {
875
- sortedData: computed(() => sortRows(toValue(options.data), sort.value, toValue(options.columns) ?? [])),
996
+ sortedData: computed(() => sortRows(toValue(options.data), sort.value, toValue(options.columns) ?? [], collator.value)),
876
997
  sort,
877
998
  sortConfig: {
878
999
  get sort() {
@@ -1052,13 +1173,13 @@ function selectColumn() {
1052
1173
  }
1053
1174
  //#endregion
1054
1175
  //#region src/Table/TableTreeCell.vue
1055
- const _hoisted_1$9 = ["aria-expanded", "aria-label"];
1056
- const _hoisted_2$4 = {
1176
+ const _hoisted_1$10 = ["aria-expanded", "aria-label"];
1177
+ const _hoisted_2$3 = {
1057
1178
  key: 1,
1058
1179
  class: "astryx-table__tree-spacer"
1059
1180
  };
1060
1181
  const _hoisted_3$3 = { class: "astryx-table__tree-label" };
1061
- const _sfc_main$12 = /*@__PURE__*/ defineComponent({
1182
+ const _sfc_main$13 = /*@__PURE__*/ defineComponent({
1062
1183
  name: "AstryxTableTreeCell",
1063
1184
  __name: "TableTreeCell",
1064
1185
  props: {
@@ -1095,12 +1216,19 @@ const _sfc_main$12 = /*@__PURE__*/ defineComponent({
1095
1216
  }, [createElementVNode("span", { class: normalizeClass(["astryx-table__chevron-icon", { "is-expanded": __props.expanded }]) }, [createVNode(_sfc_main$18, {
1096
1217
  icon: "chevronRight",
1097
1218
  size: "xsm"
1098
- })], 2)], 8, _hoisted_1$9)) : (openBlock(), createElementBlock("span", _hoisted_2$4)), createElementVNode("span", _hoisted_3$3, [renderSlot(_ctx.$slots, "default")])], 4);
1219
+ })], 2)], 8, _hoisted_1$10)) : (openBlock(), createElementBlock("span", _hoisted_2$3)), createElementVNode("span", _hoisted_3$3, [renderSlot(_ctx.$slots, "default")])], 4);
1099
1220
  };
1100
1221
  }
1101
1222
  });
1102
1223
  //#endregion
1103
1224
  //#region src/Table/plugins/tree.ts
1225
+ /**
1226
+ * config 本身和里面的字段都可能是 ref 或 getter,两层都要解开。
1227
+ * 只解数据类字段:`idKey` 这类回调字段是函数,`toValue` 会把它当 getter 调用掉。
1228
+ */
1229
+ function fieldValue(value) {
1230
+ return value === void 0 ? void 0 : toValue(value);
1231
+ }
1104
1232
  function itemId(item, idKey) {
1105
1233
  return typeof idKey === "function" ? String(idKey(item)) : String(item[idKey]);
1106
1234
  }
@@ -1124,7 +1252,7 @@ function flattenTree(config, expandedIds) {
1124
1252
  expandablePath.delete(id);
1125
1253
  }
1126
1254
  };
1127
- walkAll(config.data);
1255
+ walkAll(fieldValue(config.data) ?? []);
1128
1256
  const path = /* @__PURE__ */ new Set();
1129
1257
  const walk = (items, level) => {
1130
1258
  const siblings = config.sortSiblings ? config.sortSiblings([...items]) : items;
@@ -1147,7 +1275,7 @@ function flattenTree(config, expandedIds) {
1147
1275
  }
1148
1276
  }
1149
1277
  };
1150
- walk(config.data, 0);
1278
+ walk(fieldValue(config.data) ?? [], 0);
1151
1279
  return {
1152
1280
  rows,
1153
1281
  meta,
@@ -1184,7 +1312,7 @@ function useTableTreeData(config) {
1184
1312
  const meta = live.getRowMeta(item);
1185
1313
  const body = original?.(item, index) ?? cellText(item[column.key]);
1186
1314
  if (meta == null) return body;
1187
- return h(_sfc_main$12, {
1315
+ return h(_sfc_main$13, {
1188
1316
  level: meta.level,
1189
1317
  hasChildren: meta.hasChildren,
1190
1318
  expanded: meta.isExpanded,
@@ -1237,8 +1365,8 @@ function useTableTreeData(config) {
1237
1365
  }
1238
1366
  function useTableTreeState(config) {
1239
1367
  const initial = toValue(config);
1240
- const internal = ref(new Set(initial.defaultExpandedIds ?? []));
1241
- const expandedIds = computed(() => toValue(config).expandedIds ?? internal.value);
1368
+ const internal = ref(new Set(fieldValue(initial.defaultExpandedIds) ?? []));
1369
+ const expandedIds = computed(() => fieldValue(toValue(config).expandedIds) ?? internal.value);
1242
1370
  const flat = computed(() => flattenTree(toValue(config), expandedIds.value));
1243
1371
  const isAllExpanded = computed(() => expansionState(flat.value.expandableIds, expandedIds.value));
1244
1372
  function commit(next) {
@@ -1283,6 +1411,72 @@ function useTableTreeState(config) {
1283
1411
  };
1284
1412
  }
1285
1413
  //#endregion
1414
+ //#region src/Table/rowPatch.ts
1415
+ /**
1416
+ * 把多个插件的行事件合成一个处理器,按插件顺序依次调用。
1417
+ * 每个事件单独合并,插件只给其中一个事件时其余事件不受影响。
1418
+ */
1419
+ function mergeListeners(sources) {
1420
+ if (sources.length === 0) return void 0;
1421
+ const enters = sources.map((source) => source.onMouseenter).filter((handler) => handler != null);
1422
+ const leaves = sources.map((source) => source.onMouseleave).filter((handler) => handler != null);
1423
+ const focuses = sources.map((source) => source.onFocus).filter((handler) => handler != null);
1424
+ const blurs = sources.map((source) => source.onBlur).filter((handler) => handler != null);
1425
+ const merged = {};
1426
+ if (enters.length > 0) merged.onMouseenter = (event) => {
1427
+ for (const handler of enters) handler(event);
1428
+ };
1429
+ if (leaves.length > 0) merged.onMouseleave = (event) => {
1430
+ for (const handler of leaves) handler(event);
1431
+ };
1432
+ if (focuses.length > 0) merged.onFocus = (event) => {
1433
+ for (const handler of focuses) handler(event);
1434
+ };
1435
+ if (blurs.length > 0) merged.onBlur = (event) => {
1436
+ for (const handler of blurs) handler(event);
1437
+ };
1438
+ return merged;
1439
+ }
1440
+ /**
1441
+ * 收集所有插件对这一行的贡献。分组头、展开面板、是否参与选择这类二选一的字段以第一个给出
1442
+ * 结果的插件为准,类名、属性、事件、行元素回调、右键菜单则依次叠加。
1443
+ */
1444
+ function mergeRowPatches(plugins, row, index, columnCount) {
1445
+ const classes = [];
1446
+ const clicks = [];
1447
+ const refs = [];
1448
+ const menus = [];
1449
+ const listeners = [];
1450
+ const merged = {};
1451
+ for (const plugin of plugins) {
1452
+ const patch = plugin.rowPatch?.(row, index, columnCount);
1453
+ if (patch == null) continue;
1454
+ if (patch.group && merged.group == null) merged.group = patch.group;
1455
+ if (patch.panel && merged.panel == null) merged.panel = patch.panel;
1456
+ if (patch.suppressSelection) merged.suppressSelection = true;
1457
+ if (patch.skipRowIndex) merged.skipRowIndex = true;
1458
+ if (patch.class) classes.push(patch.class);
1459
+ if (patch.attrs) merged.attrs = {
1460
+ ...merged.attrs,
1461
+ ...patch.attrs
1462
+ };
1463
+ if (patch.onClick) clicks.push(patch.onClick);
1464
+ if (patch.ref) refs.push(patch.ref);
1465
+ if (patch.listeners) listeners.push(patch.listeners);
1466
+ if (patch.menu) menus.push(...patch.menu);
1467
+ }
1468
+ merged.class = classes.join(" ") || void 0;
1469
+ merged.menu = menus;
1470
+ merged.listeners = mergeListeners(listeners);
1471
+ if (clicks.length > 0) merged.onClick = (event) => {
1472
+ for (const click of clicks) click(event);
1473
+ };
1474
+ if (refs.length > 0) merged.ref = (element) => {
1475
+ for (const callback of refs) callback(element);
1476
+ };
1477
+ return merged;
1478
+ }
1479
+ //#endregion
1286
1480
  //#region src/Table/TableDataRenderers.ts
1287
1481
  /**
1288
1482
  * 渲染单元格内容:优先走列自己的 renderCell,没给就回退成纯文本。
@@ -1377,10 +1571,11 @@ const PluginFooter = defineComponent({
1377
1571
  });
1378
1572
  //#endregion
1379
1573
  //#region src/Table/TableFilterControl.vue
1380
- const _hoisted_1$8 = ["data-variant"];
1381
- const _hoisted_2$3 = { class: "astryx-table__filter-popover" };
1382
- const _hoisted_3$2 = { class: "astryx-table__filter-actions" };
1383
- const _sfc_main$11 = /*@__PURE__*/ defineComponent({
1574
+ const _hoisted_1$9 = ["data-variant"];
1575
+ const _hoisted_2$2 = ["aria-label", "data-active"];
1576
+ const _hoisted_3$2 = { class: "astryx-table__filter-popover" };
1577
+ const _hoisted_4$2 = { class: "astryx-table__filter-actions" };
1578
+ const _sfc_main$12 = /*@__PURE__*/ defineComponent({
1384
1579
  __name: "TableFilterControl",
1385
1580
  props: { filter: {} },
1386
1581
  setup(__props) {
@@ -1388,6 +1583,11 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
1388
1583
  const messages = useAstryxMessages();
1389
1584
  const draft = ref(props.filter.value);
1390
1585
  const isCompact = computed(() => props.filter.variant === "inline-compact");
1586
+ /** 有生效的筛选值时漏斗用强调色,一眼看出这一列被筛过。 */
1587
+ const hasValue = computed(() => {
1588
+ const value = props.filter.value;
1589
+ return value != null && value !== "" && !(Array.isArray(value) && value.length === 0);
1590
+ });
1391
1591
  watch(() => props.filter.value, (value) => {
1392
1592
  draft.value = value;
1393
1593
  });
@@ -1521,7 +1721,7 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
1521
1721
  "has-close-button": false,
1522
1722
  width: 240
1523
1723
  }, {
1524
- content: withCtx(() => [createElementVNode("div", _hoisted_2$3, [__props.filter.field.type === "string" ? (openBlock(), createBlock(_sfc_main$26, {
1724
+ content: withCtx(() => [createElementVNode("div", _hoisted_3$2, [__props.filter.field.type === "string" ? (openBlock(), createBlock(_sfc_main$26, {
1525
1725
  key: 0,
1526
1726
  "model-value": textValue(draft.value),
1527
1727
  label: __props.filter.field.label,
@@ -1594,7 +1794,7 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
1594
1794
  "label",
1595
1795
  "placeholder",
1596
1796
  "options"
1597
- ])), createElementVNode("div", _hoisted_3$2, [createVNode(_sfc_main$15, {
1797
+ ])), createElementVNode("div", _hoisted_4$2, [createVNode(_sfc_main$16, {
1598
1798
  variant: "ghost",
1599
1799
  size: "sm",
1600
1800
  label: unref(messages).table.reset,
@@ -1605,7 +1805,7 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
1605
1805
  }, {
1606
1806
  default: withCtx(() => [createTextVNode(toDisplayString(unref(messages).table.reset), 1)]),
1607
1807
  _: 1
1608
- }, 8, ["label"]), createVNode(_sfc_main$15, {
1808
+ }, 8, ["label"]), createVNode(_sfc_main$16, {
1609
1809
  variant: "primary",
1610
1810
  size: "sm",
1611
1811
  label: unref(messages).table.apply,
@@ -1614,33 +1814,32 @@ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
1614
1814
  default: withCtx(() => [createTextVNode(toDisplayString(unref(messages).table.apply), 1)]),
1615
1815
  _: 1
1616
1816
  }, 8, ["label"])])])]),
1617
- default: withCtx(() => [createVNode(_sfc_main$16, {
1618
- variant: "ghost",
1619
- size: "sm",
1620
- label: __props.filter.field.label
1621
- }, {
1622
- default: withCtx(() => [createVNode(_sfc_main$18, {
1623
- icon: "funnel",
1624
- size: "sm"
1625
- })]),
1626
- _: 1
1627
- }, 8, ["label"])]),
1817
+ default: withCtx(() => [createElementVNode("button", {
1818
+ type: "button",
1819
+ class: "astryx-table__filter-trigger",
1820
+ "aria-label": __props.filter.field.label,
1821
+ "data-active": hasValue.value || void 0
1822
+ }, [createVNode(_sfc_main$18, {
1823
+ icon: "funnel",
1824
+ size: "xsm",
1825
+ color: hasValue.value ? "accent" : "secondary"
1826
+ }, null, 8, ["color"])], 8, _hoisted_2$2)]),
1628
1827
  _: 1
1629
- }, 8, ["label"]))], 8, _hoisted_1$8);
1828
+ }, 8, ["label"]))], 8, _hoisted_1$9);
1630
1829
  };
1631
1830
  }
1632
1831
  });
1633
1832
  //#endregion
1634
1833
  //#region src/Table/TableGroupHeader.vue
1635
- const _hoisted_1$7 = ["data-pinned"];
1636
- const _hoisted_2$2 = [
1834
+ const _hoisted_1$8 = ["data-pinned"];
1835
+ const _hoisted_2$1 = [
1637
1836
  "data-pinned",
1638
1837
  "aria-expanded",
1639
1838
  "aria-label"
1640
1839
  ];
1641
1840
  const _hoisted_3$1 = { class: "astryx-table__group-label" };
1642
1841
  const _hoisted_4$1 = { class: "astryx-table__group-count" };
1643
- const _sfc_main$10 = /*@__PURE__*/ defineComponent({
1842
+ const _sfc_main$11 = /*@__PURE__*/ defineComponent({
1644
1843
  name: "AstryxTableGroupHeader",
1645
1844
  __name: "TableGroupHeader",
1646
1845
  props: {
@@ -1667,19 +1866,19 @@ const _sfc_main$10 = /*@__PURE__*/ defineComponent({
1667
1866
  }, [createElementVNode("span", { class: normalizeClass(["astryx-table__chevron-icon", { "is-expanded": !__props.collapsed }]) }, [createVNode(_sfc_main$18, {
1668
1867
  icon: "chevronRight",
1669
1868
  size: "sm"
1670
- })], 2)], 8, _hoisted_2$2), renderSlot(_ctx.$slots, "default", {}, () => [createElementVNode("span", _hoisted_3$1, [createTextVNode(toDisplayString(__props.groupKey) + " ", 1), createElementVNode("span", _hoisted_4$1, "(" + toDisplayString(__props.count) + ")", 1)])])], 8, _hoisted_1$7);
1869
+ })], 2)], 8, _hoisted_2$1), renderSlot(_ctx.$slots, "default", {}, () => [createElementVNode("span", _hoisted_3$1, [createTextVNode(toDisplayString(__props.groupKey) + " ", 1), createElementVNode("span", _hoisted_4$1, "(" + toDisplayString(__props.count) + ")", 1)])])], 8, _hoisted_1$8);
1671
1870
  };
1672
1871
  }
1673
1872
  });
1674
1873
  //#endregion
1675
1874
  //#region src/Table/TableRowMenu.vue
1676
- const _hoisted_1$6 = [
1875
+ const _hoisted_1$7 = [
1677
1876
  "tabindex",
1678
1877
  "onClick",
1679
1878
  "onFocusin",
1680
1879
  "onMouseenter"
1681
1880
  ];
1682
- const _sfc_main$9 = /*@__PURE__*/ defineComponent({
1881
+ const _sfc_main$10 = /*@__PURE__*/ defineComponent({
1683
1882
  name: "AstryxTableRowMenu",
1684
1883
  __name: "TableRowMenu",
1685
1884
  props: {
@@ -1691,6 +1890,7 @@ const _sfc_main$9 = /*@__PURE__*/ defineComponent({
1691
1890
  setup(__props, { emit: __emit }) {
1692
1891
  const props = __props;
1693
1892
  const emit = __emit;
1893
+ const teleportTarget = useLayerTeleportTarget();
1694
1894
  const root = ref(null);
1695
1895
  const active = ref(0);
1696
1896
  function focusItem(index) {
@@ -1738,10 +1938,10 @@ const _sfc_main$9 = /*@__PURE__*/ defineComponent({
1738
1938
  document.removeEventListener("pointerdown", onPointerDown);
1739
1939
  });
1740
1940
  return (_ctx, _cache) => {
1741
- return openBlock(), createElementBlock("div", {
1941
+ return openBlock(), createBlock(Teleport, { to: unref(teleportTarget) }, [createElementVNode("div", {
1742
1942
  ref_key: "root",
1743
1943
  ref: root,
1744
- class: "astryx-table-menu",
1944
+ class: "astryx-table-menu astryx-layer",
1745
1945
  role: "menu",
1746
1946
  tabindex: "-1",
1747
1947
  style: normalizeStyle({
@@ -1763,15 +1963,208 @@ const _sfc_main$9 = /*@__PURE__*/ defineComponent({
1763
1963
  key: 0,
1764
1964
  icon: item.icon,
1765
1965
  size: "xsm"
1766
- }, null, 8, ["icon"])) : createCommentVNode("v-if", true), createElementVNode("span", null, toDisplayString(item.label), 1)], 40, _hoisted_1$6);
1767
- }), 128))], 36);
1966
+ }, null, 8, ["icon"])) : createCommentVNode("v-if", true), createElementVNode("span", null, toDisplayString(item.label), 1)], 40, _hoisted_1$7);
1967
+ }), 128))], 36)], 8, ["to"]);
1768
1968
  };
1769
1969
  }
1770
1970
  });
1771
1971
  //#endregion
1972
+ //#region src/Table/TableScroll.vue
1973
+ const _hoisted_1$6 = ["aria-label", "tabindex"];
1974
+ const _sfc_main$9 = /*@__PURE__*/ defineComponent({
1975
+ inheritAttrs: false,
1976
+ __name: "TableScroll",
1977
+ props: { label: {} },
1978
+ emits: ["viewport"],
1979
+ setup(__props, { emit: __emit }) {
1980
+ const emit = __emit;
1981
+ const attrs = useAttrs();
1982
+ const scroll = useScrollableArea({
1983
+ axis: "inline",
1984
+ overscroll: "contain",
1985
+ keyboardAccess: { owner: "content" }
1986
+ });
1987
+ const viewportEl = shallowRef(null);
1988
+ function bindViewport(element) {
1989
+ scroll.viewport(element);
1990
+ const node = element instanceof HTMLElement ? element : null;
1991
+ viewportEl.value = node;
1992
+ emit("viewport", node);
1993
+ }
1994
+ useScrollbars(viewportEl);
1995
+ const tabindex = computed(() => scroll.state.value.inline.isScrollable ? 0 : void 0);
1996
+ const rootClass = computed(() => ["astryx-table-scroll", attrs.class]);
1997
+ const rootStyle = computed(() => [attrs.style, scroll.viewportStyle.value]);
1998
+ return (_ctx, _cache) => {
1999
+ return openBlock(), createElementBlock("div", mergeProps({
2000
+ ref: bindViewport,
2001
+ class: rootClass.value,
2002
+ role: "group",
2003
+ "aria-label": __props.label,
2004
+ tabindex: tabindex.value
2005
+ }, unref(scroll).viewportAttrs.value, { style: rootStyle.value }), [createElementVNode("div", {
2006
+ ref: unref(scroll).content,
2007
+ "data-scroll-content": ""
2008
+ }, [renderSlot(_ctx.$slots, "default")], 512)], 16, _hoisted_1$6);
2009
+ };
2010
+ }
2011
+ });
2012
+ //#endregion
2013
+ //#region src/Table/useTableColumnResizeSession.ts
2014
+ /**
2015
+ * 表头列宽把手的指针拖动和键盘步进。
2016
+ * 宽度怎么分给相邻列由 `resizeColumnWidths` 决定,这里只负责会话和预览。
2017
+ */
2018
+ function useTableColumnResizeSession(options) {
2019
+ function buildResizeState(cell, column) {
2020
+ const row = cell.parentElement;
2021
+ if (row == null) return null;
2022
+ const table = cell.closest("table");
2023
+ const contributions = options.contributions();
2024
+ const dragged = contributions.get(column.key);
2025
+ const snapshots = [];
2026
+ const elements = /* @__PURE__ */ new Map();
2027
+ for (const child of Array.from(row.children)) {
2028
+ if (!(child instanceof HTMLElement)) continue;
2029
+ const key = child.dataset.column;
2030
+ if (key == null) continue;
2031
+ const contribution = contributions.get(key);
2032
+ if (contribution == null) continue;
2033
+ const measured = child.getBoundingClientRect().width;
2034
+ snapshots.push({
2035
+ key,
2036
+ initialWidth: contribution.currentWidth ?? (measured > 0 ? measured : 0),
2037
+ minWidth: contribution.minWidth,
2038
+ maxWidth: contribution.maxWidth
2039
+ });
2040
+ elements.set(key, child);
2041
+ }
2042
+ const resizeIndex = snapshots.findIndex((item) => item.key === column.key);
2043
+ if (resizeIndex < 0) return null;
2044
+ return {
2045
+ snapshots,
2046
+ resizeIndex,
2047
+ neighborIndex: dragged?.neighborKey == null ? null : snapshots.findIndex((item) => item.key === dragged.neighborKey),
2048
+ tableWidth: table?.getBoundingClientRect().width ?? 0,
2049
+ direction: columnResizeDirectionSign(getComputedStyle(cell).direction),
2050
+ elements
2051
+ };
2052
+ }
2053
+ function applyResize(widths, state) {
2054
+ state.snapshots.forEach((snapshot, index) => {
2055
+ const element = state.elements.get(snapshot.key);
2056
+ const width = widths[index];
2057
+ if (element == null || width == null) return;
2058
+ const pixels = `${width}px`;
2059
+ element.style.width = pixels;
2060
+ element.style.minWidth = pixels;
2061
+ element.style.maxWidth = pixels;
2062
+ });
2063
+ }
2064
+ function resetResizeStyles(state) {
2065
+ for (const element of state.elements.values()) {
2066
+ element.style.width = "";
2067
+ element.style.minWidth = "";
2068
+ element.style.maxWidth = "";
2069
+ }
2070
+ }
2071
+ /** 算一次拖动结果:先把预览写到表头,再把变了的列交给插件。 */
2072
+ function commitResize(state, delta) {
2073
+ const widths = resizeColumnWidths(state, delta);
2074
+ applyResize(widths, state);
2075
+ const last = state.snapshots.length - 1;
2076
+ const updates = {};
2077
+ state.snapshots.forEach((snapshot, index) => {
2078
+ const width = widths[index];
2079
+ if (index !== last && width != null) updates[snapshot.key] = width;
2080
+ });
2081
+ if (Object.keys(updates).length === 0) return;
2082
+ for (const plugin of options.plugins()) plugin.onColumnResizeEnd?.(updates);
2083
+ }
2084
+ function resizeLabel(column) {
2085
+ const header = typeof column.header === "string" && column.header.length > 0 ? column.header : column.key;
2086
+ return options.resizeColumnLabel(header);
2087
+ }
2088
+ function resizeMax(contribution) {
2089
+ const max = contribution?.maxWidth;
2090
+ return max == null || !Number.isFinite(max) ? void 0 : max;
2091
+ }
2092
+ function startResize(event, column) {
2093
+ const target = event.currentTarget;
2094
+ if (!(target instanceof HTMLElement) || event.button !== 0) return;
2095
+ const cell = target.closest("th");
2096
+ const state = cell == null ? null : buildResizeState(cell, column);
2097
+ if (state == null || cell == null) return;
2098
+ event.preventDefault();
2099
+ const pointerId = event.pointerId;
2100
+ const startX = event.clientX;
2101
+ const table = cell.closest("table");
2102
+ const previousUserSelect = table?.style.userSelect ?? "";
2103
+ if (table != null) table.style.userSelect = "none";
2104
+ target.setAttribute("data-resizing", "true");
2105
+ target.setPointerCapture(pointerId);
2106
+ const listeners = new AbortController();
2107
+ const move = (moveEvent) => {
2108
+ if (moveEvent.pointerId !== pointerId) return;
2109
+ applyResize(resizeColumnWidths(state, (moveEvent.clientX - startX) * state.direction), state);
2110
+ };
2111
+ const finish = () => {
2112
+ listeners.abort();
2113
+ target.removeAttribute("data-resizing");
2114
+ if (target.hasPointerCapture(pointerId)) target.releasePointerCapture(pointerId);
2115
+ if (table != null) table.style.userSelect = previousUserSelect;
2116
+ };
2117
+ const stop = (upEvent) => {
2118
+ if (upEvent.pointerId !== pointerId) return;
2119
+ finish();
2120
+ commitResize(state, (upEvent.clientX - startX) * state.direction);
2121
+ };
2122
+ const cancel = (cancelEvent) => {
2123
+ if (cancelEvent.pointerId !== pointerId) return;
2124
+ finish();
2125
+ resetResizeStyles(state);
2126
+ };
2127
+ const listenerOptions = { signal: listeners.signal };
2128
+ target.addEventListener("pointermove", move, listenerOptions);
2129
+ target.addEventListener("pointerup", stop, listenerOptions);
2130
+ target.addEventListener("pointercancel", cancel, listenerOptions);
2131
+ }
2132
+ function onResizeKeydown(event, column) {
2133
+ const handle = event.currentTarget;
2134
+ if (!(handle instanceof HTMLElement)) return;
2135
+ const cell = handle.closest("th");
2136
+ const state = cell == null ? null : buildResizeState(cell, column);
2137
+ if (state == null) return;
2138
+ const self = state.snapshots[state.resizeIndex];
2139
+ if (self == null) return;
2140
+ const step = columnResizeStep(event.shiftKey);
2141
+ let delta = null;
2142
+ switch (event.key) {
2143
+ case "ArrowRight":
2144
+ delta = step * state.direction;
2145
+ break;
2146
+ case "ArrowLeft":
2147
+ delta = -step * state.direction;
2148
+ break;
2149
+ case "Home":
2150
+ delta = self.minWidth - self.initialWidth;
2151
+ break;
2152
+ case "End": if (Number.isFinite(self.maxWidth)) delta = self.maxWidth - self.initialWidth;
2153
+ }
2154
+ if (delta == null) return;
2155
+ event.preventDefault();
2156
+ commitResize(state, delta);
2157
+ }
2158
+ return {
2159
+ startResize,
2160
+ onResizeKeydown,
2161
+ resizeLabel,
2162
+ resizeMax
2163
+ };
2164
+ }
2165
+ //#endregion
1772
2166
  //#region src/Table/TableData.vue
1773
- const _hoisted_1$5 = ["aria-label"];
1774
- const _hoisted_2$1 = [
2167
+ const _hoisted_1$5 = [
1775
2168
  "data-density",
1776
2169
  "data-dividers",
1777
2170
  "data-striped",
@@ -1781,26 +2174,26 @@ const _hoisted_2$1 = [
1781
2174
  "data-row-highlight",
1782
2175
  "aria-rowcount"
1783
2176
  ];
1784
- const _hoisted_3 = [
2177
+ const _hoisted_2 = [
1785
2178
  "data-column",
1786
2179
  "data-align",
1787
2180
  "aria-sort"
1788
2181
  ];
1789
- const _hoisted_4 = { class: "astryx-table__header" };
1790
- const _hoisted_5 = { class: "astryx-table__header-line" };
1791
- const _hoisted_6 = [
2182
+ const _hoisted_3 = { class: "astryx-table__header" };
2183
+ const _hoisted_4 = { class: "astryx-table__header-line" };
2184
+ const _hoisted_5 = [
1792
2185
  "data-align",
1793
2186
  "aria-label",
1794
2187
  "onClick"
1795
2188
  ];
1796
- const _hoisted_7 = { key: 1 };
1797
- const _hoisted_8 = ["data-active"];
1798
- const _hoisted_9 = {
2189
+ const _hoisted_6 = { key: 1 };
2190
+ const _hoisted_7 = ["data-active"];
2191
+ const _hoisted_8 = {
1799
2192
  key: 2,
1800
2193
  class: "astryx-table__sort-rank"
1801
2194
  };
1802
- const _hoisted_10 = { key: 2 };
1803
- const _hoisted_11 = [
2195
+ const _hoisted_9 = { key: 2 };
2196
+ const _hoisted_10 = [
1804
2197
  "aria-label",
1805
2198
  "aria-valuenow",
1806
2199
  "aria-valuemin",
@@ -1808,20 +2201,24 @@ const _hoisted_11 = [
1808
2201
  "onPointerdown",
1809
2202
  "onKeydown"
1810
2203
  ];
1811
- const _hoisted_12 = { key: 0 };
1812
- const _hoisted_13 = ["colspan"];
1813
- const _hoisted_14 = [
2204
+ const _hoisted_11 = { key: 0 };
2205
+ const _hoisted_12 = ["colspan"];
2206
+ const _hoisted_13 = [
1814
2207
  "aria-selected",
1815
2208
  "aria-rowindex",
2209
+ "onBlur",
1816
2210
  "onClick",
1817
- "onContextmenu"
2211
+ "onContextmenu",
2212
+ "onFocus",
2213
+ "onMouseenter",
2214
+ "onMouseleave"
1818
2215
  ];
1819
- const _hoisted_15 = ["colspan"];
1820
- const _hoisted_16 = ["data-column", "data-align"];
1821
- const _hoisted_17 = ["data-variant"];
1822
- const _hoisted_18 = ["colspan"];
1823
- /** 收集这一行表头的宽度快照,用来算拖动后的宽度。 */
2216
+ const _hoisted_14 = ["colspan"];
2217
+ const _hoisted_15 = ["data-column", "data-align"];
2218
+ const _hoisted_16 = ["data-variant"];
2219
+ const _hoisted_17 = ["colspan"];
1824
2220
  const _sfc_main$8 = /*@__PURE__*/ defineComponent({
2221
+ inheritAttrs: false,
1825
2222
  __name: "TableData",
1826
2223
  props: {
1827
2224
  rows: {},
@@ -1836,14 +2233,15 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
1836
2233
  textOverflow: {},
1837
2234
  verticalAlign: {},
1838
2235
  rowIndexStart: {},
1839
- rowCount: {},
1840
- minWidth: {}
2236
+ rowCount: {}
1841
2237
  },
1842
2238
  setup(__props) {
1843
2239
  const props = __props;
2240
+ const attrs = useAttrs();
1844
2241
  const messages = useAstryxMessages();
1845
2242
  const scrollRoot = ref(null);
1846
2243
  const menu = ref(null);
2244
+ const scrollStyle = computed(() => splitStyleMinWidth(attrs.style).style);
1847
2245
  const resolvedColumns = computed(() => props.plugins.reduce((columns, plugin) => plugin.transformColumns?.(columns) ?? columns, [...props.columns]));
1848
2246
  const widths = computed(() => resolveColumnWidths(resolvedColumns.value));
1849
2247
  const selection = computed(() => props.plugins.find((plugin) => plugin.selection)?.selection);
@@ -1866,6 +2264,12 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
1866
2264
  };
1867
2265
  }
1868
2266
  const resizeContributions = computed(() => new Map(resolvedColumns.value.map((column) => [column.key, resizeContribution(column)])));
2267
+ const { startResize, onResizeKeydown, resizeLabel, resizeMax } = useTableColumnResizeSession({
2268
+ plugins: () => props.plugins,
2269
+ contributions: () => resizeContributions.value,
2270
+ resizeColumnLabel: (header) => messages.value.table.resizeColumn(header)
2271
+ });
2272
+ const tableStyle = computed(() => ({ minWidth: resolveTableMinWidth(splitStyleMinWidth(attrs.style).minWidth, widths.value.tableMinWidth) }));
1869
2273
  const layoutColumns = computed(() => selection.value ? [selectColumn(), ...resolvedColumns.value] : resolvedColumns.value);
1870
2274
  const columnCount = computed(() => layoutColumns.value.length);
1871
2275
  const trackRows = computed(() => props.rowCount != null || props.rowIndexStart != null);
@@ -1876,10 +2280,12 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
1876
2280
  function bindScroll(element) {
1877
2281
  for (const plugin of props.plugins) plugin.bindScrollRoot?.(element);
1878
2282
  }
1879
- watch(scrollRoot, (element, previous) => {
1880
- if (previous) bindScroll(null);
1881
- if (element) bindScroll(element);
1882
- });
2283
+ function onViewport(element) {
2284
+ if (scrollRoot.value === element) return;
2285
+ if (scrollRoot.value != null) bindScroll(null);
2286
+ scrollRoot.value = element;
2287
+ if (element != null) bindScroll(element);
2288
+ }
1883
2289
  onBeforeUnmount(() => {
1884
2290
  bindScroll(null);
1885
2291
  });
@@ -1906,6 +2312,16 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
1906
2312
  }
1907
2313
  return null;
1908
2314
  }
2315
+ const filterContributions = computed(() => new Map(resolvedColumns.value.map((column) => [column.key, filterFor(column)])));
2316
+ /**
2317
+ * 取某一列落在指定位置的筛选控件。
2318
+ * `popover` 是一个漏斗按钮,跟标题、排序图标同一行;`inline` 系列是输入框,垫在标题下面。
2319
+ */
2320
+ function filterAt(column, place) {
2321
+ const filter = filterContributions.value.get(column.key) ?? null;
2322
+ if (filter == null) return null;
2323
+ return (filter.variant === "popover" ? "line" : "below") === place ? filter : null;
2324
+ }
1909
2325
  function rowKey(row, index) {
1910
2326
  if (typeof props.idKey === "function") return props.idKey(row);
1911
2327
  const id = row[props.idKey];
@@ -1944,38 +2360,19 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
1944
2360
  if (column.verticalAlign) style.verticalAlign = column.verticalAlign;
1945
2361
  return style;
1946
2362
  }
1947
- function mergeRow(row, index) {
1948
- const classes = [];
1949
- const clicks = [];
1950
- const menus = [];
1951
- const merged = {};
1952
- for (const plugin of props.plugins) {
1953
- const patch = plugin.rowPatch?.(row, index, columnCount.value);
1954
- if (patch == null) continue;
1955
- if (patch.group && merged.group == null) merged.group = patch.group;
1956
- if (patch.panel && merged.panel == null) merged.panel = patch.panel;
1957
- if (patch.suppressSelection) merged.suppressSelection = true;
1958
- if (patch.skipRowIndex) merged.skipRowIndex = true;
1959
- if (patch.class) classes.push(patch.class);
1960
- if (patch.attrs) merged.attrs = {
1961
- ...merged.attrs,
1962
- ...patch.attrs
1963
- };
1964
- if (patch.onClick) clicks.push(patch.onClick);
1965
- if (patch.menu) menus.push(...patch.menu);
1966
- }
1967
- merged.class = classes.join(" ") || void 0;
1968
- merged.menu = menus;
1969
- if (clicks.length > 0) merged.onClick = (event) => {
1970
- for (const click of clicks) click(event);
2363
+ /** Vue 的 ref 回调拿到的是更宽的 `Element`,收窄成 `<tr>` 再交给插件。 */
2364
+ function rowRefBinding(patch) {
2365
+ const callback = patch.ref;
2366
+ if (callback == null) return void 0;
2367
+ return (element) => {
2368
+ callback(element);
1971
2369
  };
1972
- return merged;
1973
2370
  }
1974
2371
  const entries = computed(() => {
1975
2372
  let ordinal = 0;
1976
2373
  const start = props.rowIndexStart ?? 1;
1977
2374
  return props.rows.map((row, index) => {
1978
- const patch = mergeRow(row, index);
2375
+ const patch = mergeRowPatches(props.plugins, row, index, columnCount.value);
1979
2376
  let rowIndex;
1980
2377
  if (trackRows.value && !patch.skipRowIndex) {
1981
2378
  rowIndex = start + ordinal;
@@ -1986,6 +2383,7 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
1986
2383
  row,
1987
2384
  index,
1988
2385
  patch,
2386
+ ref: rowRefBinding(patch),
1989
2387
  rowIndex
1990
2388
  };
1991
2389
  });
@@ -1999,144 +2397,6 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
1999
2397
  items
2000
2398
  };
2001
2399
  }
2002
- function buildResizeState(cell, column) {
2003
- const row = cell.parentElement;
2004
- if (row == null) return null;
2005
- const table = cell.closest("table");
2006
- const dragged = resizeContributions.value.get(column.key);
2007
- const snapshots = [];
2008
- const elements = /* @__PURE__ */ new Map();
2009
- for (const child of Array.from(row.children)) {
2010
- if (!(child instanceof HTMLElement)) continue;
2011
- const key = child.dataset.column;
2012
- if (key == null) continue;
2013
- const contribution = resizeContributions.value.get(key);
2014
- if (contribution == null) continue;
2015
- const measured = child.getBoundingClientRect().width;
2016
- snapshots.push({
2017
- key,
2018
- initialWidth: contribution.currentWidth ?? (measured > 0 ? measured : 0),
2019
- minWidth: contribution.minWidth,
2020
- maxWidth: contribution.maxWidth
2021
- });
2022
- elements.set(key, child);
2023
- }
2024
- const resizeIndex = snapshots.findIndex((item) => item.key === column.key);
2025
- if (resizeIndex < 0) return null;
2026
- return {
2027
- snapshots,
2028
- resizeIndex,
2029
- neighborIndex: dragged?.neighborKey == null ? null : snapshots.findIndex((item) => item.key === dragged.neighborKey),
2030
- tableWidth: table?.getBoundingClientRect().width ?? 0,
2031
- direction: columnResizeDirectionSign(getComputedStyle(cell).direction),
2032
- elements
2033
- };
2034
- }
2035
- function applyResize(widths, state) {
2036
- state.snapshots.forEach((snapshot, index) => {
2037
- const element = state.elements.get(snapshot.key);
2038
- const width = widths[index];
2039
- if (element == null || width == null) return;
2040
- const pixels = `${width}px`;
2041
- element.style.width = pixels;
2042
- element.style.minWidth = pixels;
2043
- element.style.maxWidth = pixels;
2044
- });
2045
- }
2046
- function resetResizeStyles(state) {
2047
- for (const element of state.elements.values()) {
2048
- element.style.width = "";
2049
- element.style.minWidth = "";
2050
- element.style.maxWidth = "";
2051
- }
2052
- }
2053
- /** 算一次拖动结果:先把预览写到表头,再把变了的列交给插件。 */
2054
- function commitResize(state, delta) {
2055
- const widths = resizeColumnWidths(state, delta);
2056
- applyResize(widths, state);
2057
- const last = state.snapshots.length - 1;
2058
- const updates = {};
2059
- state.snapshots.forEach((snapshot, index) => {
2060
- const width = widths[index];
2061
- if (index !== last && width != null) updates[snapshot.key] = width;
2062
- });
2063
- if (Object.keys(updates).length === 0) return;
2064
- for (const plugin of props.plugins) plugin.onColumnResizeEnd?.(updates);
2065
- }
2066
- function resizeLabel(column) {
2067
- const header = typeof column.header === "string" && column.header.length > 0 ? column.header : column.key;
2068
- return messages.value.table.resizeColumn(header);
2069
- }
2070
- function resizeMax(contribution) {
2071
- const max = contribution?.maxWidth;
2072
- return max == null || !Number.isFinite(max) ? void 0 : max;
2073
- }
2074
- function startResize(event, column) {
2075
- const target = event.currentTarget;
2076
- if (!(target instanceof HTMLElement) || event.button !== 0) return;
2077
- const cell = target.closest("th");
2078
- const state = cell == null ? null : buildResizeState(cell, column);
2079
- if (state == null || cell == null) return;
2080
- event.preventDefault();
2081
- const pointerId = event.pointerId;
2082
- const startX = event.clientX;
2083
- const table = cell.closest("table");
2084
- const previousUserSelect = table?.style.userSelect ?? "";
2085
- if (table != null) table.style.userSelect = "none";
2086
- target.setAttribute("data-resizing", "true");
2087
- target.setPointerCapture(pointerId);
2088
- const listeners = new AbortController();
2089
- const move = (moveEvent) => {
2090
- if (moveEvent.pointerId !== pointerId) return;
2091
- applyResize(resizeColumnWidths(state, (moveEvent.clientX - startX) * state.direction), state);
2092
- };
2093
- const finish = () => {
2094
- listeners.abort();
2095
- target.removeAttribute("data-resizing");
2096
- if (target.hasPointerCapture(pointerId)) target.releasePointerCapture(pointerId);
2097
- if (table != null) table.style.userSelect = previousUserSelect;
2098
- };
2099
- const stop = (upEvent) => {
2100
- if (upEvent.pointerId !== pointerId) return;
2101
- finish();
2102
- commitResize(state, (upEvent.clientX - startX) * state.direction);
2103
- };
2104
- const cancel = (cancelEvent) => {
2105
- if (cancelEvent.pointerId !== pointerId) return;
2106
- finish();
2107
- resetResizeStyles(state);
2108
- };
2109
- const options = { signal: listeners.signal };
2110
- target.addEventListener("pointermove", move, options);
2111
- target.addEventListener("pointerup", stop, options);
2112
- target.addEventListener("pointercancel", cancel, options);
2113
- }
2114
- function onResizeKeydown(event, column) {
2115
- const handle = event.currentTarget;
2116
- if (!(handle instanceof HTMLElement)) return;
2117
- const cell = handle.closest("th");
2118
- const state = cell == null ? null : buildResizeState(cell, column);
2119
- if (state == null) return;
2120
- const self = state.snapshots[state.resizeIndex];
2121
- if (self == null) return;
2122
- const step = columnResizeStep(event.shiftKey);
2123
- let delta = null;
2124
- switch (event.key) {
2125
- case "ArrowRight":
2126
- delta = step * state.direction;
2127
- break;
2128
- case "ArrowLeft":
2129
- delta = -step * state.direction;
2130
- break;
2131
- case "Home":
2132
- delta = self.minWidth - self.initialWidth;
2133
- break;
2134
- case "End": if (Number.isFinite(self.maxWidth)) delta = self.maxWidth - self.initialWidth;
2135
- }
2136
- if (delta == null) return;
2137
- event.preventDefault();
2138
- commitResize(state, delta);
2139
- }
2140
2400
  function selectCellPatch(kind, row) {
2141
2401
  return mergeCell(selectColumn(), row, kind);
2142
2402
  }
@@ -2147,197 +2407,215 @@ const _sfc_main$8 = /*@__PURE__*/ defineComponent({
2147
2407
  return selection.value?.isEnabled?.(row) ?? true;
2148
2408
  }
2149
2409
  return (_ctx, _cache) => {
2150
- return openBlock(), createElementBlock("div", {
2151
- ref_key: "scrollRoot",
2152
- ref: scrollRoot,
2153
- class: "astryx-table-scroll",
2154
- role: "group",
2155
- "aria-label": __props.label
2156
- }, [
2157
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.plugins.filter((item) => item.above), (plugin, index) => {
2158
- return openBlock(), createBlock(unref(PluginFooter), {
2159
- key: `above-${index}`,
2160
- plugin,
2161
- place: "above"
2162
- }, null, 8, ["plugin"]);
2163
- }), 128)),
2164
- createElementVNode("table", {
2165
- class: "astryx-table",
2166
- "data-density": __props.density,
2167
- "data-dividers": __props.dividers,
2168
- "data-striped": __props.isStriped || void 0,
2169
- "data-hover": __props.hasHover || void 0,
2170
- "data-overflow": __props.textOverflow,
2171
- "data-valign": __props.verticalAlign,
2172
- "data-row-highlight": selection.value?.hasRowHighlight === false ? "off" : void 0,
2173
- "aria-rowcount": ariaRowCount.value,
2174
- style: normalizeStyle(__props.minWidth ? { minWidth: `${Math.max(__props.minWidth, widths.value.tableMinWidth)}px` } : { minWidth: `${widths.value.tableMinWidth}px` })
2175
- }, [createElementVNode("thead", null, [createElementVNode("tr", null, [selection.value ? (openBlock(), createElementBlock("th", mergeProps({
2176
- key: 0,
2177
- class: ["astryx-table__select", selectCellPatch("header", null).class],
2178
- scope: "col"
2179
- }, selectCellPatch("header", null).attrs, { style: selectCellPatch("header", null).style }), [createVNode(_sfc_main$19, {
2180
- "model-value": selection.value.isIndeterminate() ? "indeterminate" : selection.value.isAllSelected(),
2181
- label: unref(messages).table.selectAllRows,
2182
- "is-label-hidden": "",
2183
- size: "sm",
2184
- "onUpdate:modelValue": _cache[0] || (_cache[0] = (value) => selection.value?.selectAll(value === true))
2185
- }, null, 8, ["model-value", "label"])], 16)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedColumns.value, (column) => {
2186
- return openBlock(), createElementBlock("th", mergeProps({
2187
- key: column.key,
2188
- scope: "col",
2189
- "data-column": column.key,
2190
- "data-align": column.align,
2191
- class: mergeCell(column, null, "header").class
2192
- }, { ref_for: true }, mergeCell(column, null, "header").attrs, {
2193
- style: headerStyle(column),
2194
- "aria-sort": sortFor(column)?.direction ?? void 0
2195
- }), [
2196
- createElementVNode("div", _hoisted_4, [createElementVNode("div", _hoisted_5, [createVNode(unref(HeaderAddon), {
2197
- column,
2198
- plugins: __props.plugins
2199
- }, null, 8, ["column", "plugins"]), sortFor(column) ? (openBlock(), createElementBlock("button", {
2200
- key: 0,
2201
- type: "button",
2202
- class: "astryx-table__sort",
2203
- "data-align": column.align,
2204
- "aria-label": sortFor(column)?.label,
2205
- onClick: ($event) => sortFor(column)?.onClick($event)
2206
- }, [
2207
- column.headerHidden ? (openBlock(), createBlock(_sfc_main$14, { key: 0 }, {
2208
- default: withCtx(() => [createTextVNode(toDisplayString(column.header ?? column.key), 1)]),
2209
- _: 2
2210
- }, 1024)) : (openBlock(), createElementBlock("span", _hoisted_7, toDisplayString(column.header ?? column.key), 1)),
2211
- createElementVNode("span", {
2212
- class: "astryx-table__sort-icon",
2213
- "data-active": sortFor(column)?.direction != null || void 0
2214
- }, [createVNode(_sfc_main$18, {
2215
- icon: sortFor(column)?.direction === "descending" ? "arrowDown" : "arrowUp",
2216
- size: "sm"
2217
- }, null, 8, ["icon"])], 8, _hoisted_8),
2218
- sortFor(column)?.rank ? (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(sortFor(column)?.rank), 1)) : createCommentVNode("v-if", true)
2219
- ], 8, _hoisted_6)) : column.headerHidden ? (openBlock(), createBlock(_sfc_main$14, { key: 1 }, {
2220
- default: withCtx(() => [createTextVNode(toDisplayString(column.header ?? column.key), 1)]),
2221
- _: 2
2222
- }, 1024)) : (openBlock(), createElementBlock("span", _hoisted_10, toDisplayString(column.header ?? column.key), 1))]), filterFor(column) ? (openBlock(), createBlock(_sfc_main$11, {
2223
- key: 0,
2224
- filter: filterFor(column)
2225
- }, null, 8, ["filter"])) : createCommentVNode("v-if", true)]),
2226
- createCommentVNode(" eslint-disable-next-line vue-a11y/no-static-element-interactions -- role=\"separator\" 是 WAI-ARIA 的分隔条:自己可聚焦,方向键也归它处理。 "),
2227
- resizeContributions.value.get(column.key)?.hasHandle ? (openBlock(), createElementBlock("span", {
2228
- key: 0,
2229
- class: "astryx-table__resize",
2230
- role: "separator",
2231
- "aria-orientation": "vertical",
2232
- "aria-label": resizeLabel(column),
2233
- "aria-valuenow": resizeContributions.value.get(column.key)?.currentWidth ?? resizeContributions.value.get(column.key)?.minWidth,
2234
- "aria-valuemin": resizeContributions.value.get(column.key)?.minWidth,
2235
- "aria-valuemax": resizeMax(resizeContributions.value.get(column.key)),
2236
- tabindex: "0",
2237
- onPointerdown: ($event) => startResize($event, column),
2238
- onKeydown: ($event) => onResizeKeydown($event, column)
2239
- }, null, 40, _hoisted_11)) : createCommentVNode("v-if", true)
2240
- ], 16, _hoisted_3);
2241
- }), 128))])]), createElementVNode("tbody", null, [__props.rows.length === 0 ? (openBlock(), createElementBlock("tr", _hoisted_12, [createElementVNode("td", {
2242
- class: "astryx-table__empty",
2243
- colspan: columnCount.value
2244
- }, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(unref(messages).table.noData), 1)])], 8, _hoisted_13)])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(entries.value, (entry) => {
2245
- return openBlock(), createElementBlock(Fragment, { key: entry.key }, [createElementVNode("tr", mergeProps({
2246
- "aria-selected": !entry.patch.group && isSelected(entry.row) ? "true" : void 0,
2247
- "aria-rowindex": entry.rowIndex,
2248
- class: entry.patch.class
2249
- }, { ref_for: true }, entry.patch.attrs, {
2250
- onClick: ($event) => entry.patch.onClick?.($event),
2251
- onContextmenu: ($event) => openMenu($event, entry.patch.menu)
2252
- }), [entry.patch.group ? (openBlock(), createElementBlock("td", {
2253
- key: 0,
2254
- class: "astryx-table__group",
2255
- colspan: columnCount.value
2256
- }, [createVNode(_sfc_main$10, {
2257
- "group-key": entry.patch.group.groupKey,
2258
- count: entry.patch.group.count,
2259
- collapsed: entry.patch.group.collapsed,
2260
- custom: entry.patch.group.render != null,
2261
- onToggle: ($event) => entry.patch.group.onToggle()
2262
- }, {
2263
- default: withCtx(() => [entry.patch.group.render ? (openBlock(), createBlock(unref(RenderFn), {
2264
- key: 0,
2265
- render: entry.patch.group.render
2266
- }, null, 8, ["render"])) : createCommentVNode("v-if", true)]),
2267
- _: 2
2268
- }, 1032, [
2269
- "group-key",
2270
- "count",
2271
- "collapsed",
2272
- "custom",
2273
- "onToggle"
2274
- ])], 8, _hoisted_15)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [selection.value && !entry.patch.suppressSelection ? (openBlock(), createElementBlock("td", mergeProps({
2275
- key: 0,
2276
- class: ["astryx-table__select", selectCellPatch("body", entry.row).class]
2277
- }, { ref_for: true }, selectCellPatch("body", entry.row).attrs, { style: selectCellPatch("body", entry.row).style }), [selection.value.isSelectable?.(entry.row) !== false ? (openBlock(), createBlock(_sfc_main$19, {
2410
+ return openBlock(), createBlock(_sfc_main$9, {
2411
+ class: normalizeClass(unref(attrs).class),
2412
+ style: normalizeStyle(scrollStyle.value),
2413
+ label: __props.label,
2414
+ onViewport
2415
+ }, {
2416
+ default: withCtx(() => [
2417
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.plugins.filter((item) => item.above), (plugin, index) => {
2418
+ return openBlock(), createBlock(unref(PluginFooter), {
2419
+ key: `above-${index}`,
2420
+ plugin,
2421
+ place: "above"
2422
+ }, null, 8, ["plugin"]);
2423
+ }), 128)),
2424
+ createElementVNode("table", {
2425
+ class: "astryx-table",
2426
+ "data-density": __props.density,
2427
+ "data-dividers": __props.dividers,
2428
+ "data-striped": __props.isStriped || void 0,
2429
+ "data-hover": __props.hasHover || void 0,
2430
+ "data-overflow": __props.textOverflow,
2431
+ "data-valign": __props.verticalAlign,
2432
+ "data-row-highlight": selection.value?.hasRowHighlight === false ? "off" : void 0,
2433
+ "aria-rowcount": ariaRowCount.value,
2434
+ style: normalizeStyle(tableStyle.value)
2435
+ }, [createElementVNode("thead", null, [createElementVNode("tr", null, [selection.value ? (openBlock(), createElementBlock("th", mergeProps({
2278
2436
  key: 0,
2279
- "model-value": selection.value.isSelected(entry.row),
2280
- label: selection.value.rowLabel?.(entry.row) ? unref(messages).table.selectRowNamed(selection.value.rowLabel(entry.row)) : unref(messages).table.selectRow,
2437
+ class: ["astryx-table__select", selectCellPatch("header", null).class],
2438
+ scope: "col"
2439
+ }, selectCellPatch("header", null).attrs, { style: selectCellPatch("header", null).style }), [createVNode(_sfc_main$19, {
2440
+ "model-value": selection.value.isIndeterminate() ? "indeterminate" : selection.value.isAllSelected(),
2441
+ label: unref(messages).table.selectAllRows,
2281
2442
  "is-label-hidden": "",
2282
2443
  size: "sm",
2283
- "is-disabled": !isEnabled(entry.row),
2284
- "onUpdate:modelValue": (value) => selection.value?.selectRow(entry.row, value === true)
2285
- }, null, 8, [
2286
- "model-value",
2287
- "label",
2288
- "is-disabled",
2289
- "onUpdate:modelValue"
2290
- ])) : createCommentVNode("v-if", true)], 16)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedColumns.value, (column) => {
2291
- return openBlock(), createElementBlock("td", mergeProps({
2444
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = (value) => selection.value?.selectAll(value === true))
2445
+ }, null, 8, ["model-value", "label"])], 16)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedColumns.value, (column) => {
2446
+ return openBlock(), createElementBlock("th", mergeProps({
2292
2447
  key: column.key,
2448
+ scope: "col",
2293
2449
  "data-column": column.key,
2294
2450
  "data-align": column.align,
2295
- class: mergeCell(column, entry.row, "body").class
2296
- }, { ref_for: true }, mergeCell(column, entry.row, "body").attrs, { style: bodyStyle(column, entry.row) }), [createVNode(unref(CellContent), {
2297
- column,
2298
- row: entry.row,
2299
- index: entry.index
2451
+ class: mergeCell(column, null, "header").class
2452
+ }, { ref_for: true }, mergeCell(column, null, "header").attrs, {
2453
+ style: headerStyle(column),
2454
+ "aria-sort": sortFor(column)?.direction ?? void 0
2455
+ }), [
2456
+ createElementVNode("div", _hoisted_3, [createElementVNode("div", _hoisted_4, [
2457
+ createVNode(unref(HeaderAddon), {
2458
+ column,
2459
+ plugins: __props.plugins
2460
+ }, null, 8, ["column", "plugins"]),
2461
+ sortFor(column) ? (openBlock(), createElementBlock("button", {
2462
+ key: 0,
2463
+ type: "button",
2464
+ class: "astryx-table__sort",
2465
+ "data-align": column.align,
2466
+ "aria-label": sortFor(column)?.label,
2467
+ onClick: ($event) => sortFor(column)?.onClick($event)
2468
+ }, [
2469
+ column.headerHidden ? (openBlock(), createBlock(_sfc_main$15, { key: 0 }, {
2470
+ default: withCtx(() => [createTextVNode(toDisplayString(column.header ?? column.key), 1)]),
2471
+ _: 2
2472
+ }, 1024)) : (openBlock(), createElementBlock("span", _hoisted_6, toDisplayString(column.header ?? column.key), 1)),
2473
+ createElementVNode("span", {
2474
+ class: "astryx-table__sort-icon",
2475
+ "data-active": sortFor(column)?.direction != null || void 0
2476
+ }, [createVNode(_sfc_main$18, {
2477
+ icon: sortFor(column)?.direction === "descending" ? "arrowDown" : "arrowUp",
2478
+ size: "sm"
2479
+ }, null, 8, ["icon"])], 8, _hoisted_7),
2480
+ sortFor(column)?.rank ? (openBlock(), createElementBlock("span", _hoisted_8, toDisplayString(sortFor(column)?.rank), 1)) : createCommentVNode("v-if", true)
2481
+ ], 8, _hoisted_5)) : column.headerHidden ? (openBlock(), createBlock(_sfc_main$15, { key: 1 }, {
2482
+ default: withCtx(() => [createTextVNode(toDisplayString(column.header ?? column.key), 1)]),
2483
+ _: 2
2484
+ }, 1024)) : (openBlock(), createElementBlock("span", _hoisted_9, toDisplayString(column.header ?? column.key), 1)),
2485
+ filterAt(column, "line") ? (openBlock(), createBlock(_sfc_main$12, {
2486
+ key: 3,
2487
+ filter: filterAt(column, "line")
2488
+ }, null, 8, ["filter"])) : createCommentVNode("v-if", true)
2489
+ ]), filterAt(column, "below") ? (openBlock(), createBlock(_sfc_main$12, {
2490
+ key: 0,
2491
+ filter: filterAt(column, "below")
2492
+ }, null, 8, ["filter"])) : createCommentVNode("v-if", true)]),
2493
+ createCommentVNode(" eslint-disable-next-line vue-a11y/no-static-element-interactions -- role=\"separator\" 是 WAI-ARIA 的分隔条:自己可聚焦,方向键也归它处理。 "),
2494
+ resizeContributions.value.get(column.key)?.hasHandle ? (openBlock(), createElementBlock("span", {
2495
+ key: 0,
2496
+ class: "astryx-table__resize",
2497
+ role: "separator",
2498
+ "aria-orientation": "vertical",
2499
+ "aria-label": unref(resizeLabel)(column),
2500
+ "aria-valuenow": resizeContributions.value.get(column.key)?.currentWidth ?? resizeContributions.value.get(column.key)?.minWidth,
2501
+ "aria-valuemin": resizeContributions.value.get(column.key)?.minWidth,
2502
+ "aria-valuemax": unref(resizeMax)(resizeContributions.value.get(column.key)),
2503
+ tabindex: "0",
2504
+ onPointerdown: ($event) => unref(startResize)($event, column),
2505
+ onKeydown: ($event) => unref(onResizeKeydown)($event, column)
2506
+ }, null, 40, _hoisted_10)) : createCommentVNode("v-if", true)
2507
+ ], 16, _hoisted_2);
2508
+ }), 128))])]), createElementVNode("tbody", null, [__props.rows.length === 0 ? (openBlock(), createElementBlock("tr", _hoisted_11, [createElementVNode("td", {
2509
+ class: "astryx-table__empty",
2510
+ colspan: columnCount.value
2511
+ }, [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(unref(messages).table.noData), 1)])], 8, _hoisted_12)])) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(entries.value, (entry) => {
2512
+ return openBlock(), createElementBlock(Fragment, { key: entry.key }, [createElementVNode("tr", mergeProps({
2513
+ ref_for: true,
2514
+ ref: entry.ref,
2515
+ "aria-selected": !entry.patch.group && isSelected(entry.row) ? "true" : void 0,
2516
+ "aria-rowindex": entry.rowIndex,
2517
+ class: entry.patch.class
2518
+ }, { ref_for: true }, entry.patch.attrs, {
2519
+ onBlur: ($event) => entry.patch.listeners?.onBlur?.($event),
2520
+ onClick: ($event) => entry.patch.onClick?.($event),
2521
+ onContextmenu: ($event) => openMenu($event, entry.patch.menu),
2522
+ onFocus: ($event) => entry.patch.listeners?.onFocus?.($event),
2523
+ onMouseenter: ($event) => entry.patch.listeners?.onMouseenter?.($event),
2524
+ onMouseleave: ($event) => entry.patch.listeners?.onMouseleave?.($event)
2525
+ }), [entry.patch.group ? (openBlock(), createElementBlock("td", {
2526
+ key: 0,
2527
+ class: "astryx-table__group",
2528
+ colspan: columnCount.value
2529
+ }, [createVNode(_sfc_main$11, {
2530
+ "group-key": entry.patch.group.groupKey,
2531
+ count: entry.patch.group.count,
2532
+ collapsed: entry.patch.group.collapsed,
2533
+ custom: entry.patch.group.render != null,
2534
+ onToggle: ($event) => entry.patch.group.onToggle()
2535
+ }, {
2536
+ default: withCtx(() => [entry.patch.group.render ? (openBlock(), createBlock(unref(RenderFn), {
2537
+ key: 0,
2538
+ render: entry.patch.group.render
2539
+ }, null, 8, ["render"])) : createCommentVNode("v-if", true)]),
2540
+ _: 2
2541
+ }, 1032, [
2542
+ "group-key",
2543
+ "count",
2544
+ "collapsed",
2545
+ "custom",
2546
+ "onToggle"
2547
+ ])], 8, _hoisted_14)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [selection.value && !entry.patch.suppressSelection ? (openBlock(), createElementBlock("td", mergeProps({
2548
+ key: 0,
2549
+ class: ["astryx-table__select", selectCellPatch("body", entry.row).class]
2550
+ }, { ref_for: true }, selectCellPatch("body", entry.row).attrs, { style: selectCellPatch("body", entry.row).style }), [selection.value.isSelectable?.(entry.row) !== false ? (openBlock(), createBlock(_sfc_main$19, {
2551
+ key: 0,
2552
+ "model-value": selection.value.isSelected(entry.row),
2553
+ label: selection.value.rowLabel?.(entry.row) ? unref(messages).table.selectRowNamed(selection.value.rowLabel(entry.row)) : unref(messages).table.selectRow,
2554
+ "is-label-hidden": "",
2555
+ size: "sm",
2556
+ "is-disabled": !isEnabled(entry.row),
2557
+ "onUpdate:modelValue": (value) => selection.value?.selectRow(entry.row, value === true)
2300
2558
  }, null, 8, [
2301
- "column",
2302
- "row",
2303
- "index"
2304
- ])], 16, _hoisted_16);
2305
- }), 128))], 64))], 16, _hoisted_14), entry.patch.panel ? (openBlock(), createElementBlock("tr", {
2559
+ "model-value",
2560
+ "label",
2561
+ "is-disabled",
2562
+ "onUpdate:modelValue"
2563
+ ])) : createCommentVNode("v-if", true)], 16)) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(resolvedColumns.value, (column) => {
2564
+ return openBlock(), createElementBlock("td", mergeProps({
2565
+ key: column.key,
2566
+ "data-column": column.key,
2567
+ "data-align": column.align,
2568
+ class: mergeCell(column, entry.row, "body").class
2569
+ }, { ref_for: true }, mergeCell(column, entry.row, "body").attrs, { style: bodyStyle(column, entry.row) }), [createVNode(unref(CellContent), {
2570
+ column,
2571
+ row: entry.row,
2572
+ index: entry.index
2573
+ }, null, 8, [
2574
+ "column",
2575
+ "row",
2576
+ "index"
2577
+ ])], 16, _hoisted_15);
2578
+ }), 128))], 64))], 16, _hoisted_13), entry.patch.panel ? (openBlock(), createElementBlock("tr", {
2579
+ key: 0,
2580
+ "data-expansion-panel": "",
2581
+ class: "astryx-table__panel-row",
2582
+ "data-variant": entry.patch.panel.variant
2583
+ }, [createElementVNode("td", {
2584
+ class: "astryx-table__panel",
2585
+ colspan: columnCount.value
2586
+ }, [createVNode(unref(RenderFn), { render: entry.patch.panel.render }, null, 8, ["render"])], 8, _hoisted_17)], 8, _hoisted_16)) : createCommentVNode("v-if", true)], 64);
2587
+ }), 128))])], 12, _hoisted_1$5),
2588
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.plugins.filter((item) => item.below), (plugin, index) => {
2589
+ return openBlock(), createBlock(unref(PluginFooter), {
2590
+ key: `below-${index}`,
2591
+ plugin,
2592
+ place: "below"
2593
+ }, null, 8, ["plugin"]);
2594
+ }), 128)),
2595
+ menu.value ? (openBlock(), createBlock(_sfc_main$10, {
2306
2596
  key: 0,
2307
- "data-expansion-panel": "",
2308
- class: "astryx-table__panel-row",
2309
- "data-variant": entry.patch.panel.variant
2310
- }, [createElementVNode("td", {
2311
- class: "astryx-table__panel",
2312
- colspan: columnCount.value
2313
- }, [createVNode(unref(RenderFn), { render: entry.patch.panel.render }, null, 8, ["render"])], 8, _hoisted_18)], 8, _hoisted_17)) : createCommentVNode("v-if", true)], 64);
2314
- }), 128))])], 12, _hoisted_2$1),
2315
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.plugins.filter((item) => item.below), (plugin, index) => {
2316
- return openBlock(), createBlock(unref(PluginFooter), {
2317
- key: `below-${index}`,
2318
- plugin,
2319
- place: "below"
2320
- }, null, 8, ["plugin"]);
2321
- }), 128)),
2322
- (openBlock(), createBlock(Teleport, { to: "body" }, [menu.value ? (openBlock(), createBlock(_sfc_main$9, {
2323
- key: 0,
2324
- x: menu.value.x,
2325
- y: menu.value.y,
2326
- items: menu.value.items,
2327
- onClose: _cache[1] || (_cache[1] = ($event) => menu.value = null)
2328
- }, null, 8, [
2329
- "x",
2330
- "y",
2331
- "items"
2332
- ])) : createCommentVNode("v-if", true)]))
2333
- ], 8, _hoisted_1$5);
2597
+ x: menu.value.x,
2598
+ y: menu.value.y,
2599
+ items: menu.value.items,
2600
+ onClose: _cache[1] || (_cache[1] = ($event) => menu.value = null)
2601
+ }, null, 8, [
2602
+ "x",
2603
+ "y",
2604
+ "items"
2605
+ ])) : createCommentVNode("v-if", true)
2606
+ ]),
2607
+ _: 3
2608
+ }, 8, [
2609
+ "class",
2610
+ "style",
2611
+ "label"
2612
+ ]);
2334
2613
  };
2335
2614
  }
2336
2615
  });
2337
2616
  //#endregion
2338
2617
  //#region src/Table/Table.vue
2339
- const _hoisted_1$4 = ["aria-label"];
2340
- const _hoisted_2 = [
2618
+ const _hoisted_1$4 = [
2341
2619
  "data-density",
2342
2620
  "data-dividers",
2343
2621
  "data-striped",
@@ -2422,21 +2700,22 @@ const _sfc_main$7 = /*@__PURE__*/ defineComponent({
2422
2700
  "vertical-align",
2423
2701
  "row-index-start",
2424
2702
  "row-count"
2425
- ])) : (openBlock(), createElementBlock("div", {
2703
+ ])) : (openBlock(), createBlock(_sfc_main$9, {
2426
2704
  key: 1,
2427
- class: "astryx-table-scroll",
2428
- role: "group",
2429
- "aria-label": __props.label ?? unref(messages).table.label
2430
- }, [createElementVNode("table", {
2431
- class: normalizeClass(["astryx-table", _ctx.$attrs.class]),
2432
- style: normalizeStyle(_ctx.$attrs.style),
2433
- "data-density": __props.density,
2434
- "data-dividers": __props.dividers,
2435
- "data-striped": __props.isStriped || void 0,
2436
- "data-hover": __props.hasHover || void 0,
2437
- "data-overflow": __props.textOverflow,
2438
- "data-valign": __props.verticalAlign
2439
- }, [renderSlot(_ctx.$slots, "default")], 14, _hoisted_2)], 8, _hoisted_1$4));
2705
+ label: __props.label ?? unref(messages).table.label
2706
+ }, {
2707
+ default: withCtx(() => [createElementVNode("table", {
2708
+ class: normalizeClass(["astryx-table", _ctx.$attrs.class]),
2709
+ style: normalizeStyle(_ctx.$attrs.style),
2710
+ "data-density": __props.density,
2711
+ "data-dividers": __props.dividers,
2712
+ "data-striped": __props.isStriped || void 0,
2713
+ "data-hover": __props.hasHover || void 0,
2714
+ "data-overflow": __props.textOverflow,
2715
+ "data-valign": __props.verticalAlign
2716
+ }, [renderSlot(_ctx.$slots, "default")], 14, _hoisted_1$4)]),
2717
+ _: 3
2718
+ }, 8, ["label"]));
2440
2719
  };
2441
2720
  }
2442
2721
  });
@@ -2581,7 +2860,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
2581
2860
  size: __props.size,
2582
2861
  variant: toolbarVariant.value
2583
2862
  }, createSlots({
2584
- end: withCtx(() => [createElementVNode("span", _hoisted_1, [renderSlot(_ctx.$slots, "label", { count: effectiveCount.value }, () => [createTextVNode(toDisplayString(resolvedCountLabel.value), 1)])]), createVNode(_sfc_main$15, {
2863
+ end: withCtx(() => [createElementVNode("span", _hoisted_1, [renderSlot(_ctx.$slots, "label", { count: effectiveCount.value }, () => [createTextVNode(toDisplayString(resolvedCountLabel.value), 1)])]), createVNode(_sfc_main$16, {
2585
2864
  class: "astryx-table-selection-toolbar__clear",
2586
2865
  label: resolvedClearLabel.value,
2587
2866
  size: __props.size,