@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,79 +1,89 @@
1
1
  import { n as useLinkComponent } from "./context-C_peZbXf.js";
2
- import { t as _sfc_main$5 } from "./Button-B6Hj_O_s.js";
2
+ import { t as _sfc_main$7 } from "./Button-ONOoHdkg.js";
3
3
  import { t as useMediaQuery } from "./useMediaQuery-GMmgp28-.js";
4
- import { n as useDismiss, t as usePositionedLayer } from "./usePositionedLayer-Cru9_00b.js";
5
- import { n as getFocusables } from "./focus-CpficIgf.js";
6
- import { t as useTypeahead } from "./useTypeahead-PAK8lMYz.js";
7
- import { t as _sfc_main$6 } from "./BottomSheet-eJ3FzTBD.js";
8
- import { t as _sfc_main$7 } from "./Icon-bteSId7T.js";
9
- import { t as _sfc_main$8 } from "./Item-KhFKX9St.js";
10
- import { a as dropdownMenuContextKey, i as _sfc_main$10, n as _sfc_main$9, o as useDropdownMenuContext, r as _sfc_main$11, t as useMenuDrillIn } from "./useMenuDrillIn-DzKGkTho.js";
11
- import { t as _sfc_main$12 } from "./Divider-BtwnL18I.js";
12
- import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, guardReactiveProps, h, mergeModels, mergeProps, nextTick, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, openBlock, provide, ref, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, unref, useAttrs, useId, useModel, useSlots, vShow, watch, withCtx, withDirectives } from "vue";
4
+ import { n as useDismiss, t as usePositionedLayer } from "./usePositionedLayer-B7cvG-_v.js";
5
+ import { r as getFocusables } from "./focus-l8jVTcqd.js";
6
+ import { r as trackInteractionModality, t as getInteractionModality } from "./interactionModality-ACpTMhak.js";
7
+ import { s as useAstryxMessages } from "./context-DWfi56sq.js";
8
+ import { a as isMenuPressActivation, t as useMenuPress } from "./useMenuPress-8foxY8z4.js";
9
+ import { n as useOverflow } from "./useOverflow-VrwF5oek.js";
10
+ import { t as useTypeahead } from "./useTypeahead-BvtflkRk.js";
11
+ import { t as _sfc_main$8 } from "./LayerContentBoundary-CvsKxwwm.js";
12
+ import { t as useScrollbars } from "./useScrollbars-C2NJ6Qwq.js";
13
+ import { t as _sfc_main$9 } from "./BottomSheet-B4sc3F1S.js";
14
+ import { t as _sfc_main$10 } from "./Icon-KDnUyY7f.js";
15
+ import { t as _sfc_main$11 } from "./Item-DWMIjN8n.js";
16
+ import { a as dropdownMenuContextKey, i as _sfc_main$13, n as _sfc_main$12, o as useDropdownMenuContext, r as _sfc_main$14, t as useMenuDrillIn } from "./useMenuDrillIn-DhUnPvKs.js";
17
+ import { n as clampInlineSize, r as isIntrinsicInlineSize, t as LAYER_MAX_INLINE_SIZE } from "./inlineSize-BNe8wggI.js";
18
+ import { t as _sfc_main$15 } from "./Divider-mOZ6vIQw.js";
19
+ import { Fragment, Teleport, Transition, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, guardReactiveProps, h, inject, markRaw, mergeModels, mergeProps, nextTick, normalizeProps, normalizeStyle, onBeforeUnmount, onMounted, openBlock, provide, reactive, ref, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toRaw, unref, useAttrs, useId, useModel, useSlots, vShow, watch, withCtx, withDirectives } from "vue";
13
20
  import "../styles/dropdown-menu.css";
14
- //#region src/DropdownMenu/menuItemRoles.ts
15
- /**
16
- * Rows a menu's roving focus, typeahead, and keyboard activation all agree on.
17
- */
18
- const MENU_ITEM_ROLES = /* @__PURE__ */ new Set([
19
- "menuitem",
20
- "menuitemradio",
21
- "menuitemcheckbox"
22
- ]);
23
- /** Rows the arrow keys may land on: enabled menu items, in DOM order. */
24
- const MENU_ITEM_SELECTOR = [...MENU_ITEM_ROLES].map((role) => `[role="${role}"]:not([aria-disabled="true"])`).join(",");
25
- /** Scopes item collection and key handling to one menu level. */
26
- const MENU_BOUNDARY_SELECTOR = "[role=\"menu\"]";
27
- /**
28
- * Whether a click carries a modifier or a non-primary button: on a row that is
29
- * a link the browser gives it a meaning of its own, which the row leaves alone.
30
- */
31
- function isModifiedClick(event) {
32
- return event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0;
33
- }
21
+ //#region src/composables/internal/useFocusReturnVisibility.ts
34
22
  /**
35
- * Activate a row from the keyboard: a synthesized click that carries the key's
36
- * modifiers, so a ⌘-Enter on a link row opens it the way a ⌘-click would.
37
- * `detail` stays 0, the mark of a non-pointer activation.
23
+ * 对应原版 Astryx 的 `hooks/useFocusReturnVisibility`(内部用)。
24
+ *
25
+ * 焦点照常还回去,但用鼠标或手指关掉浮层时不画焦点环。给那些自己画焦点环、
26
+ * 光靠 `focusForLastInput` 不够的触发器(例如 DropdownMenu 的触发按钮、Selector)。
38
27
  */
39
- function activateMenuItem(row, key) {
40
- row.dispatchEvent(new MouseEvent("click", {
41
- altKey: key.altKey,
42
- bubbles: true,
43
- cancelable: true,
44
- composed: true,
45
- ctrlKey: key.ctrlKey,
46
- metaKey: key.metaKey,
47
- shiftKey: key.shiftKey
48
- }));
28
+ function useFocusReturnVisibility() {
29
+ const isFocusRingSuppressed = shallowRef(false);
30
+ onMounted(trackInteractionModality);
31
+ return {
32
+ isFocusRingSuppressed,
33
+ onFocusReturnTargetFocus: () => {
34
+ if (getInteractionModality() === "keyboard") isFocusRingSuppressed.value = false;
35
+ },
36
+ prepareFocusReturn: () => {
37
+ isFocusRingSuppressed.value = getInteractionModality() === "pointer";
38
+ },
39
+ resetFocusReturn: () => {
40
+ isFocusRingSuppressed.value = false;
41
+ }
42
+ };
49
43
  }
50
44
  //#endregion
45
+ //#region src/DropdownMenu/DropdownMenuBranch.vue
46
+ const _sfc_main$6 = /*@__PURE__*/ defineComponent({
47
+ name: "AstryxDropdownMenuBranch",
48
+ __name: "DropdownMenuBranch",
49
+ props: { value: {} },
50
+ setup(__props) {
51
+ provide(dropdownMenuContextKey, __props.value);
52
+ return (_ctx, _cache) => {
53
+ return renderSlot(_ctx.$slots, "default");
54
+ };
55
+ }
56
+ });
57
+ //#endregion
58
+ //#region src/DropdownMenu/frame.ts
59
+ const dropdownMenuFrameKey = Symbol("astryx-dropdown-menu-frame");
60
+ //#endregion
51
61
  //#region src/DropdownMenu/DropdownMenuDivider.vue
52
- const _sfc_main$4 = /*@__PURE__*/ defineComponent({
62
+ const _sfc_main$5 = /*@__PURE__*/ defineComponent({
53
63
  name: "AstryxDropdownMenuDivider",
54
64
  __name: "DropdownMenuDivider",
55
65
  setup(__props) {
56
66
  return (_ctx, _cache) => {
57
- return openBlock(), createBlock(_sfc_main$12, { class: "astryx-dropdown-menu-divider" });
67
+ return openBlock(), createBlock(_sfc_main$15, { class: "astryx-dropdown-menu-divider" });
58
68
  };
59
69
  }
60
70
  });
61
71
  //#endregion
62
72
  //#region src/DropdownMenu/DropdownMenuSectionHeading.vue
63
- const _hoisted_1$3 = { class: "astryx-dropdown-menu-section-heading" };
64
- const _sfc_main$3 = /*@__PURE__*/ defineComponent({
73
+ const _hoisted_1$4 = { class: "astryx-dropdown-menu-section-heading" };
74
+ const _sfc_main$4 = /*@__PURE__*/ defineComponent({
65
75
  name: "AstryxDropdownMenuSectionHeading",
66
76
  __name: "DropdownMenuSectionHeading",
67
77
  setup(__props) {
68
78
  return (_ctx, _cache) => {
69
- return openBlock(), createElementBlock("div", _hoisted_1$3, [renderSlot(_ctx.$slots, "default")]);
79
+ return openBlock(), createElementBlock("div", _hoisted_1$4, [renderSlot(_ctx.$slots, "default")]);
70
80
  };
71
81
  }
72
82
  });
73
83
  //#endregion
74
84
  //#region src/DropdownMenu/DropdownMenuGroup.vue
75
- const _hoisted_1$2 = ["aria-labelledby"];
76
- const _sfc_main$2 = /*@__PURE__*/ defineComponent({
85
+ const _hoisted_1$3 = ["aria-labelledby"];
86
+ const _sfc_main$3 = /*@__PURE__*/ defineComponent({
77
87
  name: "AstryxDropdownMenuGroup",
78
88
  __name: "DropdownMenuGroup",
79
89
  props: { title: {} },
@@ -86,19 +96,56 @@ const _sfc_main$2 = /*@__PURE__*/ defineComponent({
86
96
  class: "astryx-dropdown-menu-group",
87
97
  role: "group",
88
98
  "aria-labelledby": hasTitle.value ? headingId : void 0
89
- }, [hasTitle.value || _ctx.$slots.title ? (openBlock(), createBlock(_sfc_main$3, {
99
+ }, [hasTitle.value || _ctx.$slots.title ? (openBlock(), createBlock(_sfc_main$4, {
90
100
  key: 0,
91
101
  id: headingId
92
102
  }, {
93
103
  default: withCtx(() => [renderSlot(_ctx.$slots, "title", {}, () => [createTextVNode(toDisplayString(__props.title), 1)])]),
94
104
  _: 3
95
- })) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default")], 8, _hoisted_1$2);
105
+ })) : createCommentVNode("v-if", true), renderSlot(_ctx.$slots, "default")], 8, _hoisted_1$3);
96
106
  };
97
107
  }
98
108
  });
99
109
  //#endregion
110
+ //#region src/DropdownMenu/menuItemRoles.ts
111
+ /**
112
+ * Rows a menu's roving focus, typeahead, and keyboard activation all agree on.
113
+ */
114
+ const MENU_ITEM_ROLES = /* @__PURE__ */ new Set([
115
+ "menuitem",
116
+ "menuitemradio",
117
+ "menuitemcheckbox"
118
+ ]);
119
+ /** Rows the arrow keys may land on: enabled menu items, in DOM order. */
120
+ const MENU_ITEM_SELECTOR = [...MENU_ITEM_ROLES].map((role) => `[role="${role}"]:not([aria-disabled="true"])`).join(",");
121
+ /** Scopes item collection and key handling to one menu level. */
122
+ const MENU_BOUNDARY_SELECTOR = "[role=\"menu\"]";
123
+ /**
124
+ * Whether a click carries a modifier or a non-primary button: on a row that is
125
+ * a link the browser gives it a meaning of its own, which the row leaves alone.
126
+ */
127
+ function isModifiedClick(event) {
128
+ return event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || event.button !== 0;
129
+ }
130
+ /**
131
+ * Activate a row from the keyboard: a synthesized click that carries the key's
132
+ * modifiers, so a ⌘-Enter on a link row opens it the way a ⌘-click would.
133
+ * `detail` stays 0, the mark of a non-pointer activation.
134
+ */
135
+ function activateMenuItem(row, key) {
136
+ row.dispatchEvent(new MouseEvent("click", {
137
+ altKey: key.altKey,
138
+ bubbles: true,
139
+ cancelable: true,
140
+ composed: true,
141
+ ctrlKey: key.ctrlKey,
142
+ metaKey: key.metaKey,
143
+ shiftKey: key.shiftKey
144
+ }));
145
+ }
146
+ //#endregion
100
147
  //#region src/DropdownMenu/DropdownMenuItem.vue
101
- const _hoisted_1$1 = {
148
+ const _hoisted_1$2 = {
102
149
  key: 0,
103
150
  class: "astryx-item__start"
104
151
  };
@@ -115,7 +162,7 @@ const _hoisted_5$1 = {
115
162
  key: 1,
116
163
  class: "astryx-item__end"
117
164
  };
118
- const _sfc_main$1 = /*@__PURE__*/ defineComponent({
165
+ const _sfc_main$2 = /*@__PURE__*/ defineComponent({
119
166
  name: "AstryxDropdownMenuItem",
120
167
  inheritAttrs: false,
121
168
  __name: "DropdownMenuItem",
@@ -173,8 +220,16 @@ const _sfc_main$1 = /*@__PURE__*/ defineComponent({
173
220
  return;
174
221
  }
175
222
  if (!(isLink.value && isModifiedClick(event))) emit("click", event);
223
+ followPressActivation(event);
176
224
  if (props.hasCloseOnSelect) menu?.closeMenu();
177
225
  }
226
+ function followPressActivation(event) {
227
+ if (!isMenuPressActivation() || isModifiedClick(event) || linkRoot.value !== "a") return;
228
+ const href = props.href;
229
+ if (href == null || !(event.currentTarget instanceof HTMLAnchorElement)) return;
230
+ if (props.target === "_blank") window.open(href, "_blank", "noopener,noreferrer");
231
+ else window.location.assign(href);
232
+ }
178
233
  function handleAuxClick(event) {
179
234
  if (props.isDisabled) {
180
235
  event.preventDefault();
@@ -198,6 +253,7 @@ const _sfc_main$1 = /*@__PURE__*/ defineComponent({
198
253
  "data-density": density.value,
199
254
  "data-disabled": __props.isDisabled || void 0,
200
255
  "data-interactive": true,
256
+ draggable: "false",
201
257
  "data-menu-size": menuSize.value,
202
258
  "data-variant": __props.variant,
203
259
  href: linkHref.value,
@@ -211,7 +267,7 @@ const _sfc_main$1 = /*@__PURE__*/ defineComponent({
211
267
  onPointermove: handlePointerMove
212
268
  }), {
213
269
  default: withCtx(() => [
214
- hasStart.value ? (openBlock(), createElementBlock("span", _hoisted_1$1, [renderSlot(_ctx.$slots, "icon", {}, () => [createVNode(_sfc_main$7, {
270
+ hasStart.value ? (openBlock(), createElementBlock("span", _hoisted_1$2, [renderSlot(_ctx.$slots, "icon", {}, () => [createVNode(_sfc_main$10, {
215
271
  color: iconColor.value,
216
272
  icon: __props.icon,
217
273
  size: "sm"
@@ -233,7 +289,7 @@ const _sfc_main$1 = /*@__PURE__*/ defineComponent({
233
289
  "style",
234
290
  "tabindex",
235
291
  "target"
236
- ])) : (openBlock(), createBlock(_sfc_main$8, mergeProps({ key: 1 }, unref(attrs), {
292
+ ])) : (openBlock(), createBlock(_sfc_main$11, mergeProps({ key: 1 }, unref(attrs), {
237
293
  class: "astryx-dropdown-menu-item",
238
294
  role: "menuitem",
239
295
  "data-menu-size": menuSize.value,
@@ -249,7 +305,7 @@ const _sfc_main$1 = /*@__PURE__*/ defineComponent({
249
305
  }), createSlots({ _: 2 }, [
250
306
  hasStart.value ? {
251
307
  name: "startContent",
252
- fn: withCtx(() => [renderSlot(_ctx.$slots, "icon", {}, () => [createVNode(_sfc_main$7, {
308
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "icon", {}, () => [createVNode(_sfc_main$10, {
253
309
  color: iconColor.value,
254
310
  icon: __props.icon,
255
311
  size: "sm"
@@ -290,14 +346,14 @@ function endSlot(endContent) {
290
346
  }
291
347
  function renderRadioOption(option, index) {
292
348
  const { endContent, id, ...itemProps } = option;
293
- return h(_sfc_main$9, {
349
+ return h(_sfc_main$12, {
294
350
  key: id ?? `radio-${index}`,
295
351
  ...itemProps
296
352
  }, endSlot(endContent));
297
353
  }
298
354
  function renderCheckbox(item, index) {
299
355
  const { checked, endContent, id, onChange, ...itemProps } = item;
300
- return h(_sfc_main$10, {
356
+ return h(_sfc_main$13, {
301
357
  "key": id ?? `checkbox-${index}`,
302
358
  ...itemProps,
303
359
  "modelValue": checked,
@@ -305,7 +361,7 @@ function renderCheckbox(item, index) {
305
361
  }, endSlot(endContent));
306
362
  }
307
363
  function renderRadio(item, index) {
308
- return h(_sfc_main$11, {
364
+ return h(_sfc_main$14, {
309
365
  "key": item.id ?? `radio-group-${index}`,
310
366
  "label": item.label,
311
367
  "modelValue": item.value,
@@ -317,7 +373,7 @@ function renderRadio(item, index) {
317
373
  }
318
374
  function renderItem(item, index) {
319
375
  const { endContent, id, ...itemProps } = item;
320
- return h(_sfc_main$1, {
376
+ return h(_sfc_main$2, {
321
377
  key: id ?? `item-${index}`,
322
378
  ...itemProps
323
379
  }, endSlot(endContent));
@@ -332,8 +388,8 @@ function renderEntry(entry, index) {
332
388
  * so both modes produce one `role="group"` named by its visible heading.
333
389
  */
334
390
  function renderOption(option, index) {
335
- if ("type" in option && option.type === "divider") return h(_sfc_main$4, { key: `divider-${index}` });
336
- if ("type" in option && option.type === "section") return h(_sfc_main$2, {
391
+ if ("type" in option && option.type === "divider") return h(_sfc_main$5, { key: `divider-${index}` });
392
+ if ("type" in option && option.type === "section") return h(_sfc_main$3, {
337
393
  key: option.id ?? `section-${index}`,
338
394
  title: option.title
339
395
  }, { default: () => option.items.map((item, itemIndex) => renderEntry(item, itemIndex)) });
@@ -354,6 +410,188 @@ const DropdownMenuItems = defineComponent({
354
410
  }
355
411
  });
356
412
  //#endregion
413
+ //#region src/DropdownMenu/DropdownMenuFrame.vue
414
+ const _hoisted_1$1 = [
415
+ "id",
416
+ "aria-labelledby",
417
+ "aria-label",
418
+ "data-overflow"
419
+ ];
420
+ const _hoisted_2 = ["hidden", "inert"];
421
+ const _hoisted_3 = [
422
+ "id",
423
+ "aria-label",
424
+ "data-placement"
425
+ ];
426
+ const _hoisted_4 = [
427
+ "id",
428
+ "aria-labelledby",
429
+ "aria-label",
430
+ "data-overflow",
431
+ "data-region-focus"
432
+ ];
433
+ const _hoisted_5 = ["hidden", "inert"];
434
+ const _hoisted_6 = [
435
+ "id",
436
+ "aria-labelledby",
437
+ "aria-label",
438
+ "data-placement",
439
+ "data-overflow"
440
+ ];
441
+ const _hoisted_7 = ["hidden", "inert"];
442
+ const _sfc_main$1 = /*@__PURE__*/ defineComponent({
443
+ name: "AstryxDropdownMenuFrame",
444
+ __name: "DropdownMenuFrame",
445
+ setup(__props) {
446
+ const frame = inject(dropdownMenuFrameKey);
447
+ if (frame == null) throw new Error("DropdownMenuFrame must render inside DropdownMenu");
448
+ return (_ctx, _cache) => {
449
+ return unref(frame).isSheet ? (openBlock(), createBlock(_sfc_main$9, {
450
+ key: 0,
451
+ "is-open": unref(frame).sheetOpen,
452
+ "onUpdate:isOpen": _cache[3] || (_cache[3] = ($event) => unref(frame).sheetOpen = $event),
453
+ height: "hug",
454
+ label: unref(frame).sheetLabel,
455
+ padding: 2
456
+ }, {
457
+ default: withCtx(() => [createVNode(_sfc_main$8, null, {
458
+ default: withCtx(() => [createVNode(_sfc_main$6, { value: unref(frame).menuContext }, {
459
+ default: withCtx(() => [
460
+ _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
461
+ key: 0,
462
+ ref: unref(frame).setHeader,
463
+ class: "astryx-dropdown-menu-region",
464
+ onKeydown: _cache[0] || (_cache[0] = (...args) => unref(frame).regions.onRegionKeydown && unref(frame).regions.onRegionKeydown(...args))
465
+ }, [renderSlot(_ctx.$slots, "header")], 544)) : createCommentVNode("v-if", true),
466
+ createElementVNode("div", mergeProps({
467
+ id: unref(frame).surfaceId,
468
+ ref: unref(frame).setSurface
469
+ }, unref(frame).menuBindings, {
470
+ "aria-labelledby": unref(frame).menuAriaLabelledBy,
471
+ "aria-label": unref(frame).menuAriaLabel,
472
+ class: ["astryx-dropdown-menu is-sheet", unref(frame).surfaceClass],
473
+ "data-overflow": unref(frame).hasOverflow || void 0,
474
+ role: "menu",
475
+ tabindex: "-1",
476
+ onKeydown: _cache[1] || (_cache[1] = (...args) => unref(frame).onSurfaceKeydown && unref(frame).onSurfaceKeydown(...args))
477
+ }), [createElementVNode("div", {
478
+ class: "astryx-dropdown-menu-tree",
479
+ hidden: unref(frame).isDrilled || void 0,
480
+ inert: unref(frame).isDrilled || void 0
481
+ }, [unref(frame).items != null ? (openBlock(), createBlock(unref(DropdownMenuItems), {
482
+ key: 0,
483
+ items: unref(frame).items
484
+ }, null, 8, ["items"])) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)], 8, _hoisted_2), createElementVNode("div", {
485
+ ref: unref(frame).setHost,
486
+ class: "astryx-dropdown-menu-tree"
487
+ }, null, 512)], 16, _hoisted_1$1),
488
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", {
489
+ key: 1,
490
+ ref: unref(frame).setFooter,
491
+ class: "astryx-dropdown-menu-region",
492
+ onKeydown: _cache[2] || (_cache[2] = (...args) => unref(frame).regions.onRegionKeydown && unref(frame).regions.onRegionKeydown(...args))
493
+ }, [renderSlot(_ctx.$slots, "footer")], 544)) : createCommentVNode("v-if", true)
494
+ ]),
495
+ _: 3
496
+ }, 8, ["value"])]),
497
+ _: 3
498
+ })]),
499
+ _: 3
500
+ }, 8, ["is-open", "label"])) : (openBlock(), createBlock(Teleport, {
501
+ key: 1,
502
+ to: unref(frame).teleportTarget
503
+ }, [createVNode(Transition, { name: "astryx-dropdown-menu" }, {
504
+ default: withCtx(() => [unref(frame).hasRegions ? withDirectives((openBlock(), createElementBlock("div", {
505
+ key: 0,
506
+ id: unref(frame).dialogId,
507
+ ref: unref(frame).setPopover,
508
+ class: "astryx-dropdown-menu-popover",
509
+ role: "dialog",
510
+ "aria-modal": "true",
511
+ "aria-label": unref(frame).dialogLabel,
512
+ "data-placement": unref(frame).placement,
513
+ style: normalizeStyle(unref(frame).surfaceStyle)
514
+ }, [createVNode(_sfc_main$8, null, {
515
+ default: withCtx(() => [createVNode(_sfc_main$6, { value: unref(frame).menuContext }, {
516
+ default: withCtx(() => [
517
+ _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
518
+ key: 0,
519
+ ref: unref(frame).setHeader,
520
+ class: "astryx-dropdown-menu-region",
521
+ onKeydown: _cache[4] || (_cache[4] = (...args) => unref(frame).regions.onRegionKeydown && unref(frame).regions.onRegionKeydown(...args))
522
+ }, [renderSlot(_ctx.$slots, "header")], 544)) : createCommentVNode("v-if", true),
523
+ createElementVNode("div", mergeProps({
524
+ id: unref(frame).surfaceId,
525
+ ref: unref(frame).setSurface
526
+ }, unref(frame).menuBindings, {
527
+ "aria-labelledby": unref(frame).menuAriaLabelledBy,
528
+ "aria-label": unref(frame).menuAriaLabel,
529
+ class: ["astryx-dropdown-menu is-in-frame", unref(frame).surfaceClass],
530
+ "data-overflow": unref(frame).hasOverflow || void 0,
531
+ "data-region-focus": unref(frame).regionFocus || void 0,
532
+ role: "menu",
533
+ tabindex: "0",
534
+ onFocus: _cache[5] || (_cache[5] = (...args) => unref(frame).onSurfaceFocus && unref(frame).onSurfaceFocus(...args)),
535
+ onKeydown: _cache[6] || (_cache[6] = (...args) => unref(frame).onSurfaceKeydown && unref(frame).onSurfaceKeydown(...args))
536
+ }), [createElementVNode("div", {
537
+ class: "astryx-dropdown-menu-tree",
538
+ hidden: unref(frame).isDrilled || void 0,
539
+ inert: unref(frame).isDrilled || void 0
540
+ }, [unref(frame).items != null ? (openBlock(), createBlock(unref(DropdownMenuItems), {
541
+ key: 0,
542
+ items: unref(frame).items
543
+ }, null, 8, ["items"])) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)], 8, _hoisted_5), createElementVNode("div", {
544
+ ref: unref(frame).setHost,
545
+ class: "astryx-dropdown-menu-tree"
546
+ }, null, 512)], 16, _hoisted_4),
547
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", {
548
+ key: 1,
549
+ ref: unref(frame).setFooter,
550
+ class: "astryx-dropdown-menu-region",
551
+ onKeydown: _cache[7] || (_cache[7] = (...args) => unref(frame).regions.onRegionKeydown && unref(frame).regions.onRegionKeydown(...args))
552
+ }, [renderSlot(_ctx.$slots, "footer")], 544)) : createCommentVNode("v-if", true)
553
+ ]),
554
+ _: 3
555
+ }, 8, ["value"])]),
556
+ _: 3
557
+ })], 12, _hoisted_3)), [[vShow, unref(frame).isOpen]]) : withDirectives((openBlock(), createElementBlock("div", mergeProps({
558
+ key: 1,
559
+ id: unref(frame).surfaceId,
560
+ ref: unref(frame).setSurface
561
+ }, unref(frame).menuBindings, {
562
+ "aria-labelledby": unref(frame).menuAriaLabelledBy,
563
+ "aria-label": unref(frame).menuAriaLabel,
564
+ class: ["astryx-dropdown-menu", unref(frame).surfaceClass],
565
+ "data-placement": unref(frame).placement,
566
+ "data-overflow": unref(frame).hasOverflow || void 0,
567
+ role: "menu",
568
+ style: unref(frame).surfaceStyle,
569
+ tabindex: "-1",
570
+ onFocus: _cache[8] || (_cache[8] = (...args) => unref(frame).onSurfaceFocus && unref(frame).onSurfaceFocus(...args)),
571
+ onKeydown: _cache[9] || (_cache[9] = (...args) => unref(frame).onSurfaceKeydown && unref(frame).onSurfaceKeydown(...args))
572
+ }), [createVNode(_sfc_main$8, null, {
573
+ default: withCtx(() => [createVNode(_sfc_main$6, { value: unref(frame).menuContext }, {
574
+ default: withCtx(() => [createElementVNode("div", {
575
+ class: "astryx-dropdown-menu-tree",
576
+ hidden: unref(frame).isDrilled || void 0,
577
+ inert: unref(frame).isDrilled || void 0
578
+ }, [unref(frame).items != null ? (openBlock(), createBlock(unref(DropdownMenuItems), {
579
+ key: 0,
580
+ items: unref(frame).items
581
+ }, null, 8, ["items"])) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)], 8, _hoisted_7), createElementVNode("div", {
582
+ ref: unref(frame).setHost,
583
+ class: "astryx-dropdown-menu-tree"
584
+ }, null, 512)]),
585
+ _: 3
586
+ }, 8, ["value"])]),
587
+ _: 3
588
+ })], 16, _hoisted_6)), [[vShow, unref(frame).isOpen]])]),
589
+ _: 3
590
+ })], 8, ["to"]));
591
+ };
592
+ }
593
+ });
594
+ //#endregion
357
595
  //#region src/DropdownMenu/useMenuFocus.ts
358
596
  function isDisabled(el) {
359
597
  return el.getAttribute("aria-disabled") === "true" || el.hasAttribute("disabled");
@@ -524,11 +762,45 @@ function focusControl(element) {
524
762
  element.focus();
525
763
  return element.ownerDocument.activeElement === element;
526
764
  }
765
+ function radioGroupKey(element) {
766
+ if (!(element instanceof HTMLInputElement) || element.getAttribute("type") !== "radio" || element.name === "") return null;
767
+ return `${element.form?.id ?? ""}\u0000${element.name}`;
768
+ }
769
+ /**
770
+ * A named radio group is one Tab stop: the focused radio, else the checked
771
+ * one, else the first radio going forward or the last going backward.
772
+ */
773
+ function collapseRadioGroups(elements, active, isBackward) {
774
+ const groups = /* @__PURE__ */ new Map();
775
+ for (const element of elements) {
776
+ const key = radioGroupKey(element);
777
+ if (key == null) continue;
778
+ const members = groups.get(key) ?? [];
779
+ members.push(element);
780
+ groups.set(key, members);
781
+ }
782
+ const placed = /* @__PURE__ */ new Set();
783
+ const result = [];
784
+ for (const element of elements) {
785
+ const key = radioGroupKey(element);
786
+ if (key == null) {
787
+ result.push(element);
788
+ continue;
789
+ }
790
+ if (placed.has(key)) continue;
791
+ placed.add(key);
792
+ const members = groups.get(key) ?? [];
793
+ const stop = members.find((radio) => radio === active) ?? members.find((radio) => radio.checked) ?? (isBackward ? members[members.length - 1] : members[0]);
794
+ if (stop != null) result.push(stop);
795
+ }
796
+ return result;
797
+ }
527
798
  /**
528
799
  * Keyboard between a menu and the header and footer beside it.
529
800
  *
530
- * The menu is one Tab stop. Shift+Tab from a row skips that stop and lands on
531
- * the header, because the menu element would otherwise catch the key first.
801
+ * With either region the popover is a dialog: Tab cycles the header, the menu
802
+ * as one stop, and the footer, and wraps at both ends. A row counts as the
803
+ * menu's stop, so Shift+Tab from a row lands on the header.
532
804
  */
533
805
  function useMenuRegions(options) {
534
806
  function focusRegion(direction) {
@@ -539,68 +811,50 @@ function useMenuRegions(options) {
539
811
  }
540
812
  return true;
541
813
  }
542
- function onMenuTab(event) {
543
- if (event.key !== "Tab" || !options.hasRegions.value) return false;
544
- const tabbables = tabbablesIn(event.shiftKey ? options.header.value : options.footer.value);
545
- if (tabbables.length === 0) {
546
- options.closeMenu();
547
- return true;
548
- }
549
- if (event.shiftKey && event.target !== options.menu.value) {
550
- event.preventDefault();
551
- event.stopPropagation();
552
- if (!focusControl(tabbables[tabbables.length - 1])) options.closeMenu();
814
+ function moveDialogTab(event, isFromFlyout = false) {
815
+ const menu = options.menu.value;
816
+ if (menu == null || !options.hasRegions.value) return;
817
+ event.preventDefault();
818
+ event.stopPropagation();
819
+ const active = menu.ownerDocument.activeElement;
820
+ const cycle = collapseRadioGroups([
821
+ ...tabbablesIn(options.header.value),
822
+ menu,
823
+ ...tabbablesIn(options.footer.value)
824
+ ], active, event.shiftKey);
825
+ if (cycle.length <= 1) {
826
+ if (isFromFlyout) menu.focus();
827
+ return;
553
828
  }
554
- return true;
829
+ const menuIndex = cycle.indexOf(menu);
830
+ let index = active instanceof Node && menu.contains(active) ? menuIndex : cycle.findIndex((element) => element === active || element.contains(active));
831
+ if (index < 0) index = menuIndex;
832
+ const step = event.shiftKey ? -1 : 1;
833
+ const next = cycle[(index + step + cycle.length) % cycle.length];
834
+ if (!focusControl(next)) menu.focus();
555
835
  }
556
836
  function onRegionKeydown(event) {
557
- if (event.key !== "Tab") return;
558
- const region = event.currentTarget;
559
- if (!(region instanceof HTMLElement)) return;
560
- const tabbables = tabbablesIn(region);
561
- const exit = region === options.header.value ? event.shiftKey ? tabbables[0] : void 0 : event.shiftKey ? void 0 : tabbables[tabbables.length - 1];
562
- if (exit != null && exit === region.ownerDocument.activeElement) options.closeMenu();
837
+ if (event.key === "Tab") moveDialogTab(event);
563
838
  }
564
839
  return {
565
840
  focusRegion,
566
- onMenuTab,
841
+ moveDialogTab,
567
842
  onRegionKeydown
568
843
  };
569
844
  }
570
845
  //#endregion
571
846
  //#region src/DropdownMenu/DropdownMenu.vue
572
847
  const _hoisted_1 = ["data-open"];
573
- const _hoisted_2 = [
574
- "id",
575
- "aria-labelledby",
576
- "aria-label"
577
- ];
578
- const _hoisted_3 = ["hidden", "inert"];
579
- const _hoisted_4 = ["data-placement"];
580
- const _hoisted_5 = [
581
- "id",
582
- "aria-labelledby",
583
- "aria-label",
584
- "data-region-focus"
585
- ];
586
- const _hoisted_6 = ["hidden", "inert"];
587
- const _hoisted_7 = [
588
- "id",
589
- "aria-labelledby",
590
- "aria-label",
591
- "data-placement"
592
- ];
593
- const _hoisted_8 = ["hidden", "inert"];
594
848
  const GAP = 4;
595
849
  const DEFAULT_MAX_WIDTH = 320;
596
850
  const DEFAULT_MAX_HEIGHT = "300px";
597
- const COMPACT_TOUCH_QUERY = "(max-width: 639px) and (pointer: coarse) and (hover: none)";
851
+ const COMPACT_TOUCH_QUERY = "(max-width: 768px) and (pointer: coarse)";
598
852
  const _sfc_main = /*@__PURE__*/ defineComponent({
599
853
  name: "AstryxDropdownMenu",
600
854
  inheritAttrs: false,
601
855
  __name: "DropdownMenu",
602
856
  props: /*@__PURE__*/ mergeModels({
603
- button: { default: () => ({ label: "Menu" }) },
857
+ button: {},
604
858
  items: {},
605
859
  isMenuOpen: { type: Boolean },
606
860
  menuWidth: {},
@@ -629,7 +883,8 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
629
883
  const emit = __emit;
630
884
  const attrs = useAttrs();
631
885
  const slots = useSlots();
632
- const INTRINSIC_SIZE = /^(?:auto|min-content|max-content|fit-content|fit-content\(.*\)|inherit|initial|unset|revert|revert-layer)$/i;
886
+ const messages = useAstryxMessages();
887
+ const focusReturn = useFocusReturnVisibility();
633
888
  const open = useModel(__props, "isMenuOpen");
634
889
  const localIsOpen = shallowRef(false);
635
890
  const isOpen = computed(() => open.value ?? localIsOpen.value);
@@ -638,6 +893,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
638
893
  const triggerId = `astryx-dropdown-menu-trigger-${uid}`;
639
894
  const anchorRef = ref(null);
640
895
  const surfaceRef = ref(null);
896
+ useScrollbars(surfaceRef);
641
897
  const popoverRef = ref(null);
642
898
  const headerRef = ref(null);
643
899
  const footerRef = ref(null);
@@ -659,8 +915,11 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
659
915
  if (!open) closeMenu();
660
916
  }
661
917
  });
662
- const buttonProps = computed(() => props.button ?? {});
663
- const sheetLabel = computed(() => typeof buttonProps.value.label === "string" ? buttonProps.value.label : "Menu");
918
+ const buttonProps = computed(() => ({
919
+ label: messages.value.dropdownMenu.label,
920
+ ...props.button
921
+ }));
922
+ const sheetLabel = computed(() => typeof buttonProps.value.label === "string" ? buttonProps.value.label : messages.value.dropdownMenu.label);
664
923
  const menuSize = computed(() => buttonProps.value.size ?? "md");
665
924
  const isIconOnly = computed(() => buttonProps.value.isIconOnly === true);
666
925
  const hasChevron = computed(() => props.hasChevron && !isIconOnly.value);
@@ -679,6 +938,12 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
679
938
  if (slots.trigger != null) return void 0;
680
939
  return typeof buttonProps.value.label === "string" ? buttonProps.value.label : void 0;
681
940
  });
941
+ const dialogLabel = computed(() => menuLabel.value ?? messages.value.dropdownMenu.label);
942
+ const dialogId = `${menuId}-dialog`;
943
+ const popupKind = computed(() => hasRegions.value ? "dialog" : "menu");
944
+ const controlsId = computed(() => hasRegions.value ? dialogId : surfaceId.value);
945
+ const focusRing = computed(() => focusReturn.isFocusRingSuppressed.value ? "off" : void 0);
946
+ const hasOverflow = useOverflow(surfaceRef, isOpen);
682
947
  const menuAriaLabelledBy = computed(() => {
683
948
  const explicit = attrs["aria-labelledby"];
684
949
  if (typeof explicit === "string") return explicit;
@@ -692,13 +957,8 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
692
957
  "aria-label",
693
958
  "aria-labelledby"
694
959
  ].includes(key))));
695
- /**
696
- * The layer tracks its own open state so a menu that mounts already open still
697
- * gets one open transition: the layer's own watcher only reacts to a change,
698
- * and a controlled menu renders open from the first frame.
699
- */
700
960
  const layerIsOpen = ref(false);
701
- const { position, detach: detachPosition } = usePositionedLayer({
961
+ const { position, teleportTarget, detach: detachPosition } = usePositionedLayer({
702
962
  anchor: anchorRef,
703
963
  layer: positionedEl,
704
964
  isOpen: layerIsOpen,
@@ -715,15 +975,15 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
715
975
  "top": `${position.value.top}px`,
716
976
  "left": `${position.value.left}px`,
717
977
  "--_dropdown-menu-max-block": `min(${props.menuMaxHeight == null ? DEFAULT_MAX_HEIGHT : `${props.menuMaxHeight}px`}, calc(100dvh - 16px))`,
718
- "maxWidth": props.menuWidth == null ? `min(${DEFAULT_MAX_WIDTH}px, calc(100vw - 16px))` : "calc(100vw - 16px)"
978
+ "maxWidth": props.menuWidth == null ? clampInlineSize(`${DEFAULT_MAX_WIDTH}px`) : LAYER_MAX_INLINE_SIZE
719
979
  };
720
980
  if (props.menuWidth == null) {
721
981
  style.minWidth = `min(${anchorWidth.value}px, ${DEFAULT_MAX_WIDTH}px)`;
722
982
  return style;
723
983
  }
724
984
  const width = (typeof props.menuWidth === "number" ? `${props.menuWidth}px` : props.menuWidth).trim();
725
- if (INTRINSIC_SIZE.test(width)) style.width = width;
726
- else style.minWidth = `min(${width}, calc(100vw - 16px))`;
985
+ if (isIntrinsicInlineSize(width)) style.width = width;
986
+ else style.minWidth = clampInlineSize(width);
727
987
  return style;
728
988
  });
729
989
  const focusNav = useMenuFocus({ list: surfaceRef });
@@ -767,17 +1027,40 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
767
1027
  }
768
1028
  regionFocus.value = hasRegions.value && !suppressRegionRing;
769
1029
  }
1030
+ function assignElement(target, element) {
1031
+ target.value = element instanceof HTMLElement ? element : null;
1032
+ }
770
1033
  function assignHost(element) {
771
1034
  host.value = element instanceof HTMLElement ? element : null;
772
1035
  }
1036
+ function isTriggerDisabled() {
1037
+ return getTriggerControl()?.matches(":disabled, [aria-disabled=\"true\"]") === true;
1038
+ }
773
1039
  function openMenu(modality) {
774
- if (isOpen.value) return;
1040
+ if (isTriggerDisabled() || isOpen.value) return false;
1041
+ focusReturn.resetFocusReturn();
775
1042
  openModality = modality;
776
1043
  shouldFocusOnOpen.value = true;
777
1044
  emitOpenChange(true);
1045
+ return true;
778
1046
  }
1047
+ const press = useMenuPress({
1048
+ menuRef: surfaceRef,
1049
+ triggerRef: anchorRef,
1050
+ isEnabled: () => !isSheet.value && !isTriggerDisabled(),
1051
+ onTriggerPress: () => {
1052
+ if (isOpen.value) {
1053
+ closeMenu();
1054
+ return false;
1055
+ }
1056
+ return openMenu("pointer");
1057
+ },
1058
+ onDismiss: () => closeMenu()
1059
+ });
779
1060
  function closeMenu() {
780
1061
  if (!isOpen.value) return;
1062
+ focusReturn.prepareFocusReturn();
1063
+ press.cancel();
781
1064
  emitOpenChange(false);
782
1065
  }
783
1066
  function getTriggerControl() {
@@ -802,7 +1085,10 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
802
1085
  typeahead.reset();
803
1086
  const active = typeof document !== "undefined" ? document.activeElement : null;
804
1087
  const surface = surfaceRef.value;
805
- if (active == null || active === (typeof document !== "undefined" ? document.body : null) || surface != null && surface.contains(active)) getTriggerControl()?.focus({ preventScroll: true });
1088
+ if (active == null || active === (typeof document !== "undefined" ? document.body : null) || surface != null && surface.contains(active)) {
1089
+ await nextTick();
1090
+ getTriggerControl()?.focus({ preventScroll: true });
1091
+ }
806
1092
  });
807
1093
  const regions = useMenuRegions({
808
1094
  closeMenu,
@@ -813,10 +1099,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
813
1099
  });
814
1100
  function onSurfaceKeydown(event) {
815
1101
  if (!focusNav.ownsEvent(event)) {
816
- if (event.key === "Tab" && hasRegions.value) {
817
- event.preventDefault();
818
- regions.focusRegion(event.shiftKey ? "previous" : "next");
819
- }
1102
+ if (event.key === "Tab" && hasRegions.value) regions.moveDialogTab(event, true);
820
1103
  return;
821
1104
  }
822
1105
  if (event.key === "Enter" || event.key === " ") {
@@ -826,9 +1109,9 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
826
1109
  if (focused instanceof HTMLElement && MENU_ITEM_ROLES.has(focused.getAttribute("role") ?? "")) activateMenuItem(focused, event);
827
1110
  return;
828
1111
  }
829
- if (regions.onMenuTab(event)) return;
830
1112
  if (event.key === "Tab") {
831
- closeMenu();
1113
+ if (hasRegions.value) regions.moveDialogTab(event);
1114
+ else closeMenu();
832
1115
  return;
833
1116
  }
834
1117
  if (typeahead.onKeyDown(event)) {
@@ -838,7 +1121,7 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
838
1121
  focusNav.handleKeyDown(event);
839
1122
  }
840
1123
  function onTriggerClick(event) {
841
- if (armedTriggerClickGuard) {
1124
+ if (armedTriggerClickGuard || press.isTriggerClickFromPress()) {
842
1125
  armedTriggerClickGuard = false;
843
1126
  return;
844
1127
  }
@@ -872,21 +1155,60 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
872
1155
  }
873
1156
  const triggerProps = computed(() => ({
874
1157
  "id": triggerId,
875
- "aria-haspopup": "menu",
1158
+ "aria-haspopup": popupKind.value,
876
1159
  "aria-expanded": isOpen.value,
877
- "aria-controls": surfaceId.value,
1160
+ "aria-controls": controlsId.value,
1161
+ "data-astryx-focus-ring": focusRing.value,
878
1162
  "onClick": onTriggerClick,
879
- "onKeyDown": onTriggerKeydown
1163
+ "onKeyDown": onTriggerKeydown,
1164
+ "onFocus": focusReturn.onFocusReturnTargetFocus
880
1165
  }));
881
- provide(dropdownMenuContextKey, {
1166
+ const menuContext = markRaw({
882
1167
  closeMenu,
883
1168
  drillIn,
884
1169
  focusRegion: regions.focusRegion,
1170
+ moveDialogTab: regions.moveDialogTab,
885
1171
  hasRegions,
886
1172
  isOpen,
887
1173
  menuLabel,
888
1174
  menuSize
889
1175
  });
1176
+ const paintedStyle = computed(() => [surfaceStyle.value, attrs.style]);
1177
+ const menuBindings = computed(() => ({
1178
+ ...forwardedAttrs.value,
1179
+ ...press.menuProps
1180
+ }));
1181
+ provide(dropdownMenuFrameKey, reactive({
1182
+ isSheet,
1183
+ sheetOpen,
1184
+ sheetLabel,
1185
+ hasRegions,
1186
+ isOpen,
1187
+ isDrilled,
1188
+ hasOverflow,
1189
+ regionFocus,
1190
+ surfaceId,
1191
+ dialogId,
1192
+ dialogLabel,
1193
+ menuAriaLabel,
1194
+ menuAriaLabelledBy,
1195
+ forwardedAttrs,
1196
+ menuBindings,
1197
+ surfaceClass: computed(() => attrs.class),
1198
+ surfaceStyle: paintedStyle,
1199
+ placement: computed(() => position.value.placement),
1200
+ teleportTarget,
1201
+ items: computed(() => props.items),
1202
+ menuContext,
1203
+ regions,
1204
+ setSurface: (element) => assignElement(surfaceRef, element),
1205
+ setPopover: (element) => assignElement(popoverRef, element),
1206
+ setHeader: (element) => assignElement(headerRef, element),
1207
+ setFooter: (element) => assignElement(footerRef, element),
1208
+ setHost: assignHost,
1209
+ onSurfaceKeydown,
1210
+ onSurfaceFocus
1211
+ }));
890
1212
  onMounted(() => {
891
1213
  if (!isOpen.value) return;
892
1214
  layerIsOpen.value = true;
@@ -900,18 +1222,23 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
900
1222
  ref_key: "anchorRef",
901
1223
  ref: anchorRef,
902
1224
  class: "astryx-dropdown-menu-trigger",
903
- "data-open": isOpen.value ? "true" : void 0
904
- }, [unref(slots).trigger ? renderSlot(_ctx.$slots, "trigger", normalizeProps(guardReactiveProps(triggerProps.value)), void 0, void 0, 0) : (openBlock(), createBlock(_sfc_main$5, mergeProps({ key: 1 }, buttonProps.value, {
1225
+ "data-open": isOpen.value ? "true" : void 0,
1226
+ onContextmenu: _cache[0] || (_cache[0] = (...args) => unref(press).triggerProps.onContextmenu && unref(press).triggerProps.onContextmenu(...args)),
1227
+ onFocusin: _cache[1] || (_cache[1] = (...args) => unref(focusReturn).onFocusReturnTargetFocus && unref(focusReturn).onFocusReturnTargetFocus(...args)),
1228
+ onPointerdown: _cache[2] || (_cache[2] = (...args) => unref(press).triggerProps.onPointerdown && unref(press).triggerProps.onPointerdown(...args))
1229
+ }, [unref(slots).trigger ? renderSlot(_ctx.$slots, "trigger", normalizeProps(guardReactiveProps(triggerProps.value)), void 0, void 0, 0) : (openBlock(), createBlock(_sfc_main$7, mergeProps({ key: 1 }, buttonProps.value, {
905
1230
  id: triggerId,
906
- "aria-controls": surfaceId.value,
1231
+ "aria-controls": controlsId.value,
907
1232
  "aria-expanded": isOpen.value,
908
- "aria-haspopup": "menu",
1233
+ "aria-haspopup": popupKind.value,
1234
+ "data-astryx-focus-ring": focusRing.value,
909
1235
  tooltip: isOpen.value ? void 0 : buttonProps.value.tooltip,
910
1236
  onClick: onTriggerClick,
1237
+ onFocus: unref(focusReturn).onFocusReturnTargetFocus,
911
1238
  onKeydown: onTriggerKeydown
912
1239
  }), createSlots({ _: 2 }, [hasChevron.value ? {
913
1240
  name: "end",
914
- fn: withCtx(() => [createVNode(_sfc_main$7, {
1241
+ fn: withCtx(() => [createVNode(_sfc_main$10, {
915
1242
  color: "inherit",
916
1243
  icon: "chevronDown",
917
1244
  size: "sm"
@@ -920,134 +1247,24 @@ const _sfc_main = /*@__PURE__*/ defineComponent({
920
1247
  } : void 0]), 1040, [
921
1248
  "aria-controls",
922
1249
  "aria-expanded",
923
- "tooltip"
924
- ]))], 8, _hoisted_1), isSheet.value ? (openBlock(), createBlock(_sfc_main$6, {
925
- key: 0,
926
- "is-open": sheetOpen.value,
927
- "onUpdate:isOpen": _cache[2] || (_cache[2] = ($event) => sheetOpen.value = $event),
928
- height: "hug",
929
- label: sheetLabel.value,
930
- padding: 2
931
- }, {
932
- default: withCtx(() => [
933
- unref(slots).header ? (openBlock(), createElementBlock("div", {
934
- key: 0,
935
- ref_key: "headerRef",
936
- ref: headerRef,
937
- class: "astryx-dropdown-menu-region",
938
- onKeydown: _cache[0] || (_cache[0] = (...args) => unref(regions).onRegionKeydown && unref(regions).onRegionKeydown(...args))
939
- }, [renderSlot(_ctx.$slots, "header")], 544)) : createCommentVNode("v-if", true),
940
- createElementVNode("div", mergeProps({
941
- id: surfaceId.value,
942
- ref_key: "surfaceRef",
943
- ref: surfaceRef
944
- }, forwardedAttrs.value, {
945
- "aria-labelledby": menuAriaLabelledBy.value,
946
- "aria-label": menuAriaLabel.value,
947
- class: ["astryx-dropdown-menu is-sheet", unref(attrs).class],
948
- role: "menu",
949
- tabindex: "-1",
950
- onKeydown: onSurfaceKeydown
951
- }), [createElementVNode("div", {
952
- class: "astryx-dropdown-menu-tree",
953
- hidden: unref(isDrilled) || void 0,
954
- inert: unref(isDrilled) || void 0
955
- }, [__props.items != null ? (openBlock(), createBlock(unref(DropdownMenuItems), {
956
- key: 0,
957
- items: __props.items
958
- }, null, 8, ["items"])) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)], 8, _hoisted_3), createElementVNode("div", {
959
- ref: assignHost,
960
- class: "astryx-dropdown-menu-tree"
961
- }, null, 512)], 16, _hoisted_2),
962
- unref(slots).footer ? (openBlock(), createElementBlock("div", {
963
- key: 1,
964
- ref_key: "footerRef",
965
- ref: footerRef,
966
- class: "astryx-dropdown-menu-region",
967
- onKeydown: _cache[1] || (_cache[1] = (...args) => unref(regions).onRegionKeydown && unref(regions).onRegionKeydown(...args))
968
- }, [renderSlot(_ctx.$slots, "footer")], 544)) : createCommentVNode("v-if", true)
969
- ]),
970
- _: 3
971
- }, 8, ["is-open", "label"])) : (openBlock(), createBlock(Teleport, {
972
- key: 1,
973
- to: "body"
974
- }, [createVNode(Transition, { name: "astryx-dropdown-menu" }, {
975
- default: withCtx(() => [hasRegions.value ? withDirectives((openBlock(), createElementBlock("div", {
976
- key: 0,
977
- ref_key: "popoverRef",
978
- ref: popoverRef,
979
- class: "astryx-dropdown-menu-popover",
980
- "data-placement": unref(position).placement,
981
- style: normalizeStyle([surfaceStyle.value, unref(attrs).style])
982
- }, [
983
- unref(slots).header ? (openBlock(), createElementBlock("div", {
984
- key: 0,
985
- ref_key: "headerRef",
986
- ref: headerRef,
987
- class: "astryx-dropdown-menu-region",
988
- onKeydown: _cache[3] || (_cache[3] = (...args) => unref(regions).onRegionKeydown && unref(regions).onRegionKeydown(...args))
989
- }, [renderSlot(_ctx.$slots, "header")], 544)) : createCommentVNode("v-if", true),
990
- createElementVNode("div", mergeProps({
991
- id: surfaceId.value,
992
- ref_key: "surfaceRef",
993
- ref: surfaceRef
994
- }, forwardedAttrs.value, {
995
- "aria-labelledby": menuAriaLabelledBy.value,
996
- "aria-label": menuAriaLabel.value,
997
- class: ["astryx-dropdown-menu is-in-frame", unref(attrs).class],
998
- "data-region-focus": regionFocus.value || void 0,
999
- role: "menu",
1000
- tabindex: "0",
1001
- onFocus: onSurfaceFocus,
1002
- onKeydown: onSurfaceKeydown
1003
- }), [createElementVNode("div", {
1004
- class: "astryx-dropdown-menu-tree",
1005
- hidden: unref(isDrilled) || void 0,
1006
- inert: unref(isDrilled) || void 0
1007
- }, [__props.items != null ? (openBlock(), createBlock(unref(DropdownMenuItems), {
1008
- key: 0,
1009
- items: __props.items
1010
- }, null, 8, ["items"])) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)], 8, _hoisted_6), createElementVNode("div", {
1011
- ref: assignHost,
1012
- class: "astryx-dropdown-menu-tree"
1013
- }, null, 512)], 16, _hoisted_5),
1014
- unref(slots).footer ? (openBlock(), createElementBlock("div", {
1015
- key: 1,
1016
- ref_key: "footerRef",
1017
- ref: footerRef,
1018
- class: "astryx-dropdown-menu-region",
1019
- onKeydown: _cache[4] || (_cache[4] = (...args) => unref(regions).onRegionKeydown && unref(regions).onRegionKeydown(...args))
1020
- }, [renderSlot(_ctx.$slots, "footer")], 544)) : createCommentVNode("v-if", true)
1021
- ], 12, _hoisted_4)), [[vShow, isOpen.value]]) : withDirectives((openBlock(), createElementBlock("div", mergeProps({
1022
- key: 1,
1023
- id: surfaceId.value,
1024
- ref_key: "surfaceRef",
1025
- ref: surfaceRef
1026
- }, forwardedAttrs.value, {
1027
- "aria-labelledby": menuAriaLabelledBy.value,
1028
- "aria-label": menuAriaLabel.value,
1029
- class: ["astryx-dropdown-menu", unref(attrs).class],
1030
- "data-placement": unref(position).placement,
1031
- role: "menu",
1032
- style: [surfaceStyle.value, unref(attrs).style],
1033
- tabindex: "-1",
1034
- onFocus: onSurfaceFocus,
1035
- onKeydown: onSurfaceKeydown
1036
- }), [createElementVNode("div", {
1037
- class: "astryx-dropdown-menu-tree",
1038
- hidden: unref(isDrilled) || void 0,
1039
- inert: unref(isDrilled) || void 0
1040
- }, [__props.items != null ? (openBlock(), createBlock(unref(DropdownMenuItems), {
1041
- key: 0,
1042
- items: __props.items
1043
- }, null, 8, ["items"])) : renderSlot(_ctx.$slots, "default", {}, void 0, void 0, 1)], 8, _hoisted_8), createElementVNode("div", {
1044
- ref: assignHost,
1045
- class: "astryx-dropdown-menu-tree"
1046
- }, null, 512)], 16, _hoisted_7)), [[vShow, isOpen.value]])]),
1047
- _: 3
1048
- })]))], 64);
1250
+ "aria-haspopup",
1251
+ "data-astryx-focus-ring",
1252
+ "tooltip",
1253
+ "onFocus"
1254
+ ]))], 40, _hoisted_1), createVNode(_sfc_main$1, null, createSlots({
1255
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
1256
+ _: 2
1257
+ }, [unref(slots).header ? {
1258
+ name: "header",
1259
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "header")]),
1260
+ key: "0"
1261
+ } : void 0, unref(slots).footer ? {
1262
+ name: "footer",
1263
+ fn: withCtx(() => [renderSlot(_ctx.$slots, "footer")]),
1264
+ key: "1"
1265
+ } : void 0]), 1024)], 64);
1049
1266
  };
1050
1267
  }
1051
1268
  });
1052
1269
  //#endregion
1053
- export { _sfc_main$4 as a, _sfc_main$2 as i, useMenuFocus as n, MENU_ITEM_ROLES as o, _sfc_main$1 as r, activateMenuItem as s, _sfc_main as t };
1270
+ export { activateMenuItem as a, _sfc_main$6 as c, MENU_ITEM_ROLES as i, useMenuFocus as n, _sfc_main$3 as o, _sfc_main$2 as r, _sfc_main$5 as s, _sfc_main as t };