reka-ui 2.1.1 → 2.2.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 (796) hide show
  1. package/README.md +1 -1
  2. package/dist/Accordion/AccordionContent.cjs +2 -1
  3. package/dist/Accordion/AccordionContent.cjs.map +1 -1
  4. package/dist/Accordion/AccordionContent.js +3 -2
  5. package/dist/Accordion/AccordionContent.js.map +1 -1
  6. package/dist/Accordion/AccordionHeader.js +1 -1
  7. package/dist/Accordion/AccordionItem.cjs +2 -2
  8. package/dist/Accordion/AccordionItem.cjs.map +1 -1
  9. package/dist/Accordion/AccordionItem.js +3 -3
  10. package/dist/Accordion/AccordionItem.js.map +1 -1
  11. package/dist/Accordion/AccordionRoot.cjs +1 -1
  12. package/dist/Accordion/AccordionRoot.js +2 -2
  13. package/dist/Accordion/AccordionTrigger.cjs +2 -2
  14. package/dist/Accordion/AccordionTrigger.cjs.map +1 -1
  15. package/dist/Accordion/AccordionTrigger.js +3 -3
  16. package/dist/Accordion/AccordionTrigger.js.map +1 -1
  17. package/dist/AlertDialog/AlertDialogAction.js +1 -1
  18. package/dist/AlertDialog/AlertDialogCancel.js +1 -1
  19. package/dist/AlertDialog/AlertDialogContent.cjs +1 -1
  20. package/dist/AlertDialog/AlertDialogContent.js +2 -2
  21. package/dist/AlertDialog/AlertDialogDescription.js +1 -1
  22. package/dist/AlertDialog/AlertDialogOverlay.js +1 -1
  23. package/dist/AlertDialog/AlertDialogPortal.js +1 -1
  24. package/dist/AlertDialog/AlertDialogRoot.js +1 -1
  25. package/dist/AlertDialog/AlertDialogTitle.js +1 -1
  26. package/dist/AlertDialog/AlertDialogTrigger.js +1 -1
  27. package/dist/AspectRatio/AspectRatio.js +1 -1
  28. package/dist/Avatar/AvatarFallback.js +1 -1
  29. package/dist/Avatar/AvatarImage.js +1 -1
  30. package/dist/Avatar/AvatarRoot.cjs +1 -1
  31. package/dist/Avatar/AvatarRoot.js +2 -2
  32. package/dist/Calendar/CalendarCell.cjs +2 -2
  33. package/dist/Calendar/CalendarCell.js +3 -3
  34. package/dist/Calendar/CalendarCellTrigger.cjs +74 -50
  35. package/dist/Calendar/CalendarCellTrigger.cjs.map +1 -1
  36. package/dist/Calendar/CalendarCellTrigger.js +75 -51
  37. package/dist/Calendar/CalendarCellTrigger.js.map +1 -1
  38. package/dist/Calendar/CalendarGrid.cjs +2 -2
  39. package/dist/Calendar/CalendarGrid.cjs.map +1 -1
  40. package/dist/Calendar/CalendarGrid.js +3 -3
  41. package/dist/Calendar/CalendarGrid.js.map +1 -1
  42. package/dist/Calendar/CalendarGridBody.js +1 -1
  43. package/dist/Calendar/CalendarGridHead.js +1 -1
  44. package/dist/Calendar/CalendarGridRow.js +1 -1
  45. package/dist/Calendar/CalendarHeadCell.js +1 -1
  46. package/dist/Calendar/CalendarHeader.js +1 -1
  47. package/dist/Calendar/CalendarHeading.cjs +1 -1
  48. package/dist/Calendar/CalendarHeading.js +2 -2
  49. package/dist/Calendar/CalendarNext.cjs +3 -3
  50. package/dist/Calendar/CalendarNext.js +4 -4
  51. package/dist/Calendar/CalendarPrev.cjs +3 -3
  52. package/dist/Calendar/CalendarPrev.js +4 -4
  53. package/dist/Calendar/CalendarRoot.cjs +14 -12
  54. package/dist/Calendar/CalendarRoot.cjs.map +1 -1
  55. package/dist/Calendar/CalendarRoot.js +15 -13
  56. package/dist/Calendar/CalendarRoot.js.map +1 -1
  57. package/dist/Calendar/useCalendar.js +1 -1
  58. package/dist/Calendar/utils.cjs +9 -0
  59. package/dist/Calendar/utils.cjs.map +1 -0
  60. package/dist/Calendar/utils.js +7 -0
  61. package/dist/Calendar/utils.js.map +1 -0
  62. package/dist/Checkbox/CheckboxGroupRoot.cjs +3 -3
  63. package/dist/Checkbox/CheckboxGroupRoot.js +4 -4
  64. package/dist/Checkbox/CheckboxIndicator.cjs +1 -1
  65. package/dist/Checkbox/CheckboxIndicator.js +2 -2
  66. package/dist/Checkbox/CheckboxRoot.cjs +8 -8
  67. package/dist/Checkbox/CheckboxRoot.cjs.map +1 -1
  68. package/dist/Checkbox/CheckboxRoot.js +10 -10
  69. package/dist/Checkbox/CheckboxRoot.js.map +1 -1
  70. package/dist/Collapsible/CollapsibleContent.cjs +4 -4
  71. package/dist/Collapsible/CollapsibleContent.cjs.map +1 -1
  72. package/dist/Collapsible/CollapsibleContent.js +5 -5
  73. package/dist/Collapsible/CollapsibleContent.js.map +1 -1
  74. package/dist/Collapsible/CollapsibleRoot.cjs +4 -4
  75. package/dist/Collapsible/CollapsibleRoot.js +5 -5
  76. package/dist/Collapsible/CollapsibleTrigger.cjs +2 -2
  77. package/dist/Collapsible/CollapsibleTrigger.js +3 -3
  78. package/dist/Combobox/ComboboxAnchor.js +1 -1
  79. package/dist/Combobox/ComboboxArrow.js +1 -1
  80. package/dist/Combobox/ComboboxCancel.cjs +1 -1
  81. package/dist/Combobox/ComboboxCancel.js +2 -2
  82. package/dist/Combobox/ComboboxContent.cjs +1 -1
  83. package/dist/Combobox/ComboboxContent.cjs.map +1 -1
  84. package/dist/Combobox/ComboboxContent.js +2 -2
  85. package/dist/Combobox/ComboboxContent.js.map +1 -1
  86. package/dist/Combobox/ComboboxContentImpl.cjs +1 -1
  87. package/dist/Combobox/ComboboxContentImpl.js +2 -2
  88. package/dist/Combobox/ComboboxEmpty.js +1 -1
  89. package/dist/Combobox/ComboboxGroup.cjs +3 -3
  90. package/dist/Combobox/ComboboxGroup.cjs.map +1 -1
  91. package/dist/Combobox/ComboboxGroup.js +4 -4
  92. package/dist/Combobox/ComboboxGroup.js.map +1 -1
  93. package/dist/Combobox/ComboboxInput.cjs +1 -1
  94. package/dist/Combobox/ComboboxInput.js +2 -2
  95. package/dist/Combobox/ComboboxItem.cjs +2 -2
  96. package/dist/Combobox/ComboboxItem.cjs.map +1 -1
  97. package/dist/Combobox/ComboboxItem.js +3 -3
  98. package/dist/Combobox/ComboboxItem.js.map +1 -1
  99. package/dist/Combobox/ComboboxItemIndicator.js +1 -1
  100. package/dist/Combobox/ComboboxLabel.cjs +1 -1
  101. package/dist/Combobox/ComboboxLabel.cjs.map +1 -1
  102. package/dist/Combobox/ComboboxLabel.js +2 -2
  103. package/dist/Combobox/ComboboxLabel.js.map +1 -1
  104. package/dist/Combobox/ComboboxPortal.js +1 -1
  105. package/dist/Combobox/ComboboxRoot.cjs +7 -7
  106. package/dist/Combobox/ComboboxRoot.cjs.map +1 -1
  107. package/dist/Combobox/ComboboxRoot.js +8 -8
  108. package/dist/Combobox/ComboboxRoot.js.map +1 -1
  109. package/dist/Combobox/ComboboxSeparator.js +1 -1
  110. package/dist/Combobox/ComboboxTrigger.cjs +3 -3
  111. package/dist/Combobox/ComboboxTrigger.js +4 -4
  112. package/dist/Combobox/ComboboxViewport.cjs +1 -1
  113. package/dist/Combobox/ComboboxViewport.js +2 -2
  114. package/dist/Combobox/ComboboxVirtualizer.js +1 -1
  115. package/dist/ConfigProvider/ConfigProvider.cjs +2 -2
  116. package/dist/ConfigProvider/ConfigProvider.js +2 -2
  117. package/dist/ContextMenu/ContextMenuArrow.js +1 -1
  118. package/dist/ContextMenu/ContextMenuCheckboxItem.js +1 -1
  119. package/dist/ContextMenu/ContextMenuContent.js +1 -1
  120. package/dist/ContextMenu/ContextMenuGroup.js +1 -1
  121. package/dist/ContextMenu/ContextMenuItem.js +1 -1
  122. package/dist/ContextMenu/ContextMenuItemIndicator.js +1 -1
  123. package/dist/ContextMenu/ContextMenuLabel.js +1 -1
  124. package/dist/ContextMenu/ContextMenuPortal.js +1 -1
  125. package/dist/ContextMenu/ContextMenuRadioGroup.js +1 -1
  126. package/dist/ContextMenu/ContextMenuRadioItem.js +1 -1
  127. package/dist/ContextMenu/ContextMenuRoot.cjs +1 -1
  128. package/dist/ContextMenu/ContextMenuRoot.js +2 -2
  129. package/dist/ContextMenu/ContextMenuSeparator.js +1 -1
  130. package/dist/ContextMenu/ContextMenuSub.cjs +2 -2
  131. package/dist/ContextMenu/ContextMenuSub.js +3 -3
  132. package/dist/ContextMenu/ContextMenuSubContent.js +1 -1
  133. package/dist/ContextMenu/ContextMenuSubTrigger.js +1 -1
  134. package/dist/ContextMenu/ContextMenuTrigger.cjs +1 -1
  135. package/dist/ContextMenu/ContextMenuTrigger.js +2 -2
  136. package/dist/DateField/DateFieldInput.cjs +5 -5
  137. package/dist/DateField/DateFieldInput.js +6 -6
  138. package/dist/DateField/DateFieldRoot.cjs +10 -10
  139. package/dist/DateField/DateFieldRoot.js +11 -11
  140. package/dist/DatePicker/DatePickerArrow.js +1 -1
  141. package/dist/DatePicker/DatePickerCalendar.js +1 -1
  142. package/dist/DatePicker/DatePickerCell.js +1 -1
  143. package/dist/DatePicker/DatePickerCellTrigger.js +1 -1
  144. package/dist/DatePicker/DatePickerClose.js +1 -1
  145. package/dist/DatePicker/DatePickerContent.js +1 -1
  146. package/dist/DatePicker/DatePickerField.js +1 -1
  147. package/dist/DatePicker/DatePickerGrid.js +1 -1
  148. package/dist/DatePicker/DatePickerGridBody.js +1 -1
  149. package/dist/DatePicker/DatePickerGridHead.js +1 -1
  150. package/dist/DatePicker/DatePickerGridRow.js +1 -1
  151. package/dist/DatePicker/DatePickerHeadCell.js +1 -1
  152. package/dist/DatePicker/DatePickerHeader.js +1 -1
  153. package/dist/DatePicker/DatePickerHeading.js +1 -1
  154. package/dist/DatePicker/DatePickerInput.js +1 -1
  155. package/dist/DatePicker/DatePickerNext.js +1 -1
  156. package/dist/DatePicker/DatePickerPrev.js +1 -1
  157. package/dist/DatePicker/DatePickerRoot.cjs +11 -11
  158. package/dist/DatePicker/DatePickerRoot.cjs.map +1 -1
  159. package/dist/DatePicker/DatePickerRoot.js +12 -12
  160. package/dist/DatePicker/DatePickerRoot.js.map +1 -1
  161. package/dist/DatePicker/DatePickerTrigger.js +1 -1
  162. package/dist/DateRangeField/DateRangeFieldInput.cjs +5 -5
  163. package/dist/DateRangeField/DateRangeFieldInput.js +6 -6
  164. package/dist/DateRangeField/DateRangeFieldRoot.cjs +22 -18
  165. package/dist/DateRangeField/DateRangeFieldRoot.cjs.map +1 -1
  166. package/dist/DateRangeField/DateRangeFieldRoot.js +23 -19
  167. package/dist/DateRangeField/DateRangeFieldRoot.js.map +1 -1
  168. package/dist/DateRangePicker/DateRangePickerAnchor.js +1 -1
  169. package/dist/DateRangePicker/DateRangePickerArrow.js +1 -1
  170. package/dist/DateRangePicker/DateRangePickerCalendar.js +1 -1
  171. package/dist/DateRangePicker/DateRangePickerCell.js +1 -1
  172. package/dist/DateRangePicker/DateRangePickerCellTrigger.js +1 -1
  173. package/dist/DateRangePicker/DateRangePickerClose.js +1 -1
  174. package/dist/DateRangePicker/DateRangePickerContent.js +1 -1
  175. package/dist/DateRangePicker/DateRangePickerField.js +1 -1
  176. package/dist/DateRangePicker/DateRangePickerGrid.js +1 -1
  177. package/dist/DateRangePicker/DateRangePickerGridBody.js +1 -1
  178. package/dist/DateRangePicker/DateRangePickerGridHead.js +1 -1
  179. package/dist/DateRangePicker/DateRangePickerGridRow.js +1 -1
  180. package/dist/DateRangePicker/DateRangePickerHeadCell.js +1 -1
  181. package/dist/DateRangePicker/DateRangePickerHeader.js +1 -1
  182. package/dist/DateRangePicker/DateRangePickerHeading.js +1 -1
  183. package/dist/DateRangePicker/DateRangePickerInput.js +1 -1
  184. package/dist/DateRangePicker/DateRangePickerNext.js +1 -1
  185. package/dist/DateRangePicker/DateRangePickerPrev.js +1 -1
  186. package/dist/DateRangePicker/DateRangePickerRoot.cjs +11 -11
  187. package/dist/DateRangePicker/DateRangePickerRoot.cjs.map +1 -1
  188. package/dist/DateRangePicker/DateRangePickerRoot.js +12 -12
  189. package/dist/DateRangePicker/DateRangePickerRoot.js.map +1 -1
  190. package/dist/DateRangePicker/DateRangePickerTrigger.js +1 -1
  191. package/dist/Dialog/DialogClose.cjs +1 -1
  192. package/dist/Dialog/DialogClose.js +2 -2
  193. package/dist/Dialog/DialogContent.js +1 -1
  194. package/dist/Dialog/DialogContentImpl.cjs +2 -2
  195. package/dist/Dialog/DialogContentImpl.cjs.map +1 -1
  196. package/dist/Dialog/DialogContentImpl.js +3 -3
  197. package/dist/Dialog/DialogContentImpl.js.map +1 -1
  198. package/dist/Dialog/DialogContentModal.js +1 -1
  199. package/dist/Dialog/DialogContentNonModal.js +1 -1
  200. package/dist/Dialog/DialogDescription.js +1 -1
  201. package/dist/Dialog/DialogOverlay.js +1 -1
  202. package/dist/Dialog/DialogOverlayImpl.js +1 -1
  203. package/dist/Dialog/DialogPortal.js +1 -1
  204. package/dist/Dialog/DialogRoot.cjs +2 -2
  205. package/dist/Dialog/DialogRoot.js +2 -2
  206. package/dist/Dialog/DialogTitle.js +1 -1
  207. package/dist/Dialog/DialogTrigger.cjs +3 -3
  208. package/dist/Dialog/DialogTrigger.cjs.map +1 -1
  209. package/dist/Dialog/DialogTrigger.js +4 -4
  210. package/dist/Dialog/DialogTrigger.js.map +1 -1
  211. package/dist/DismissableLayer/DismissableLayer.cjs +1 -1
  212. package/dist/DismissableLayer/DismissableLayer.js +2 -2
  213. package/dist/DismissableLayer/DismissableLayerBranch.js +1 -1
  214. package/dist/DismissableLayer/utils.cjs +1 -0
  215. package/dist/DismissableLayer/utils.cjs.map +1 -1
  216. package/dist/DismissableLayer/utils.js +1 -0
  217. package/dist/DismissableLayer/utils.js.map +1 -1
  218. package/dist/DropdownMenu/DropdownMenuArrow.js +1 -1
  219. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +1 -1
  220. package/dist/DropdownMenu/DropdownMenuContent.cjs +1 -1
  221. package/dist/DropdownMenu/DropdownMenuContent.cjs.map +1 -1
  222. package/dist/DropdownMenu/DropdownMenuContent.js +2 -2
  223. package/dist/DropdownMenu/DropdownMenuContent.js.map +1 -1
  224. package/dist/DropdownMenu/DropdownMenuGroup.js +1 -1
  225. package/dist/DropdownMenu/DropdownMenuItem.js +1 -1
  226. package/dist/DropdownMenu/DropdownMenuItemIndicator.js +1 -1
  227. package/dist/DropdownMenu/DropdownMenuLabel.js +1 -1
  228. package/dist/DropdownMenu/DropdownMenuPortal.js +1 -1
  229. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -1
  230. package/dist/DropdownMenu/DropdownMenuRadioItem.js +1 -1
  231. package/dist/DropdownMenu/DropdownMenuRoot.cjs +3 -3
  232. package/dist/DropdownMenu/DropdownMenuRoot.js +4 -4
  233. package/dist/DropdownMenu/DropdownMenuSeparator.js +1 -1
  234. package/dist/DropdownMenu/DropdownMenuSub.cjs +2 -2
  235. package/dist/DropdownMenu/DropdownMenuSub.cjs.map +1 -1
  236. package/dist/DropdownMenu/DropdownMenuSub.js +3 -3
  237. package/dist/DropdownMenu/DropdownMenuSub.js.map +1 -1
  238. package/dist/DropdownMenu/DropdownMenuSubContent.js +1 -1
  239. package/dist/DropdownMenu/DropdownMenuSubTrigger.js +1 -1
  240. package/dist/DropdownMenu/DropdownMenuTrigger.cjs +4 -4
  241. package/dist/DropdownMenu/DropdownMenuTrigger.cjs.map +1 -1
  242. package/dist/DropdownMenu/DropdownMenuTrigger.js +5 -5
  243. package/dist/DropdownMenu/DropdownMenuTrigger.js.map +1 -1
  244. package/dist/Editable/EditableArea.cjs +7 -7
  245. package/dist/Editable/EditableArea.js +8 -8
  246. package/dist/Editable/EditableCancelTrigger.cjs +4 -4
  247. package/dist/Editable/EditableCancelTrigger.js +5 -5
  248. package/dist/Editable/EditableEditTrigger.cjs +4 -4
  249. package/dist/Editable/EditableEditTrigger.js +5 -5
  250. package/dist/Editable/EditableInput.cjs +4 -4
  251. package/dist/Editable/EditableInput.js +5 -5
  252. package/dist/Editable/EditablePreview.cjs +4 -4
  253. package/dist/Editable/EditablePreview.js +5 -5
  254. package/dist/Editable/EditableRoot.cjs +2 -2
  255. package/dist/Editable/EditableRoot.js +3 -3
  256. package/dist/Editable/EditableSubmitTrigger.cjs +4 -4
  257. package/dist/Editable/EditableSubmitTrigger.js +5 -5
  258. package/dist/FocusScope/FocusScope.js +1 -1
  259. package/dist/FocusScope/utils.cjs +1 -1
  260. package/dist/FocusScope/utils.cjs.map +1 -1
  261. package/dist/FocusScope/utils.js +1 -1
  262. package/dist/FocusScope/utils.js.map +1 -1
  263. package/dist/HoverCard/HoverCardArrow.js +1 -1
  264. package/dist/HoverCard/HoverCardContent.js +1 -1
  265. package/dist/HoverCard/HoverCardContentImpl.cjs +2 -2
  266. package/dist/HoverCard/HoverCardContentImpl.js +3 -3
  267. package/dist/HoverCard/HoverCardPortal.js +1 -1
  268. package/dist/HoverCard/HoverCardRoot.cjs +3 -3
  269. package/dist/HoverCard/HoverCardRoot.js +4 -4
  270. package/dist/HoverCard/HoverCardTrigger.js +1 -1
  271. package/dist/HoverCard/utils.cjs +1 -1
  272. package/dist/HoverCard/utils.cjs.map +1 -1
  273. package/dist/HoverCard/utils.js +1 -1
  274. package/dist/HoverCard/utils.js.map +1 -1
  275. package/dist/Label/Label.js +1 -1
  276. package/dist/Listbox/ListboxContent.cjs +2 -2
  277. package/dist/Listbox/ListboxContent.js +3 -3
  278. package/dist/Listbox/ListboxFilter.cjs +8 -5
  279. package/dist/Listbox/ListboxFilter.cjs.map +1 -1
  280. package/dist/Listbox/ListboxFilter.js +9 -6
  281. package/dist/Listbox/ListboxFilter.js.map +1 -1
  282. package/dist/Listbox/ListboxGroup.cjs +2 -2
  283. package/dist/Listbox/ListboxGroup.cjs.map +1 -1
  284. package/dist/Listbox/ListboxGroup.js +3 -3
  285. package/dist/Listbox/ListboxGroup.js.map +1 -1
  286. package/dist/Listbox/ListboxGroupLabel.js +1 -1
  287. package/dist/Listbox/ListboxItem.cjs +6 -6
  288. package/dist/Listbox/ListboxItem.cjs.map +1 -1
  289. package/dist/Listbox/ListboxItem.js +7 -7
  290. package/dist/Listbox/ListboxItem.js.map +1 -1
  291. package/dist/Listbox/ListboxItemIndicator.js +1 -1
  292. package/dist/Listbox/ListboxRoot.cjs +6 -6
  293. package/dist/Listbox/ListboxRoot.cjs.map +1 -1
  294. package/dist/Listbox/ListboxRoot.js +7 -7
  295. package/dist/Listbox/ListboxRoot.js.map +1 -1
  296. package/dist/Listbox/ListboxVirtualizer.js +1 -1
  297. package/dist/Listbox/utils.cjs +2 -2
  298. package/dist/Listbox/utils.cjs.map +1 -1
  299. package/dist/Listbox/utils.js +2 -2
  300. package/dist/Listbox/utils.js.map +1 -1
  301. package/dist/Menu/MenuAnchor.js +1 -1
  302. package/dist/Menu/MenuArrow.js +1 -1
  303. package/dist/Menu/MenuCheckboxItem.js +1 -1
  304. package/dist/Menu/MenuContent.js +1 -1
  305. package/dist/Menu/MenuContentImpl.cjs +2 -2
  306. package/dist/Menu/MenuContentImpl.js +4 -4
  307. package/dist/Menu/MenuGroup.js +1 -1
  308. package/dist/Menu/MenuItem.js +1 -1
  309. package/dist/Menu/MenuItemImpl.cjs +3 -3
  310. package/dist/Menu/MenuItemImpl.js +4 -4
  311. package/dist/Menu/MenuItemIndicator.cjs +1 -1
  312. package/dist/Menu/MenuItemIndicator.js +2 -2
  313. package/dist/Menu/MenuLabel.js +1 -1
  314. package/dist/Menu/MenuPortal.js +1 -1
  315. package/dist/Menu/MenuRadioGroup.js +1 -1
  316. package/dist/Menu/MenuRadioItem.js +1 -1
  317. package/dist/Menu/MenuRoot.js +1 -1
  318. package/dist/Menu/MenuRootContentModal.js +1 -1
  319. package/dist/Menu/MenuRootContentNonModal.js +1 -1
  320. package/dist/Menu/MenuSeparator.js +1 -1
  321. package/dist/Menu/MenuSub.cjs +2 -2
  322. package/dist/Menu/MenuSub.js +3 -3
  323. package/dist/Menu/MenuSubContent.cjs +1 -1
  324. package/dist/Menu/MenuSubContent.cjs.map +1 -1
  325. package/dist/Menu/MenuSubContent.js +2 -2
  326. package/dist/Menu/MenuSubContent.js.map +1 -1
  327. package/dist/Menu/MenuSubTrigger.cjs +2 -2
  328. package/dist/Menu/MenuSubTrigger.cjs.map +1 -1
  329. package/dist/Menu/MenuSubTrigger.js +3 -3
  330. package/dist/Menu/MenuSubTrigger.js.map +1 -1
  331. package/dist/Menubar/MenubarArrow.js +1 -1
  332. package/dist/Menubar/MenubarCheckboxItem.js +1 -1
  333. package/dist/Menubar/MenubarContent.cjs +1 -1
  334. package/dist/Menubar/MenubarContent.cjs.map +1 -1
  335. package/dist/Menubar/MenubarContent.js +2 -2
  336. package/dist/Menubar/MenubarContent.js.map +1 -1
  337. package/dist/Menubar/MenubarGroup.js +1 -1
  338. package/dist/Menubar/MenubarItem.js +1 -1
  339. package/dist/Menubar/MenubarItemIndicator.js +1 -1
  340. package/dist/Menubar/MenubarLabel.js +1 -1
  341. package/dist/Menubar/MenubarMenu.cjs +1 -1
  342. package/dist/Menubar/MenubarMenu.js +2 -2
  343. package/dist/Menubar/MenubarPortal.js +1 -1
  344. package/dist/Menubar/MenubarRadioGroup.js +1 -1
  345. package/dist/Menubar/MenubarRadioItem.js +1 -1
  346. package/dist/Menubar/MenubarRoot.cjs +3 -3
  347. package/dist/Menubar/MenubarRoot.js +4 -4
  348. package/dist/Menubar/MenubarSeparator.js +1 -1
  349. package/dist/Menubar/MenubarSub.cjs +2 -2
  350. package/dist/Menubar/MenubarSub.js +3 -3
  351. package/dist/Menubar/MenubarSubContent.js +1 -1
  352. package/dist/Menubar/MenubarSubTrigger.js +1 -1
  353. package/dist/Menubar/MenubarTrigger.cjs +5 -5
  354. package/dist/Menubar/MenubarTrigger.js +6 -6
  355. package/dist/NavigationMenu/NavigationMenuContent.cjs +1 -1
  356. package/dist/NavigationMenu/NavigationMenuContent.js +2 -2
  357. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs +1 -1
  358. package/dist/NavigationMenu/NavigationMenuContentImpl.cjs.map +1 -1
  359. package/dist/NavigationMenu/NavigationMenuContentImpl.js +2 -2
  360. package/dist/NavigationMenu/NavigationMenuContentImpl.js.map +1 -1
  361. package/dist/NavigationMenu/NavigationMenuIndicator.js +1 -1
  362. package/dist/NavigationMenu/NavigationMenuItem.cjs +2 -2
  363. package/dist/NavigationMenu/NavigationMenuItem.cjs.map +1 -1
  364. package/dist/NavigationMenu/NavigationMenuItem.js +3 -3
  365. package/dist/NavigationMenu/NavigationMenuItem.js.map +1 -1
  366. package/dist/NavigationMenu/NavigationMenuLink.cjs +2 -2
  367. package/dist/NavigationMenu/NavigationMenuLink.js +3 -3
  368. package/dist/NavigationMenu/NavigationMenuList.js +1 -1
  369. package/dist/NavigationMenu/NavigationMenuRoot.cjs +4 -4
  370. package/dist/NavigationMenu/NavigationMenuRoot.cjs.map +1 -1
  371. package/dist/NavigationMenu/NavigationMenuRoot.js +5 -5
  372. package/dist/NavigationMenu/NavigationMenuRoot.js.map +1 -1
  373. package/dist/NavigationMenu/NavigationMenuSub.cjs +1 -1
  374. package/dist/NavigationMenu/NavigationMenuSub.js +2 -2
  375. package/dist/NavigationMenu/NavigationMenuTrigger.cjs +2 -2
  376. package/dist/NavigationMenu/NavigationMenuTrigger.cjs.map +1 -1
  377. package/dist/NavigationMenu/NavigationMenuTrigger.js +3 -3
  378. package/dist/NavigationMenu/NavigationMenuTrigger.js.map +1 -1
  379. package/dist/NavigationMenu/NavigationMenuViewport.cjs +7 -7
  380. package/dist/NavigationMenu/NavigationMenuViewport.js +9 -9
  381. package/dist/NavigationMenu/utils.cjs +1 -1
  382. package/dist/NavigationMenu/utils.cjs.map +1 -1
  383. package/dist/NavigationMenu/utils.js +1 -1
  384. package/dist/NavigationMenu/utils.js.map +1 -1
  385. package/dist/NumberField/NumberFieldDecrement.cjs +5 -5
  386. package/dist/NumberField/NumberFieldDecrement.js +6 -6
  387. package/dist/NumberField/NumberFieldIncrement.cjs +5 -5
  388. package/dist/NumberField/NumberFieldIncrement.js +6 -6
  389. package/dist/NumberField/NumberFieldInput.cjs +3 -3
  390. package/dist/NumberField/NumberFieldInput.js +4 -4
  391. package/dist/NumberField/NumberFieldRoot.cjs +7 -7
  392. package/dist/NumberField/NumberFieldRoot.cjs.map +1 -1
  393. package/dist/NumberField/NumberFieldRoot.js +8 -8
  394. package/dist/NumberField/NumberFieldRoot.js.map +1 -1
  395. package/dist/NumberField/utils.js +1 -1
  396. package/dist/Pagination/PaginationEllipsis.js +1 -1
  397. package/dist/Pagination/PaginationFirst.cjs +1 -1
  398. package/dist/Pagination/PaginationFirst.js +2 -2
  399. package/dist/Pagination/PaginationLast.cjs +1 -1
  400. package/dist/Pagination/PaginationLast.js +2 -2
  401. package/dist/Pagination/PaginationList.js +1 -1
  402. package/dist/Pagination/PaginationListItem.cjs +3 -3
  403. package/dist/Pagination/PaginationListItem.js +4 -4
  404. package/dist/Pagination/PaginationNext.cjs +1 -1
  405. package/dist/Pagination/PaginationNext.js +2 -2
  406. package/dist/Pagination/PaginationPrev.cjs +1 -1
  407. package/dist/Pagination/PaginationPrev.js +2 -2
  408. package/dist/Pagination/PaginationRoot.cjs +2 -2
  409. package/dist/Pagination/PaginationRoot.js +3 -3
  410. package/dist/PinInput/PinInputInput.cjs +4 -4
  411. package/dist/PinInput/PinInputInput.cjs.map +1 -1
  412. package/dist/PinInput/PinInputInput.js +5 -5
  413. package/dist/PinInput/PinInputInput.js.map +1 -1
  414. package/dist/PinInput/PinInputRoot.cjs +4 -4
  415. package/dist/PinInput/PinInputRoot.js +5 -5
  416. package/dist/Popover/PopoverAnchor.js +1 -1
  417. package/dist/Popover/PopoverArrow.js +1 -1
  418. package/dist/Popover/PopoverClose.cjs +1 -1
  419. package/dist/Popover/PopoverClose.js +2 -2
  420. package/dist/Popover/PopoverContent.cjs +1 -1
  421. package/dist/Popover/PopoverContent.cjs.map +1 -1
  422. package/dist/Popover/PopoverContent.js +2 -2
  423. package/dist/Popover/PopoverContent.js.map +1 -1
  424. package/dist/Popover/PopoverContentImpl.js +1 -1
  425. package/dist/Popover/PopoverContentModal.js +1 -1
  426. package/dist/Popover/PopoverContentNonModal.js +1 -1
  427. package/dist/Popover/PopoverPortal.js +1 -1
  428. package/dist/Popover/PopoverRoot.cjs +2 -2
  429. package/dist/Popover/PopoverRoot.js +3 -3
  430. package/dist/Popover/PopoverTrigger.cjs +2 -2
  431. package/dist/Popover/PopoverTrigger.cjs.map +1 -1
  432. package/dist/Popover/PopoverTrigger.js +3 -3
  433. package/dist/Popover/PopoverTrigger.js.map +1 -1
  434. package/dist/Popper/PopperAnchor.js +1 -1
  435. package/dist/Popper/PopperArrow.cjs +4 -4
  436. package/dist/Popper/PopperArrow.js +5 -5
  437. package/dist/Popper/PopperContent.cjs +3 -3
  438. package/dist/Popper/PopperContent.cjs.map +1 -1
  439. package/dist/Popper/PopperContent.js +5 -5
  440. package/dist/Popper/PopperContent.js.map +1 -1
  441. package/dist/Presence/usePresence.cjs +2 -2
  442. package/dist/Presence/usePresence.cjs.map +1 -1
  443. package/dist/Presence/usePresence.js +2 -2
  444. package/dist/Presence/usePresence.js.map +1 -1
  445. package/dist/Primitive/Primitive.cjs +1 -1
  446. package/dist/Primitive/Primitive.cjs.map +1 -1
  447. package/dist/Primitive/Primitive.js +1 -1
  448. package/dist/Primitive/Primitive.js.map +1 -1
  449. package/dist/Progress/ProgressIndicator.cjs +1 -1
  450. package/dist/Progress/ProgressIndicator.js +2 -2
  451. package/dist/Progress/ProgressRoot.cjs +5 -5
  452. package/dist/Progress/ProgressRoot.js +6 -6
  453. package/dist/RadioGroup/Radio.cjs +6 -6
  454. package/dist/RadioGroup/Radio.cjs.map +1 -1
  455. package/dist/RadioGroup/Radio.js +7 -7
  456. package/dist/RadioGroup/Radio.js.map +1 -1
  457. package/dist/RadioGroup/RadioGroupIndicator.cjs +1 -1
  458. package/dist/RadioGroup/RadioGroupIndicator.js +2 -2
  459. package/dist/RadioGroup/RadioGroupItem.cjs +2 -2
  460. package/dist/RadioGroup/RadioGroupItem.js +3 -3
  461. package/dist/RadioGroup/RadioGroupRoot.cjs +5 -5
  462. package/dist/RadioGroup/RadioGroupRoot.js +6 -6
  463. package/dist/RangeCalendar/RangeCalendarCell.cjs +2 -2
  464. package/dist/RangeCalendar/RangeCalendarCell.js +3 -3
  465. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs +84 -60
  466. package/dist/RangeCalendar/RangeCalendarCellTrigger.cjs.map +1 -1
  467. package/dist/RangeCalendar/RangeCalendarCellTrigger.js +85 -61
  468. package/dist/RangeCalendar/RangeCalendarCellTrigger.js.map +1 -1
  469. package/dist/RangeCalendar/RangeCalendarGrid.cjs +2 -2
  470. package/dist/RangeCalendar/RangeCalendarGrid.cjs.map +1 -1
  471. package/dist/RangeCalendar/RangeCalendarGrid.js +3 -3
  472. package/dist/RangeCalendar/RangeCalendarGrid.js.map +1 -1
  473. package/dist/RangeCalendar/RangeCalendarGridBody.js +1 -1
  474. package/dist/RangeCalendar/RangeCalendarGridHead.js +1 -1
  475. package/dist/RangeCalendar/RangeCalendarGridRow.js +1 -1
  476. package/dist/RangeCalendar/RangeCalendarHeadCell.js +1 -1
  477. package/dist/RangeCalendar/RangeCalendarHeader.js +1 -1
  478. package/dist/RangeCalendar/RangeCalendarHeading.cjs +1 -1
  479. package/dist/RangeCalendar/RangeCalendarHeading.js +2 -2
  480. package/dist/RangeCalendar/RangeCalendarNext.cjs +3 -3
  481. package/dist/RangeCalendar/RangeCalendarNext.js +4 -4
  482. package/dist/RangeCalendar/RangeCalendarPrev.cjs +3 -3
  483. package/dist/RangeCalendar/RangeCalendarPrev.js +4 -4
  484. package/dist/RangeCalendar/RangeCalendarRoot.cjs +17 -15
  485. package/dist/RangeCalendar/RangeCalendarRoot.cjs.map +1 -1
  486. package/dist/RangeCalendar/RangeCalendarRoot.js +18 -16
  487. package/dist/RangeCalendar/RangeCalendarRoot.js.map +1 -1
  488. package/dist/RovingFocus/RovingFocusGroup.cjs +4 -4
  489. package/dist/RovingFocus/RovingFocusGroup.cjs.map +1 -1
  490. package/dist/RovingFocus/RovingFocusGroup.js +5 -5
  491. package/dist/RovingFocus/RovingFocusGroup.js.map +1 -1
  492. package/dist/RovingFocus/RovingFocusItem.cjs +4 -4
  493. package/dist/RovingFocus/RovingFocusItem.cjs.map +1 -1
  494. package/dist/RovingFocus/RovingFocusItem.js +5 -5
  495. package/dist/RovingFocus/RovingFocusItem.js.map +1 -1
  496. package/dist/RovingFocus/utils.cjs +2 -2
  497. package/dist/RovingFocus/utils.cjs.map +1 -1
  498. package/dist/RovingFocus/utils.js +2 -2
  499. package/dist/RovingFocus/utils.js.map +1 -1
  500. package/dist/ScrollArea/ScrollAreaCorner.js +1 -1
  501. package/dist/ScrollArea/ScrollAreaCornerImpl.cjs +2 -2
  502. package/dist/ScrollArea/ScrollAreaCornerImpl.js +3 -3
  503. package/dist/ScrollArea/ScrollAreaRoot.cjs +4 -4
  504. package/dist/ScrollArea/ScrollAreaRoot.cjs.map +1 -1
  505. package/dist/ScrollArea/ScrollAreaRoot.js +5 -5
  506. package/dist/ScrollArea/ScrollAreaRoot.js.map +1 -1
  507. package/dist/ScrollArea/ScrollAreaScrollbar.cjs +1 -1
  508. package/dist/ScrollArea/ScrollAreaScrollbar.js +2 -2
  509. package/dist/ScrollArea/ScrollAreaScrollbarAuto.js +1 -1
  510. package/dist/ScrollArea/ScrollAreaScrollbarHover.js +1 -1
  511. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs +1 -1
  512. package/dist/ScrollArea/ScrollAreaScrollbarImpl.cjs.map +1 -1
  513. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js +2 -2
  514. package/dist/ScrollArea/ScrollAreaScrollbarImpl.js.map +1 -1
  515. package/dist/ScrollArea/ScrollAreaScrollbarScroll.js +1 -1
  516. package/dist/ScrollArea/ScrollAreaScrollbarVisible.js +1 -1
  517. package/dist/ScrollArea/ScrollAreaScrollbarX.cjs +1 -1
  518. package/dist/ScrollArea/ScrollAreaScrollbarX.js +2 -2
  519. package/dist/ScrollArea/ScrollAreaScrollbarY.cjs +3 -3
  520. package/dist/ScrollArea/ScrollAreaScrollbarY.js +4 -4
  521. package/dist/ScrollArea/ScrollAreaThumb.js +1 -1
  522. package/dist/ScrollArea/ScrollAreaViewport.cjs +1 -1
  523. package/dist/ScrollArea/ScrollAreaViewport.js +2 -2
  524. package/dist/Select/BubbleSelect.cjs +2 -2
  525. package/dist/Select/BubbleSelect.cjs.map +1 -1
  526. package/dist/Select/BubbleSelect.js +3 -3
  527. package/dist/Select/BubbleSelect.js.map +1 -1
  528. package/dist/Select/SelectArrow.js +1 -1
  529. package/dist/Select/SelectContent.js +1 -1
  530. package/dist/Select/SelectContentImpl.cjs +2 -2
  531. package/dist/Select/SelectContentImpl.js +3 -3
  532. package/dist/Select/SelectGroup.cjs +2 -2
  533. package/dist/Select/SelectGroup.cjs.map +1 -1
  534. package/dist/Select/SelectGroup.js +3 -3
  535. package/dist/Select/SelectGroup.js.map +1 -1
  536. package/dist/Select/SelectIcon.js +1 -1
  537. package/dist/Select/SelectItem.cjs +6 -6
  538. package/dist/Select/SelectItem.cjs.map +1 -1
  539. package/dist/Select/SelectItem.js +7 -7
  540. package/dist/Select/SelectItem.js.map +1 -1
  541. package/dist/Select/SelectItemAlignedPosition.cjs +1 -1
  542. package/dist/Select/SelectItemAlignedPosition.js +2 -2
  543. package/dist/Select/SelectItemIndicator.js +1 -1
  544. package/dist/Select/SelectItemText.js +1 -1
  545. package/dist/Select/SelectLabel.js +1 -1
  546. package/dist/Select/SelectPopperPosition.js +1 -1
  547. package/dist/Select/SelectPortal.js +1 -1
  548. package/dist/Select/SelectRoot.cjs +6 -6
  549. package/dist/Select/SelectRoot.cjs.map +1 -1
  550. package/dist/Select/SelectRoot.js +7 -7
  551. package/dist/Select/SelectRoot.js.map +1 -1
  552. package/dist/Select/SelectScrollButtonImpl.js +1 -1
  553. package/dist/Select/SelectScrollDownButton.cjs +1 -1
  554. package/dist/Select/SelectScrollDownButton.cjs.map +1 -1
  555. package/dist/Select/SelectScrollDownButton.js +2 -2
  556. package/dist/Select/SelectScrollDownButton.js.map +1 -1
  557. package/dist/Select/SelectScrollUpButton.cjs +1 -1
  558. package/dist/Select/SelectScrollUpButton.cjs.map +1 -1
  559. package/dist/Select/SelectScrollUpButton.js +2 -2
  560. package/dist/Select/SelectScrollUpButton.js.map +1 -1
  561. package/dist/Select/SelectSeparator.js +1 -1
  562. package/dist/Select/SelectTrigger.cjs +4 -4
  563. package/dist/Select/SelectTrigger.cjs.map +1 -1
  564. package/dist/Select/SelectTrigger.js +5 -5
  565. package/dist/Select/SelectTrigger.js.map +1 -1
  566. package/dist/Select/SelectValue.cjs +1 -1
  567. package/dist/Select/SelectValue.js +2 -2
  568. package/dist/Select/SelectViewport.cjs +1 -1
  569. package/dist/Select/SelectViewport.cjs.map +1 -1
  570. package/dist/Select/SelectViewport.js +2 -2
  571. package/dist/Select/SelectViewport.js.map +1 -1
  572. package/dist/Select/utils.cjs +2 -2
  573. package/dist/Select/utils.cjs.map +1 -1
  574. package/dist/Select/utils.js +2 -2
  575. package/dist/Select/utils.js.map +1 -1
  576. package/dist/Separator/Separator.js +1 -1
  577. package/dist/Slider/SliderHorizontal.cjs +2 -2
  578. package/dist/Slider/SliderHorizontal.js +3 -3
  579. package/dist/Slider/SliderImpl.js +1 -1
  580. package/dist/Slider/SliderRange.cjs +1 -1
  581. package/dist/Slider/SliderRange.js +2 -2
  582. package/dist/Slider/SliderRoot.cjs +3 -3
  583. package/dist/Slider/SliderRoot.js +4 -4
  584. package/dist/Slider/SliderThumb.js +1 -1
  585. package/dist/Slider/SliderThumbImpl.cjs +4 -4
  586. package/dist/Slider/SliderThumbImpl.cjs.map +1 -1
  587. package/dist/Slider/SliderThumbImpl.js +5 -5
  588. package/dist/Slider/SliderThumbImpl.js.map +1 -1
  589. package/dist/Slider/SliderTrack.cjs +1 -1
  590. package/dist/Slider/SliderTrack.js +2 -2
  591. package/dist/Slider/SliderVertical.cjs +2 -2
  592. package/dist/Slider/SliderVertical.js +3 -3
  593. package/dist/Slider/utils.cjs +1 -1
  594. package/dist/Slider/utils.cjs.map +1 -1
  595. package/dist/Slider/utils.js +1 -1
  596. package/dist/Slider/utils.js.map +1 -1
  597. package/dist/Splitter/SplitterGroup.cjs +2 -2
  598. package/dist/Splitter/SplitterGroup.cjs.map +1 -1
  599. package/dist/Splitter/SplitterGroup.js +3 -3
  600. package/dist/Splitter/SplitterGroup.js.map +1 -1
  601. package/dist/Splitter/SplitterPanel.cjs +3 -3
  602. package/dist/Splitter/SplitterPanel.cjs.map +1 -1
  603. package/dist/Splitter/SplitterPanel.js +4 -4
  604. package/dist/Splitter/SplitterPanel.js.map +1 -1
  605. package/dist/Splitter/SplitterResizeHandle.cjs +2 -2
  606. package/dist/Splitter/SplitterResizeHandle.js +3 -3
  607. package/dist/Stepper/StepperDescription.js +1 -1
  608. package/dist/Stepper/StepperIndicator.js +1 -1
  609. package/dist/Stepper/StepperItem.cjs +6 -6
  610. package/dist/Stepper/StepperItem.cjs.map +1 -1
  611. package/dist/Stepper/StepperItem.js +7 -7
  612. package/dist/Stepper/StepperItem.js.map +1 -1
  613. package/dist/Stepper/StepperRoot.cjs +3 -3
  614. package/dist/Stepper/StepperRoot.js +4 -4
  615. package/dist/Stepper/StepperSeparator.js +1 -1
  616. package/dist/Stepper/StepperTitle.js +1 -1
  617. package/dist/Stepper/StepperTrigger.cjs +5 -5
  618. package/dist/Stepper/StepperTrigger.cjs.map +1 -1
  619. package/dist/Stepper/StepperTrigger.js +6 -6
  620. package/dist/Stepper/StepperTrigger.js.map +1 -1
  621. package/dist/Switch/SwitchRoot.cjs +6 -6
  622. package/dist/Switch/SwitchRoot.cjs.map +1 -1
  623. package/dist/Switch/SwitchRoot.js +7 -7
  624. package/dist/Switch/SwitchRoot.js.map +1 -1
  625. package/dist/Switch/SwitchThumb.cjs +1 -1
  626. package/dist/Switch/SwitchThumb.js +2 -2
  627. package/dist/Tabs/TabsContent.cjs +1 -1
  628. package/dist/Tabs/TabsContent.js +2 -2
  629. package/dist/Tabs/TabsIndicator.js +1 -1
  630. package/dist/Tabs/TabsList.cjs +1 -1
  631. package/dist/Tabs/TabsList.js +2 -2
  632. package/dist/Tabs/TabsRoot.cjs +3 -3
  633. package/dist/Tabs/TabsRoot.cjs.map +1 -1
  634. package/dist/Tabs/TabsRoot.js +4 -4
  635. package/dist/Tabs/TabsRoot.js.map +1 -1
  636. package/dist/Tabs/TabsTrigger.cjs +3 -3
  637. package/dist/Tabs/TabsTrigger.js +4 -4
  638. package/dist/TagsInput/TagsInputClear.cjs +2 -2
  639. package/dist/TagsInput/TagsInputClear.js +3 -3
  640. package/dist/TagsInput/TagsInputInput.cjs +1 -1
  641. package/dist/TagsInput/TagsInputInput.js +2 -2
  642. package/dist/TagsInput/TagsInputItem.cjs +2 -2
  643. package/dist/TagsInput/TagsInputItem.js +3 -3
  644. package/dist/TagsInput/TagsInputItemDelete.cjs +2 -2
  645. package/dist/TagsInput/TagsInputItemDelete.js +3 -3
  646. package/dist/TagsInput/TagsInputItemText.cjs +1 -1
  647. package/dist/TagsInput/TagsInputItemText.cjs.map +1 -1
  648. package/dist/TagsInput/TagsInputItemText.js +2 -2
  649. package/dist/TagsInput/TagsInputItemText.js.map +1 -1
  650. package/dist/TagsInput/TagsInputRoot.cjs +7 -7
  651. package/dist/TagsInput/TagsInputRoot.cjs.map +1 -1
  652. package/dist/TagsInput/TagsInputRoot.js +8 -8
  653. package/dist/TagsInput/TagsInputRoot.js.map +1 -1
  654. package/dist/Teleport/Teleport.js +1 -1
  655. package/dist/TimeField/TimeFieldInput.cjs +5 -5
  656. package/dist/TimeField/TimeFieldInput.js +6 -6
  657. package/dist/TimeField/TimeFieldRoot.cjs +17 -14
  658. package/dist/TimeField/TimeFieldRoot.cjs.map +1 -1
  659. package/dist/TimeField/TimeFieldRoot.js +19 -16
  660. package/dist/TimeField/TimeFieldRoot.js.map +1 -1
  661. package/dist/Toast/FocusProxy.js +1 -1
  662. package/dist/Toast/ToastAction.js +1 -1
  663. package/dist/Toast/ToastAnnounce.js +1 -1
  664. package/dist/Toast/ToastAnnounceExclude.cjs +1 -1
  665. package/dist/Toast/ToastAnnounceExclude.js +2 -2
  666. package/dist/Toast/ToastClose.cjs +1 -1
  667. package/dist/Toast/ToastClose.js +2 -2
  668. package/dist/Toast/ToastDescription.js +1 -1
  669. package/dist/Toast/ToastPortal.js +1 -1
  670. package/dist/Toast/ToastRoot.cjs +2 -2
  671. package/dist/Toast/ToastRoot.js +3 -3
  672. package/dist/Toast/ToastRootImpl.cjs +1 -1
  673. package/dist/Toast/ToastRootImpl.js +3 -3
  674. package/dist/Toast/ToastTitle.js +1 -1
  675. package/dist/Toast/ToastViewport.cjs +3 -3
  676. package/dist/Toast/ToastViewport.js +4 -4
  677. package/dist/Toast/utils.js +1 -1
  678. package/dist/Toggle/Toggle.cjs +4 -4
  679. package/dist/Toggle/Toggle.js +5 -5
  680. package/dist/ToggleGroup/ToggleGroupItem.cjs +1 -1
  681. package/dist/ToggleGroup/ToggleGroupItem.js +2 -2
  682. package/dist/ToggleGroup/ToggleGroupRoot.cjs +4 -4
  683. package/dist/ToggleGroup/ToggleGroupRoot.js +5 -5
  684. package/dist/Toolbar/ToolbarButton.cjs +2 -2
  685. package/dist/Toolbar/ToolbarButton.js +3 -3
  686. package/dist/Toolbar/ToolbarLink.cjs +1 -1
  687. package/dist/Toolbar/ToolbarLink.js +2 -2
  688. package/dist/Toolbar/ToolbarRoot.cjs +2 -2
  689. package/dist/Toolbar/ToolbarRoot.js +3 -3
  690. package/dist/Toolbar/ToolbarSeparator.js +1 -1
  691. package/dist/Toolbar/ToolbarToggleGroup.js +1 -1
  692. package/dist/Toolbar/ToolbarToggleItem.js +1 -1
  693. package/dist/Tooltip/TooltipArrow.js +1 -1
  694. package/dist/Tooltip/TooltipContent.js +1 -1
  695. package/dist/Tooltip/TooltipContentHoverable.js +1 -1
  696. package/dist/Tooltip/TooltipContentImpl.js +1 -1
  697. package/dist/Tooltip/TooltipPortal.js +1 -1
  698. package/dist/Tooltip/TooltipProvider.cjs +1 -1
  699. package/dist/Tooltip/TooltipProvider.js +1 -1
  700. package/dist/Tooltip/TooltipRoot.cjs +8 -8
  701. package/dist/Tooltip/TooltipRoot.js +9 -9
  702. package/dist/Tooltip/TooltipTrigger.cjs +2 -2
  703. package/dist/Tooltip/TooltipTrigger.cjs.map +1 -1
  704. package/dist/Tooltip/TooltipTrigger.js +3 -3
  705. package/dist/Tooltip/TooltipTrigger.js.map +1 -1
  706. package/dist/Tree/TreeItem.cjs +5 -5
  707. package/dist/Tree/TreeItem.cjs.map +1 -1
  708. package/dist/Tree/TreeItem.js +6 -6
  709. package/dist/Tree/TreeItem.js.map +1 -1
  710. package/dist/Tree/TreeRoot.cjs +8 -8
  711. package/dist/Tree/TreeRoot.cjs.map +1 -1
  712. package/dist/Tree/TreeRoot.js +9 -9
  713. package/dist/Tree/TreeRoot.js.map +1 -1
  714. package/dist/Tree/TreeVirtualizer.js +1 -1
  715. package/dist/Viewport/Viewport.js +1 -1
  716. package/dist/VisuallyHidden/VisuallyHidden.cjs +3 -3
  717. package/dist/VisuallyHidden/VisuallyHidden.js +4 -4
  718. package/dist/VisuallyHidden/VisuallyHiddenInput.cjs +9 -3
  719. package/dist/VisuallyHidden/VisuallyHiddenInput.cjs.map +1 -1
  720. package/dist/VisuallyHidden/VisuallyHiddenInput.js +10 -4
  721. package/dist/VisuallyHidden/VisuallyHiddenInput.js.map +1 -1
  722. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.cjs +1 -1
  723. package/dist/VisuallyHidden/VisuallyHiddenInputBubble.js +2 -2
  724. package/dist/component/Arrow.cjs +2 -2
  725. package/dist/component/Arrow.js +3 -3
  726. package/dist/component/BaseSeparator.cjs +1 -1
  727. package/dist/component/BaseSeparator.js +2 -2
  728. package/dist/constant/components.cjs +4 -0
  729. package/dist/constant/components.cjs.map +1 -1
  730. package/dist/constant/components.js +4 -0
  731. package/dist/constant/components.js.map +1 -1
  732. package/dist/date/comparators.cjs +1 -1
  733. package/dist/date/comparators.cjs.map +1 -1
  734. package/dist/date/comparators.js +2 -2
  735. package/dist/date/comparators.js.map +1 -1
  736. package/dist/date/parser.cjs +2 -2
  737. package/dist/date/parser.js +3 -3
  738. package/dist/date/useDateField.cjs +9 -9
  739. package/dist/date/useDateField.cjs.map +1 -1
  740. package/dist/date/useDateField.js +10 -10
  741. package/dist/date/useDateField.js.map +1 -1
  742. package/dist/date/utils.cjs +2 -2
  743. package/dist/date/utils.cjs.map +1 -1
  744. package/dist/date/utils.js +2 -2
  745. package/dist/date/utils.js.map +1 -1
  746. package/dist/index.cjs +91 -87
  747. package/dist/index.cjs.map +1 -1
  748. package/dist/index.d.ts +66 -2
  749. package/dist/index.js +42 -40
  750. package/dist/index.js.map +1 -1
  751. package/dist/shared/nullish.cjs +1 -1
  752. package/dist/shared/nullish.cjs.map +1 -1
  753. package/dist/shared/nullish.js +1 -1
  754. package/dist/shared/nullish.js.map +1 -1
  755. package/dist/shared/useBodyScrollLock.cjs +2 -2
  756. package/dist/shared/useBodyScrollLock.cjs.map +1 -1
  757. package/dist/shared/useBodyScrollLock.js +4 -4
  758. package/dist/shared/useBodyScrollLock.js.map +1 -1
  759. package/dist/shared/useDateFormatter.js +2 -2
  760. package/dist/shared/useForwardProps.cjs +2 -2
  761. package/dist/shared/useForwardProps.cjs.map +1 -1
  762. package/dist/shared/useForwardProps.js +2 -2
  763. package/dist/shared/useForwardProps.js.map +1 -1
  764. package/dist/shared/useGraceArea.cjs +1 -1
  765. package/dist/shared/useGraceArea.cjs.map +1 -1
  766. package/dist/shared/useGraceArea.js +1 -1
  767. package/dist/shared/useGraceArea.js.map +1 -1
  768. package/dist/shared/useId.cjs +1 -1
  769. package/dist/shared/useId.cjs.map +1 -1
  770. package/dist/shared/useId.js +1 -1
  771. package/dist/shared/useId.js.map +1 -1
  772. package/dist/shared/useSelectionBehavior.cjs +1 -1
  773. package/dist/shared/useSelectionBehavior.cjs.map +1 -1
  774. package/dist/shared/useSelectionBehavior.js +1 -1
  775. package/dist/shared/useSelectionBehavior.js.map +1 -1
  776. package/dist/shared/useSingleOrMultipleValue.cjs +5 -5
  777. package/dist/shared/useSingleOrMultipleValue.cjs.map +1 -1
  778. package/dist/shared/useSingleOrMultipleValue.js +5 -5
  779. package/dist/shared/useSingleOrMultipleValue.js.map +1 -1
  780. package/dist/shared/useSize.cjs +1 -1
  781. package/dist/shared/useSize.cjs.map +1 -1
  782. package/dist/shared/useSize.js +1 -1
  783. package/dist/shared/useSize.js.map +1 -1
  784. package/dist/shared/useTypeahead.cjs +1 -1
  785. package/dist/shared/useTypeahead.cjs.map +1 -1
  786. package/dist/shared/useTypeahead.js +1 -1
  787. package/dist/shared/useTypeahead.js.map +1 -1
  788. package/dist/utils/layout.cjs +1 -1
  789. package/dist/utils/layout.cjs.map +1 -1
  790. package/dist/utils/layout.js +1 -1
  791. package/dist/utils/layout.js.map +1 -1
  792. package/dist/utils/style.cjs +2 -2
  793. package/dist/utils/style.cjs.map +1 -1
  794. package/dist/utils/style.js +3 -3
  795. package/dist/utils/style.js.map +1 -1
  796. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, watch, watchEffect, computed, openBlock, createBlock, unref, withCtx, createVNode, withModifiers, resolveDynamicComponent, mergeProps, renderSlot } from 'vue';
1
+ import { defineComponent, ref, watch, watchEffect, computed, createBlock, openBlock, unref, withCtx, createVNode, withModifiers, resolveDynamicComponent, mergeProps, renderSlot } from 'vue';
2
2
  import { unrefElement } from '@vueuse/core';
3
3
  import { _ as _sfc_main$4 } from './SelectItemAlignedPosition.js';
4
4
  import { _ as _sfc_main$3 } from './SelectPopperPosition.js';
@@ -11,8 +11,8 @@ import { u as useFocusGuards } from '../shared/useFocusGuards.js';
11
11
  import { u as useHideOthers } from '../shared/useHideOthers.js';
12
12
  import { u as useTypeahead } from '../shared/useTypeahead.js';
13
13
  import { u as useForwardProps } from '../shared/useForwardProps.js';
14
- import { _ as _sfc_main$1 } from '../FocusScope/FocusScope.js';
15
14
  import { c as createContext } from '../shared/createContext.js';
15
+ import { _ as _sfc_main$1 } from '../FocusScope/FocusScope.js';
16
16
  import { i as injectSelectRootContext } from './SelectRoot.js';
17
17
 
18
18
  const SelectContentDefaultContextValue = {
@@ -213,7 +213,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
213
213
  id: unref(rootContext).contentId,
214
214
  ref: (vnode) => {
215
215
  content.value = unref(unrefElement)(vnode);
216
- return undefined;
216
+ return void 0;
217
217
  },
218
218
  role: "listbox",
219
219
  "data-state": unref(rootContext).open.value ? "open" : "closed",
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  const vue = require('vue');
4
+ const shared_createContext = require('../shared/createContext.cjs');
4
5
  const shared_useId = require('../shared/useId.cjs');
5
6
  const Primitive_Primitive = require('../Primitive/Primitive.cjs');
6
- const shared_createContext = require('../shared/createContext.cjs');
7
7
 
8
8
  const [injectSelectGroupContext, provideSelectGroupContext] = shared_createContext.createContext("SelectGroup");
9
9
  const _sfc_main = /* @__PURE__ */ vue.defineComponent({
@@ -14,7 +14,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
14
14
  },
15
15
  setup(__props) {
16
16
  const props = __props;
17
- const id = shared_useId.useId(undefined, "reka-select-group");
17
+ const id = shared_useId.useId(void 0, "reka-select-group");
18
18
  provideSelectGroupContext({ id });
19
19
  return (_ctx, _cache) => {
20
20
  return vue.openBlock(), vue.createBlock(vue.unref(Primitive_Primitive.Primitive), vue.mergeProps({ role: "group" }, props, { "aria-labelledby": vue.unref(id) }), {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectGroup.cjs","sources":["../../src/Select/SelectGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useId } from '@/shared'\n\nexport interface SelectGroupProps extends PrimitiveProps {}\n\ninterface SelectGroupContext {\n id: string\n}\n\nexport const [injectSelectGroupContext, provideSelectGroupContext]\n = createContext<SelectGroupContext>('SelectGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<SelectGroupProps>()\n\nconst id = useId(undefined, 'reka-select-group')\nprovideSelectGroupContext({ id })\n</script>\n\n<template>\n <Primitive\n role=\"group\"\n v-bind=\"props\"\n :aria-labelledby=\"id\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["createContext","useId"],"mappings":";;;;;;;AAUO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7DA,mCAAkC,aAAa;;;;;;;;AAMnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,EAAA,GAAKC,kBAAM,CAAA,SAAA,EAAW,mBAAmB,CAAA;AAC/C,IAA0B,yBAAA,CAAA,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SelectGroup.cjs","sources":["../../src/Select/SelectGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useId } from '@/shared'\n\nexport interface SelectGroupProps extends PrimitiveProps {}\n\ninterface SelectGroupContext {\n id: string\n}\n\nexport const [injectSelectGroupContext, provideSelectGroupContext]\n = createContext<SelectGroupContext>('SelectGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<SelectGroupProps>()\n\nconst id = useId(undefined, 'reka-select-group')\nprovideSelectGroupContext({ id })\n</script>\n\n<template>\n <Primitive\n role=\"group\"\n v-bind=\"props\"\n :aria-labelledby=\"id\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":["createContext","useId"],"mappings":";;;;;;;AAUO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7DA,mCAAkC,aAAa;;;;;;;;AAMnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,EAAA,GAAKC,kBAAM,CAAA,MAAA,EAAW,mBAAmB,CAAA;AAC/C,IAA0B,yBAAA,CAAA,EAAE,IAAI,CAAA;;;;;;;;;;;;;;;"}
@@ -1,7 +1,7 @@
1
- import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
1
+ import { defineComponent, createBlock, openBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
2
+ import { c as createContext } from '../shared/createContext.js';
2
3
  import { u as useId } from '../shared/useId.js';
3
4
  import { P as Primitive } from '../Primitive/Primitive.js';
4
- import { c as createContext } from '../shared/createContext.js';
5
5
 
6
6
  const [injectSelectGroupContext, provideSelectGroupContext] = createContext("SelectGroup");
7
7
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -12,7 +12,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
12
12
  },
13
13
  setup(__props) {
14
14
  const props = __props;
15
- const id = useId(undefined, "reka-select-group");
15
+ const id = useId(void 0, "reka-select-group");
16
16
  provideSelectGroupContext({ id });
17
17
  return (_ctx, _cache) => {
18
18
  return openBlock(), createBlock(unref(Primitive), mergeProps({ role: "group" }, props, { "aria-labelledby": unref(id) }), {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectGroup.js","sources":["../../src/Select/SelectGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useId } from '@/shared'\n\nexport interface SelectGroupProps extends PrimitiveProps {}\n\ninterface SelectGroupContext {\n id: string\n}\n\nexport const [injectSelectGroupContext, provideSelectGroupContext]\n = createContext<SelectGroupContext>('SelectGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<SelectGroupProps>()\n\nconst id = useId(undefined, 'reka-select-group')\nprovideSelectGroupContext({ id })\n</script>\n\n<template>\n <Primitive\n role=\"group\"\n v-bind=\"props\"\n :aria-labelledby=\"id\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;AAUO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7D,cAAkC,aAAa;;;;;;;;AAMnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,EAAA,GAAK,KAAM,CAAA,SAAA,EAAW,mBAAmB,CAAA;AAC/C,IAA0B,yBAAA,CAAA,EAAE,IAAI,CAAA;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SelectGroup.js","sources":["../../src/Select/SelectGroup.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, useId } from '@/shared'\n\nexport interface SelectGroupProps extends PrimitiveProps {}\n\ninterface SelectGroupContext {\n id: string\n}\n\nexport const [injectSelectGroupContext, provideSelectGroupContext]\n = createContext<SelectGroupContext>('SelectGroup')\n</script>\n\n<script setup lang=\"ts\">\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<SelectGroupProps>()\n\nconst id = useId(undefined, 'reka-select-group')\nprovideSelectGroupContext({ id })\n</script>\n\n<template>\n <Primitive\n role=\"group\"\n v-bind=\"props\"\n :aria-labelledby=\"id\"\n >\n <slot />\n </Primitive>\n</template>\n"],"names":[],"mappings":";;;;;AAUO,MAAM,CAAC,wBAAA,EAA0B,yBAAyB,CAAA,GAC7D,cAAkC,aAAa;;;;;;;;AAMnD,IAAA,MAAM,KAAQ,GAAA,OAAA;AAEd,IAAM,MAAA,EAAA,GAAK,KAAM,CAAA,MAAA,EAAW,mBAAmB,CAAA;AAC/C,IAA0B,yBAAA,CAAA,EAAE,IAAI,CAAA;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, openBlock, createBlock, unref, withCtx, renderSlot, createTextVNode } from 'vue';
1
+ import { defineComponent, createBlock, openBlock, unref, withCtx, renderSlot, createTextVNode } from 'vue';
2
2
  import { P as Primitive } from '../Primitive/Primitive.js';
3
3
 
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -3,10 +3,10 @@
3
3
  const vue = require('vue');
4
4
  const Select_utils = require('./utils.cjs');
5
5
  const Collection_Collection = require('../Collection/Collection.cjs');
6
+ const shared_createContext = require('../shared/createContext.cjs');
6
7
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
7
8
  const shared_useId = require('../shared/useId.cjs');
8
9
  const Primitive_Primitive = require('../Primitive/Primitive.cjs');
9
- const shared_createContext = require('../shared/createContext.cjs');
10
10
  const shared_handleAndDispatchCustomEvent = require('../shared/handleAndDispatchCustomEvent.cjs');
11
11
  const shared_getActiveElement = require('../shared/getActiveElement.cjs');
12
12
  const Select_SelectRoot = require('./SelectRoot.cjs');
@@ -34,7 +34,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
34
34
  const isSelected = vue.computed(() => Select_utils.valueComparator(rootContext.modelValue?.value, props.value, rootContext.by));
35
35
  const isFocused = vue.ref(false);
36
36
  const textValue = vue.ref(props.textValue ?? "");
37
- const textId = shared_useId.useId(undefined, "reka-select-item-text");
37
+ const textId = shared_useId.useId(void 0, "reka-select-item-text");
38
38
  const SELECT_SELECT = "select.select";
39
39
  async function handleSelectCustomEvent(ev) {
40
40
  if (ev.defaultPrevented)
@@ -114,12 +114,12 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
114
114
  ref: vue.unref(forwardRef),
115
115
  role: "option",
116
116
  "aria-labelledby": vue.unref(textId),
117
- "data-highlighted": isFocused.value ? "" : undefined,
117
+ "data-highlighted": isFocused.value ? "" : void 0,
118
118
  "aria-selected": isSelected.value,
119
119
  "data-state": isSelected.value ? "checked" : "unchecked",
120
- "aria-disabled": vue.unref(disabled) || undefined,
121
- "data-disabled": vue.unref(disabled) ? "" : undefined,
122
- tabindex: vue.unref(disabled) ? undefined : -1,
120
+ "aria-disabled": vue.unref(disabled) || void 0,
121
+ "data-disabled": vue.unref(disabled) ? "" : void 0,
122
+ tabindex: vue.unref(disabled) ? void 0 : -1,
123
123
  as: _ctx.as,
124
124
  "as-child": _ctx.asChild,
125
125
  onFocus: _cache[0] || (_cache[0] = ($event) => isFocused.value = true),
@@ -1 +1 @@
1
- {"version":3,"file":"SelectItem.cjs","sources":["../../src/Select/SelectItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, getActiveElement, handleAndDispatchCustomEvent, useForwardExpose, useId } from '@/shared'\nimport type { AcceptableValue } from '@/shared/types'\nimport { useCollection } from '@/Collection'\n\ninterface SelectItemContext<T = AcceptableValue> {\n value: T\n textId: string\n disabled: Ref<boolean>\n isSelected: Ref<boolean>\n onItemTextChange: (node: HTMLElement | undefined) => void\n}\n\nexport const [injectSelectItemContext, provideSelectItemContext]\n = createContext<SelectItemContext>('SelectItem')\n\nexport type SelectEvent<T> = CustomEvent<{ originalEvent: PointerEvent | KeyboardEvent, value?: T }>\n\nexport type SelectItemEmits<T = AcceptableValue> = {\n /** Event handler called when the selecting item. <br> It can be prevented by calling `event.preventDefault`. */\n select: [event: SelectEvent<T>]\n}\n\nexport interface SelectItemProps<T = AcceptableValue> extends PrimitiveProps {\n /** The value given as data when submitted with a `name`. */\n value: T\n /** When `true`, prevents the user from interacting with the item. */\n disabled?: boolean\n /**\n * Optional text used for typeahead purposes.\n *\n * By default the typeahead behavior will use the `.textContent` of the `SelectItemText` part.\n *\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n toRefs,\n} from 'vue'\nimport { injectSelectRootContext } from './SelectRoot.vue'\nimport { injectSelectContentContext } from './SelectContentImpl.vue'\nimport { SELECTION_KEYS, valueComparator } from './utils'\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<SelectItemProps>()\nconst emits = defineEmits<SelectItemEmits<T>>()\nconst { disabled } = toRefs(props)\n\nconst rootContext = injectSelectRootContext()\nconst contentContext = injectSelectContentContext()\nconst { forwardRef, currentElement } = useForwardExpose()\nconst { CollectionItem } = useCollection()\n\nconst isSelected = computed(() => valueComparator(rootContext.modelValue?.value, props.value, rootContext.by))\nconst isFocused = ref(false)\nconst textValue = ref(props.textValue ?? '')\nconst textId = useId(undefined, 'reka-select-item-text')\n\nconst SELECT_SELECT = 'select.select'\n\nasync function handleSelectCustomEvent(ev: PointerEvent | KeyboardEvent) {\n if (ev.defaultPrevented)\n return\n\n const eventDetail = { originalEvent: ev, value: props.value as T }\n handleAndDispatchCustomEvent(SELECT_SELECT, handleSelect, eventDetail)\n}\n\nasync function handleSelect(ev: SelectEvent<T>) {\n await nextTick()\n emits('select', ev)\n if (ev.defaultPrevented)\n return\n\n if (!disabled.value) {\n rootContext.onValueChange(props.value)\n if (!rootContext.multiple.value)\n rootContext.onOpenChange(false)\n }\n}\n\nasync function handlePointerMove(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (disabled.value) {\n contentContext.onItemLeave?.()\n }\n else {\n // even though safari doesn't support this option, it's acceptable\n // as it only means it might scroll a few pixels when using the pointer.\n (event.currentTarget as HTMLElement).focus({ preventScroll: true })\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (event.currentTarget === getActiveElement())\n contentContext.onItemLeave?.()\n}\n\nasync function handleKeyDown(event: KeyboardEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n const isTypingAhead = contentContext.searchRef?.value !== ''\n if (isTypingAhead && event.key === ' ')\n return\n if (SELECTION_KEYS.includes(event.key))\n handleSelectCustomEvent(event)\n // prevent page scroll if using the space key to select an item\n if (event.key === ' ')\n event.preventDefault()\n}\n\nif (props.value === '') {\n throw new Error(\n 'A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.',\n )\n}\n\nonMounted(() => {\n if (!currentElement.value)\n return\n contentContext.itemRefCallback(\n currentElement.value,\n props.value,\n props.disabled,\n )\n})\n\nprovideSelectItemContext({\n value: props.value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: (node) => {\n textValue.value = ((textValue.value || node?.textContent) ?? '').trim()\n },\n})\n</script>\n\n<template>\n <CollectionItem :value=\"{ textValue }\">\n <Primitive\n :ref=\"forwardRef\"\n role=\"option\"\n :aria-labelledby=\"textId\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n :aria-selected=\"isSelected\"\n :data-state=\"isSelected ? 'checked' : 'unchecked'\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :tabindex=\"disabled ? undefined : -1\"\n :as=\"as\"\n :as-child=\"asChild\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n @pointerup=\"handleSelectCustomEvent\"\n @pointerdown=\"(event) => {\n (event.currentTarget as HTMLElement).focus({ preventScroll: true })\n }\"\n @touchend.prevent.stop\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":["createContext","toRefs","injectSelectRootContext","injectSelectContentContext","useForwardExpose","useCollection","computed","valueComparator","ref","useId","handleAndDispatchCustomEvent","nextTick","getActiveElement","SELECTION_KEYS","onMounted"],"mappings":"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"}
1
+ {"version":3,"file":"SelectItem.cjs","sources":["../../src/Select/SelectItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, getActiveElement, handleAndDispatchCustomEvent, useForwardExpose, useId } from '@/shared'\nimport type { AcceptableValue } from '@/shared/types'\nimport { useCollection } from '@/Collection'\n\ninterface SelectItemContext<T = AcceptableValue> {\n value: T\n textId: string\n disabled: Ref<boolean>\n isSelected: Ref<boolean>\n onItemTextChange: (node: HTMLElement | undefined) => void\n}\n\nexport const [injectSelectItemContext, provideSelectItemContext]\n = createContext<SelectItemContext>('SelectItem')\n\nexport type SelectEvent<T> = CustomEvent<{ originalEvent: PointerEvent | KeyboardEvent, value?: T }>\n\nexport type SelectItemEmits<T = AcceptableValue> = {\n /** Event handler called when the selecting item. <br> It can be prevented by calling `event.preventDefault`. */\n select: [event: SelectEvent<T>]\n}\n\nexport interface SelectItemProps<T = AcceptableValue> extends PrimitiveProps {\n /** The value given as data when submitted with a `name`. */\n value: T\n /** When `true`, prevents the user from interacting with the item. */\n disabled?: boolean\n /**\n * Optional text used for typeahead purposes.\n *\n * By default the typeahead behavior will use the `.textContent` of the `SelectItemText` part.\n *\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n toRefs,\n} from 'vue'\nimport { injectSelectRootContext } from './SelectRoot.vue'\nimport { injectSelectContentContext } from './SelectContentImpl.vue'\nimport { SELECTION_KEYS, valueComparator } from './utils'\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<SelectItemProps>()\nconst emits = defineEmits<SelectItemEmits<T>>()\nconst { disabled } = toRefs(props)\n\nconst rootContext = injectSelectRootContext()\nconst contentContext = injectSelectContentContext()\nconst { forwardRef, currentElement } = useForwardExpose()\nconst { CollectionItem } = useCollection()\n\nconst isSelected = computed(() => valueComparator(rootContext.modelValue?.value, props.value, rootContext.by))\nconst isFocused = ref(false)\nconst textValue = ref(props.textValue ?? '')\nconst textId = useId(undefined, 'reka-select-item-text')\n\nconst SELECT_SELECT = 'select.select'\n\nasync function handleSelectCustomEvent(ev: PointerEvent | KeyboardEvent) {\n if (ev.defaultPrevented)\n return\n\n const eventDetail = { originalEvent: ev, value: props.value as T }\n handleAndDispatchCustomEvent(SELECT_SELECT, handleSelect, eventDetail)\n}\n\nasync function handleSelect(ev: SelectEvent<T>) {\n await nextTick()\n emits('select', ev)\n if (ev.defaultPrevented)\n return\n\n if (!disabled.value) {\n rootContext.onValueChange(props.value)\n if (!rootContext.multiple.value)\n rootContext.onOpenChange(false)\n }\n}\n\nasync function handlePointerMove(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (disabled.value) {\n contentContext.onItemLeave?.()\n }\n else {\n // even though safari doesn't support this option, it's acceptable\n // as it only means it might scroll a few pixels when using the pointer.\n (event.currentTarget as HTMLElement).focus({ preventScroll: true })\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (event.currentTarget === getActiveElement())\n contentContext.onItemLeave?.()\n}\n\nasync function handleKeyDown(event: KeyboardEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n const isTypingAhead = contentContext.searchRef?.value !== ''\n if (isTypingAhead && event.key === ' ')\n return\n if (SELECTION_KEYS.includes(event.key))\n handleSelectCustomEvent(event)\n // prevent page scroll if using the space key to select an item\n if (event.key === ' ')\n event.preventDefault()\n}\n\nif (props.value === '') {\n throw new Error(\n 'A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.',\n )\n}\n\nonMounted(() => {\n if (!currentElement.value)\n return\n contentContext.itemRefCallback(\n currentElement.value,\n props.value,\n props.disabled,\n )\n})\n\nprovideSelectItemContext({\n value: props.value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: (node) => {\n textValue.value = ((textValue.value || node?.textContent) ?? '').trim()\n },\n})\n</script>\n\n<template>\n <CollectionItem :value=\"{ textValue }\">\n <Primitive\n :ref=\"forwardRef\"\n role=\"option\"\n :aria-labelledby=\"textId\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n :aria-selected=\"isSelected\"\n :data-state=\"isSelected ? 'checked' : 'unchecked'\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :tabindex=\"disabled ? undefined : -1\"\n :as=\"as\"\n :as-child=\"asChild\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n @pointerup=\"handleSelectCustomEvent\"\n @pointerdown=\"(event) => {\n (event.currentTarget as HTMLElement).focus({ preventScroll: true })\n }\"\n @touchend.prevent.stop\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":["createContext","toRefs","injectSelectRootContext","injectSelectContentContext","useForwardExpose","useCollection","computed","valueComparator","ref","useId","handleAndDispatchCustomEvent","nextTick","getActiveElement","SELECTION_KEYS","onMounted"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
- import { defineComponent, toRefs, computed, ref, onMounted, openBlock, createBlock, unref, withCtx, createVNode, withModifiers, renderSlot, nextTick } from 'vue';
1
+ import { defineComponent, toRefs, computed, ref, onMounted, createBlock, openBlock, unref, withCtx, createVNode, withModifiers, renderSlot, nextTick } from 'vue';
2
2
  import { v as valueComparator, S as SELECTION_KEYS } from './utils.js';
3
3
  import { u as useCollection } from '../Collection/Collection.js';
4
+ import { c as createContext } from '../shared/createContext.js';
4
5
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
5
6
  import { u as useId } from '../shared/useId.js';
6
7
  import { P as Primitive } from '../Primitive/Primitive.js';
7
- import { c as createContext } from '../shared/createContext.js';
8
8
  import { h as handleAndDispatchCustomEvent } from '../shared/handleAndDispatchCustomEvent.js';
9
9
  import { g as getActiveElement } from '../shared/getActiveElement.js';
10
10
  import { i as injectSelectRootContext } from './SelectRoot.js';
@@ -32,7 +32,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
32
32
  const isSelected = computed(() => valueComparator(rootContext.modelValue?.value, props.value, rootContext.by));
33
33
  const isFocused = ref(false);
34
34
  const textValue = ref(props.textValue ?? "");
35
- const textId = useId(undefined, "reka-select-item-text");
35
+ const textId = useId(void 0, "reka-select-item-text");
36
36
  const SELECT_SELECT = "select.select";
37
37
  async function handleSelectCustomEvent(ev) {
38
38
  if (ev.defaultPrevented)
@@ -112,12 +112,12 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
112
112
  ref: unref(forwardRef),
113
113
  role: "option",
114
114
  "aria-labelledby": unref(textId),
115
- "data-highlighted": isFocused.value ? "" : undefined,
115
+ "data-highlighted": isFocused.value ? "" : void 0,
116
116
  "aria-selected": isSelected.value,
117
117
  "data-state": isSelected.value ? "checked" : "unchecked",
118
- "aria-disabled": unref(disabled) || undefined,
119
- "data-disabled": unref(disabled) ? "" : undefined,
120
- tabindex: unref(disabled) ? undefined : -1,
118
+ "aria-disabled": unref(disabled) || void 0,
119
+ "data-disabled": unref(disabled) ? "" : void 0,
120
+ tabindex: unref(disabled) ? void 0 : -1,
121
121
  as: _ctx.as,
122
122
  "as-child": _ctx.asChild,
123
123
  onFocus: _cache[0] || (_cache[0] = ($event) => isFocused.value = true),
@@ -1 +1 @@
1
- {"version":3,"file":"SelectItem.js","sources":["../../src/Select/SelectItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, getActiveElement, handleAndDispatchCustomEvent, useForwardExpose, useId } from '@/shared'\nimport type { AcceptableValue } from '@/shared/types'\nimport { useCollection } from '@/Collection'\n\ninterface SelectItemContext<T = AcceptableValue> {\n value: T\n textId: string\n disabled: Ref<boolean>\n isSelected: Ref<boolean>\n onItemTextChange: (node: HTMLElement | undefined) => void\n}\n\nexport const [injectSelectItemContext, provideSelectItemContext]\n = createContext<SelectItemContext>('SelectItem')\n\nexport type SelectEvent<T> = CustomEvent<{ originalEvent: PointerEvent | KeyboardEvent, value?: T }>\n\nexport type SelectItemEmits<T = AcceptableValue> = {\n /** Event handler called when the selecting item. <br> It can be prevented by calling `event.preventDefault`. */\n select: [event: SelectEvent<T>]\n}\n\nexport interface SelectItemProps<T = AcceptableValue> extends PrimitiveProps {\n /** The value given as data when submitted with a `name`. */\n value: T\n /** When `true`, prevents the user from interacting with the item. */\n disabled?: boolean\n /**\n * Optional text used for typeahead purposes.\n *\n * By default the typeahead behavior will use the `.textContent` of the `SelectItemText` part.\n *\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n toRefs,\n} from 'vue'\nimport { injectSelectRootContext } from './SelectRoot.vue'\nimport { injectSelectContentContext } from './SelectContentImpl.vue'\nimport { SELECTION_KEYS, valueComparator } from './utils'\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<SelectItemProps>()\nconst emits = defineEmits<SelectItemEmits<T>>()\nconst { disabled } = toRefs(props)\n\nconst rootContext = injectSelectRootContext()\nconst contentContext = injectSelectContentContext()\nconst { forwardRef, currentElement } = useForwardExpose()\nconst { CollectionItem } = useCollection()\n\nconst isSelected = computed(() => valueComparator(rootContext.modelValue?.value, props.value, rootContext.by))\nconst isFocused = ref(false)\nconst textValue = ref(props.textValue ?? '')\nconst textId = useId(undefined, 'reka-select-item-text')\n\nconst SELECT_SELECT = 'select.select'\n\nasync function handleSelectCustomEvent(ev: PointerEvent | KeyboardEvent) {\n if (ev.defaultPrevented)\n return\n\n const eventDetail = { originalEvent: ev, value: props.value as T }\n handleAndDispatchCustomEvent(SELECT_SELECT, handleSelect, eventDetail)\n}\n\nasync function handleSelect(ev: SelectEvent<T>) {\n await nextTick()\n emits('select', ev)\n if (ev.defaultPrevented)\n return\n\n if (!disabled.value) {\n rootContext.onValueChange(props.value)\n if (!rootContext.multiple.value)\n rootContext.onOpenChange(false)\n }\n}\n\nasync function handlePointerMove(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (disabled.value) {\n contentContext.onItemLeave?.()\n }\n else {\n // even though safari doesn't support this option, it's acceptable\n // as it only means it might scroll a few pixels when using the pointer.\n (event.currentTarget as HTMLElement).focus({ preventScroll: true })\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (event.currentTarget === getActiveElement())\n contentContext.onItemLeave?.()\n}\n\nasync function handleKeyDown(event: KeyboardEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n const isTypingAhead = contentContext.searchRef?.value !== ''\n if (isTypingAhead && event.key === ' ')\n return\n if (SELECTION_KEYS.includes(event.key))\n handleSelectCustomEvent(event)\n // prevent page scroll if using the space key to select an item\n if (event.key === ' ')\n event.preventDefault()\n}\n\nif (props.value === '') {\n throw new Error(\n 'A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.',\n )\n}\n\nonMounted(() => {\n if (!currentElement.value)\n return\n contentContext.itemRefCallback(\n currentElement.value,\n props.value,\n props.disabled,\n )\n})\n\nprovideSelectItemContext({\n value: props.value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: (node) => {\n textValue.value = ((textValue.value || node?.textContent) ?? '').trim()\n },\n})\n</script>\n\n<template>\n <CollectionItem :value=\"{ textValue }\">\n <Primitive\n :ref=\"forwardRef\"\n role=\"option\"\n :aria-labelledby=\"textId\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n :aria-selected=\"isSelected\"\n :data-state=\"isSelected ? 'checked' : 'unchecked'\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :tabindex=\"disabled ? undefined : -1\"\n :as=\"as\"\n :as-child=\"asChild\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n @pointerup=\"handleSelectCustomEvent\"\n @pointerdown=\"(event) => {\n (event.currentTarget as HTMLElement).focus({ preventScroll: true })\n }\"\n @touchend.prevent.stop\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectItem.js","sources":["../../src/Select/SelectItem.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { PrimitiveProps } from '@/Primitive'\nimport { createContext, getActiveElement, handleAndDispatchCustomEvent, useForwardExpose, useId } from '@/shared'\nimport type { AcceptableValue } from '@/shared/types'\nimport { useCollection } from '@/Collection'\n\ninterface SelectItemContext<T = AcceptableValue> {\n value: T\n textId: string\n disabled: Ref<boolean>\n isSelected: Ref<boolean>\n onItemTextChange: (node: HTMLElement | undefined) => void\n}\n\nexport const [injectSelectItemContext, provideSelectItemContext]\n = createContext<SelectItemContext>('SelectItem')\n\nexport type SelectEvent<T> = CustomEvent<{ originalEvent: PointerEvent | KeyboardEvent, value?: T }>\n\nexport type SelectItemEmits<T = AcceptableValue> = {\n /** Event handler called when the selecting item. <br> It can be prevented by calling `event.preventDefault`. */\n select: [event: SelectEvent<T>]\n}\n\nexport interface SelectItemProps<T = AcceptableValue> extends PrimitiveProps {\n /** The value given as data when submitted with a `name`. */\n value: T\n /** When `true`, prevents the user from interacting with the item. */\n disabled?: boolean\n /**\n * Optional text used for typeahead purposes.\n *\n * By default the typeahead behavior will use the `.textContent` of the `SelectItemText` part.\n *\n * Use this when the content is complex, or you have non-textual content inside.\n */\n textValue?: string\n}\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport {\n computed,\n nextTick,\n onMounted,\n ref,\n toRefs,\n} from 'vue'\nimport { injectSelectRootContext } from './SelectRoot.vue'\nimport { injectSelectContentContext } from './SelectContentImpl.vue'\nimport { SELECTION_KEYS, valueComparator } from './utils'\nimport { Primitive } from '@/Primitive'\n\nconst props = defineProps<SelectItemProps>()\nconst emits = defineEmits<SelectItemEmits<T>>()\nconst { disabled } = toRefs(props)\n\nconst rootContext = injectSelectRootContext()\nconst contentContext = injectSelectContentContext()\nconst { forwardRef, currentElement } = useForwardExpose()\nconst { CollectionItem } = useCollection()\n\nconst isSelected = computed(() => valueComparator(rootContext.modelValue?.value, props.value, rootContext.by))\nconst isFocused = ref(false)\nconst textValue = ref(props.textValue ?? '')\nconst textId = useId(undefined, 'reka-select-item-text')\n\nconst SELECT_SELECT = 'select.select'\n\nasync function handleSelectCustomEvent(ev: PointerEvent | KeyboardEvent) {\n if (ev.defaultPrevented)\n return\n\n const eventDetail = { originalEvent: ev, value: props.value as T }\n handleAndDispatchCustomEvent(SELECT_SELECT, handleSelect, eventDetail)\n}\n\nasync function handleSelect(ev: SelectEvent<T>) {\n await nextTick()\n emits('select', ev)\n if (ev.defaultPrevented)\n return\n\n if (!disabled.value) {\n rootContext.onValueChange(props.value)\n if (!rootContext.multiple.value)\n rootContext.onOpenChange(false)\n }\n}\n\nasync function handlePointerMove(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (disabled.value) {\n contentContext.onItemLeave?.()\n }\n else {\n // even though safari doesn't support this option, it's acceptable\n // as it only means it might scroll a few pixels when using the pointer.\n (event.currentTarget as HTMLElement).focus({ preventScroll: true })\n }\n}\n\nasync function handlePointerLeave(event: PointerEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n if (event.currentTarget === getActiveElement())\n contentContext.onItemLeave?.()\n}\n\nasync function handleKeyDown(event: KeyboardEvent) {\n await nextTick()\n if (event.defaultPrevented)\n return\n const isTypingAhead = contentContext.searchRef?.value !== ''\n if (isTypingAhead && event.key === ' ')\n return\n if (SELECTION_KEYS.includes(event.key))\n handleSelectCustomEvent(event)\n // prevent page scroll if using the space key to select an item\n if (event.key === ' ')\n event.preventDefault()\n}\n\nif (props.value === '') {\n throw new Error(\n 'A <SelectItem /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.',\n )\n}\n\nonMounted(() => {\n if (!currentElement.value)\n return\n contentContext.itemRefCallback(\n currentElement.value,\n props.value,\n props.disabled,\n )\n})\n\nprovideSelectItemContext({\n value: props.value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: (node) => {\n textValue.value = ((textValue.value || node?.textContent) ?? '').trim()\n },\n})\n</script>\n\n<template>\n <CollectionItem :value=\"{ textValue }\">\n <Primitive\n :ref=\"forwardRef\"\n role=\"option\"\n :aria-labelledby=\"textId\"\n :data-highlighted=\"isFocused ? '' : undefined\"\n :aria-selected=\"isSelected\"\n :data-state=\"isSelected ? 'checked' : 'unchecked'\"\n :aria-disabled=\"disabled || undefined\"\n :data-disabled=\"disabled ? '' : undefined\"\n :tabindex=\"disabled ? undefined : -1\"\n :as=\"as\"\n :as-child=\"asChild\"\n @focus=\"isFocused = true\"\n @blur=\"isFocused = false\"\n @pointerup=\"handleSelectCustomEvent\"\n @pointerdown=\"(event) => {\n (event.currentTarget as HTMLElement).focus({ preventScroll: true })\n }\"\n @touchend.prevent.stop\n @pointermove=\"handlePointerMove\"\n @pointerleave=\"handlePointerLeave\"\n @keydown=\"handleKeyDown\"\n >\n <slot />\n </Primitive>\n </CollectionItem>\n</template>\n"],"names":[],"mappings":"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"}
@@ -6,8 +6,8 @@ const Collection_Collection = require('../Collection/Collection.cjs');
6
6
  const core = require('@vueuse/core');
7
7
  const Select_SelectContentImpl = require('./SelectContentImpl.cjs');
8
8
  const shared_useForwardExpose = require('../shared/useForwardExpose.cjs');
9
- const Primitive_Primitive = require('../Primitive/Primitive.cjs');
10
9
  const shared_createContext = require('../shared/createContext.cjs');
10
+ const Primitive_Primitive = require('../Primitive/Primitive.cjs');
11
11
  const Select_SelectRoot = require('./SelectRoot.cjs');
12
12
  const shared_clamp = require('../shared/clamp.cjs');
13
13
 
@@ -1,11 +1,11 @@
1
- import { defineComponent, ref, onMounted, nextTick, openBlock, createElementBlock, normalizeStyle, createVNode, unref, mergeProps, withCtx, renderSlot } from 'vue';
1
+ import { defineComponent, ref, onMounted, nextTick, createElementBlock, openBlock, normalizeStyle, createVNode, unref, mergeProps, withCtx, renderSlot } from 'vue';
2
2
  import { C as CONTENT_MARGIN } from './utils.js';
3
3
  import { u as useCollection } from '../Collection/Collection.js';
4
4
  import { useResizeObserver } from '@vueuse/core';
5
5
  import { i as injectSelectContentContext } from './SelectContentImpl.js';
6
6
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
7
- import { P as Primitive } from '../Primitive/Primitive.js';
8
7
  import { c as createContext } from '../shared/createContext.js';
8
+ import { P as Primitive } from '../Primitive/Primitive.js';
9
9
  import { i as injectSelectRootContext } from './SelectRoot.js';
10
10
  import { c as clamp } from '../shared/clamp.js';
11
11
 
@@ -1,4 +1,4 @@
1
- import { defineComponent, unref, openBlock, createBlock, mergeProps, withCtx, renderSlot, createCommentVNode } from 'vue';
1
+ import { defineComponent, createBlock, createCommentVNode, unref, openBlock, mergeProps, withCtx, renderSlot } from 'vue';
2
2
  import { i as injectSelectItemContext } from './SelectItem.js';
3
3
  import { P as Primitive } from '../Primitive/Primitive.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { defineComponent, computed, onMounted, onBeforeUnmount, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
1
+ import { defineComponent, computed, onMounted, onBeforeUnmount, createBlock, openBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
2
2
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
3
3
  import { P as Primitive } from '../Primitive/Primitive.js';
4
4
  import { i as injectSelectRootContext } from './SelectRoot.js';
@@ -1,4 +1,4 @@
1
- import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
1
+ import { defineComponent, createBlock, openBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
2
2
  import { i as injectSelectGroupContext } from './SelectGroup.js';
3
3
  import { P as Primitive } from '../Primitive/Primitive.js';
4
4
 
@@ -1,4 +1,4 @@
1
- import { defineComponent, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
1
+ import { defineComponent, createBlock, openBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
2
2
  import '@floating-ui/vue';
3
3
  import { C as CONTENT_MARGIN } from './utils.js';
4
4
  import { _ as _sfc_main$1 } from '../Popper/PopperContent.js';
@@ -1,4 +1,4 @@
1
- import { defineComponent, openBlock, createBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';
1
+ import { defineComponent, createBlock, openBlock, unref, normalizeProps, guardReactiveProps, withCtx, renderSlot } from 'vue';
2
2
  import { _ as _sfc_main$1 } from '../Teleport/Teleport.js';
3
3
 
4
4
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -6,9 +6,9 @@ const Popper_PopperRoot = require('../Popper/PopperRoot.cjs');
6
6
  const core = require('@vueuse/core');
7
7
  const Select_utils = require('./utils.cjs');
8
8
  const Collection_Collection = require('../Collection/Collection.cjs');
9
+ const shared_createContext = require('../shared/createContext.cjs');
9
10
  const shared_useDirection = require('../shared/useDirection.cjs');
10
11
  const shared_useFormControl = require('../shared/useFormControl.cjs');
11
- const shared_createContext = require('../shared/createContext.cjs');
12
12
  const shared_nullish = require('../shared/nullish.cjs');
13
13
 
14
14
  const _hoisted_1 = {
@@ -22,10 +22,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
22
22
  },
23
23
  __name: "SelectRoot",
24
24
  props: {
25
- open: { type: Boolean, default: undefined },
25
+ open: { type: Boolean, default: void 0 },
26
26
  defaultOpen: { type: Boolean },
27
27
  defaultValue: {},
28
- modelValue: { default: undefined },
28
+ modelValue: { default: void 0 },
29
29
  by: {},
30
30
  dir: {},
31
31
  multiple: { type: Boolean },
@@ -40,13 +40,13 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
40
40
  const emits = __emit;
41
41
  const { required, disabled, multiple, dir: propDir } = vue.toRefs(props);
42
42
  const modelValue = core.useVModel(props, "modelValue", emits, {
43
- defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),
44
- passive: props.modelValue === undefined,
43
+ defaultValue: props.defaultValue ?? (multiple.value ? [] : void 0),
44
+ passive: props.modelValue === void 0,
45
45
  deep: true
46
46
  });
47
47
  const open = core.useVModel(props, "open", emits, {
48
48
  defaultValue: props.defaultOpen,
49
- passive: props.open === undefined
49
+ passive: props.open === void 0
50
50
  });
51
51
  const triggerElement = vue.ref();
52
52
  const valueElement = vue.ref();
@@ -1 +1 @@
1
- {"version":3,"file":"SelectRoot.cjs","sources":["../../src/Select/SelectRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { AcceptableValue, Direction, FormFieldProps } from '@/shared/types'\nimport { createContext, isNullish, useDirection, useFormControl } from '@/shared'\nimport { compare } from './utils'\nimport { useCollection } from '@/Collection'\n\nexport interface SelectRootProps<T = AcceptableValue> extends FormFieldProps {\n /** The controlled open state of the Select. Can be bind as `v-model:open`. */\n open?: boolean\n /** The open state of the select when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The value of the select when initially rendered. Use when you do not need to control the state of the Select */\n defaultValue?: T | Array<T>\n /** The controlled value of the Select. Can be bind as `v-model`. */\n modelValue?: T | Array<T>\n /** Use this to compare objects by a particular field, or pass your own comparison function for complete control over how objects are compared. */\n by?: string | ((a: T, b: T) => boolean)\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** Whether multiple options can be selected or not. */\n multiple?: boolean\n /** Native html input `autocomplete` attribute. */\n autocomplete?: string\n /** When `true`, prevents the user from interacting with Select */\n disabled?: boolean\n}\n\nexport type SelectRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: T]\n /** Event handler called when the open state of the context menu changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface SelectRootContext<T> {\n triggerElement: Ref<HTMLElement | undefined>\n onTriggerChange: (node: HTMLElement | undefined) => void\n valueElement: Ref<HTMLElement | undefined>\n onValueElementChange: (node: HTMLElement) => void\n contentId: string\n modelValue: Ref<T | Array<T> | undefined>\n onValueChange: (value: T) => void\n open: Ref<boolean>\n multiple: Ref<boolean>\n required?: Ref<boolean>\n by?: string | ((a: T, b: T) => boolean)\n onOpenChange: (open: boolean) => void\n dir: Ref<Direction>\n triggerPointerDownPosRef: Ref<{ x: number, y: number } | null>\n isEmptyModelValue: Ref<boolean>\n disabled?: Ref<boolean>\n\n optionsSet: Ref<Set<SelectOption>>\n onOptionAdd: (option: SelectOption) => void\n onOptionRemove: (option: SelectOption) => void\n}\n\nexport const [injectSelectRootContext, provideSelectRootContext]\n = createContext<SelectRootContext<AcceptableValue>>('SelectRoot')\n\ninterface SelectOption { value: any, disabled?: boolean, textContent: string }\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { computed, ref, toRefs } from 'vue'\nimport BubbleSelect from './BubbleSelect.vue'\nimport { PopperRoot } from '@/Popper'\nimport { useVModel } from '@vueuse/core'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<SelectRootProps>(), {\n modelValue: undefined,\n open: undefined,\n})\nconst emits = defineEmits<SelectRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { required, disabled, multiple, dir: propDir } = toRefs(props)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n}) as Ref<T | T[] | undefined>\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\nconst valueElement = ref<HTMLElement>()\nconst triggerPointerDownPosRef = ref({\n x: 0,\n y: 0,\n})\n\nconst isEmptyModelValue = computed(() => {\n if (multiple.value && Array.isArray(modelValue.value))\n return modelValue.value?.length === 0\n else\n return isNullish(modelValue.value)\n})\n\nuseCollection({ isProvider: true })\nconst dir = useDirection(propDir)\n\nconst isFormControl = useFormControl(triggerElement)\nconst optionsSet = ref<Set<SelectOption>>(new Set())\n\n// The native `select` only associates the correct default value if the corresponding\n// `option` is rendered as a child **at the same time** as itself.\n// Because it might take a few renders for our items to gather the information to build\n// the native `option`(s), we generate a key on the `select` to make sure Vue re-builds it\n// each time the options change.\nconst nativeSelectKey = computed(() => {\n return Array.from(optionsSet.value)\n .map(option => option.value)\n .join(';')\n})\n\nfunction handleValueChange(value: T) {\n if (multiple.value) {\n const array = Array.isArray(modelValue.value) ? [...modelValue.value] : []\n const index = array.findIndex(i => compare(i, value, props.by))\n index === -1 ? array.push(value) : array.splice(index, 1)\n modelValue.value = [...array]\n }\n else {\n modelValue.value = value\n }\n}\n\nprovideSelectRootContext({\n triggerElement,\n onTriggerChange: (node) => {\n triggerElement.value = node\n },\n valueElement,\n onValueElementChange: (node) => {\n valueElement.value = node\n },\n contentId: '',\n modelValue,\n // @ts-expect-error Missing infer for AcceptableValue\n onValueChange: handleValueChange,\n by: props.by,\n open,\n multiple,\n required,\n onOpenChange: (value) => {\n open.value = value\n },\n dir,\n triggerPointerDownPosRef,\n disabled,\n isEmptyModelValue,\n\n optionsSet,\n onOptionAdd: option => optionsSet.value.add(option),\n onOptionRemove: option => optionsSet.value.delete(option),\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot\n :model-value=\"modelValue\"\n :open=\"open\"\n />\n\n <BubbleSelect\n v-if=\"isFormControl\"\n :key=\"nativeSelectKey\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n :multiple=\"multiple\"\n :required=\"required\"\n :name=\"name\"\n :autocomplete=\"autocomplete\"\n :disabled=\"disabled\"\n :value=\"modelValue\"\n >\n <option\n v-if=\"isNullish(modelValue)\"\n value=\"\"\n />\n <option\n v-for=\"option in Array.from(optionsSet)\"\n :key=\"option.value ?? ''\"\n v-bind=\"option\"\n />\n </BubbleSelect>\n </PopperRoot>\n</template>\n"],"names":["createContext","toRefs","useVModel","ref","computed","isNullish","useCollection","useDirection","useFormControl","compare"],"mappings":"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"}
1
+ {"version":3,"file":"SelectRoot.cjs","sources":["../../src/Select/SelectRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { AcceptableValue, Direction, FormFieldProps } from '@/shared/types'\nimport { createContext, isNullish, useDirection, useFormControl } from '@/shared'\nimport { compare } from './utils'\nimport { useCollection } from '@/Collection'\n\nexport interface SelectRootProps<T = AcceptableValue> extends FormFieldProps {\n /** The controlled open state of the Select. Can be bind as `v-model:open`. */\n open?: boolean\n /** The open state of the select when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The value of the select when initially rendered. Use when you do not need to control the state of the Select */\n defaultValue?: T | Array<T>\n /** The controlled value of the Select. Can be bind as `v-model`. */\n modelValue?: T | Array<T>\n /** Use this to compare objects by a particular field, or pass your own comparison function for complete control over how objects are compared. */\n by?: string | ((a: T, b: T) => boolean)\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** Whether multiple options can be selected or not. */\n multiple?: boolean\n /** Native html input `autocomplete` attribute. */\n autocomplete?: string\n /** When `true`, prevents the user from interacting with Select */\n disabled?: boolean\n}\n\nexport type SelectRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: T]\n /** Event handler called when the open state of the context menu changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface SelectRootContext<T> {\n triggerElement: Ref<HTMLElement | undefined>\n onTriggerChange: (node: HTMLElement | undefined) => void\n valueElement: Ref<HTMLElement | undefined>\n onValueElementChange: (node: HTMLElement) => void\n contentId: string\n modelValue: Ref<T | Array<T> | undefined>\n onValueChange: (value: T) => void\n open: Ref<boolean>\n multiple: Ref<boolean>\n required?: Ref<boolean>\n by?: string | ((a: T, b: T) => boolean)\n onOpenChange: (open: boolean) => void\n dir: Ref<Direction>\n triggerPointerDownPosRef: Ref<{ x: number, y: number } | null>\n isEmptyModelValue: Ref<boolean>\n disabled?: Ref<boolean>\n\n optionsSet: Ref<Set<SelectOption>>\n onOptionAdd: (option: SelectOption) => void\n onOptionRemove: (option: SelectOption) => void\n}\n\nexport const [injectSelectRootContext, provideSelectRootContext]\n = createContext<SelectRootContext<AcceptableValue>>('SelectRoot')\n\ninterface SelectOption { value: any, disabled?: boolean, textContent: string }\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { computed, ref, toRefs } from 'vue'\nimport BubbleSelect from './BubbleSelect.vue'\nimport { PopperRoot } from '@/Popper'\nimport { useVModel } from '@vueuse/core'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<SelectRootProps>(), {\n modelValue: undefined,\n open: undefined,\n})\nconst emits = defineEmits<SelectRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { required, disabled, multiple, dir: propDir } = toRefs(props)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n}) as Ref<T | T[] | undefined>\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\nconst valueElement = ref<HTMLElement>()\nconst triggerPointerDownPosRef = ref({\n x: 0,\n y: 0,\n})\n\nconst isEmptyModelValue = computed(() => {\n if (multiple.value && Array.isArray(modelValue.value))\n return modelValue.value?.length === 0\n else\n return isNullish(modelValue.value)\n})\n\nuseCollection({ isProvider: true })\nconst dir = useDirection(propDir)\n\nconst isFormControl = useFormControl(triggerElement)\nconst optionsSet = ref<Set<SelectOption>>(new Set())\n\n// The native `select` only associates the correct default value if the corresponding\n// `option` is rendered as a child **at the same time** as itself.\n// Because it might take a few renders for our items to gather the information to build\n// the native `option`(s), we generate a key on the `select` to make sure Vue re-builds it\n// each time the options change.\nconst nativeSelectKey = computed(() => {\n return Array.from(optionsSet.value)\n .map(option => option.value)\n .join(';')\n})\n\nfunction handleValueChange(value: T) {\n if (multiple.value) {\n const array = Array.isArray(modelValue.value) ? [...modelValue.value] : []\n const index = array.findIndex(i => compare(i, value, props.by))\n index === -1 ? array.push(value) : array.splice(index, 1)\n modelValue.value = [...array]\n }\n else {\n modelValue.value = value\n }\n}\n\nprovideSelectRootContext({\n triggerElement,\n onTriggerChange: (node) => {\n triggerElement.value = node\n },\n valueElement,\n onValueElementChange: (node) => {\n valueElement.value = node\n },\n contentId: '',\n modelValue,\n // @ts-expect-error Missing infer for AcceptableValue\n onValueChange: handleValueChange,\n by: props.by,\n open,\n multiple,\n required,\n onOpenChange: (value) => {\n open.value = value\n },\n dir,\n triggerPointerDownPosRef,\n disabled,\n isEmptyModelValue,\n\n optionsSet,\n onOptionAdd: option => optionsSet.value.add(option),\n onOptionRemove: option => optionsSet.value.delete(option),\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot\n :model-value=\"modelValue\"\n :open=\"open\"\n />\n\n <BubbleSelect\n v-if=\"isFormControl\"\n :key=\"nativeSelectKey\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n :multiple=\"multiple\"\n :required=\"required\"\n :name=\"name\"\n :autocomplete=\"autocomplete\"\n :disabled=\"disabled\"\n :value=\"modelValue\"\n >\n <option\n v-if=\"isNullish(modelValue)\"\n value=\"\"\n />\n <option\n v-for=\"option in Array.from(optionsSet)\"\n :key=\"option.value ?? ''\"\n v-bind=\"option\"\n />\n </BubbleSelect>\n </PopperRoot>\n</template>\n"],"names":["createContext","toRefs","useVModel","ref","computed","isNullish","useCollection","useDirection","useFormControl","compare"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
- import { defineComponent, toRefs, ref, computed, openBlock, createBlock, unref, withCtx, renderSlot, createElementBlock, createCommentVNode, Fragment, renderList, mergeProps } from 'vue';
1
+ import { defineComponent, toRefs, ref, computed, createBlock, openBlock, unref, withCtx, renderSlot, createCommentVNode, createElementBlock, Fragment, renderList, mergeProps } from 'vue';
2
2
  import { _ as _sfc_main$2 } from './BubbleSelect.js';
3
3
  import { _ as _sfc_main$1 } from '../Popper/PopperRoot.js';
4
4
  import { useVModel } from '@vueuse/core';
5
5
  import { c as compare } from './utils.js';
6
6
  import { u as useCollection } from '../Collection/Collection.js';
7
+ import { c as createContext } from '../shared/createContext.js';
7
8
  import { u as useDirection } from '../shared/useDirection.js';
8
9
  import { u as useFormControl } from '../shared/useFormControl.js';
9
- import { c as createContext } from '../shared/createContext.js';
10
10
  import { i as isNullish } from '../shared/nullish.js';
11
11
 
12
12
  const _hoisted_1 = {
@@ -20,10 +20,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
20
20
  },
21
21
  __name: "SelectRoot",
22
22
  props: {
23
- open: { type: Boolean, default: undefined },
23
+ open: { type: Boolean, default: void 0 },
24
24
  defaultOpen: { type: Boolean },
25
25
  defaultValue: {},
26
- modelValue: { default: undefined },
26
+ modelValue: { default: void 0 },
27
27
  by: {},
28
28
  dir: {},
29
29
  multiple: { type: Boolean },
@@ -38,13 +38,13 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
38
38
  const emits = __emit;
39
39
  const { required, disabled, multiple, dir: propDir } = toRefs(props);
40
40
  const modelValue = useVModel(props, "modelValue", emits, {
41
- defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),
42
- passive: props.modelValue === undefined,
41
+ defaultValue: props.defaultValue ?? (multiple.value ? [] : void 0),
42
+ passive: props.modelValue === void 0,
43
43
  deep: true
44
44
  });
45
45
  const open = useVModel(props, "open", emits, {
46
46
  defaultValue: props.defaultOpen,
47
- passive: props.open === undefined
47
+ passive: props.open === void 0
48
48
  });
49
49
  const triggerElement = ref();
50
50
  const valueElement = ref();
@@ -1 +1 @@
1
- {"version":3,"file":"SelectRoot.js","sources":["../../src/Select/SelectRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { AcceptableValue, Direction, FormFieldProps } from '@/shared/types'\nimport { createContext, isNullish, useDirection, useFormControl } from '@/shared'\nimport { compare } from './utils'\nimport { useCollection } from '@/Collection'\n\nexport interface SelectRootProps<T = AcceptableValue> extends FormFieldProps {\n /** The controlled open state of the Select. Can be bind as `v-model:open`. */\n open?: boolean\n /** The open state of the select when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The value of the select when initially rendered. Use when you do not need to control the state of the Select */\n defaultValue?: T | Array<T>\n /** The controlled value of the Select. Can be bind as `v-model`. */\n modelValue?: T | Array<T>\n /** Use this to compare objects by a particular field, or pass your own comparison function for complete control over how objects are compared. */\n by?: string | ((a: T, b: T) => boolean)\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** Whether multiple options can be selected or not. */\n multiple?: boolean\n /** Native html input `autocomplete` attribute. */\n autocomplete?: string\n /** When `true`, prevents the user from interacting with Select */\n disabled?: boolean\n}\n\nexport type SelectRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: T]\n /** Event handler called when the open state of the context menu changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface SelectRootContext<T> {\n triggerElement: Ref<HTMLElement | undefined>\n onTriggerChange: (node: HTMLElement | undefined) => void\n valueElement: Ref<HTMLElement | undefined>\n onValueElementChange: (node: HTMLElement) => void\n contentId: string\n modelValue: Ref<T | Array<T> | undefined>\n onValueChange: (value: T) => void\n open: Ref<boolean>\n multiple: Ref<boolean>\n required?: Ref<boolean>\n by?: string | ((a: T, b: T) => boolean)\n onOpenChange: (open: boolean) => void\n dir: Ref<Direction>\n triggerPointerDownPosRef: Ref<{ x: number, y: number } | null>\n isEmptyModelValue: Ref<boolean>\n disabled?: Ref<boolean>\n\n optionsSet: Ref<Set<SelectOption>>\n onOptionAdd: (option: SelectOption) => void\n onOptionRemove: (option: SelectOption) => void\n}\n\nexport const [injectSelectRootContext, provideSelectRootContext]\n = createContext<SelectRootContext<AcceptableValue>>('SelectRoot')\n\ninterface SelectOption { value: any, disabled?: boolean, textContent: string }\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { computed, ref, toRefs } from 'vue'\nimport BubbleSelect from './BubbleSelect.vue'\nimport { PopperRoot } from '@/Popper'\nimport { useVModel } from '@vueuse/core'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<SelectRootProps>(), {\n modelValue: undefined,\n open: undefined,\n})\nconst emits = defineEmits<SelectRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { required, disabled, multiple, dir: propDir } = toRefs(props)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n}) as Ref<T | T[] | undefined>\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\nconst valueElement = ref<HTMLElement>()\nconst triggerPointerDownPosRef = ref({\n x: 0,\n y: 0,\n})\n\nconst isEmptyModelValue = computed(() => {\n if (multiple.value && Array.isArray(modelValue.value))\n return modelValue.value?.length === 0\n else\n return isNullish(modelValue.value)\n})\n\nuseCollection({ isProvider: true })\nconst dir = useDirection(propDir)\n\nconst isFormControl = useFormControl(triggerElement)\nconst optionsSet = ref<Set<SelectOption>>(new Set())\n\n// The native `select` only associates the correct default value if the corresponding\n// `option` is rendered as a child **at the same time** as itself.\n// Because it might take a few renders for our items to gather the information to build\n// the native `option`(s), we generate a key on the `select` to make sure Vue re-builds it\n// each time the options change.\nconst nativeSelectKey = computed(() => {\n return Array.from(optionsSet.value)\n .map(option => option.value)\n .join(';')\n})\n\nfunction handleValueChange(value: T) {\n if (multiple.value) {\n const array = Array.isArray(modelValue.value) ? [...modelValue.value] : []\n const index = array.findIndex(i => compare(i, value, props.by))\n index === -1 ? array.push(value) : array.splice(index, 1)\n modelValue.value = [...array]\n }\n else {\n modelValue.value = value\n }\n}\n\nprovideSelectRootContext({\n triggerElement,\n onTriggerChange: (node) => {\n triggerElement.value = node\n },\n valueElement,\n onValueElementChange: (node) => {\n valueElement.value = node\n },\n contentId: '',\n modelValue,\n // @ts-expect-error Missing infer for AcceptableValue\n onValueChange: handleValueChange,\n by: props.by,\n open,\n multiple,\n required,\n onOpenChange: (value) => {\n open.value = value\n },\n dir,\n triggerPointerDownPosRef,\n disabled,\n isEmptyModelValue,\n\n optionsSet,\n onOptionAdd: option => optionsSet.value.add(option),\n onOptionRemove: option => optionsSet.value.delete(option),\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot\n :model-value=\"modelValue\"\n :open=\"open\"\n />\n\n <BubbleSelect\n v-if=\"isFormControl\"\n :key=\"nativeSelectKey\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n :multiple=\"multiple\"\n :required=\"required\"\n :name=\"name\"\n :autocomplete=\"autocomplete\"\n :disabled=\"disabled\"\n :value=\"modelValue\"\n >\n <option\n v-if=\"isNullish(modelValue)\"\n value=\"\"\n />\n <option\n v-for=\"option in Array.from(optionsSet)\"\n :key=\"option.value ?? ''\"\n v-bind=\"option\"\n />\n </BubbleSelect>\n </PopperRoot>\n</template>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SelectRoot.js","sources":["../../src/Select/SelectRoot.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { Ref } from 'vue'\nimport type { AcceptableValue, Direction, FormFieldProps } from '@/shared/types'\nimport { createContext, isNullish, useDirection, useFormControl } from '@/shared'\nimport { compare } from './utils'\nimport { useCollection } from '@/Collection'\n\nexport interface SelectRootProps<T = AcceptableValue> extends FormFieldProps {\n /** The controlled open state of the Select. Can be bind as `v-model:open`. */\n open?: boolean\n /** The open state of the select when it is initially rendered. Use when you do not need to control its open state. */\n defaultOpen?: boolean\n /** The value of the select when initially rendered. Use when you do not need to control the state of the Select */\n defaultValue?: T | Array<T>\n /** The controlled value of the Select. Can be bind as `v-model`. */\n modelValue?: T | Array<T>\n /** Use this to compare objects by a particular field, or pass your own comparison function for complete control over how objects are compared. */\n by?: string | ((a: T, b: T) => boolean)\n /** The reading direction of the combobox when applicable. <br> If omitted, inherits globally from `ConfigProvider` or assumes LTR (left-to-right) reading mode. */\n dir?: Direction\n /** Whether multiple options can be selected or not. */\n multiple?: boolean\n /** Native html input `autocomplete` attribute. */\n autocomplete?: string\n /** When `true`, prevents the user from interacting with Select */\n disabled?: boolean\n}\n\nexport type SelectRootEmits<T = AcceptableValue> = {\n /** Event handler called when the value changes. */\n 'update:modelValue': [value: T]\n /** Event handler called when the open state of the context menu changes. */\n 'update:open': [value: boolean]\n}\n\nexport interface SelectRootContext<T> {\n triggerElement: Ref<HTMLElement | undefined>\n onTriggerChange: (node: HTMLElement | undefined) => void\n valueElement: Ref<HTMLElement | undefined>\n onValueElementChange: (node: HTMLElement) => void\n contentId: string\n modelValue: Ref<T | Array<T> | undefined>\n onValueChange: (value: T) => void\n open: Ref<boolean>\n multiple: Ref<boolean>\n required?: Ref<boolean>\n by?: string | ((a: T, b: T) => boolean)\n onOpenChange: (open: boolean) => void\n dir: Ref<Direction>\n triggerPointerDownPosRef: Ref<{ x: number, y: number } | null>\n isEmptyModelValue: Ref<boolean>\n disabled?: Ref<boolean>\n\n optionsSet: Ref<Set<SelectOption>>\n onOptionAdd: (option: SelectOption) => void\n onOptionRemove: (option: SelectOption) => void\n}\n\nexport const [injectSelectRootContext, provideSelectRootContext]\n = createContext<SelectRootContext<AcceptableValue>>('SelectRoot')\n\ninterface SelectOption { value: any, disabled?: boolean, textContent: string }\n</script>\n\n<script setup lang=\"ts\" generic=\"T extends AcceptableValue = AcceptableValue\">\nimport { computed, ref, toRefs } from 'vue'\nimport BubbleSelect from './BubbleSelect.vue'\nimport { PopperRoot } from '@/Popper'\nimport { useVModel } from '@vueuse/core'\n\ndefineOptions({\n inheritAttrs: false,\n})\n\nconst props = withDefaults(defineProps<SelectRootProps>(), {\n modelValue: undefined,\n open: undefined,\n})\nconst emits = defineEmits<SelectRootEmits>()\n\ndefineSlots<{\n default: (props: {\n /** Current input values */\n modelValue: typeof modelValue.value\n /** Current open state */\n open: typeof open.value\n }) => any\n}>()\n\nconst { required, disabled, multiple, dir: propDir } = toRefs(props)\n\nconst modelValue = useVModel(props, 'modelValue', emits, {\n defaultValue: props.defaultValue ?? (multiple.value ? [] : undefined),\n passive: (props.modelValue === undefined) as false,\n deep: true,\n}) as Ref<T | T[] | undefined>\n\nconst open = useVModel(props, 'open', emits, {\n defaultValue: props.defaultOpen,\n passive: (props.open === undefined) as false,\n}) as Ref<boolean>\n\nconst triggerElement = ref<HTMLElement>()\nconst valueElement = ref<HTMLElement>()\nconst triggerPointerDownPosRef = ref({\n x: 0,\n y: 0,\n})\n\nconst isEmptyModelValue = computed(() => {\n if (multiple.value && Array.isArray(modelValue.value))\n return modelValue.value?.length === 0\n else\n return isNullish(modelValue.value)\n})\n\nuseCollection({ isProvider: true })\nconst dir = useDirection(propDir)\n\nconst isFormControl = useFormControl(triggerElement)\nconst optionsSet = ref<Set<SelectOption>>(new Set())\n\n// The native `select` only associates the correct default value if the corresponding\n// `option` is rendered as a child **at the same time** as itself.\n// Because it might take a few renders for our items to gather the information to build\n// the native `option`(s), we generate a key on the `select` to make sure Vue re-builds it\n// each time the options change.\nconst nativeSelectKey = computed(() => {\n return Array.from(optionsSet.value)\n .map(option => option.value)\n .join(';')\n})\n\nfunction handleValueChange(value: T) {\n if (multiple.value) {\n const array = Array.isArray(modelValue.value) ? [...modelValue.value] : []\n const index = array.findIndex(i => compare(i, value, props.by))\n index === -1 ? array.push(value) : array.splice(index, 1)\n modelValue.value = [...array]\n }\n else {\n modelValue.value = value\n }\n}\n\nprovideSelectRootContext({\n triggerElement,\n onTriggerChange: (node) => {\n triggerElement.value = node\n },\n valueElement,\n onValueElementChange: (node) => {\n valueElement.value = node\n },\n contentId: '',\n modelValue,\n // @ts-expect-error Missing infer for AcceptableValue\n onValueChange: handleValueChange,\n by: props.by,\n open,\n multiple,\n required,\n onOpenChange: (value) => {\n open.value = value\n },\n dir,\n triggerPointerDownPosRef,\n disabled,\n isEmptyModelValue,\n\n optionsSet,\n onOptionAdd: option => optionsSet.value.add(option),\n onOptionRemove: option => optionsSet.value.delete(option),\n})\n</script>\n\n<template>\n <PopperRoot>\n <slot\n :model-value=\"modelValue\"\n :open=\"open\"\n />\n\n <BubbleSelect\n v-if=\"isFormControl\"\n :key=\"nativeSelectKey\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n :multiple=\"multiple\"\n :required=\"required\"\n :name=\"name\"\n :autocomplete=\"autocomplete\"\n :disabled=\"disabled\"\n :value=\"modelValue\"\n >\n <option\n v-if=\"isNullish(modelValue)\"\n value=\"\"\n />\n <option\n v-for=\"option in Array.from(optionsSet)\"\n :key=\"option.value ?? ''\"\n v-bind=\"option\"\n />\n </BubbleSelect>\n </PopperRoot>\n</template>\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, watchEffect, onBeforeUnmount, openBlock, createBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
1
+ import { defineComponent, ref, watchEffect, onBeforeUnmount, createBlock, openBlock, unref, mergeProps, withCtx, renderSlot } from 'vue';
2
2
  import { u as useCollection } from '../Collection/Collection.js';
3
3
  import { g as getActiveElement } from '../shared/getActiveElement.js';
4
4
  import { P as Primitive } from '../Primitive/Primitive.js';
@@ -14,7 +14,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
14
14
  },
15
15
  setup(__props) {
16
16
  const contentContext = Select_SelectContentImpl.injectSelectContentContext();
17
- const alignedPositionContext = contentContext.position === "item-aligned" ? Select_SelectItemAlignedPosition.injectSelectItemAlignedPositionContext() : undefined;
17
+ const alignedPositionContext = contentContext.position === "item-aligned" ? Select_SelectItemAlignedPosition.injectSelectItemAlignedPositionContext() : void 0;
18
18
  const { forwardRef, currentElement } = shared_useForwardExpose.useForwardExpose();
19
19
  const canScrollDown = vue.ref(false);
20
20
  vue.watchEffect((cleanupFn) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectScrollDownButton.cjs","sources":["../../src/Select/SelectScrollDownButton.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface SelectScrollDownButtonProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, watch, watchEffect } from 'vue'\nimport { injectSelectContentContext } from './SelectContentImpl.vue'\nimport SelectScrollButtonImpl from './SelectScrollButtonImpl.vue'\nimport { injectSelectItemAlignedPositionContext } from './SelectItemAlignedPosition.vue'\n\ndefineProps<SelectScrollDownButtonProps>()\n\nconst contentContext = injectSelectContentContext()\nconst alignedPositionContext\n = contentContext.position === 'item-aligned'\n ? injectSelectItemAlignedPositionContext()\n : undefined\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst canScrollDown = ref(false)\n\nwatchEffect((cleanupFn) => {\n if (contentContext.viewport?.value && contentContext.isPositioned?.value) {\n const viewport = contentContext.viewport.value\n\n function handleScroll() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight\n // we use Math.ceil here because if the UI is zoomed-in\n // `scrollTop` is not always reported as an integer\n canScrollDown.value = Math.ceil(viewport.scrollTop) < maxScroll\n }\n handleScroll()\n viewport.addEventListener('scroll', handleScroll)\n\n cleanupFn(() => viewport.removeEventListener('scroll', handleScroll))\n }\n})\n\nwatch(currentElement, () => {\n if (currentElement.value)\n alignedPositionContext?.onScrollButtonChange(currentElement.value)\n})\n</script>\n\n<template>\n <SelectScrollButtonImpl\n v-if=\"canScrollDown\"\n :ref=\"forwardRef\"\n @auto-scroll=\"\n () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport?.value && selectedItem?.value) {\n viewport.value.scrollTop = viewport.value.scrollTop + selectedItem.value.offsetHeight;\n }\n }\n \"\n >\n <slot />\n </SelectScrollButtonImpl>\n</template>\n"],"names":["injectSelectContentContext","injectSelectItemAlignedPositionContext","useForwardExpose","ref","watchEffect","watch"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAA,MAAM,iBAAiBA,mDAA2B,EAAA;AAClD,IAAA,MAAM,sBACF,GAAA,cAAA,CAAe,QAAa,KAAA,cAAA,GAC1BC,yEACA,GAAA,SAAA;AAEN,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AAExD,IAAM,MAAA,aAAA,GAAgBC,QAAI,KAAK,CAAA;AAE/B,IAAAC,eAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAA,IAAI,cAAe,CAAA,QAAA,EAAU,KAAS,IAAA,cAAA,CAAe,cAAc,KAAO,EAAA;AAGxE,QAAA,IAAS,eAAT,WAAwB;AACtB,UAAM,MAAA,SAAA,GAAY,QAAS,CAAA,YAAA,GAAe,QAAS,CAAA,YAAA;AAGnD,UAAA,aAAA,CAAc,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,QAAA,CAAS,SAAS,CAAI,GAAA,SAAA;AAAA,SACxD;AAPA,QAAM,MAAA,QAAA,GAAW,eAAe,QAAS,CAAA,KAAA;AAQzC,QAAa,YAAA,EAAA;AACb,QAAS,QAAA,CAAA,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAEhD,QAAA,SAAA,CAAU,MAAM,QAAA,CAAS,mBAAoB,CAAA,QAAA,EAAU,YAAY,CAAC,CAAA;AAAA;AACtE,KACD,CAAA;AAED,IAAAC,SAAA,CAAM,gBAAgB,MAAM;AAC1B,MAAA,IAAI,cAAe,CAAA,KAAA;AACjB,QAAwB,sBAAA,EAAA,oBAAA,CAAqB,eAAe,KAAK,CAAA;AAAA,KACpE,CAAA;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SelectScrollDownButton.cjs","sources":["../../src/Select/SelectScrollDownButton.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface SelectScrollDownButtonProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, watch, watchEffect } from 'vue'\nimport { injectSelectContentContext } from './SelectContentImpl.vue'\nimport SelectScrollButtonImpl from './SelectScrollButtonImpl.vue'\nimport { injectSelectItemAlignedPositionContext } from './SelectItemAlignedPosition.vue'\n\ndefineProps<SelectScrollDownButtonProps>()\n\nconst contentContext = injectSelectContentContext()\nconst alignedPositionContext\n = contentContext.position === 'item-aligned'\n ? injectSelectItemAlignedPositionContext()\n : undefined\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst canScrollDown = ref(false)\n\nwatchEffect((cleanupFn) => {\n if (contentContext.viewport?.value && contentContext.isPositioned?.value) {\n const viewport = contentContext.viewport.value\n\n function handleScroll() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight\n // we use Math.ceil here because if the UI is zoomed-in\n // `scrollTop` is not always reported as an integer\n canScrollDown.value = Math.ceil(viewport.scrollTop) < maxScroll\n }\n handleScroll()\n viewport.addEventListener('scroll', handleScroll)\n\n cleanupFn(() => viewport.removeEventListener('scroll', handleScroll))\n }\n})\n\nwatch(currentElement, () => {\n if (currentElement.value)\n alignedPositionContext?.onScrollButtonChange(currentElement.value)\n})\n</script>\n\n<template>\n <SelectScrollButtonImpl\n v-if=\"canScrollDown\"\n :ref=\"forwardRef\"\n @auto-scroll=\"\n () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport?.value && selectedItem?.value) {\n viewport.value.scrollTop = viewport.value.scrollTop + selectedItem.value.offsetHeight;\n }\n }\n \"\n >\n <slot />\n </SelectScrollButtonImpl>\n</template>\n"],"names":["injectSelectContentContext","injectSelectItemAlignedPositionContext","useForwardExpose","ref","watchEffect","watch"],"mappings":";;;;;;;;;;;;;;;AAeA,IAAA,MAAM,iBAAiBA,mDAA2B,EAAA;AAClD,IAAA,MAAM,sBACF,GAAA,cAAA,CAAe,QAAa,KAAA,cAAA,GAC1BC,yEACA,GAAA,MAAA;AAEN,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAIC,wCAAiB,EAAA;AAExD,IAAM,MAAA,aAAA,GAAgBC,QAAI,KAAK,CAAA;AAE/B,IAAAC,eAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAA,IAAI,cAAe,CAAA,QAAA,EAAU,KAAS,IAAA,cAAA,CAAe,cAAc,KAAO,EAAA;AAGxE,QAAA,IAAS,eAAT,WAAwB;AACtB,UAAM,MAAA,SAAA,GAAY,QAAS,CAAA,YAAA,GAAe,QAAS,CAAA,YAAA;AAGnD,UAAA,aAAA,CAAc,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,QAAA,CAAS,SAAS,CAAI,GAAA,SAAA;AAAA,SACxD;AAPA,QAAM,MAAA,QAAA,GAAW,eAAe,QAAS,CAAA,KAAA;AAQzC,QAAa,YAAA,EAAA;AACb,QAAS,QAAA,CAAA,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAEhD,QAAA,SAAA,CAAU,MAAM,QAAA,CAAS,mBAAoB,CAAA,QAAA,EAAU,YAAY,CAAC,CAAA;AAAA;AACtE,KACD,CAAA;AAED,IAAAC,SAAA,CAAM,gBAAgB,MAAM;AAC1B,MAAA,IAAI,cAAe,CAAA,KAAA;AACjB,QAAwB,sBAAA,EAAA,oBAAA,CAAqB,eAAe,KAAK,CAAA;AAAA,KACpE,CAAA;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { defineComponent, ref, watchEffect, watch, openBlock, createBlock, unref, withCtx, renderSlot, createCommentVNode } from 'vue';
1
+ import { defineComponent, ref, watchEffect, watch, createBlock, createCommentVNode, openBlock, unref, withCtx, renderSlot } from 'vue';
2
2
  import { _ as _sfc_main$1 } from './SelectScrollButtonImpl.js';
3
3
  import { u as useForwardExpose } from '../shared/useForwardExpose.js';
4
4
  import { i as injectSelectContentContext } from './SelectContentImpl.js';
@@ -12,7 +12,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
12
12
  },
13
13
  setup(__props) {
14
14
  const contentContext = injectSelectContentContext();
15
- const alignedPositionContext = contentContext.position === "item-aligned" ? injectSelectItemAlignedPositionContext() : undefined;
15
+ const alignedPositionContext = contentContext.position === "item-aligned" ? injectSelectItemAlignedPositionContext() : void 0;
16
16
  const { forwardRef, currentElement } = useForwardExpose();
17
17
  const canScrollDown = ref(false);
18
18
  watchEffect((cleanupFn) => {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectScrollDownButton.js","sources":["../../src/Select/SelectScrollDownButton.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface SelectScrollDownButtonProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, watch, watchEffect } from 'vue'\nimport { injectSelectContentContext } from './SelectContentImpl.vue'\nimport SelectScrollButtonImpl from './SelectScrollButtonImpl.vue'\nimport { injectSelectItemAlignedPositionContext } from './SelectItemAlignedPosition.vue'\n\ndefineProps<SelectScrollDownButtonProps>()\n\nconst contentContext = injectSelectContentContext()\nconst alignedPositionContext\n = contentContext.position === 'item-aligned'\n ? injectSelectItemAlignedPositionContext()\n : undefined\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst canScrollDown = ref(false)\n\nwatchEffect((cleanupFn) => {\n if (contentContext.viewport?.value && contentContext.isPositioned?.value) {\n const viewport = contentContext.viewport.value\n\n function handleScroll() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight\n // we use Math.ceil here because if the UI is zoomed-in\n // `scrollTop` is not always reported as an integer\n canScrollDown.value = Math.ceil(viewport.scrollTop) < maxScroll\n }\n handleScroll()\n viewport.addEventListener('scroll', handleScroll)\n\n cleanupFn(() => viewport.removeEventListener('scroll', handleScroll))\n }\n})\n\nwatch(currentElement, () => {\n if (currentElement.value)\n alignedPositionContext?.onScrollButtonChange(currentElement.value)\n})\n</script>\n\n<template>\n <SelectScrollButtonImpl\n v-if=\"canScrollDown\"\n :ref=\"forwardRef\"\n @auto-scroll=\"\n () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport?.value && selectedItem?.value) {\n viewport.value.scrollTop = viewport.value.scrollTop + selectedItem.value.offsetHeight;\n }\n }\n \"\n >\n <slot />\n </SelectScrollButtonImpl>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,IAAA,MAAM,iBAAiB,0BAA2B,EAAA;AAClD,IAAA,MAAM,sBACF,GAAA,cAAA,CAAe,QAAa,KAAA,cAAA,GAC1B,wCACA,GAAA,SAAA;AAEN,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AAExD,IAAM,MAAA,aAAA,GAAgB,IAAI,KAAK,CAAA;AAE/B,IAAA,WAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAA,IAAI,cAAe,CAAA,QAAA,EAAU,KAAS,IAAA,cAAA,CAAe,cAAc,KAAO,EAAA;AAGxE,QAAA,IAAS,eAAT,WAAwB;AACtB,UAAM,MAAA,SAAA,GAAY,QAAS,CAAA,YAAA,GAAe,QAAS,CAAA,YAAA;AAGnD,UAAA,aAAA,CAAc,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,QAAA,CAAS,SAAS,CAAI,GAAA,SAAA;AAAA,SACxD;AAPA,QAAM,MAAA,QAAA,GAAW,eAAe,QAAS,CAAA,KAAA;AAQzC,QAAa,YAAA,EAAA;AACb,QAAS,QAAA,CAAA,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAEhD,QAAA,SAAA,CAAU,MAAM,QAAA,CAAS,mBAAoB,CAAA,QAAA,EAAU,YAAY,CAAC,CAAA;AAAA;AACtE,KACD,CAAA;AAED,IAAA,KAAA,CAAM,gBAAgB,MAAM;AAC1B,MAAA,IAAI,cAAe,CAAA,KAAA;AACjB,QAAwB,sBAAA,EAAA,oBAAA,CAAqB,eAAe,KAAK,CAAA;AAAA,KACpE,CAAA;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SelectScrollDownButton.js","sources":["../../src/Select/SelectScrollDownButton.vue"],"sourcesContent":["<script lang=\"ts\">\nimport type { PrimitiveProps } from '@/Primitive'\nimport { useForwardExpose } from '@/shared'\n\nexport interface SelectScrollDownButtonProps extends PrimitiveProps {}\n</script>\n\n<script setup lang=\"ts\">\nimport { ref, watch, watchEffect } from 'vue'\nimport { injectSelectContentContext } from './SelectContentImpl.vue'\nimport SelectScrollButtonImpl from './SelectScrollButtonImpl.vue'\nimport { injectSelectItemAlignedPositionContext } from './SelectItemAlignedPosition.vue'\n\ndefineProps<SelectScrollDownButtonProps>()\n\nconst contentContext = injectSelectContentContext()\nconst alignedPositionContext\n = contentContext.position === 'item-aligned'\n ? injectSelectItemAlignedPositionContext()\n : undefined\n\nconst { forwardRef, currentElement } = useForwardExpose()\n\nconst canScrollDown = ref(false)\n\nwatchEffect((cleanupFn) => {\n if (contentContext.viewport?.value && contentContext.isPositioned?.value) {\n const viewport = contentContext.viewport.value\n\n function handleScroll() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight\n // we use Math.ceil here because if the UI is zoomed-in\n // `scrollTop` is not always reported as an integer\n canScrollDown.value = Math.ceil(viewport.scrollTop) < maxScroll\n }\n handleScroll()\n viewport.addEventListener('scroll', handleScroll)\n\n cleanupFn(() => viewport.removeEventListener('scroll', handleScroll))\n }\n})\n\nwatch(currentElement, () => {\n if (currentElement.value)\n alignedPositionContext?.onScrollButtonChange(currentElement.value)\n})\n</script>\n\n<template>\n <SelectScrollButtonImpl\n v-if=\"canScrollDown\"\n :ref=\"forwardRef\"\n @auto-scroll=\"\n () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport?.value && selectedItem?.value) {\n viewport.value.scrollTop = viewport.value.scrollTop + selectedItem.value.offsetHeight;\n }\n }\n \"\n >\n <slot />\n </SelectScrollButtonImpl>\n</template>\n"],"names":[],"mappings":";;;;;;;;;;;;;AAeA,IAAA,MAAM,iBAAiB,0BAA2B,EAAA;AAClD,IAAA,MAAM,sBACF,GAAA,cAAA,CAAe,QAAa,KAAA,cAAA,GAC1B,wCACA,GAAA,MAAA;AAEN,IAAA,MAAM,EAAE,UAAA,EAAY,cAAe,EAAA,GAAI,gBAAiB,EAAA;AAExD,IAAM,MAAA,aAAA,GAAgB,IAAI,KAAK,CAAA;AAE/B,IAAA,WAAA,CAAY,CAAC,SAAc,KAAA;AACzB,MAAA,IAAI,cAAe,CAAA,QAAA,EAAU,KAAS,IAAA,cAAA,CAAe,cAAc,KAAO,EAAA;AAGxE,QAAA,IAAS,eAAT,WAAwB;AACtB,UAAM,MAAA,SAAA,GAAY,QAAS,CAAA,YAAA,GAAe,QAAS,CAAA,YAAA;AAGnD,UAAA,aAAA,CAAc,KAAQ,GAAA,IAAA,CAAK,IAAK,CAAA,QAAA,CAAS,SAAS,CAAI,GAAA,SAAA;AAAA,SACxD;AAPA,QAAM,MAAA,QAAA,GAAW,eAAe,QAAS,CAAA,KAAA;AAQzC,QAAa,YAAA,EAAA;AACb,QAAS,QAAA,CAAA,gBAAA,CAAiB,UAAU,YAAY,CAAA;AAEhD,QAAA,SAAA,CAAU,MAAM,QAAA,CAAS,mBAAoB,CAAA,QAAA,EAAU,YAAY,CAAC,CAAA;AAAA;AACtE,KACD,CAAA;AAED,IAAA,KAAA,CAAM,gBAAgB,MAAM;AAC1B,MAAA,IAAI,cAAe,CAAA,KAAA;AACjB,QAAwB,sBAAA,EAAA,oBAAA,CAAqB,eAAe,KAAK,CAAA;AAAA,KACpE,CAAA;;;;;;;;;;;;;;;;;;;;;;;"}