@base-ui/react 1.4.1 → 1.5.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 (579) hide show
  1. package/CHANGELOG.md +125 -8
  2. package/README.md +1 -1
  3. package/accordion/item/AccordionItem.d.ts +4 -0
  4. package/accordion/item/AccordionItem.js +5 -4
  5. package/accordion/panel/AccordionPanel.js +29 -51
  6. package/accordion/root/AccordionRoot.js +5 -6
  7. package/accordion/trigger/AccordionTrigger.js +3 -4
  8. package/alert-dialog/handle.d.ts +14 -1
  9. package/alert-dialog/handle.js +22 -5
  10. package/alert-dialog/index.d.ts +1 -1
  11. package/alert-dialog/index.parts.d.ts +2 -3
  12. package/alert-dialog/index.parts.js +4 -5
  13. package/alert-dialog/root/AlertDialogRoot.d.ts +7 -7
  14. package/alert-dialog/root/AlertDialogRoot.js +2 -56
  15. package/alert-dialog/trigger/AlertDialogTrigger.d.ts +25 -0
  16. package/alert-dialog/trigger/AlertDialogTrigger.js +15 -0
  17. package/alert-dialog/trigger/AlertDialogTriggerDataAttributes.d.ts +10 -0
  18. package/alert-dialog/trigger/AlertDialogTriggerDataAttributes.js +18 -0
  19. package/autocomplete/root/AutocompleteRoot.js +9 -10
  20. package/avatar/image/AvatarImage.js +4 -4
  21. package/checkbox/indicator/CheckboxIndicator.js +2 -2
  22. package/checkbox/root/CheckboxRoot.js +49 -11
  23. package/checkbox-group/CheckboxGroup.js +1 -5
  24. package/collapsible/panel/CollapsiblePanel.js +29 -51
  25. package/collapsible/panel/useCollapsiblePanel.d.ts +9 -23
  26. package/collapsible/panel/useCollapsiblePanel.js +308 -268
  27. package/collapsible/root/CollapsibleRoot.d.ts +1 -1
  28. package/collapsible/root/CollapsibleRootContext.d.ts +0 -2
  29. package/collapsible/root/useCollapsibleRoot.d.ts +0 -27
  30. package/collapsible/root/useCollapsibleRoot.js +2 -64
  31. package/collapsible/trigger/CollapsibleTrigger.js +5 -6
  32. package/combobox/arrow/ComboboxArrow.js +1 -1
  33. package/combobox/backdrop/ComboboxBackdrop.js +1 -1
  34. package/combobox/chip/ComboboxChip.js +7 -2
  35. package/combobox/clear/ComboboxClear.d.ts +4 -0
  36. package/combobox/clear/ComboboxClear.js +1 -0
  37. package/combobox/clear/ComboboxClearDataAttributes.d.ts +4 -0
  38. package/combobox/clear/ComboboxClearDataAttributes.js +4 -0
  39. package/combobox/icon/ComboboxIcon.js +1 -1
  40. package/combobox/input/ComboboxInput.js +15 -6
  41. package/combobox/item/ComboboxItem.js +8 -14
  42. package/combobox/item-indicator/ComboboxItemIndicator.js +1 -2
  43. package/combobox/root/AriaCombobox.js +61 -28
  44. package/combobox/store.d.ts +4 -8
  45. package/combobox/store.js +2 -1
  46. package/combobox/utils/ComboboxInternalDismissButton.js +2 -3
  47. package/csp-provider/CSPProvider.js +1 -1
  48. package/dialog/close/DialogClose.js +6 -6
  49. package/dialog/popup/DialogPopup.js +9 -4
  50. package/dialog/root/DialogRoot.d.ts +1 -2
  51. package/dialog/root/DialogRoot.js +3 -73
  52. package/dialog/root/DialogRootContext.d.ts +1 -0
  53. package/dialog/root/DialogRootContext.js +3 -1
  54. package/dialog/root/useDialogRoot.d.ts +12 -4
  55. package/dialog/root/useDialogRoot.js +27 -25
  56. package/dialog/root/useRenderDialogRoot.d.ts +4 -0
  57. package/dialog/root/useRenderDialogRoot.js +96 -0
  58. package/dialog/store/DialogHandle.d.ts +1 -1
  59. package/dialog/store/DialogHandle.js +2 -2
  60. package/dialog/store/DialogStore.d.ts +88 -1
  61. package/dialog/store/DialogStore.js +12 -17
  62. package/dialog/trigger/DialogTrigger.d.ts +1 -1
  63. package/dialog/trigger/DialogTrigger.js +11 -4
  64. package/dialog/viewport/DialogViewport.js +4 -3
  65. package/drawer/popup/DrawerPopup.js +13 -9
  66. package/drawer/root/DrawerRoot.js +11 -11
  67. package/drawer/root/DrawerRootContext.d.ts +1 -1
  68. package/drawer/swipe-area/DrawerSwipeArea.js +6 -5
  69. package/drawer/viewport/DrawerViewport.js +13 -14
  70. package/esm/accordion/item/AccordionItem.d.ts +4 -0
  71. package/esm/accordion/item/AccordionItem.js +5 -4
  72. package/esm/accordion/panel/AccordionPanel.js +29 -51
  73. package/esm/accordion/root/AccordionRoot.js +5 -6
  74. package/esm/accordion/trigger/AccordionTrigger.js +4 -5
  75. package/esm/alert-dialog/handle.d.ts +14 -1
  76. package/esm/alert-dialog/handle.js +20 -5
  77. package/esm/alert-dialog/index.d.ts +1 -1
  78. package/esm/alert-dialog/index.parts.d.ts +2 -3
  79. package/esm/alert-dialog/index.parts.js +2 -3
  80. package/esm/alert-dialog/root/AlertDialogRoot.d.ts +7 -7
  81. package/esm/alert-dialog/root/AlertDialogRoot.js +2 -55
  82. package/esm/alert-dialog/trigger/AlertDialogTrigger.d.ts +25 -0
  83. package/esm/alert-dialog/trigger/AlertDialogTrigger.js +10 -0
  84. package/esm/alert-dialog/trigger/AlertDialogTriggerDataAttributes.d.ts +10 -0
  85. package/esm/alert-dialog/trigger/AlertDialogTriggerDataAttributes.js +12 -0
  86. package/esm/autocomplete/root/AutocompleteRoot.js +9 -10
  87. package/esm/avatar/image/AvatarImage.js +4 -4
  88. package/esm/checkbox/indicator/CheckboxIndicator.js +2 -2
  89. package/esm/checkbox/root/CheckboxRoot.js +49 -11
  90. package/esm/checkbox-group/CheckboxGroup.js +1 -5
  91. package/esm/collapsible/panel/CollapsiblePanel.js +29 -51
  92. package/esm/collapsible/panel/useCollapsiblePanel.d.ts +9 -23
  93. package/esm/collapsible/panel/useCollapsiblePanel.js +309 -269
  94. package/esm/collapsible/root/CollapsibleRoot.d.ts +1 -1
  95. package/esm/collapsible/root/CollapsibleRootContext.d.ts +0 -2
  96. package/esm/collapsible/root/useCollapsibleRoot.d.ts +0 -27
  97. package/esm/collapsible/root/useCollapsibleRoot.js +2 -64
  98. package/esm/collapsible/trigger/CollapsibleTrigger.js +5 -6
  99. package/esm/combobox/arrow/ComboboxArrow.js +1 -1
  100. package/esm/combobox/backdrop/ComboboxBackdrop.js +1 -1
  101. package/esm/combobox/chip/ComboboxChip.js +7 -2
  102. package/esm/combobox/clear/ComboboxClear.d.ts +4 -0
  103. package/esm/combobox/clear/ComboboxClear.js +1 -0
  104. package/esm/combobox/clear/ComboboxClearDataAttributes.d.ts +4 -0
  105. package/esm/combobox/clear/ComboboxClearDataAttributes.js +4 -0
  106. package/esm/combobox/icon/ComboboxIcon.js +1 -1
  107. package/esm/combobox/input/ComboboxInput.js +16 -7
  108. package/esm/combobox/item/ComboboxItem.js +8 -14
  109. package/esm/combobox/item-indicator/ComboboxItemIndicator.js +1 -2
  110. package/esm/combobox/root/AriaCombobox.js +62 -29
  111. package/esm/combobox/store.d.ts +4 -8
  112. package/esm/combobox/store.js +2 -1
  113. package/esm/combobox/utils/ComboboxInternalDismissButton.js +2 -3
  114. package/esm/csp-provider/CSPProvider.js +1 -1
  115. package/esm/dialog/close/DialogClose.js +6 -6
  116. package/esm/dialog/popup/DialogPopup.js +9 -4
  117. package/esm/dialog/root/DialogRoot.d.ts +1 -2
  118. package/esm/dialog/root/DialogRoot.js +4 -72
  119. package/esm/dialog/root/DialogRootContext.d.ts +1 -0
  120. package/esm/dialog/root/DialogRootContext.js +2 -0
  121. package/esm/dialog/root/useDialogRoot.d.ts +12 -4
  122. package/esm/dialog/root/useDialogRoot.js +28 -27
  123. package/esm/dialog/root/useRenderDialogRoot.d.ts +4 -0
  124. package/esm/dialog/root/useRenderDialogRoot.js +90 -0
  125. package/esm/dialog/store/DialogHandle.d.ts +1 -1
  126. package/esm/dialog/store/DialogHandle.js +2 -2
  127. package/esm/dialog/store/DialogStore.d.ts +88 -1
  128. package/esm/dialog/store/DialogStore.js +13 -18
  129. package/esm/dialog/trigger/DialogTrigger.d.ts +1 -1
  130. package/esm/dialog/trigger/DialogTrigger.js +12 -5
  131. package/esm/dialog/viewport/DialogViewport.js +4 -3
  132. package/esm/drawer/popup/DrawerPopup.js +14 -9
  133. package/esm/drawer/root/DrawerRoot.js +11 -11
  134. package/esm/drawer/root/DrawerRootContext.d.ts +1 -1
  135. package/esm/drawer/swipe-area/DrawerSwipeArea.js +6 -5
  136. package/esm/drawer/viewport/DrawerViewport.js +13 -14
  137. package/esm/field/control/FieldControl.js +2 -6
  138. package/esm/field/item/FieldItem.js +1 -4
  139. package/esm/field/root/FieldRoot.js +11 -3
  140. package/esm/field/root/useFieldValidation.d.ts +1 -0
  141. package/esm/field/root/useFieldValidation.js +23 -20
  142. package/esm/field/utils/getCombinedFieldValidityData.d.ts +1 -1
  143. package/esm/field/validity/FieldValidity.d.ts +1 -1
  144. package/esm/floating-ui-react/components/FloatingDelayGroup.js +3 -3
  145. package/esm/floating-ui-react/components/FloatingFocusManager.d.ts +1 -1
  146. package/esm/floating-ui-react/components/FloatingFocusManager.js +20 -8
  147. package/esm/floating-ui-react/components/FloatingPortal.js +3 -3
  148. package/esm/floating-ui-react/hooks/useClick.js +83 -74
  149. package/esm/floating-ui-react/hooks/useClientPoint.js +29 -20
  150. package/esm/floating-ui-react/hooks/useDismiss.d.ts +1 -1
  151. package/esm/floating-ui-react/hooks/useDismiss.js +82 -93
  152. package/esm/floating-ui-react/hooks/useFloating.js +37 -32
  153. package/esm/floating-ui-react/hooks/useFloatingRootContext.d.ts +1 -1
  154. package/esm/floating-ui-react/hooks/useFloatingRootContext.js +2 -2
  155. package/esm/floating-ui-react/hooks/useFocus.js +84 -81
  156. package/esm/floating-ui-react/hooks/useHover.js +72 -76
  157. package/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +49 -44
  158. package/esm/floating-ui-react/hooks/useHoverInteractionSharedState.js +1 -1
  159. package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.d.ts +7 -2
  160. package/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +44 -39
  161. package/esm/floating-ui-react/hooks/useHoverShared.d.ts +2 -1
  162. package/esm/floating-ui-react/hooks/useHoverShared.js +4 -0
  163. package/esm/floating-ui-react/hooks/useListNavigation.d.ts +1 -3
  164. package/esm/floating-ui-react/hooks/useListNavigation.js +83 -74
  165. package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.d.ts +9 -6
  166. package/esm/floating-ui-react/hooks/useSyncedFloatingRootContext.js +25 -20
  167. package/esm/floating-ui-react/hooks/useTypeahead.d.ts +2 -2
  168. package/esm/floating-ui-react/hooks/useTypeahead.js +33 -52
  169. package/esm/floating-ui-react/index.d.ts +0 -2
  170. package/esm/floating-ui-react/index.js +0 -2
  171. package/esm/floating-ui-react/types.d.ts +2 -7
  172. package/esm/floating-ui-react/utils/composite.js +2 -0
  173. package/esm/floating-ui-react/utils/enqueueFocus.d.ts +1 -1
  174. package/esm/floating-ui-react/utils/enqueueFocus.js +10 -7
  175. package/esm/floating-ui-react/utils/getEmptyRootContext.js +1 -1
  176. package/esm/form/Form.js +2 -2
  177. package/esm/index.js +1 -1
  178. package/esm/internals/composite/composite.d.ts +0 -1
  179. package/esm/internals/composite/composite.js +1 -2
  180. package/esm/internals/composite/root/useCompositeRoot.js +2 -2
  181. package/esm/internals/createBaseUIEventDetails.d.ts +2 -0
  182. package/esm/internals/csp-context/index.d.ts +2 -0
  183. package/esm/internals/csp-context/index.js +1 -0
  184. package/esm/internals/field-register-control/index.d.ts +0 -1
  185. package/esm/internals/field-register-control/useFieldControlRegistration.d.ts +2 -1
  186. package/esm/internals/field-register-control/useFieldControlRegistration.js +11 -14
  187. package/esm/internals/field-register-control/useRegisterFieldControl.d.ts +1 -4
  188. package/esm/internals/field-register-control/useRegisterFieldControl.js +6 -11
  189. package/esm/internals/field-root-context/FieldRootContext.d.ts +1 -0
  190. package/esm/internals/field-root-context/FieldRootContext.js +3 -2
  191. package/esm/internals/form-context/FormContext.d.ts +5 -1
  192. package/esm/internals/reason-parts.d.ts +2 -0
  193. package/esm/internals/reason-parts.js +2 -0
  194. package/esm/internals/types.d.ts +1 -0
  195. package/esm/internals/use-button/useButton.js +4 -4
  196. package/esm/internals/usePressAndHold.js +2 -2
  197. package/esm/internals/useRenderElement.js +2 -0
  198. package/esm/menu/arrow/MenuArrow.js +1 -1
  199. package/esm/menu/backdrop/MenuBackdrop.js +1 -1
  200. package/esm/menu/checkbox-item/MenuCheckboxItem.js +5 -7
  201. package/esm/menu/group/MenuGroup.js +1 -4
  202. package/esm/menu/group/MenuGroupContext.d.ts +1 -3
  203. package/esm/menu/group/MenuGroupContext.js +1 -1
  204. package/esm/menu/group-label/MenuGroupLabel.js +4 -6
  205. package/esm/menu/link-item/MenuLinkItem.js +2 -2
  206. package/esm/menu/popup/MenuPopup.js +5 -5
  207. package/esm/menu/radio-group/MenuRadioGroup.js +11 -5
  208. package/esm/menu/radio-item/MenuRadioItem.js +5 -7
  209. package/esm/menu/root/MenuRoot.js +63 -68
  210. package/esm/menu/store/MenuHandle.js +1 -1
  211. package/esm/menu/store/MenuStore.d.ts +87 -0
  212. package/esm/menu/submenu-trigger/MenuSubmenuTrigger.js +8 -5
  213. package/esm/menu/trigger/MenuTrigger.js +13 -10
  214. package/esm/menu/viewport/MenuViewport.d.ts +2 -2
  215. package/esm/menu/viewport/MenuViewport.js +2 -2
  216. package/esm/navigation-menu/arrow/NavigationMenuArrow.js +1 -1
  217. package/esm/navigation-menu/backdrop/NavigationMenuBackdrop.js +1 -1
  218. package/esm/navigation-menu/content/NavigationMenuContent.js +8 -5
  219. package/esm/navigation-menu/icon/NavigationMenuIcon.js +1 -1
  220. package/esm/navigation-menu/item/NavigationMenuItem.js +2 -2
  221. package/esm/navigation-menu/list/NavigationMenuList.js +1 -1
  222. package/esm/navigation-menu/popup/NavigationMenuPopup.js +2 -2
  223. package/esm/navigation-menu/root/NavigationMenuRoot.js +1 -3
  224. package/esm/navigation-menu/trigger/NavigationMenuTrigger.js +24 -17
  225. package/esm/navigation-menu/utils/isOutsideMenuEvent.d.ts +0 -1
  226. package/esm/navigation-menu/utils/isOutsideMenuEvent.js +1 -5
  227. package/esm/navigation-menu/viewport/NavigationMenuViewport.js +2 -3
  228. package/esm/number-field/input/NumberFieldInput.js +3 -5
  229. package/esm/number-field/root/NumberFieldRoot.js +5 -2
  230. package/esm/number-field/scrub-area/NumberFieldScrubArea.js +7 -3
  231. package/esm/otp-field/input/OTPFieldInput.js +43 -29
  232. package/esm/otp-field/root/OTPFieldRoot.d.ts +17 -8
  233. package/esm/otp-field/root/OTPFieldRoot.js +33 -33
  234. package/esm/otp-field/root/OTPFieldRootContext.d.ts +1 -1
  235. package/esm/otp-field/utils/otp.d.ts +5 -4
  236. package/esm/otp-field/utils/otp.js +23 -12
  237. package/esm/popover/arrow/PopoverArrow.js +1 -1
  238. package/esm/popover/backdrop/PopoverBackdrop.js +1 -1
  239. package/esm/popover/close/PopoverClose.js +2 -2
  240. package/esm/popover/description/PopoverDescription.js +1 -7
  241. package/esm/popover/popup/PopoverPopup.d.ts +1 -1
  242. package/esm/popover/popup/PopoverPopup.js +16 -10
  243. package/esm/popover/popup/PopoverPopupDataAttributes.d.ts +1 -1
  244. package/esm/popover/popup/PopoverPopupDataAttributes.js +1 -1
  245. package/esm/popover/positioner/PopoverPositioner.js +5 -5
  246. package/esm/popover/root/PopoverRoot.d.ts +1 -1
  247. package/esm/popover/root/PopoverRoot.js +42 -47
  248. package/esm/popover/store/PopoverHandle.js +1 -1
  249. package/esm/popover/store/PopoverStore.d.ts +91 -4
  250. package/esm/popover/store/PopoverStore.js +17 -18
  251. package/esm/popover/title/PopoverTitle.js +1 -7
  252. package/esm/popover/trigger/PopoverTrigger.js +24 -17
  253. package/esm/popover/viewport/PopoverViewport.d.ts +3 -3
  254. package/esm/popover/viewport/PopoverViewport.js +2 -2
  255. package/esm/popover/viewport/PopoverViewportDataAttributes.d.ts +1 -1
  256. package/esm/popover/viewport/PopoverViewportDataAttributes.js +1 -1
  257. package/esm/preview-card/positioner/PreviewCardPositioner.js +11 -1
  258. package/esm/preview-card/root/PreviewCardRoot.d.ts +1 -1
  259. package/esm/preview-card/root/PreviewCardRoot.js +32 -22
  260. package/esm/preview-card/store/PreviewCardHandle.js +1 -1
  261. package/esm/preview-card/store/PreviewCardStore.d.ts +90 -2
  262. package/esm/preview-card/store/PreviewCardStore.js +19 -31
  263. package/esm/preview-card/trigger/PreviewCardTrigger.js +6 -3
  264. package/esm/preview-card/viewport/PreviewCardViewport.d.ts +2 -2
  265. package/esm/preview-card/viewport/PreviewCardViewport.js +2 -2
  266. package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +2 -2
  267. package/esm/preview-card/viewport/PreviewCardViewportDataAttributes.js +2 -2
  268. package/esm/progress/indicator/ProgressIndicator.js +6 -11
  269. package/esm/progress/root/ProgressRoot.d.ts +1 -1
  270. package/esm/radio/root/RadioRoot.js +7 -3
  271. package/esm/radio-group/RadioGroup.js +4 -11
  272. package/esm/radio-group/RadioGroupContext.d.ts +0 -1
  273. package/esm/scroll-area/content/ScrollAreaContent.js +4 -4
  274. package/esm/scroll-area/root/ScrollAreaRoot.js +1 -1
  275. package/esm/scroll-area/scrollbar/ScrollAreaScrollbar.js +16 -20
  276. package/esm/scroll-area/viewport/ScrollAreaViewport.js +6 -10
  277. package/esm/select/arrow/SelectArrow.js +1 -1
  278. package/esm/select/backdrop/SelectBackdrop.js +1 -1
  279. package/esm/select/group/SelectGroup.js +1 -1
  280. package/esm/select/group-label/SelectGroupLabel.js +2 -2
  281. package/esm/select/icon/SelectIcon.js +1 -1
  282. package/esm/select/item/SelectItem.js +46 -32
  283. package/esm/select/item/SelectItemContext.d.ts +1 -1
  284. package/esm/select/item-indicator/SelectItemIndicator.js +1 -2
  285. package/esm/select/item-text/SelectItemText.js +9 -6
  286. package/esm/select/list/SelectList.js +1 -1
  287. package/esm/select/popup/SelectPopup.js +8 -3
  288. package/esm/select/positioner/SelectPositioner.js +3 -0
  289. package/esm/select/root/SelectRoot.js +46 -40
  290. package/esm/select/root/SelectRootContext.d.ts +4 -5
  291. package/esm/select/store.d.ts +3 -0
  292. package/esm/select/store.js +1 -0
  293. package/esm/select/trigger/SelectTrigger.d.ts +5 -0
  294. package/esm/select/trigger/SelectTrigger.js +19 -33
  295. package/esm/select/trigger/SelectTriggerDataAttributes.d.ts +5 -0
  296. package/esm/select/trigger/SelectTriggerDataAttributes.js +5 -0
  297. package/esm/slider/control/SliderControl.js +10 -12
  298. package/esm/slider/root/SliderRoot.js +1 -4
  299. package/esm/slider/thumb/SliderThumb.js +32 -30
  300. package/esm/slider/value/SliderValue.js +7 -15
  301. package/esm/switch/root/SwitchRoot.js +10 -10
  302. package/esm/switch/thumb/SwitchThumb.js +1 -9
  303. package/esm/tabs/indicator/TabsIndicator.js +14 -19
  304. package/esm/tabs/list/TabsList.js +4 -10
  305. package/esm/tabs/list/TabsListContext.d.ts +2 -1
  306. package/esm/tabs/panel/TabsPanel.js +1 -1
  307. package/esm/tabs/root/TabsRoot.d.ts +16 -1
  308. package/esm/tabs/root/TabsRoot.js +73 -25
  309. package/esm/tabs/root/TabsRootContext.d.ts +0 -2
  310. package/esm/toast/provider/ToastProvider.js +1 -1
  311. package/esm/toast/root/ToastRoot.d.ts +1 -1
  312. package/esm/toast/root/ToastRoot.js +108 -131
  313. package/esm/toast/root/ToastRootDataAttributes.d.ts +1 -1
  314. package/esm/toast/root/ToastRootDataAttributes.js +1 -1
  315. package/esm/toast/store.d.ts +9 -1
  316. package/esm/toast/store.js +19 -13
  317. package/esm/toast/useToastManager.d.ts +1 -1
  318. package/esm/toast/viewport/ToastViewport.js +1 -1
  319. package/esm/toggle/Toggle.js +5 -9
  320. package/esm/toggle-group/ToggleGroup.d.ts +2 -2
  321. package/esm/toggle-group/ToggleGroup.js +6 -13
  322. package/esm/toolbar/link/ToolbarLink.d.ts +1 -1
  323. package/esm/toolbar/link/ToolbarLink.js +1 -2
  324. package/esm/tooltip/arrow/TooltipArrow.js +3 -3
  325. package/esm/tooltip/popup/TooltipPopup.js +5 -4
  326. package/esm/tooltip/root/TooltipRoot.js +35 -26
  327. package/esm/tooltip/store/TooltipHandle.js +1 -1
  328. package/esm/tooltip/store/TooltipStore.d.ts +90 -2
  329. package/esm/tooltip/store/TooltipStore.js +18 -31
  330. package/esm/tooltip/trigger/TooltipTrigger.js +151 -20
  331. package/esm/tooltip/viewport/TooltipViewport.d.ts +2 -2
  332. package/esm/tooltip/viewport/TooltipViewport.js +2 -2
  333. package/esm/tooltip/viewport/TooltipViewportDataAttributes.d.ts +1 -1
  334. package/esm/tooltip/viewport/TooltipViewportDataAttributes.js +1 -1
  335. package/esm/unstable-use-media-query/index.js +1 -1
  336. package/esm/utils/popups/index.d.ts +1 -0
  337. package/esm/utils/popups/index.js +1 -0
  338. package/esm/utils/popups/inlineRect.d.ts +15 -0
  339. package/esm/utils/popups/inlineRect.js +191 -0
  340. package/esm/utils/popups/popupStoreUtils.d.ts +28 -10
  341. package/esm/utils/popups/popupStoreUtils.js +105 -20
  342. package/esm/utils/popups/popupTriggerMap.js +2 -0
  343. package/esm/utils/popups/store.d.ts +15 -2
  344. package/esm/utils/popups/store.js +38 -2
  345. package/esm/utils/popups/useTriggerFocusGuards.js +4 -5
  346. package/esm/utils/useAnchorPositioning.d.ts +5 -0
  347. package/esm/utils/useAnchorPositioning.js +12 -9
  348. package/esm/utils/useOpenInteractionType.d.ts +4 -0
  349. package/esm/utils/useOpenInteractionType.js +23 -18
  350. package/field/control/FieldControl.js +2 -6
  351. package/field/item/FieldItem.js +1 -4
  352. package/field/root/FieldRoot.js +11 -3
  353. package/field/root/useFieldValidation.d.ts +1 -0
  354. package/field/root/useFieldValidation.js +23 -20
  355. package/field/utils/getCombinedFieldValidityData.d.ts +1 -1
  356. package/field/validity/FieldValidity.d.ts +1 -1
  357. package/floating-ui-react/components/FloatingDelayGroup.js +3 -3
  358. package/floating-ui-react/components/FloatingFocusManager.d.ts +1 -1
  359. package/floating-ui-react/components/FloatingFocusManager.js +20 -8
  360. package/floating-ui-react/components/FloatingPortal.js +3 -3
  361. package/floating-ui-react/hooks/useClick.js +82 -73
  362. package/floating-ui-react/hooks/useClientPoint.js +29 -20
  363. package/floating-ui-react/hooks/useDismiss.d.ts +1 -1
  364. package/floating-ui-react/hooks/useDismiss.js +82 -92
  365. package/floating-ui-react/hooks/useFloating.js +36 -32
  366. package/floating-ui-react/hooks/useFloatingRootContext.d.ts +1 -1
  367. package/floating-ui-react/hooks/useFloatingRootContext.js +2 -2
  368. package/floating-ui-react/hooks/useFocus.js +84 -81
  369. package/floating-ui-react/hooks/useHover.js +74 -78
  370. package/floating-ui-react/hooks/useHoverFloatingInteraction.js +48 -43
  371. package/floating-ui-react/hooks/useHoverInteractionSharedState.js +1 -1
  372. package/floating-ui-react/hooks/useHoverReferenceInteraction.d.ts +7 -2
  373. package/floating-ui-react/hooks/useHoverReferenceInteraction.js +43 -38
  374. package/floating-ui-react/hooks/useHoverShared.d.ts +2 -1
  375. package/floating-ui-react/hooks/useHoverShared.js +11 -0
  376. package/floating-ui-react/hooks/useListNavigation.d.ts +1 -3
  377. package/floating-ui-react/hooks/useListNavigation.js +83 -74
  378. package/floating-ui-react/hooks/useSyncedFloatingRootContext.d.ts +9 -6
  379. package/floating-ui-react/hooks/useSyncedFloatingRootContext.js +26 -20
  380. package/floating-ui-react/hooks/useTypeahead.d.ts +2 -2
  381. package/floating-ui-react/hooks/useTypeahead.js +33 -52
  382. package/floating-ui-react/index.d.ts +0 -2
  383. package/floating-ui-react/index.js +0 -14
  384. package/floating-ui-react/types.d.ts +2 -7
  385. package/floating-ui-react/utils/composite.js +2 -0
  386. package/floating-ui-react/utils/enqueueFocus.d.ts +1 -1
  387. package/floating-ui-react/utils/enqueueFocus.js +10 -7
  388. package/floating-ui-react/utils/getEmptyRootContext.js +1 -1
  389. package/form/Form.js +2 -2
  390. package/index.js +1 -1
  391. package/internals/composite/composite.d.ts +0 -1
  392. package/internals/composite/composite.js +2 -3
  393. package/internals/composite/root/useCompositeRoot.js +1 -1
  394. package/internals/createBaseUIEventDetails.d.ts +2 -0
  395. package/internals/csp-context/index.d.ts +2 -0
  396. package/internals/csp-context/index.js +18 -0
  397. package/internals/field-register-control/index.d.ts +0 -1
  398. package/internals/field-register-control/useFieldControlRegistration.d.ts +2 -1
  399. package/internals/field-register-control/useFieldControlRegistration.js +11 -14
  400. package/internals/field-register-control/useRegisterFieldControl.d.ts +1 -4
  401. package/internals/field-register-control/useRegisterFieldControl.js +6 -11
  402. package/internals/field-root-context/FieldRootContext.d.ts +1 -0
  403. package/internals/field-root-context/FieldRootContext.js +4 -3
  404. package/internals/form-context/FormContext.d.ts +5 -1
  405. package/internals/reason-parts.d.ts +2 -0
  406. package/internals/reason-parts.js +3 -1
  407. package/internals/types.d.ts +1 -0
  408. package/internals/use-button/useButton.js +4 -4
  409. package/internals/usePressAndHold.js +2 -2
  410. package/internals/useRenderElement.js +2 -0
  411. package/menu/arrow/MenuArrow.js +1 -1
  412. package/menu/backdrop/MenuBackdrop.js +1 -1
  413. package/menu/checkbox-item/MenuCheckboxItem.js +5 -7
  414. package/menu/group/MenuGroup.js +1 -4
  415. package/menu/group/MenuGroupContext.d.ts +1 -3
  416. package/menu/group/MenuGroupContext.js +1 -1
  417. package/menu/group-label/MenuGroupLabel.js +4 -6
  418. package/menu/link-item/MenuLinkItem.js +2 -2
  419. package/menu/popup/MenuPopup.js +5 -5
  420. package/menu/radio-group/MenuRadioGroup.js +11 -5
  421. package/menu/radio-item/MenuRadioItem.js +5 -7
  422. package/menu/root/MenuRoot.js +60 -65
  423. package/menu/store/MenuHandle.js +1 -1
  424. package/menu/store/MenuStore.d.ts +87 -0
  425. package/menu/submenu-trigger/MenuSubmenuTrigger.js +7 -4
  426. package/menu/trigger/MenuTrigger.js +12 -9
  427. package/menu/viewport/MenuViewport.d.ts +2 -2
  428. package/menu/viewport/MenuViewport.js +2 -2
  429. package/navigation-menu/arrow/NavigationMenuArrow.js +1 -1
  430. package/navigation-menu/backdrop/NavigationMenuBackdrop.js +1 -1
  431. package/navigation-menu/content/NavigationMenuContent.js +8 -5
  432. package/navigation-menu/icon/NavigationMenuIcon.js +1 -1
  433. package/navigation-menu/item/NavigationMenuItem.js +2 -2
  434. package/navigation-menu/list/NavigationMenuList.js +1 -1
  435. package/navigation-menu/popup/NavigationMenuPopup.js +2 -2
  436. package/navigation-menu/root/NavigationMenuRoot.js +1 -3
  437. package/navigation-menu/trigger/NavigationMenuTrigger.js +23 -16
  438. package/navigation-menu/utils/isOutsideMenuEvent.d.ts +0 -1
  439. package/navigation-menu/utils/isOutsideMenuEvent.js +1 -5
  440. package/navigation-menu/viewport/NavigationMenuViewport.js +2 -3
  441. package/number-field/input/NumberFieldInput.js +3 -5
  442. package/number-field/root/NumberFieldRoot.js +5 -2
  443. package/number-field/scrub-area/NumberFieldScrubArea.js +7 -3
  444. package/otp-field/input/OTPFieldInput.js +42 -28
  445. package/otp-field/root/OTPFieldRoot.d.ts +17 -8
  446. package/otp-field/root/OTPFieldRoot.js +32 -32
  447. package/otp-field/root/OTPFieldRootContext.d.ts +1 -1
  448. package/otp-field/utils/otp.d.ts +5 -4
  449. package/otp-field/utils/otp.js +24 -12
  450. package/package.json +331 -317
  451. package/popover/arrow/PopoverArrow.js +1 -1
  452. package/popover/backdrop/PopoverBackdrop.js +1 -1
  453. package/popover/close/PopoverClose.js +2 -2
  454. package/popover/description/PopoverDescription.js +1 -7
  455. package/popover/popup/PopoverPopup.d.ts +1 -1
  456. package/popover/popup/PopoverPopup.js +16 -10
  457. package/popover/popup/PopoverPopupDataAttributes.d.ts +1 -1
  458. package/popover/popup/PopoverPopupDataAttributes.js +1 -1
  459. package/popover/positioner/PopoverPositioner.js +5 -5
  460. package/popover/root/PopoverRoot.d.ts +1 -1
  461. package/popover/root/PopoverRoot.js +39 -44
  462. package/popover/store/PopoverHandle.js +1 -1
  463. package/popover/store/PopoverStore.d.ts +91 -4
  464. package/popover/store/PopoverStore.js +16 -19
  465. package/popover/title/PopoverTitle.js +1 -7
  466. package/popover/trigger/PopoverTrigger.js +23 -16
  467. package/popover/viewport/PopoverViewport.d.ts +3 -3
  468. package/popover/viewport/PopoverViewport.js +2 -2
  469. package/popover/viewport/PopoverViewportDataAttributes.d.ts +1 -1
  470. package/popover/viewport/PopoverViewportDataAttributes.js +1 -1
  471. package/preview-card/positioner/PreviewCardPositioner.js +11 -1
  472. package/preview-card/root/PreviewCardRoot.d.ts +1 -1
  473. package/preview-card/root/PreviewCardRoot.js +30 -20
  474. package/preview-card/store/PreviewCardHandle.js +1 -1
  475. package/preview-card/store/PreviewCardStore.d.ts +90 -2
  476. package/preview-card/store/PreviewCardStore.js +18 -30
  477. package/preview-card/trigger/PreviewCardTrigger.js +5 -2
  478. package/preview-card/viewport/PreviewCardViewport.d.ts +2 -2
  479. package/preview-card/viewport/PreviewCardViewport.js +2 -2
  480. package/preview-card/viewport/PreviewCardViewportDataAttributes.d.ts +2 -2
  481. package/preview-card/viewport/PreviewCardViewportDataAttributes.js +2 -2
  482. package/progress/indicator/ProgressIndicator.js +6 -11
  483. package/progress/root/ProgressRoot.d.ts +1 -1
  484. package/radio/root/RadioRoot.js +7 -3
  485. package/radio-group/RadioGroup.js +4 -11
  486. package/radio-group/RadioGroupContext.d.ts +0 -1
  487. package/scroll-area/content/ScrollAreaContent.js +4 -4
  488. package/scroll-area/root/ScrollAreaRoot.js +1 -1
  489. package/scroll-area/scrollbar/ScrollAreaScrollbar.js +16 -20
  490. package/scroll-area/viewport/ScrollAreaViewport.js +6 -10
  491. package/select/arrow/SelectArrow.js +1 -1
  492. package/select/backdrop/SelectBackdrop.js +1 -1
  493. package/select/group/SelectGroup.js +1 -1
  494. package/select/group-label/SelectGroupLabel.js +2 -2
  495. package/select/icon/SelectIcon.js +1 -1
  496. package/select/item/SelectItem.js +46 -32
  497. package/select/item/SelectItemContext.d.ts +1 -1
  498. package/select/item-indicator/SelectItemIndicator.js +1 -2
  499. package/select/item-text/SelectItemText.js +9 -6
  500. package/select/list/SelectList.js +1 -1
  501. package/select/popup/SelectPopup.js +8 -3
  502. package/select/positioner/SelectPositioner.js +3 -0
  503. package/select/root/SelectRoot.js +45 -39
  504. package/select/root/SelectRootContext.d.ts +4 -5
  505. package/select/store.d.ts +3 -0
  506. package/select/store.js +1 -0
  507. package/select/trigger/SelectTrigger.d.ts +5 -0
  508. package/select/trigger/SelectTrigger.js +19 -33
  509. package/select/trigger/SelectTriggerDataAttributes.d.ts +5 -0
  510. package/select/trigger/SelectTriggerDataAttributes.js +5 -0
  511. package/slider/control/SliderControl.js +9 -11
  512. package/slider/root/SliderRoot.js +1 -4
  513. package/slider/thumb/SliderThumb.js +32 -30
  514. package/slider/value/SliderValue.js +7 -15
  515. package/switch/root/SwitchRoot.js +10 -10
  516. package/switch/thumb/SwitchThumb.js +1 -9
  517. package/tabs/indicator/TabsIndicator.js +14 -19
  518. package/tabs/list/TabsList.js +4 -10
  519. package/tabs/list/TabsListContext.d.ts +2 -1
  520. package/tabs/panel/TabsPanel.js +1 -1
  521. package/tabs/root/TabsRoot.d.ts +16 -1
  522. package/tabs/root/TabsRoot.js +71 -24
  523. package/tabs/root/TabsRootContext.d.ts +0 -2
  524. package/toast/provider/ToastProvider.js +1 -1
  525. package/toast/root/ToastRoot.d.ts +1 -1
  526. package/toast/root/ToastRoot.js +110 -133
  527. package/toast/root/ToastRootDataAttributes.d.ts +1 -1
  528. package/toast/root/ToastRootDataAttributes.js +1 -1
  529. package/toast/store.d.ts +9 -1
  530. package/toast/store.js +18 -12
  531. package/toast/useToastManager.d.ts +1 -1
  532. package/toast/viewport/ToastViewport.js +1 -1
  533. package/toggle/Toggle.js +5 -9
  534. package/toggle-group/ToggleGroup.d.ts +2 -2
  535. package/toggle-group/ToggleGroup.js +6 -13
  536. package/toolbar/link/ToolbarLink.d.ts +1 -1
  537. package/toolbar/link/ToolbarLink.js +1 -2
  538. package/tooltip/arrow/TooltipArrow.js +3 -3
  539. package/tooltip/popup/TooltipPopup.js +5 -4
  540. package/tooltip/root/TooltipRoot.js +32 -23
  541. package/tooltip/store/TooltipHandle.js +1 -1
  542. package/tooltip/store/TooltipStore.d.ts +90 -2
  543. package/tooltip/store/TooltipStore.js +17 -30
  544. package/tooltip/trigger/TooltipTrigger.js +152 -20
  545. package/tooltip/viewport/TooltipViewport.d.ts +2 -2
  546. package/tooltip/viewport/TooltipViewport.js +2 -2
  547. package/tooltip/viewport/TooltipViewportDataAttributes.d.ts +1 -1
  548. package/tooltip/viewport/TooltipViewportDataAttributes.js +1 -1
  549. package/unstable-use-media-query/index.js +1 -1
  550. package/utils/popups/index.d.ts +1 -0
  551. package/utils/popups/index.js +11 -0
  552. package/utils/popups/inlineRect.d.ts +15 -0
  553. package/utils/popups/inlineRect.js +198 -0
  554. package/utils/popups/popupStoreUtils.d.ts +28 -10
  555. package/utils/popups/popupStoreUtils.js +110 -20
  556. package/utils/popups/popupTriggerMap.js +2 -0
  557. package/utils/popups/store.d.ts +15 -2
  558. package/utils/popups/store.js +39 -2
  559. package/utils/popups/useTriggerFocusGuards.js +4 -5
  560. package/utils/useAnchorPositioning.d.ts +5 -0
  561. package/utils/useAnchorPositioning.js +12 -9
  562. package/utils/useOpenInteractionType.d.ts +4 -0
  563. package/utils/useOpenInteractionType.js +24 -17
  564. package/checkbox-group/index.parts.d.ts +0 -1
  565. package/checkbox-group/index.parts.js +0 -12
  566. package/esm/checkbox-group/index.parts.d.ts +0 -1
  567. package/esm/checkbox-group/index.parts.js +0 -1
  568. package/esm/floating-ui-react/hooks/useInteractions.d.ts +0 -20
  569. package/esm/floating-ui-react/hooks/useInteractions.js +0 -88
  570. package/esm/floating-ui-react/hooks/useRole.d.ts +0 -17
  571. package/esm/floating-ui-react/hooks/useRole.js +0 -113
  572. package/floating-ui-react/hooks/useInteractions.d.ts +0 -20
  573. package/floating-ui-react/hooks/useInteractions.js +0 -95
  574. package/floating-ui-react/hooks/useRole.d.ts +0 -17
  575. package/floating-ui-react/hooks/useRole.js +0 -120
  576. /package/{csp-provider → esm/internals/csp-context}/CSPContext.d.ts +0 -0
  577. /package/esm/{csp-provider → internals/csp-context}/CSPContext.js +0 -0
  578. /package/{esm/csp-provider → internals/csp-context}/CSPContext.d.ts +0 -0
  579. /package/{csp-provider → internals/csp-context}/CSPContext.js +0 -0
@@ -9,15 +9,18 @@ let rafId = 0;
9
9
  function enqueueFocus(el, options = {}) {
10
10
  const {
11
11
  preventScroll = false,
12
- cancelPrevious = true,
13
- sync = false
12
+ sync = false,
13
+ shouldFocus
14
14
  } = options;
15
- if (cancelPrevious) {
16
- cancelAnimationFrame(rafId);
15
+ cancelAnimationFrame(rafId);
16
+ function exec() {
17
+ if (shouldFocus && !shouldFocus()) {
18
+ return;
19
+ }
20
+ el?.focus({
21
+ preventScroll
22
+ });
17
23
  }
18
- const exec = () => el?.focus({
19
- preventScroll
20
- });
21
24
  if (sync) {
22
25
  exec();
23
26
  return _empty.NOOP;
@@ -13,7 +13,7 @@ function getEmptyRootContext() {
13
13
  floatingElement: null,
14
14
  referenceElement: null,
15
15
  triggerElements: new _popups.PopupTriggerMap(),
16
- floatingId: '',
16
+ floatingId: undefined,
17
17
  syncOnly: false,
18
18
  nested: false,
19
19
  onOpenChange: undefined
package/form/Form.js CHANGED
@@ -66,11 +66,11 @@ const Form = exports.Form = /*#__PURE__*/React.forwardRef(function Form(componen
66
66
  if (fieldName) {
67
67
  const namedField = values.find(field => field.name === fieldName);
68
68
  if (namedField) {
69
- namedField.validate(false);
69
+ namedField.validate();
70
70
  }
71
71
  } else {
72
72
  values.forEach(field => {
73
- field.validate(false);
73
+ field.validate();
74
74
  });
75
75
  }
76
76
  }, []);
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @base-ui/react v1.4.1
2
+ * @base-ui/react v1.5.0
3
3
  *
4
4
  * @license MIT
5
5
  * This source code is licensed under the MIT license found in the
@@ -17,7 +17,6 @@ export declare const HORIZONTAL_KEYS_WITH_EXTRA_KEYS: Set<string>;
17
17
  export declare const VERTICAL_KEYS: Set<string>;
18
18
  export declare const VERTICAL_KEYS_WITH_EXTRA_KEYS: Set<string>;
19
19
  export declare const ARROW_KEYS: Set<string>;
20
- export declare const ALL_KEYS: Set<string>;
21
20
  export declare const COMPOSITE_KEYS: Set<string>;
22
21
  export declare const SHIFT: "Shift";
23
22
  export declare const CONTROL: "Control";
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.VERTICAL_KEYS_WITH_EXTRA_KEYS = exports.VERTICAL_KEYS = exports.SHIFT = exports.PAGE_UP = exports.PAGE_DOWN = exports.MODIFIER_KEYS = exports.META = exports.HORIZONTAL_KEYS_WITH_EXTRA_KEYS = exports.HORIZONTAL_KEYS = exports.HOME = exports.END = exports.CONTROL = exports.COMPOSITE_KEYS = exports.ARROW_UP = exports.ARROW_RIGHT = exports.ARROW_LEFT = exports.ARROW_KEYS = exports.ARROW_DOWN = exports.ALT = exports.ALL_KEYS = void 0;
6
+ exports.VERTICAL_KEYS_WITH_EXTRA_KEYS = exports.VERTICAL_KEYS = exports.SHIFT = exports.PAGE_UP = exports.PAGE_DOWN = exports.MODIFIER_KEYS = exports.META = exports.HORIZONTAL_KEYS_WITH_EXTRA_KEYS = exports.HORIZONTAL_KEYS = exports.HOME = exports.END = exports.CONTROL = exports.COMPOSITE_KEYS = exports.ARROW_UP = exports.ARROW_RIGHT = exports.ARROW_LEFT = exports.ARROW_KEYS = exports.ARROW_DOWN = exports.ALT = void 0;
7
7
  Object.defineProperty(exports, "createGridCellMap", {
8
8
  enumerable: true,
9
9
  get: function () {
@@ -81,8 +81,7 @@ const HORIZONTAL_KEYS_WITH_EXTRA_KEYS = exports.HORIZONTAL_KEYS_WITH_EXTRA_KEYS
81
81
  const VERTICAL_KEYS = exports.VERTICAL_KEYS = new Set([ARROW_UP, ARROW_DOWN]);
82
82
  const VERTICAL_KEYS_WITH_EXTRA_KEYS = exports.VERTICAL_KEYS_WITH_EXTRA_KEYS = new Set([ARROW_UP, ARROW_DOWN, HOME, END]);
83
83
  const ARROW_KEYS = exports.ARROW_KEYS = new Set([...HORIZONTAL_KEYS, ...VERTICAL_KEYS]);
84
- const ALL_KEYS = exports.ALL_KEYS = new Set([...ARROW_KEYS, HOME, END]);
85
- const COMPOSITE_KEYS = exports.COMPOSITE_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, HOME, END]);
84
+ const COMPOSITE_KEYS = exports.COMPOSITE_KEYS = new Set([...ARROW_KEYS, HOME, END]);
86
85
  const SHIFT = exports.SHIFT = 'Shift';
87
86
  const CONTROL = exports.CONTROL = 'Control';
88
87
  const ALT = exports.ALT = 'Alt';
@@ -77,7 +77,7 @@ function useCompositeRoot(params) {
77
77
  target.setSelectionRange(0, target.value.length ?? 0);
78
78
  },
79
79
  onKeyDown(event) {
80
- const RELEVANT_KEYS = enableHomeAndEndKeys ? _composite.ALL_KEYS : _composite.ARROW_KEYS;
80
+ const RELEVANT_KEYS = enableHomeAndEndKeys ? _composite.COMPOSITE_KEYS : _composite.ARROW_KEYS;
81
81
  if (!RELEVANT_KEYS.has(event.key)) {
82
82
  return;
83
83
  }
@@ -31,6 +31,8 @@ interface ReasonToEventMap {
31
31
  [REASONS.cancelOpen]: MouseEvent;
32
32
  [REASONS.siblingOpen]: Event;
33
33
  [REASONS.disabled]: Event;
34
+ [REASONS.missing]: Event;
35
+ [REASONS.initial]: Event;
34
36
  [REASONS.imperativeAction]: Event;
35
37
  [REASONS.windowResize]: UIEvent;
36
38
  }
@@ -0,0 +1,2 @@
1
+ export { CSPContext, useCSPContext } from "./CSPContext.js";
2
+ export type { CSPContextValue } from "./CSPContext.js";
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CSPContext", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _CSPContext.CSPContext;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "useCSPContext", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _CSPContext.useCSPContext;
16
+ }
17
+ });
18
+ var _CSPContext = require("./CSPContext");
@@ -1,4 +1,3 @@
1
1
  export { useRegisterFieldControl } from "./useRegisterFieldControl.js";
2
- export type { UseRegisterFieldControlParameters } from "./useRegisterFieldControl.js";
3
2
  export { useFieldControlRegistration } from "./useFieldControlRegistration.js";
4
3
  export type { FieldControlRegistration, UseFieldControlRegistrationParameters } from "./useFieldControlRegistration.js";
@@ -2,8 +2,8 @@ import * as React from 'react';
2
2
  import type { FieldValidityData } from "../../field/root/FieldRoot.js";
3
3
  export interface FieldControlRegistration {
4
4
  controlRef: React.RefObject<any>;
5
- getValue?: (() => unknown) | undefined;
6
5
  id: string | undefined;
6
+ getValue?: (() => unknown) | undefined;
7
7
  value: unknown;
8
8
  }
9
9
  export declare function useFieldControlRegistration(params: UseFieldControlRegistrationParameters): (source: symbol, registration: FieldControlRegistration | undefined) => void;
@@ -12,6 +12,7 @@ export interface UseFieldControlRegistrationParameters {
12
12
  invalid: boolean;
13
13
  markedDirtyRef: React.RefObject<boolean>;
14
14
  name: string | undefined;
15
+ setRegisteredFieldId: (id: string | undefined) => void;
15
16
  setValidityData: React.Dispatch<React.SetStateAction<FieldValidityData>>;
16
17
  validityData: FieldValidityData;
17
18
  }
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.useFieldControlRegistration = useFieldControlRegistration;
9
9
  var React = _interopRequireWildcard(require("react"));
10
- var ReactDOM = _interopRequireWildcard(require("react-dom"));
11
10
  var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
12
11
  var _useStableCallback = require("@base-ui/utils/useStableCallback");
13
12
  var _getCombinedFieldValidityData = require("../../field/utils/getCombinedFieldValidityData");
@@ -18,6 +17,7 @@ function useFieldControlRegistration(params) {
18
17
  invalid,
19
18
  markedDirtyRef,
20
19
  name,
20
+ setRegisteredFieldId,
21
21
  setValidityData,
22
22
  validityData
23
23
  } = params;
@@ -27,7 +27,7 @@ function useFieldControlRegistration(params) {
27
27
  const activeFieldControlSourceRef = React.useRef(null);
28
28
  const registrationRef = React.useRef(null);
29
29
  const fallbackControlRef = React.useRef(null);
30
- const getValue = (0, _useStableCallback.useStableCallback)(() => {
30
+ const getValueForForm = (0, _useStableCallback.useStableCallback)(() => {
31
31
  const registration = registrationRef.current;
32
32
  if (!registration) {
33
33
  return undefined;
@@ -37,22 +37,17 @@ function useFieldControlRegistration(params) {
37
37
  }
38
38
  return registration.value;
39
39
  });
40
- const validate = (0, _useStableCallback.useStableCallback)((flushSync = true) => {
40
+ const validate = (0, _useStableCallback.useStableCallback)(() => {
41
41
  const registration = registrationRef.current;
42
42
  if (!registration) {
43
43
  return;
44
44
  }
45
45
  let nextValue = registration.value;
46
46
  if (nextValue === undefined) {
47
- nextValue = getValue();
47
+ nextValue = getValueForForm();
48
48
  }
49
49
  markedDirtyRef.current = true;
50
- if (!flushSync) {
51
- commit(nextValue);
52
- } else {
53
- // Synchronously update the validity state so the submit event can be prevented.
54
- ReactDOM.flushSync(() => commit(nextValue));
55
- }
50
+ commit(nextValue);
56
51
  });
57
52
  function refreshRegistration() {
58
53
  const registration = registrationRef.current;
@@ -60,7 +55,7 @@ function useFieldControlRegistration(params) {
60
55
  return;
61
56
  }
62
57
  formRef.current.fields.set(registration.id, {
63
- getValue,
58
+ getValue: getValueForForm,
64
59
  name,
65
60
  controlRef: registration.controlRef ?? fallbackControlRef,
66
61
  validityData: (0, _getCombinedFieldValidityData.getCombinedFieldValidityData)(validityData, invalid),
@@ -79,7 +74,7 @@ function useFieldControlRegistration(params) {
79
74
  }
80
75
  let initialValue = registration.value;
81
76
  if (initialValue === undefined) {
82
- initialValue = getValue();
77
+ initialValue = getValueForForm();
83
78
  }
84
79
  if (validityData.initialValue === null && initialValue !== null) {
85
80
  setValidityData(prev => ({
@@ -94,13 +89,13 @@ function useFieldControlRegistration(params) {
94
89
  return;
95
90
  }
96
91
  formRef.current.fields.set(registration.id, {
97
- getValue,
92
+ getValue: getValueForForm,
98
93
  name,
99
94
  controlRef: registration.controlRef ?? fallbackControlRef,
100
95
  validityData: (0, _getCombinedFieldValidityData.getCombinedFieldValidityData)(validityData, invalid),
101
96
  validate
102
97
  });
103
- }, [formRef, getValue, invalid, name, validate, validityData]);
98
+ }, [formRef, getValueForForm, invalid, name, validate, validityData]);
104
99
  (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
105
100
  const fields = formRef.current.fields;
106
101
  return () => {
@@ -116,12 +111,14 @@ function useFieldControlRegistration(params) {
116
111
  activeFieldControlSourceRef.current = null;
117
112
  deleteRegistration();
118
113
  registrationRef.current = null;
114
+ setRegisteredFieldId(undefined);
119
115
  }
120
116
  return;
121
117
  }
122
118
  const previousId = registrationRef.current?.id;
123
119
  activeFieldControlSourceRef.current = source;
124
120
  registrationRef.current = registration;
121
+ setRegisteredFieldId(registration.id);
125
122
  if (previousId && previousId !== registration.id) {
126
123
  deleteRegistration(previousId);
127
124
  }
@@ -1,5 +1,2 @@
1
1
  import type { FieldControlRegistration } from "./useFieldControlRegistration.js";
2
- export interface UseRegisterFieldControlParameters extends FieldControlRegistration {
3
- enabled?: boolean | undefined;
4
- }
5
- export declare function useRegisterFieldControl(controlRef: FieldControlRegistration['controlRef'], params: Omit<UseRegisterFieldControlParameters, 'controlRef'>): void;
2
+ export declare function useRegisterFieldControl(controlRef: FieldControlRegistration['controlRef'], id: FieldControlRegistration['id'], value: FieldControlRegistration['value'], getFormValueOverride?: FieldControlRegistration['getValue'], enabled?: boolean): void;
@@ -9,13 +9,7 @@ exports.useRegisterFieldControl = useRegisterFieldControl;
9
9
  var React = _interopRequireWildcard(require("react"));
10
10
  var _useIsoLayoutEffect = require("@base-ui/utils/useIsoLayoutEffect");
11
11
  var _FieldRootContext = require("../field-root-context/FieldRootContext");
12
- function useRegisterFieldControl(controlRef, params) {
13
- const {
14
- enabled = true,
15
- getValue,
16
- id,
17
- value
18
- } = params;
12
+ function useRegisterFieldControl(controlRef, id, value, getFormValueOverride, enabled = true) {
19
13
  const {
20
14
  registerFieldControl
21
15
  } = (0, _FieldRootContext.useFieldRootContext)();
@@ -28,14 +22,15 @@ function useRegisterFieldControl(controlRef, params) {
28
22
  if (!source || !enabled) {
29
23
  return undefined;
30
24
  }
31
- registerFieldControl(source, {
25
+ const registration = {
32
26
  controlRef,
33
- getValue,
27
+ getValue: getFormValueOverride,
34
28
  id,
35
29
  value
36
- });
30
+ };
31
+ registerFieldControl(source, registration);
37
32
  return () => {
38
33
  registerFieldControl(source, undefined);
39
34
  };
40
- }, [controlRef, enabled, getValue, id, registerFieldControl, value]);
35
+ }, [controlRef, enabled, getFormValueOverride, id, registerFieldControl, value]);
41
36
  }
@@ -26,5 +26,6 @@ export interface FieldRootContext {
26
26
  registerFieldControl: (source: symbol, registration: FieldControlRegistration | undefined) => void;
27
27
  validation: UseFieldValidationReturnValue;
28
28
  }
29
+ export declare const DEFAULT_FIELD_ROOT_CONTEXT: FieldRootContext;
29
30
  export declare const FieldRootContext: React.Context<FieldRootContext>;
30
31
  export declare function useFieldRootContext(optional?: boolean): FieldRootContext;
@@ -6,14 +6,14 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
6
6
  Object.defineProperty(exports, "__esModule", {
7
7
  value: true
8
8
  });
9
- exports.FieldRootContext = void 0;
9
+ exports.FieldRootContext = exports.DEFAULT_FIELD_ROOT_CONTEXT = void 0;
10
10
  exports.useFieldRootContext = useFieldRootContext;
11
11
  var _formatErrorMessage2 = _interopRequireDefault(require("@base-ui/utils/formatErrorMessage"));
12
12
  var React = _interopRequireWildcard(require("react"));
13
13
  var _empty = require("@base-ui/utils/empty");
14
14
  var _noop = require("../noop");
15
15
  var _constants = require("../field-constants/constants");
16
- const FieldRootContext = exports.FieldRootContext = /*#__PURE__*/React.createContext({
16
+ const DEFAULT_FIELD_ROOT_CONTEXT = exports.DEFAULT_FIELD_ROOT_CONTEXT = {
17
17
  invalid: undefined,
18
18
  name: undefined,
19
19
  validityData: {
@@ -50,7 +50,8 @@ const FieldRootContext = exports.FieldRootContext = /*#__PURE__*/React.createCon
50
50
  },
51
51
  commit: async () => {}
52
52
  }
53
- });
53
+ };
54
+ const FieldRootContext = exports.FieldRootContext = /*#__PURE__*/React.createContext(DEFAULT_FIELD_ROOT_CONTEXT);
54
55
  if (process.env.NODE_ENV !== "production") FieldRootContext.displayName = "FieldRootContext";
55
56
  function useFieldRootContext(optional = true) {
56
57
  const context = React.useContext(FieldRootContext);
@@ -8,7 +8,11 @@ export interface FormContext {
8
8
  formRef: React.RefObject<{
9
9
  fields: Map<string, {
10
10
  name: string | undefined;
11
- validate: (flushSync?: boolean | undefined) => void;
11
+ /**
12
+ * After this returns, the field registry entry reflects the latest synchronous
13
+ * validity verdict. Async validators do not block submit.
14
+ */
15
+ validate: () => void;
12
16
  validityData: FieldValidityData;
13
17
  controlRef: React.RefObject<HTMLElement | null>;
14
18
  getValue: () => unknown;
@@ -28,6 +28,8 @@ export declare const scrub: "scrub";
28
28
  export declare const cancelOpen: "cancel-open";
29
29
  export declare const siblingOpen: "sibling-open";
30
30
  export declare const disabled: "disabled";
31
+ export declare const missing: "missing";
32
+ export declare const initial: "initial";
31
33
  export declare const imperativeAction: "imperative-action";
32
34
  export declare const swipe: "swipe";
33
35
  export declare const windowResize: "window-resize";
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.windowResize = exports.wheel = exports.triggerPress = exports.triggerHover = exports.triggerFocus = exports.trackPress = exports.swipe = exports.siblingOpen = exports.scrub = exports.pointer = exports.outsidePress = exports.none = exports.listNavigation = exports.linkPress = exports.keyboard = exports.itemPress = exports.inputPress = exports.inputPaste = exports.inputClear = exports.inputChange = exports.inputBlur = exports.incrementPress = exports.imperativeAction = exports.focusOut = exports.escapeKey = exports.drag = exports.disabled = exports.decrementPress = exports.closeWatcher = exports.closePress = exports.clearPress = exports.chipRemovePress = exports.cancelOpen = void 0;
6
+ exports.windowResize = exports.wheel = exports.triggerPress = exports.triggerHover = exports.triggerFocus = exports.trackPress = exports.swipe = exports.siblingOpen = exports.scrub = exports.pointer = exports.outsidePress = exports.none = exports.missing = exports.listNavigation = exports.linkPress = exports.keyboard = exports.itemPress = exports.inputPress = exports.inputPaste = exports.inputClear = exports.inputChange = exports.inputBlur = exports.initial = exports.incrementPress = exports.imperativeAction = exports.focusOut = exports.escapeKey = exports.drag = exports.disabled = exports.decrementPress = exports.closeWatcher = exports.closePress = exports.clearPress = exports.chipRemovePress = exports.cancelOpen = void 0;
7
7
  const none = exports.none = 'none';
8
8
  const triggerPress = exports.triggerPress = 'trigger-press';
9
9
  const triggerHover = exports.triggerHover = 'trigger-hover';
@@ -34,6 +34,8 @@ const scrub = exports.scrub = 'scrub';
34
34
  const cancelOpen = exports.cancelOpen = 'cancel-open';
35
35
  const siblingOpen = exports.siblingOpen = 'sibling-open';
36
36
  const disabled = exports.disabled = 'disabled';
37
+ const missing = exports.missing = 'missing';
38
+ const initial = exports.initial = 'initial';
37
39
  const imperativeAction = exports.imperativeAction = 'imperative-action';
38
40
  const swipe = exports.swipe = 'swipe';
39
41
  const windowResize = exports.windowResize = 'window-resize';
@@ -1,6 +1,7 @@
1
1
  import type * as React from 'react';
2
2
  import type { BaseUIEvent, ComponentRenderFn, HTMLProps } from "../types/index.js";
3
3
  export type { HTMLProps, BaseUIEvent, ComponentRenderFn };
4
+ export type MaybeBaseUIEvent<E extends React.SyntheticEvent<Element, Event>> = E & Partial<Pick<BaseUIEvent<E>, 'preventBaseUIHandler' | 'baseUIHandlerPrevented'>>;
4
5
  export interface FloatingUIOpenChangeDetails {
5
6
  open: boolean;
6
7
  reason: string;
@@ -79,9 +79,7 @@ function useButton(parameters = {}) {
79
79
  onPointerDown: externalOnPointerDown,
80
80
  ...otherExternalProps
81
81
  } = externalProps;
82
- const type = isNativeButton ? 'button' : undefined;
83
82
  return (0, _mergeProps.mergeProps)({
84
- type,
85
83
  onClick(event) {
86
84
  if (disabled) {
87
85
  event.preventDefault();
@@ -166,9 +164,11 @@ function useButton(parameters = {}) {
166
164
  }
167
165
  externalOnPointerDown?.(event);
168
166
  }
169
- }, !isNativeButton ? {
167
+ }, isNativeButton ? {
168
+ type: 'button'
169
+ } : {
170
170
  role: 'button'
171
- } : undefined, focusableWhenDisabledProps, otherExternalProps);
171
+ }, focusableWhenDisabledProps, otherExternalProps);
172
172
  }, [disabled, focusableWhenDisabledProps, isCompositeItem, isNativeButton]);
173
173
  const buttonRef = (0, _useStableCallback.useStableCallback)(element => {
174
174
  elementRef.current = element;
@@ -61,7 +61,7 @@ function usePressAndHold(params) {
61
61
  unsubscribeFromGlobalContextMenuRef.current();
62
62
  movesAfterTouchRef.current = 0;
63
63
  });
64
- const startAutoChange = (0, _useStableCallback.useStableCallback)(triggerNativeEvent => {
64
+ function startAutoChange(triggerNativeEvent) {
65
65
  stopAutoChange();
66
66
  const element = elementRef.current;
67
67
  if (!element) {
@@ -93,7 +93,7 @@ function usePressAndHold(params) {
93
93
  }
94
94
  });
95
95
  });
96
- });
96
+ }
97
97
  React.useEffect(() => () => stopAutoChange(), [stopAutoChange]);
98
98
  const pointerHandlers = {
99
99
  onTouchStart() {
@@ -129,6 +129,8 @@ function evaluateRenderProp(element, render, props, state) {
129
129
  // so we can throw before with custom message.
130
130
  if (process.env.NODE_ENV !== 'production') {
131
131
  if (! /*#__PURE__*/React.isValidElement(newElement)) {
132
+ // TODO: fix mui/no-guarded-throw
133
+ // eslint-disable-next-line mui/no-guarded-throw
132
134
  throw new Error(['Base UI: The `render` prop was provided an invalid React element as `React.isValidElement(render)` is `false`.', 'A valid React element must be provided to the `render` prop because it is cloned with props to replace the default element.', 'https://base-ui.com/r/invalid-render-prop'].join('\n'));
133
135
  }
134
136
  }
@@ -19,8 +19,8 @@ var _popupStateMapping = require("../../utils/popupStateMapping");
19
19
  */
20
20
  const MenuArrow = exports.MenuArrow = /*#__PURE__*/React.forwardRef(function MenuArrow(componentProps, forwardedRef) {
21
21
  const {
22
- className,
23
22
  render,
23
+ className,
24
24
  style,
25
25
  ...elementProps
26
26
  } = componentProps;
@@ -26,8 +26,8 @@ const stateAttributesMapping = {
26
26
  */
27
27
  const MenuBackdrop = exports.MenuBackdrop = /*#__PURE__*/React.forwardRef(function MenuBackdrop(componentProps, forwardedRef) {
28
28
  const {
29
- className,
30
29
  render,
30
+ className,
31
31
  style,
32
32
  ...elementProps
33
33
  } = componentProps;
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.MenuCheckboxItem = void 0;
9
9
  var React = _interopRequireWildcard(require("react"));
10
- var _useStableCallback = require("@base-ui/utils/useStableCallback");
11
10
  var _useControlled = require("@base-ui/utils/useControlled");
12
11
  var _MenuCheckboxItemContext = require("./MenuCheckboxItemContext");
13
12
  var _useMenuItem = require("../item/useMenuItem");
@@ -75,17 +74,16 @@ const MenuCheckboxItem = exports.MenuCheckboxItem = /*#__PURE__*/React.forwardRe
75
74
  highlighted,
76
75
  checked
77
76
  }), [disabled, highlighted, checked]);
78
- const handleClick = (0, _useStableCallback.useStableCallback)(event => {
79
- const details = {
80
- ...(0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.itemPress, event.nativeEvent),
81
- preventUnmountOnClose: () => {}
82
- };
77
+ function handleClick(event) {
78
+ const details = (0, _createBaseUIEventDetails.createChangeEventDetails)(_reasons.REASONS.itemPress, event.nativeEvent, undefined, {
79
+ preventUnmountOnClose() {}
80
+ });
83
81
  onCheckedChange?.(!checked, details);
84
82
  if (details.isCanceled) {
85
83
  return;
86
84
  }
87
85
  setChecked(currentlyChecked => !currentlyChecked);
88
- });
86
+ }
89
87
  const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
90
88
  state,
91
89
  stateAttributesMapping: _stateAttributesMapping.itemMapping,
@@ -24,9 +24,6 @@ const MenuGroup = exports.MenuGroup = /*#__PURE__*/React.forwardRef(function Men
24
24
  ...elementProps
25
25
  } = componentProps;
26
26
  const [labelId, setLabelId] = React.useState(undefined);
27
- const context = React.useMemo(() => ({
28
- setLabelId
29
- }), [setLabelId]);
30
27
  const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
31
28
  ref: forwardedRef,
32
29
  props: {
@@ -36,7 +33,7 @@ const MenuGroup = exports.MenuGroup = /*#__PURE__*/React.forwardRef(function Men
36
33
  }
37
34
  });
38
35
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_MenuGroupContext.MenuGroupContext.Provider, {
39
- value: context,
36
+ value: setLabelId,
40
37
  children: element
41
38
  });
42
39
  });
@@ -1,6 +1,4 @@
1
1
  import * as React from 'react';
2
- export interface MenuGroupContext {
3
- setLabelId: (id: string | undefined) => void;
4
- }
2
+ export type MenuGroupContext = (id: string | undefined) => void;
5
3
  export declare const MenuGroupContext: React.Context<MenuGroupContext | undefined>;
6
4
  export declare function useMenuGroupRootContext(): MenuGroupContext;
@@ -15,7 +15,7 @@ if (process.env.NODE_ENV !== "production") MenuGroupContext.displayName = "MenuG
15
15
  function useMenuGroupRootContext() {
16
16
  const context = React.useContext(MenuGroupContext);
17
17
  if (context === undefined) {
18
- throw new Error(process.env.NODE_ENV !== "production" ? 'Base UI: MenuGroupRootContext is missing. Menu group parts must be used within <Menu.Group>.' : (0, _formatErrorMessage2.default)(31));
18
+ throw new Error(process.env.NODE_ENV !== "production" ? 'Base UI: MenuGroupContext is missing. Menu group parts must be used within <Menu.Group> or <Menu.RadioGroup>.' : (0, _formatErrorMessage2.default)(31));
19
19
  }
20
20
  return context;
21
21
  }
@@ -17,18 +17,16 @@ var _MenuGroupContext = require("../group/MenuGroupContext");
17
17
  *
18
18
  * Documentation: [Base UI Menu](https://base-ui.com/react/components/menu)
19
19
  */
20
- const MenuGroupLabel = exports.MenuGroupLabel = /*#__PURE__*/React.forwardRef(function MenuGroupLabelComponent(componentProps, forwardedRef) {
20
+ const MenuGroupLabel = exports.MenuGroupLabel = /*#__PURE__*/React.forwardRef(function MenuGroupLabel(componentProps, forwardedRef) {
21
21
  const {
22
- className,
23
22
  render,
24
- id: idProp,
23
+ className,
25
24
  style,
25
+ id: idProp,
26
26
  ...elementProps
27
27
  } = componentProps;
28
28
  const id = (0, _useBaseUiId.useBaseUiId)(idProp);
29
- const {
30
- setLabelId
31
- } = (0, _MenuGroupContext.useMenuGroupRootContext)();
29
+ const setLabelId = (0, _MenuGroupContext.useMenuGroupRootContext)();
32
30
  (0, _useIsoLayoutEffect.useIsoLayoutEffect)(() => {
33
31
  setLabelId(id);
34
32
  return () => {
@@ -63,9 +63,9 @@ const MenuLinkItem = exports.MenuLinkItem = /*#__PURE__*/React.forwardRef(functi
63
63
  function getItemProps(externalProps) {
64
64
  return (0, _mergeProps.mergeProps)(commonProps, externalProps, getButtonProps);
65
65
  }
66
- const state = React.useMemo(() => ({
66
+ const state = {
67
67
  highlighted
68
- }), [highlighted]);
68
+ };
69
69
  return (0, _useRenderElement.useRenderElement)('a', componentProps, {
70
70
  state,
71
71
  props: [itemProps, elementProps, getItemProps],
@@ -60,6 +60,8 @@ const MenuPopup = exports.MenuPopup = /*#__PURE__*/React.forwardRef(function Men
60
60
  const floatingTreeRoot = store.useState('floatingTreeRoot');
61
61
  const closeDelay = store.useState('closeDelay');
62
62
  const activeTriggerElement = store.useState('activeTriggerElement');
63
+ const hoverEnabled = store.useState('hoverEnabled');
64
+ const disabled = store.useState('disabled');
63
65
  const isContextMenu = parent.type === 'context-menu';
64
66
  (0, _useOpenChangeComplete.useOpenChangeComplete)({
65
67
  open,
@@ -79,12 +81,13 @@ const MenuPopup = exports.MenuPopup = /*#__PURE__*/React.forwardRef(function Men
79
81
  floatingTreeRoot.events.off('close', handleClose);
80
82
  };
81
83
  }, [floatingTreeRoot.events, store]);
82
- const hoverEnabled = store.useState('hoverEnabled');
83
- const disabled = store.useState('disabled');
84
84
  (0, _floatingUiReact.useHoverFloatingInteraction)(floatingContext, {
85
85
  enabled: hoverEnabled && !disabled && !isContextMenu && parent.type !== 'menubar',
86
86
  closeDelay
87
87
  });
88
+ const setPopupElement = React.useCallback(element => {
89
+ store.set('popupElement', element);
90
+ }, [store]);
88
91
  const state = {
89
92
  transitionStatus,
90
93
  side,
@@ -93,9 +96,6 @@ const MenuPopup = exports.MenuPopup = /*#__PURE__*/React.forwardRef(function Men
93
96
  nested: parent.type === 'menu',
94
97
  instant: instantType
95
98
  };
96
- const setPopupElement = React.useCallback(element => {
97
- store.set('popupElement', element);
98
- }, [store]);
99
99
  const element = (0, _useRenderElement.useRenderElement)('div', componentProps, {
100
100
  state,
101
101
  ref: [forwardedRef, store.context.popupRef, setPopupElement],